gofeco commited on
Commit
fe683c0
1 Parent(s): 1ea5f8d

Upload 100 files

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. src_en/api.add_mapped_instance.txt +6 -0
  2. src_en/api.buffer.txt +21 -0
  3. src_en/api.change_gate.txt +39 -0
  4. src_en/api.change_net.txt +25 -0
  5. src_en/api.change_pin.txt +74 -0
  6. src_en/api.change_port.txt +26 -0
  7. src_en/api.check_design.txt +18 -0
  8. src_en/api.compare.txt +17 -0
  9. src_en/api.compare_nets.txt +14 -0
  10. src_en/api.convert_gated_clocks.txt +6 -0
  11. src_en/api.create_clock.txt +18 -0
  12. src_en/api.create_pin_mapping_json_file.txt +5 -0
  13. src_en/api.create_reset.txt +16 -0
  14. src_en/api.current_design.txt +8 -0
  15. src_en/api.current_instance.txt +8 -0
  16. src_en/api.del_gate.txt +5 -0
  17. src_en/api.del_net.txt +5 -0
  18. src_en/api.del_port.txt +5 -0
  19. src_en/api.dft_drc.txt +17 -0
  20. src_en/api.elab_rtl.txt +4 -0
  21. src_en/api.elaborate.txt +4 -0
  22. src_en/api.exist_inst.txt +6 -0
  23. src_en/api.exist_wire.txt +6 -0
  24. src_en/api.find_equal_nets.txt +11 -0
  25. src_en/api.fix_design.txt +31 -0
  26. src_en/api.fix_logic.txt +24 -0
  27. src_en/api.flatten_modules.txt +10 -0
  28. src_en/api.get_cell_cofactors.txt +18 -0
  29. src_en/api.get_cell_info.txt +39 -0
  30. src_en/api.get_cells.txt +47 -0
  31. src_en/api.get_conns.txt +40 -0
  32. src_en/api.get_coord.txt +10 -0
  33. src_en/api.get_definition.txt +11 -0
  34. src_en/api.get_driver.txt +35 -0
  35. src_en/api.get_drivers.txt +37 -0
  36. src_en/api.get_instance.txt +16 -0
  37. src_en/api.get_instances.txt +12 -0
  38. src_en/api.get_leaf_pin_dir.txt +12 -0
  39. src_en/api.get_leafs_count.txt +16 -0
  40. src_en/api.get_lib_cells.txt +13 -0
  41. src_en/api.get_loads.txt +19 -0
  42. src_en/api.get_loads_phase.txt +16 -0
  43. src_en/api.get_logic_cone.txt +14 -0
  44. src_en/api.get_modules.txt +15 -0
  45. src_en/api.get_net_of.txt +6 -0
  46. src_en/api.get_nets.txt +21 -0
  47. src_en/api.get_path.txt +5 -0
  48. src_en/api.get_pins.txt +30 -0
  49. src_en/api.get_ports.txt +25 -0
  50. src_en/api.get_ref.txt +6 -0
