| <h3 id='___change_pin'>change_pin</h3> | |
| <pre>ECO command. Modify pin connection of instances by inserting gates, changing connection to other signal (LLM: change pin insert gate) | |
| Two types of usages. | |
| <b>Usage1:</b> change_pin($pin_name, $net); | |
| Change pin's connection to a net | |
| $pin_name: In the format of "instance/pin", can be more than one pins separated by ",", | |
| "instance1/pinA,instance2/pinB", E.G. "U123/A", "U123/A,U345/B" | |
| Hierarchical naming style is supported as well, "u_abc/U123/A" | |
| The pins have to be input in this mode. | |
| $net: The net name the pin connects to. | |
| Hierarchical naming style is supported, "u_abc/net123" | |
| When the pin and the net are in different hierarchies, ports are added automatically | |
| E.G. | |
| # The tool creates 4 ports across the hierarchies to connect the net to the pin. | |
| change_pin("u_abc/u_cde/U200/A", "u_xyz/u_stv/net300"); | |
| # The tool gets the net tie to Y pin of U300 and do the the same as the previous example. | |
| change_pin("u_abc/u_cde/U200/A", "u_xyz/u_stv/U300/Y"); | |
| <b>Usage2:</b>my $inst = change_pin($pin_name, $leaf_cell, $new_instance, $connection); | |
| Insert a new leaf cell to drive the pin | |
| $inst: Return new instance name if new gate is created in the command. | |
| $pin_name: In the format of "instance/pin", E.G. U123/A Hierarchical naming is supported, u_abc/U123/A | |
| The pin can be output in this mode. The tool gets the net the pin drives, | |
| and change the command to | |
| change_net($thenet, $leaf_cell, $new_instance, $connection); | |
| $leaf_cell: The leaf cell name to drive the $pin_name | |
| $new_instance: The instance name for the new inserted leaf cell. | |
| The option is optional, the tool assigns one if it's empty | |
| If use '.', the instance is added to the same hierarchy as the $pin_name | |
| $connection: The pins connection for the new cell. | |
| Supported formats, 1. Detail format: ".A(net0),.B(net1),.C(net2)" | |
| 2. Simple format: Connect to the pins in alphabetical sequence "net1,net0,net2" | |
| 3. Mixed format: "u_abc/U123/Y,.B(net1),net2" | |
| 4. Special character '-' is used to connect up the original connection | |
| 5. Advanced nesting format: | |
| change_pin("U189/A", "AOI21X2", "", "U190/Y,,BUFX6(BUFX6(BUFX6(n412)))"); | |
| <b>Note:</b> All strings should be quoted by ' or " to avoid syntax error or undesired effects. | |
| <b>Examples:</b> | |
| #1. U123 has input pins A,B,C, U234 has input pins A0,A1,B | |
| # Change A pin of U123 to net12345 | |
| change_pin("U123/A", "net12345"); | |
| #2. Change A pin of U123 to $net which is defined in the ECO script. | |
| change_pin("U123/B", $net); | |
| #3. Change A pin of U123 to net12345 | |
| change_pin("U123/A,U234/B", "net12345"); | |
| #4. Insert "NAND2X2 eco12345_U0(.A(net1234),.B(net5678));" | |
| # to drive U123/A | |
| change_pin("U123/A", "NAND2X2", "eco12345_U0", "net1234,net5678"); | |
| #5. Same as above, with more detail of pin connections | |
| change_pin("U123/A", "NAND2X2", "eco12345_U0", ".A(net1234),.B(net5678)"); | |
| #6.Insert a buffer to U123 A pin | |
| change_pin("U123/A", "BUFX4", "", "-"); | |
| #7. Insert NAND2X1 to drive CK pin and new A connects to the original net | |
| change_pin("abc_reg_1_/CK", "NAND2X1", "", ".A(-),.B(1'b1)"); | |
| #8. Do hierarchical connection | |
| change_pin("u_abc/u_cde/U200/A", "u_xyz/u_stv/U300/Y"); | |
| #9. Nested connection | |
| change_pin("qcif/num2/u_spare1/B", "AOI21X2", "eco_inst_on_top1", \ | |
| "NAND2X2(gte_344/u_smod/U100/Y, gte_344/n114), gte_343/U111, BUFX6(BUFX6(n105))"); | |
| </pre> |