src_en/api.add_mapped_instance.txt ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ <h3 id='___add_mapped_instance'>add_mapped_instance</h3>
2
+ <pre>Add mapped instance pair between REF and IMP
3
+ <b>Usage:</b> add_mapped_instance($ref_instance, $imp_instance);
4
+ <b>Examples:</b>
5
+ add_mapped_instance("u_subtop/u_def/state_reg", "u_subtop/uinst_def/state_reg");
6
+ </pre>
src_en/api.buffer.txt ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <h3 id='___buffer'>buffer</h3>
2
+ <pre>ECO command. Buffer high fanout ECO nets
3
+ <b>Usage:</b> buffer($net_names, $buffer_name, $fanout);
4
+ $net_names: Net names to be buffered. Use "," to separate multiple nets, like "eco1_net1,reset2"
5
+ $buffer_name: The buffer module name from library, leave it blank to let the tool pick one.
6
+ It supports repeater case by ",", for example, "INVX1,INVX16" would have 'INVX1'
7
+ drives 'INVX16' and 'INVX16' drives the fanouts.
8
+ $fanout: How many fanout to insert a buffer.
9
+
10
+ <b>Examples:</b>
11
+
12
+ #1. For every 10 fanout of test_mode, add a buffer, BUFX6
13
+ buffer("test_mode", "BUFX6", 10);
14
+
15
+ #2. For every 10 fanout of 'clock', add repeaters, INVX2,INVX16
16
+ buffer("clock", "INVX2,INVX16", 10);
17
+
18
+ #3. Let the tool pick a buffer
19
+ buffer("clock", "", 10);
20
+
21
+ </pre>
src_en/api.change_gate.txt ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <h3 id='___change_gate'>change_gate</h3>
2
+ <pre>ECO command. Modify an instance in ECO
3
+ Two types of usages
4
+ <b>Usage1:</b> change_gate($instance, $new_reference, $pin_mapping);
5
+ $instance: The instance under ECO. Support hierarchical name, "u_abc/U123"
6
+ $new_reference: The new reference name which the instance changes to, E.G. 'AND3X1'.
7
+ If no reference is present, the ECO operation is assumed to
8
+ change the instance's pin connections.
9
+ $pin_mapping: Input pins mapping, ".new(old)", E.G. ".A1(A),.B1(B)"
10
+ if two references have same input pins. The option can be empty
11
+ <b>Usage2:</b> change_gate($instance, $pin_connections);
12
+ $pin_connections: New pin connections, ".A(n242)".
13
+ The unspecified pins keeps the original connection.
14
+ E.G. pin 'B' connection is unchanged.
15
+
16
+ <b>Examples:</b>
17
+
18
+ #1. U123 has reference OR3X1 with input pins, A,B,C originally
19
+ # change U123 to AND3X1, all input pins are the same.
20
+ change_gate('U123', 'AND3X1', "");
21
+
22
+ #2. A and B keep the connections, discard C
23
+ change_gate('U123', 'AND2X1', "");
24
+
25
+ #3. A keeps the connections, B connects to what the old C connects. And discard old B
26
+ change_gate('U123', 'AND2X1', ".B(C)");
27
+
28
+ #4. A,B,C keep the same, and new D pin connects to net n123
29
+ change_gate('U123', 'AND4X1', ".D(n123)");
30
+
31
+ #5. AO21X1 has input pins, A0, A1 and B0
32
+ change_gate('U123', 'AO21X1', ".A0(A),.A1(B),.B0(C)");
33
+
34
+ #6. change U123 A to n123, B to n124, keep C connection.
35
+ change_gate("U123", ".A(n123),.B(n124)");
36
+
37
+ #7. Rotating A/B/C connections.
38
+ change_gate("U123", ".A(B),.B(C),.C(A)");
39
+ </pre>
src_en/api.change_net.txt ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <h3 id='___change_net'>change_net</h3>
2
+ <pre>ECO command. Change a existing net's driver
3
+ <b>Usage:</b> change_net($net, $gate, $instance, $connections);
4
+ $net: The net to be ECOed
5
+ $gate: New leaf gate to drive the net
6
+ $instance: The instance name of the new gate. Optional, if it is empty, assigned by the tool
7
+ $connections: The new gate input pins connections. If it is empty, the gate is inserted in the net
8
+ Supported formats, 1. Very detail ".A(net0),.B(net1),.C(net2)"
9
+ 2. Connect to the pins in alphabetical sequence
10
+ "net1,net0,net2" indicating A->net1,B->net0,C->net2
11
+ 3. Other instance/pin "U408/Y,U409/Y,net2" indicating A->U408/Y,B->U409/Y,C->net2
12
+ 4. Special character '-' is used to connect up the original connection
13
+
14
+ <b>Examples:</b>
15
+
16
+ #1. Drive n123 with BUFX2 driven by n40
17
+ change_net("n123", "BUFX2", "", "n40");
18
+
19
+ #2. Drive n123 with AND2X2 driven by n40 and original n123 driver
20
+ change_net("n123", "AND2X2", "", "-,n40");
21
+
22
+ #3. Insert a buffer into n123
23
+ change_net("n123", "BUFX2");
24
+
25
+ </pre>
src_en/api.change_pin.txt ADDED
@@ -0,0 +1,74 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <h3 id='___change_pin'>change_pin</h3>
2
+ <pre>ECO command. Modify pin connection of instances by inserting gates, changing connection to other signal (LLM: change pin insert gate)
3
+ Two types of usages.
4
+
5
+ <b>Usage1:</b> change_pin($pin_name, $net);
6
+ Change pin's connection to a net
7
+ $pin_name: In the format of "instance/pin", can be more than one pins separated by ",",
8
+ "instance1/pinA,instance2/pinB", E.G. "U123/A", "U123/A,U345/B"
9
+ Hierarchical naming style is supported as well, "u_abc/U123/A"
10
+ The pins have to be input in this mode.
11
+ $net: The net name the pin connects to.
12
+ Hierarchical naming style is supported, "u_abc/net123"
13
+ When the pin and the net are in different hierarchies, ports are added automatically
14
+ E.G.
15
+ # The tool creates 4 ports across the hierarchies to connect the net to the pin.
16
+ change_pin("u_abc/u_cde/U200/A", "u_xyz/u_stv/net300");
17
+ # The tool gets the net tie to Y pin of U300 and do the the same as the previous example.
18
+ change_pin("u_abc/u_cde/U200/A", "u_xyz/u_stv/U300/Y");
19
+
20
+ <b>Usage2:</b>my $inst = change_pin($pin_name, $leaf_cell, $new_instance, $connection);
21
+ Insert a new leaf cell to drive the pin
22
+ $inst: Return new instance name if new gate is created in the command.
23
+ $pin_name: In the format of "instance/pin", E.G. U123/A Hierarchical naming is supported, u_abc/U123/A
24
+ The pin can be output in this mode. The tool gets the net the pin drives,
25
+ and change the command to
26
+ change_net($thenet, $leaf_cell, $new_instance, $connection);
27
+ $leaf_cell: The leaf cell name to drive the $pin_name
28
+ $new_instance: The instance name for the new inserted leaf cell.
29
+ The option is optional, the tool assigns one if it's empty
30
+ If use '.', the instance is added to the same hierarchy as the $pin_name
31
+ $connection: The pins connection for the new cell.
32
+ Supported formats, 1. Detail format: ".A(net0),.B(net1),.C(net2)"
33
+ 2. Simple format: Connect to the pins in alphabetical sequence "net1,net0,net2"
34
+ 3. Mixed format: "u_abc/U123/Y,.B(net1),net2"
35
+ 4. Special character '-' is used to connect up the original connection
36
+ 5. Advanced nesting format:
37
+ change_pin("U189/A", "AOI21X2", "", "U190/Y,,BUFX6(BUFX6(BUFX6(n412)))");
38
+
39
+ <b>Note:</b> All strings should be quoted by ' or " to avoid syntax error or undesired effects.
40
+
41
+
42
+ <b>Examples:</b>
43
+
44
+ #1. U123 has input pins A,B,C, U234 has input pins A0,A1,B
45
+ # Change A pin of U123 to net12345
46
+ change_pin("U123/A", "net12345");
47
+
48
+ #2. Change A pin of U123 to $net which is defined in the ECO script.
49
+ change_pin("U123/B", $net);
50
+
51
+ #3. Change A pin of U123 to net12345
52
+ change_pin("U123/A,U234/B", "net12345");
53
+
54
+ #4. Insert "NAND2X2 eco12345_U0(.A(net1234),.B(net5678));"
55
+ # to drive U123/A
56
+ change_pin("U123/A", "NAND2X2", "eco12345_U0", "net1234,net5678");
57
+
58
+ #5. Same as above, with more detail of pin connections
59
+ change_pin("U123/A", "NAND2X2", "eco12345_U0", ".A(net1234),.B(net5678)");
60
+
61
+ #6.Insert a buffer to U123 A pin
62
+ change_pin("U123/A", "BUFX4", "", "-");
63
+
64
+ #7. Insert NAND2X1 to drive CK pin and new A connects to the original net
65
+ change_pin("abc_reg_1_/CK", "NAND2X1", "", ".A(-),.B(1'b1)");
66
+
67
+ #8. Do hierarchical connection
68
+ change_pin("u_abc/u_cde/U200/A", "u_xyz/u_stv/U300/Y");
69
+
70
+ #9. Nested connection
71
+ change_pin("qcif/num2/u_spare1/B", "AOI21X2", "eco_inst_on_top1", \
72
+ "NAND2X2(gte_344/u_smod/U100/Y, gte_344/n114), gte_343/U111, BUFX6(BUFX6(n105))");
73
+
74
+ </pre>
src_en/api.change_port.txt ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <h3 id='___change_port'>change_port</h3>
2
+ <pre>ECO command. Change an output port's driver, or add gate after input port
3
+ <b>Usage1:</b> change_port($port, $gate, $instance, $connections);
4
+ $port: The port under ECO, can be input port or output port
5
+ $gate: New leaf gate to drive the port if the port is output
6
+ Or add the gate after input port
7
+ $instance: The instance name for the new leaf cell, optional, the tool assigns one if it's empty
8
+ $connections: The new gate input pins connections. If it is empty, the gate is inserted in the net
9
+ Supported formats, 1. Very detail ".A(net0),.B(net1),.C(net2)"
10
+ 2. Connect to the pins in alphabetical sequence
11
+ "net1,net0,net2" indicating A->net1,B->net0,C->net2
12
+ 3. Other instance/pin "U408/Y,U409/Y,net2" indicating A->U408/Y,B->U409/Y,C->net2
13
+ 4. Special character '-' is used to connect up the original connection
14
+ <b>Usage2:</b> change_port($port, $inst_pin);
15
+ $port: The port under ECO, output port
16
+ $inst_pin: In the format of 'u1234/Y', instance-name/pin-name
17
+ <b>Note:</b> The difference of change_net and change_port command
18
+ change_net changes all drains of the net.
19
+ change_port changes only the port driver.
20
+
21
+ <b>Examples:</b>
22
+
23
+ #1. Add buffer to output port 'out1'
24
+ change_port("out1", "BUFX1", "eco_buf0", "-");
25
+
26
+ </pre>
src_en/api.check_design.txt ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <h3 id='___check_design'>check_design</h3>
2
+ <pre>Check if the netlist status, searching for unresolved modules, floating and multi-drivers
3
+ <b>Usage:</b> check_design(@options);
4
+ @options:
5
+ -ignore list: Ignore the issues matching the list, E.G. 'FE_UNCONNECT*,SCAN_*'.
6
+ -eco: Only check instances/wires having been done ECO. Default check all instances/wires
7
+ -fixfile filename: Create ECO fix file
8
+ -nouniquify: Dont check uniquify
9
+
10
+ <b>Examples:</b>
11
+
12
+ check_design;
13
+ check_design('-ignore', 'FE_UNCONNECT*');
14
+ check_design('-ignore', 'FE_UNCONNECT*,SCAN_*');
15
+ check_design('-ignore', 'W-108');
16
+ check_design("-eco");
17
+
18
+ </pre>
src_en/api.compare.txt ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <h3 id='___compare'>compare</h3>
2
+ <pre>Logic equivalence check on output port and register input pins
3
+ <b>Usage:</b> my $no_eq_num = compare(@nets, @options);
4
+ @options:
5
+ -help: Print this info
6
+ $no_eq_num: Return back non-equivalent number
7
+
8
+ <b>Examples:</b>
9
+
10
+ #1. Check if output port 'state_out' is equivalent in IMP/REF netlists
11
+ compare("state_out");
12
+
13
+ #2. Check two points at the same time.
14
+ Check if 'state_reg_0_/D' is equivalent in IMP/REF netlists
15
+ And check if 'state_reg_1_/D' are equivalent in IMP/REF netlists
16
+ compare("state_reg_0_/D", "state_reg_1_/D");
17
+ </pre>
src_en/api.compare_nets.txt ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <h3 id='___compare_nets'>compare_nets</h3>
2
+ <pre>Check equivalence of two nets in the reference and implementation netlist
3
+ <b>Usage:</b> my $result = compare_nets($net0, $net1, @options);
4
+ $net0: The net in the reference netlist.
5
+ $net1: The net in the implementation netlist.
6
+ @options:
7
+ $result: 1, they are equal,
8
+ 0, they are not equal.
9
+
10
+ <b>Examples:</b>
11
+
12
+ #1 Compare reg1/D in the reference and reg1/D in the implementation netlist
13
+ compare_nets("reg1/D", "reg1/D");
14
+ </pre>
src_en/api.convert_gated_clocks.txt ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ <h3 id='___convert_gated_clocks'>convert_gated_clocks</h3>
2
+ <pre>ECO command. Convert gated clocks to MUX logic.
3
+ In metal ECO, if gated clock cell is not in spare gate list, this command should run before map_spare_cells
4
+ <b>Usage:</b> my $cnt = convert_gated_clocks();
5
+ $cnt: The number of gated clock cells having been converted
6
+ </pre>
src_en/api.create_clock.txt ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <h3 id='___create_clock'>create_clock</h3>
2
+ <pre>Timing command and GOF Formal command. Create clock for fault verification
3
+ <b>Usage:</b> create_clock($clock_name, $clock_period);
4
+ $clock_name: Clock name, input port name or black box instance output pin
5
+ $clock_period: Clock period
6
+
7
+ <b>Note:</b> This command can be used multiple times. The clock period is recommended to be multiples of 2
8
+
9
+ <b>Examples:</b>
10
+
11
+ #1. Create clock on PIN_SPI_CLK, period 4ns
12
+ create_clock("PIN_SPI_CLK", 4);
13
+
14
+ #2. Create clock on PIN_APB_CLK and PLL clk_out
15
+ create_clock("PIN_APB_CLK", 2);
16
+ create_clock("u_pll_top/u_pll_core/clk_out", 2);
17
+
18
+ </pre>
src_en/api.create_pin_mapping_json_file.txt ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ <h3 id='___create_pin_mapping_json_file'>create_pin_mapping_json_file</h3>
2
+ <pre>Create pin mapping file between original synthesis netlist and pre-ECO netlist
3
+ <b>Usage:</b> create_pin_mapping_json_file($filename);
4
+ $filename: JSON file name
5
+ </pre>
src_en/api.create_reset.txt ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <h3 id='___create_reset'>create_reset</h3>
2
+ <pre>Create reset for the design
3
+ <b>Usage:</b> create_reset($reset_name, $active_level);
4
+ $reset_name: Reset name, input port name or black box instance output pin
5
+ $active_level: The level that the reset is active
6
+
7
+ <b>Examples:</b>
8
+
9
+ #1. Create reset on PIN_RESETN, active low
10
+ create_reset("PIN_RESETN", 0);
11
+
12
+ #2. Create reset on PIN_RESET, active high
13
+ create_reset("PIN_RESET", 1);
14
+
15
+
16
+ </pre>
src_en/api.current_design.txt ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ <h3 id='___current_design'>current_design</h3>
2
+ <pre>Set the current top level module (LLM: current design module)
3
+ <b>Usage:</b> current_design($module);
4
+ $module: Set $module as the current top level module.
5
+ If the argument is missing, return the current setting
6
+ ".." set to parent module, "~" set to the most top level module
7
+ <b>Note:</b> It can be reset to the root top module by 'undo_eco'. It is alias command of 'set_top'
8
+ </pre>
src_en/api.current_instance.txt ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ <h3 id='___current_instance'>current_instance</h3>
2
+ <pre>Set the current instance, alias of 'set_inst'
3
+ <b>Usage:</b> current_instance($instance);
4
+ $instance: Set $instance as the current instance.
5
+ If the argument is missing, return the current setting
6
+ ".." set to parent module, "~" set to the most top level module
7
+ <b>Note:</b> It can be reset to the root top module by 'undo_eco'. It has same effect of 'set_top' and 'current_design'
8
+ </pre>
src_en/api.del_gate.txt ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ <h3 id='___del_gate'>del_gate</h3>
2
+ <pre>ECO command. Delete gate
3
+ <b>Usage:</b> del_gate($inst);
4
+ $inst: The instance to be deleted.
5
+ </pre>
src_en/api.del_net.txt ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ <h3 id='___del_net'>del_net</h3>
2
+ <pre>ECO command. Delete net
3
+ <b>Usage:</b> del_net($net);
4
+ $net: The net to be deleted.
5
+ </pre>
src_en/api.del_port.txt ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ <h3 id='___del_port'>del_port</h3>
2
+ <pre>ECO command. Delete port
3
+ <b>Usage:</b> del_port($port);
4
+ $port: The port to be deleted.
5
+ </pre>
src_en/api.dft_drc.txt ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <h3 id='___dft_drc'>dft_drc</h3>
2
+ <pre>DFT DRC checker
3
+ <b>Usage:</b> my $error = dft_drc(@options);
4
+ $error: DRC errors in the checker
5
+ @options:
6
+ -single: One clock for each scan chain
7
+ -glitch: Check reset/set pin glitch
8
+
9
+ <b>Examples:</b>
10
+
11
+ #1. Run full DFT DRC
12
+ dft_drc;
13
+ #2. One clock for each scan chain in DRC
14
+ dft_drc("-single");
15
+ #3. Check reset/set pin glitch
16
+ dft_drc("-glitch");
17
+ </pre>
src_en/api.elab_rtl.txt ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ <h3 id='___elab_rtl'>elab_rtl</h3>
2
+ <pre>Elaborate on RTL design
3
+ <b>Usage:</b> elab_rtl();
4
+ </pre>
src_en/api.elaborate.txt ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ <h3 id='___elaborate'>elaborate</h3>
2
+ <pre>Elaborate and compile RTL files
3
+ <b>Usage:</b> elaborate();
4
+ </pre>
src_en/api.exist_inst.txt ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ <h3 id='___exist_inst'>exist_inst</h3>
2
+ <pre>Check if an instance exists (LLM: instance existence)
3
+ <b>Usage:</b>my $ret = exist_inst($inst);
4
+ $inst: The instance for checking
5
+ $ret: 1, the instance exists 0, the instance does not exist
6
+ </pre>
src_en/api.exist_wire.txt ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ <h3 id='___exist_wire'>exist_wire</h3>
2
+ <pre>Check if a wire exists (LLM: wire existence)
3
+ <b>Usage:</b>my $ret = exist_wire($wire);
4
+ $wire: The wire name for checking
5
+ $ret: 1: exists 0: not exist
6
+ </pre>
src_en/api.find_equal_nets.txt ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <h3 id='___find_equal_nets'>find_equal_nets</h3>
2
+ <pre>Find equivalent nets in IMP for the listed nets in REF, the results are printed out on the screen
3
+ <b>Usage:</b> find_equal_nets(@ref_nets);
4
+ options: ("help","full=i")
5
+ -help: Print this info
6
+
7
+ <b>Examples:</b>
8
+
9
+ #1. Find IMP equal nets for 'mbist_done', 'sync_start' in REF
10
+ find_equal_nets('mbist_done', 'sync_start');
11
+ </pre>
src_en/api.fix_design.txt ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <h3 id='___fix_design'>fix_design</h3>
2
+ <pre>ECO command to fix the design in automatic ECO (LLM: automatic eco)
3
+ <b>Usage:</b> fix_design(@options);
4
+ @options:
5
+ -help: Print this information
6
+ -opt_set optimization_set: Patch optimization set, 0: area/timing 1: cell count, default 0
7
+ -no_patch_opt: Disable patch optimization. Also see API set_no_patch_opt
8
+ -flatten: Enable flatten mode ECO. The default mode is hierarchical
9
+ -list_file the_list_file: The ECO point list file converted from RTL-to-RTL LEC result
10
+ The list file format:
11
+ inst u_def/u_sdef/state_reg_1_
12
+ pin u_control/u_sreg/u_mem_128x24/A[0]
13
+ port PORT_READY_OUT
14
+ -iteration iteration_number: Fix design iteration by default 3 times.
15
+ The tool repeats the fix process until there is no non-equivalent points or iteration number reached
16
+ <b>Examples:</b>
17
+
18
+ #1. Fix design on module 'VIDEO_TOP' and its sub-modules
19
+ set_top('VIDEO_TOP');
20
+ set_ignore_output("TEST_SO*");
21
+ set_pin_constant("TEST_EN", 0);
22
+ fix_design;
23
+ save_session("this_eco");
24
+ my $error = LEC;
25
+
26
+ #2. Do ECO in flatten mode
27
+ fix_design("-flatten");
28
+
29
+ #3. Do ECO on points listed in the file
30
+ fix_design("-list_file", $list_file);
31
+ </pre>
src_en/api.fix_logic.txt ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <h3 id='___fix_logic'>fix_logic</h3>
2
+ <pre>ECO command. Fix listed points
3
+ <b>Usage:</b> fix_logic(@pin_port_list,@options);
4
+ @options:
5
+ -force: Force the tool to replace the logic cone of the points in @pin_port_list
6
+ @pin_port_list:
7
+ List of the pins or ports whose logic will be fixed by the reference logic in Reference Netlist
8
+ The format is "sic_cnt_reg_0/D","sic_cnt_reg_1/D",'\bbr_ccd_reg[0] /D',"out_port"
9
+ '\' should be kept if the instance has '\' as prefix.
10
+ E.G. '\bbr_ccd_reg[0] ' instance has '\' and last space in the name.
11
+
12
+
13
+ <b>Examples:</b>
14
+
15
+ #1. Fix state_regs's D inputs
16
+ fix_logic("state_reg_0/D", "state_reg_1/D");
17
+
18
+ #2. Fix state_regs's D inputs and one output port
19
+ fix_logic("state_reg_0/D", "state_reg_1/D", "out_port");
20
+
21
+ #3. Add one new flop, input pins have the same connections as the Reference Netlist
22
+ # and the output is floating, -recover option sets to 0
23
+ fix_logic('new_flop_reg/D', 'new_flop_reg/CK', 'new_flop_reg/RB');
24
+ </pre>
src_en/api.flatten_modules.txt ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <h3 id='___flatten_modules'>flatten_modules</h3>
2
+ <pre>Flatten hierarchical modules in reference netlist
3
+ <b>Usage:</b> flatten_modules(@module_names);
4
+ @module_names: List of modules to be flatten
5
+
6
+ <b>Examples:</b>
7
+
8
+ flatten_modules("retime_1", "sync_cell_0");
9
+
10
+ </pre>
src_en/api.get_cell_cofactors.txt ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <h3 id='___get_cell_cofactors'>get_cell_cofactors</h3>
2
+ <pre>Get combinational cell pin Shannon expansion cofactors
3
+ <b>Usage:</b> @cofactors = get_cell_cofactors($cell, $pin);
4
+ $cell: Leaf cell name
5
+ $pin: Input pin name
6
+ @cofactors: Shannon cofactors for the pin of the cell
7
+ It has two items if the cell is combinational
8
+ It is empty if the cell is sequential or black-box
9
+
10
+ <b>Examples:</b>
11
+
12
+ #1. NAND2X1 A pin
13
+ @ret = get_cell_cofactors("NAND2X1", "A"); # @ret = (1, B);
14
+ #2. AOI222X1 A0 pin
15
+ @ret = get_cell_cofactors("OAI222X4", "A0");
16
+ returned @ret = ("!(A1*(B0*(C0+C1)+!B0*(B1*(C0+C1))))", "!(B0*(C0+C1)+!B0*(B1*(C0+C1)))");
17
+
18
+ </pre>
src_en/api.get_cell_info.txt ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <h3 id='___get_cell_info'>get_cell_info</h3>
2
+ <pre>Get information of a module or instance (LLM: information)
3
+ <b>Usage:</b> $data = get_cell_info($module_or_inst, @options);
4
+ $module_or_inst: The module or instance's name
5
+ @options:
6
+ -help: Print this information
7
+ -conns: Get Connections of the item, only when it's instance
8
+ -type: Get the item's type information. It can be 'ff','cg,'latch','buf',
9
+ run 'get_lib_cells -type_info' for all existing type in the current libraries
10
+ An array is returned if this option is present
11
+ -libname: Get the library name that the cell is in
12
+ -area: Get the area of the item
13
+ -size: Get the size of the item
14
+ -fun: Get the function string of the item
15
+ -leakage: Get the leakage of the item
16
+ -ref: Same as 'get_ref instance' if the item property is instance
17
+ -context: Get detail library information
18
+ -attribute attribute_name: Check if the cell has the attribute set. 0 or 1 is returned
19
+ $data: Returned data, if '-attribute' option is present, $data is 0 or 1
20
+ In option is '-conns' case,
21
+ It is a hash having the following data structure
22
+ my $module = $hash->{module};
23
+ my $instance: $hash->{instance};
24
+ foreach my $port (keys %{$hash->{connections}}){
25
+ my $net = $hash->{connections}{$port};
26
+ }
27
+
28
+ If no option is present, it return the item's property:
29
+ leaf_instance leaf_module hierarchical_instance hierarchical_module
30
+
31
+ <b>Examples:</b>
32
+
33
+ #1. Get area of one leaf cell
34
+ my $area = get_cell_info("AND2X2", "-area");
35
+
36
+ #2. Get an attribute of one leaf cell
37
+ my $is_iso = get_cell_info("ISOX2", "-attribute", "is_isolation_cell");
38
+
39
+ </pre>
src_en/api.get_cells.txt ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <h3 id='___get_cells'>get_cells</h3>
2
+ <pre>Get all cells in the current module or sub-modules (LLM: find/get instance)
3
+ <b>Usage:</b> my @cells = get_cells($pattern, @options);
4
+ $pattern: The pattern matching instance name, '*', 'U*', 'U123' or '/UI_.*_./'
5
+ It can have path, 'u_clk/*', 'u_abc/u_def/*'
6
+ @options:
7
+ -help: Print this information
8
+ -hier: Or -h, do the command hierarchically
9
+ -ref ref_pattern: Get cells that has reference matching ref_pattern, E.G. -ref OAI*
10
+ -type type_pattern: Type_pattern can be 'ff','latch','itiming','cg','not','rom','ram' ...
11
+ run 'get_lib_cells -type_info' for all existing type in the current libraries
12
+ -type_match type_pattern: Get cells that have one of the types matches the type_pattern
13
+ -leaf: Only leaf cells
14
+ -new: Only new created ECO instances
15
+ -verbose: To print out reference with instance
16
+ -dotpath: Path delimit is '.' instead of '/'
17
+ -nobackslash: Remove backslash
18
+ -nonscan: Flops/sync-cells not in scan chain including those scan pins tied off
19
+ @cells: Returned array with all instances matched
20
+
21
+ <b>Examples:</b>
22
+
23
+ #1. Get all instances in the current module
24
+ my @cells = get_cells('*');
25
+
26
+ #2. Get all instances in the current module
27
+ my @cells = get_cells();
28
+
29
+ #3. Get all instances matching 'U234*' in the current module
30
+ my @cells = get_cells('U234*');
31
+
32
+ #4. Regular expression. Get all instances starting with U and followed by
33
+ # two characters, like U10, U99
34
+ my @cells = get_cells('/U../');
35
+
36
+ #5. Get all instances matching *reg_*_ hierarchically
37
+ my @cells = get_cells('*reg_*_', '-hier');
38
+
39
+ #6. Get all instances hierarchically and having reference matching DFF*
40
+ my @cells = get_cells('*', '-hier', '-ref', 'DFF*');
41
+
42
+ #7. Get all instances in 'u_kb'
43
+ my @cells = get_cells('u_kb/*');
44
+
45
+ #8. Get all flops, sync-cells not in scan chain
46
+ my @cells = get_cells('-hier', '-nonscan');
47
+ </pre>
src_en/api.get_conns.txt ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <h3 id='___get_conns'>get_conns</h3>
2
+ <pre>Get connections of net or pin in the top level module, return the leafs and the hierarchical connections (LLM: conns)
3
+ <b>Usage:</b> @result = get_conns($net_or_pin, @options);
4
+ $net_or_pin: The net name or pin name that needs to get connections.
5
+ @options:
6
+ -driver: Return driver only
7
+ -load: Return load only
8
+ -count: Return connections count
9
+ @result: a two dimension array
10
+ instance, port_name, pin_or_port, load_or_driver, is_it_a_leaf,
11
+ @result = ([instance_0, pin_0, 'pin', 'load', 1],
12
+ ...
13
+ )
14
+
15
+ <b>Examples:</b>
16
+
17
+ #1. Net 'n599' has three connections, instance 'U198' is the driver
18
+ get_conns("n599");
19
+ gte_344 A[14] pin load 0
20
+ U198 Y pin driver 1
21
+ U94 AN pin load 1
22
+
23
+ #2. Net 'qcifhbeat' has three connections, it is output port of the current top level module
24
+ get_conns("qcifhbeat")
25
+ qcifhbeat port load
26
+ U80 A pin load 1
27
+ qcifhbeat_reg Q pin driver 1
28
+
29
+ #3. The argument in inst/pin format
30
+ get_conns("U187/A")
31
+ U294 A1 pin load 1
32
+ U187 A pin load 1
33
+ U80 Y pin driver 1
34
+
35
+ #4. Return connections count
36
+ get_conns("U187/A", "-count");
37
+ 3
38
+
39
+
40
+ </pre>
src_en/api.get_coord.txt ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ <h3 id='___get_coord'>get_coord</h3>
2
+ <pre>Get an instance's coordination (LLM: coordination)
3
+ <b>Usage:</b> my ($x, $y) = get_coord($instance);
4
+ $instance: Instance name
5
+
6
+ <b>Examples:</b>
7
+
8
+ my ($x, $y) = get_coord("xbar/U1234");
9
+ # $x=100, $y=200 in um
10
+ </pre>
src_en/api.get_definition.txt ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <h3 id='___get_definition'>get_definition</h3>
2
+ <pre>Get instantiation of instance
3
+ <b>Usage:</b> my $line = get_definition($inst);
4
+ $inst: Instance name.
5
+ $line: The instantiating line
6
+
7
+ <b>Examples:</b>
8
+
9
+ get_definition('U78');
10
+ Returns "AND2X1 U78(.A(n1), .B(n2), .Z(n3));"
11
+ </pre>
src_en/api.get_driver.txt ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <h3 id='___get_driver'>get_driver</h3>
2
+ <pre>Get the driver of a net or pin (LLM: driver)
3
+ <b>Usage:</b> @driver = get_driver($point, @options);
4
+ $point: net name or pin name, 'n12345' or 'U12345/A1'
5
+ @options:
6
+ -pin: Return in "inst/pin" format, E.G. "state_reg/Q"
7
+ Return an array if '-pin' is not present
8
+ -nonbuf: Trace the drivers until none buffer
9
+ @driver: The driver in array format, if '-pin' is not present.
10
+ If the point is floating, @driver is empty,
11
+ $driver[0]: Driver instance name. It is empty if the driver is port
12
+ $driver[1]: Driver pin or port name. If the driver is a port, it is the port name
13
+ $driver[2]: Driver type. It is string "pin" or "port" depending on the driver is port or leaf cell
14
+ $driver[3]: Driver phase. It is valid when -nonbuf is present,
15
+ indicating if the driver path is inverted
16
+ 0: not inverted 1: inverted
17
+
18
+ <b>Note:</b>
19
+ 1. If '-pin' is present, return a scalar, $driver = get_driver("n12345", "-pin");
20
+ 2. Use 'get_drivers' if there are multiple drivers, the return data has different structure
21
+
22
+ <b>Examples:</b>
23
+
24
+ #1. Get driver of a net
25
+ @driver = get_driver("net12345");
26
+ @driver has content of ("U1247", "Y", "pin");
27
+
28
+ #2. port_abc is input port
29
+ @driver = get_driver("port_abc");
30
+ @driver has content of ("", "port_abc", "port");
31
+
32
+ #3. Return in instance/pin format
33
+ $driver = get_driver("net12345", "-pin");
34
+ $driver has content of "U1247/Y"
35
+ </pre>
src_en/api.get_drivers.txt ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <h3 id='___get_drivers'>get_drivers</h3>
2
+ <pre>Get the drivers of a net or pin (LLM: drivers)
3
+ <b>Usage:</b> @drivers = get_drivers($point, @options);
4
+ $point: net name or pin name, 'n12345' or 'U12345/A1'
5
+ @options:
6
+ -nonbuf: Trace the drivers until none buffer
7
+ @drivers: An array of the drivers, if the point is floating, @drivers is empty,
8
+ if the point has multi-drivers, @drivers has more than one items.
9
+ For each item in @drivers
10
+ Index 0: instance, it is empty if the driver is port
11
+ Index 1: pin or port, if the driver is port, return port
12
+ Index 2: string "pin" or "port" depending on the driver is port or leaf cell
13
+ Index 3: indicating drive path inverted or not
14
+ If 'nonbuf' is present, the last item in @drivers is the non-buffer driver
15
+ So '$nonbuf = pop @drivers' can get the non-buffer driver
16
+ <b>Note:</b>
17
+ Use 'get_driver' instead if the net has only one driver and 'nonbuf' option is not used
18
+
19
+ <b>Examples:</b>
20
+
21
+ #1. Get drivers of a net
22
+ @drivers = get_drivers("net12345");
23
+ @drivers has content of (["U1247", "Y", "pin"]);
24
+
25
+ #2. 'port_abc' is input port
26
+ @drivers = get_drivers("port_abc");
27
+ @drivers has content of (["", "port_abc", "port"]);
28
+
29
+ #3. Buffers in the path
30
+ @drivers = get_drivers("state_reg/CK", "-nonbuf");
31
+ @drivers has content of
32
+ (
33
+ ["buf_inst0", "Y", "pin"],
34
+ ["inv_inst1", "Y", "pin"],
35
+ ["and_inst2", "Y", "pin"]
36
+ )
37
+ </pre>
src_en/api.get_instance.txt ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <h3 id='___get_instance'>get_instance</h3>
2
+ <pre>Get instance in the top level module
3
+ <b>Usage:</b> my $instance = get_instance($pattern, @options);
4
+ $pattern: Match pattern, can have wildcard "*", if it is empty, it is treated as "*"
5
+ @options:
6
+ -module: module name to have its instance name found
7
+ $instance: Return the first instance matching
8
+
9
+ <b>Examples:</b>
10
+
11
+ #1. The fist hierarchical instance matching 'ui_*'.
12
+ $instance = get_instance("ui_*");
13
+
14
+ #2. Find the instance name of module 'enet_control'
15
+ $instance = get_instance("-module", "enet_control");
16
+ </pre>
src_en/api.get_instances.txt ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <h3 id='___get_instances'>get_instances</h3>
2
+ <pre>Get all hierarchical instances in the top level module (LLM: hierarchical instances)
3
+ <b>Usage:</b> my @instances = get_instances($pattern);
4
+ $pattern: Match pattern, can have wildcard "*", if it is empty, it is treated as "*"
5
+
6
+ @instances: Array of the hierarchical instances
7
+
8
+ <b>Examples:</b>
9
+
10
+ @instances = get_instances("UI_*"); # Any hierarchical instances with UI_ as prefix.
11
+ @instances = get_instances; # All hierarchical instances.
12
+ </pre>
src_en/api.get_leaf_pin_dir.txt ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <h3 id='___get_leaf_pin_dir'>get_leaf_pin_dir</h3>
2
+ <pre>Get leaf cell pin's direction input/output/inout
3
+ <b>Usage:</b> my $dir = get_leaf_pin_dir("$leaf_name/$pin");
4
+ $pin: pin name, E.G. A or B or Y
5
+ $leaf: Leaf cell name, E.G. NAND2X2
6
+ $dir: return direction, input/output/inout
7
+
8
+ <b>Examples:</b>
9
+
10
+ my $dir = get_leaf_pin_dir("NAND2X2/A");
11
+
12
+ </pre>
src_en/api.get_leafs_count.txt ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <h3 id='___get_leafs_count'>get_leafs_count</h3>
2
+ <pre>Get all leaf cells name and count in the top level module, return an array
3
+ <b>Usage:</b> @leaf_count = get_leafs_count;
4
+ @leaf_count: Array of leaf name and count
5
+ ( [leaf0, cnt0], [leaf1, cnt1], ...)
6
+
7
+ <b>Examples:</b>
8
+
9
+ @leaf_count = get_leafs_count;
10
+ foreach my $leaf_point (@leaf_count){
11
+ my $leaf_name = $leaf_point->[0];
12
+ my $count = $leaf_point->[1];
13
+ print "LEAF: $leaf_name has $count cells
14
+ ";
15
+ }
16
+ </pre>
src_en/api.get_lib_cells.txt ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <h3 id='___get_lib_cells'>get_lib_cells</h3>
2
+ <pre>Get leaf gates in libraries
3
+ <b>Usage:</b> my @cells = get_lib_cells($pattern, @options);
4
+ @options:
5
+ -help: This information
6
+ -char: All cells characterization
7
+ -type leaf_type: Get leaf gates matching type.
8
+ Leaf_type can be 'ff', 'latch', 'cg', 'buf', 'not', 'and' ...
9
+ -type_info: List all types in the current loaded libraries
10
+ -verbose: If $pattern matches only one lib cell, print the cell lib information
11
+ $pattern: Library cell name pattern, can have '*'.
12
+ @cells: Return array with name matching
13
+ </pre>
src_en/api.get_loads.txt ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <h3 id='___get_loads'>get_loads</h3>
2
+ <pre>Get loads of net in the top level module, return the leafs connections (LLM: loads)
3
+ <b>Usage:</b> @result = get_loads($net_or_pin, @options);
4
+ $net_or_pin: The net name or pin name that needs to get fanouts.
5
+ @options:
6
+ -nonbuf: Trace the loads until none buffer
7
+ -bypbuf: Don't include buffer/inverter in the return array
8
+ -hier: Loads cross hierarchies
9
+ -fanend: Fanout endpoints, flops or ports
10
+ @result: A two dimension array. Each item has format of 'instance' and 'pin_name' if
11
+ the load is leaf cell. Or 'port_name' and 'GOF_PIN_IN'
12
+ @result = ([instance_0, pin_0],
13
+ [instance_1, pin_1],
14
+ [port_name, GOF_PIN_IN],
15
+ ...
16
+ )
17
+
18
+
19
+ </pre>
src_en/api.get_loads_phase.txt ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <h3 id='___get_loads_phase'>get_loads_phase</h3>
2
+ <pre>Get loads of net with phase in the top level module, return the non-buffer/inverter leafs connections (LLM: loads with phase)
3
+ <b>Usage:</b> @result = get_loads_phase($net_or_pin, @options);
4
+ $net_or_pin: The net name or pin name that needs to get fanouts.
5
+ @options:
6
+ -help: This information
7
+ @result: A two dimension array. Each item has format of 'instance', 'pin_name' and 'phase', if
8
+ the load is leaf cell. Or 'port_name', 'GOF_PIN_IN' and 'phase'
9
+ @result = ([instance_0, leaf_0, pin_0, 0],
10
+ [instance_1, leaf_0, pin_1, 1],
11
+ [port_name, GOF_CELL_OUTPORT,GOF_PIN_IN, 1],
12
+ ...
13
+ )
14
+
15
+
16
+ </pre>
src_en/api.get_logic_cone.txt ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <h3 id='___get_logic_cone'>get_logic_cone</h3>
2
+ <pre>Get logic cone of nets or pins
3
+ <b>Usage:</b> $result = get_logic_cone(@InstancePinList, @options);
4
+ @InstancePinList: Instance/pin and net list.
5
+ $result: 1, the command fails. 0, the command completed successfully
6
+ @options:
7
+ -o file_name: Write output to the file. Default logic_cone.v
8
+
9
+ <b>Examples:</b>
10
+
11
+ my @InstPin = ('abc_reg/D', 'n12345');
12
+ my $ret = get_logic_cone(@InstPin, '-o', 'MyLogicCone.v');
13
+ # The logic cone is written out to verilog file 'MyLogicCone.v'
14
+ </pre>
src_en/api.get_modules.txt ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <h3 id='___get_modules'>get_modules</h3>
2
+ <pre>Get modules under current module (LLM: submodules)
3
+ <b>Usage:</b> @modules = get_modules($pattern, @options);
4
+ $pattern: Match pattern, can have wildcard "*", if it is empty, it is treated as "*"
5
+ @options:
6
+ -help: Print this information
7
+ -hier: Get all modules hierarchically
8
+ @modules: Modules list, ("module0", "module1", ...)
9
+
10
+ <b>Examples:</b>
11
+
12
+ @modules = get_modules("*TM*"); # Any hierarchical modules with TM in the name.
13
+ @modules = get_modules; # All hierarchical modules.
14
+ @modules = get_modules("-hier"); # All hierarchical modules and sub-modules under current module.
15
+ </pre>
src_en/api.get_net_of.txt ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ <h3 id='___get_net_of'>get_net_of</h3>
2
+ <pre>Get net name connecting to a pin (LLM: net of pin)
3
+ <b>Usage:</b> my $net = get_net_of($pin);
4
+ $pin: The pin of the instance, 'U1234.A1' or 'U1234/A1'
5
+ $net: The net name connecting to the pin
6
+ </pre>
src_en/api.get_nets.txt ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <h3 id='___get_nets'>get_nets</h3>
2
+ <pre>Get nets that matching pattern (LLM: matched nets)
3
+ <b>Usage:</b> @nets = get_nets($pattern, @options);
4
+ $pattern: The net naming pattern, "*" or empty for all nets
5
+ @options:;
6
+ -const0: Get all constant zero nets
7
+ -const1: Get all constant one nets
8
+ @nets: returned net array.
9
+
10
+ <b>Examples:</b>
11
+
12
+ 1#. Get all nets.
13
+ @nets = get_nets("*");
14
+
15
+ 2#. All nets with 'dbuffer' as prefix
16
+ @nets = get_nets("dbuffer_*");
17
+
18
+ 3#. Get constant nets
19
+ @nets = get_nets("-const0");
20
+
21
+ </pre>
src_en/api.get_path.txt ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ <h3 id='___get_path'>get_path</h3>
2
+ <pre>Get current hierarchical path (LLM: path)
3
+ <b>Usage:</b> $path = get_path();
4
+ $path: The current path
5
+ </pre>
src_en/api.get_pins.txt ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <h3 id='___get_pins'>get_pins</h3>
2
+ <pre>Get pins of instance or module (LLM: pins)
3
+ <b>Usage:</b> @pins = get_pins($name, @options);
4
+ $name: The instance or module name, it can be hierarchical or leaf
5
+ @options:
6
+ -input: Get input pins
7
+ -output: Get output pins
8
+ -inout: Get inout pins
9
+ -clock: Get clock pin, only valid for sequential cell, flop latch and gated-clock-cell
10
+ -reset: Get reset pin, return "" if it doesn't exist
11
+ -set: Get set pin, return "" if it doesn't exist
12
+ -data: Get data pins
13
+ -attribute attribute: Get pins with the attribute
14
+ -nextstate_type type: Get pins matching the type
15
+ which can be 'data', 'load', 'scan_in', 'scan_enable'
16
+ This option is only valid for sequential cell, flop, latch and gated-clock-cell
17
+ If no option is present, get all pins
18
+ @pins: All pins returned, in 'instance/pin' format
19
+
20
+ <b>Examples:</b>
21
+
22
+ #1. Get input pins of a hierarchical instance
23
+ my @pins = get_pins("-input", "u_abc/U123");
24
+ Result @pins = ("u_abc/U123/A", "u_abc/U123/B")
25
+
26
+ #2. Get pins of a leaf cell
27
+ @pins = get_pins("AND2X2");
28
+ Result @pins = ("A","B","Y")
29
+
30
+ </pre>
src_en/api.get_ports.txt ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <h3 id='___get_ports'>get_ports</h3>
2
+ <pre>Get all ports in the current top level module (LLM: ports)
3
+ <b>Usage:</b> @matching_ports = get_ports($pattern, @options);
4
+ $pattern: Match pattern, can have wildcard "*". If it is empty, it is treated as "*"
5
+ @options:
6
+ -input: Get input ports only
7
+ -output: Get output ports only
8
+ -inout: Get inout ports only
9
+ -bus: Get ports in bus format instead of bit blast.
10
+ The API returns an array point if this option present
11
+ The item in the array has format of [port, IsBus, MaxIndex, MinIndex]
12
+ if IsBus == 1, MaxIndex is the Max Index of the bus, E.G, 7 if the bus is port_a[7:0]
13
+ if ISBus==0, MaxIndex and MinIndex are not defined
14
+
15
+ If no option is present, get all ports
16
+
17
+ @matching_ports: Return ports matching the pattern and the option specified in
18
+ the current top level module
19
+
20
+ <b>Examples:</b>
21
+
22
+ @ports = get_ports("-input", "dsp2mc_*"); # Get input ports with "dsp2mc_" as prefix
23
+ @ports = get_ports; # Get all ports
24
+
25
+ </pre>
src_en/api.get_ref.txt ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ <h3 id='___get_ref'>get_ref</h3>
2
+ <pre>Get the reference of the instance, return leaf cell name or hierarchical module name (LLM: design name)
3
+ <b>Usage:</b> $reference = get_ref($instance);
4
+ $instance: Instance name, "U123"
5
+ $reference: Return reference name, "NAND2X4"
6
+ </pre>