Perl APIs:
Get full path from supported three path formats. GOF supports three path formats 1. Slash format: u_abc/u_def/u_ghi 2. Dot format: u_abc.u_def.u_ghi 3. Full path: Top(top_module).u_abc(abc_module).u_def(def_module).u_ghi(ghi_module) Note: Mixed dot and / is considered as a dot format path E.G. u_abc.u_def/u_ghi Back slash will be ignored and removed in the path. Usage: my $full_path = &get_full_path($path); $path: Input path for converting to full_path $full_path: If input path is in format 3, the same value returns.
Get fanouts of $net in $path, return the leafs without hier connectors Usage: my $result = &get_fanouts($net, $path); $path: The path net name is in, check get_full_path API for all supported formats. $net: The net name that needs to get connections. $result: A point to a two dimension array driver_path, instance, gate_name, driver_pin, driver_line_in_module, driver_cell_instance $result = [ [path_0, instance_0, gate_name_0, pin_0, line_num_0, cell_instance_line_0], [path_1, instance_1, gate_name_0, pin_1, line_num_1, cell_instance_line_1], [path_2, instance_2, gate_name_0, pin_2, line_num_2, cell_instance_line_2], ... ]
Get connections of $net in $path, return the leafs and hier connectors Usage: my $result = &get_conns($net_name, $path); $path: The path net name is in, check get_full_path API for all supported formats. $net_name: The net name that needs to get connections. $result: A point to a two dimension array driver_path, instance, gate_name, driver_pin, driver_line_in_module, driver_cell_instance $result = [[path_0, instance_0, gate_name_0, pin_0, line_num_0, cell_instance_line_0], [path_1, instance_1, gate_name_0, pin_1, line_num_1, cell_instance_line_1], [path_2, instance_2, gate_name_0, pin_2, line_num_2, cell_instance_line_2], ... ]
Get leaf cell type, return an array reference Usage: my @type = &get_leaf_type($leaf_cell_name); $leaf_cell_name: Leaf cell name E.G. OAI32X2 $type: return array reference, ['nand','or'] ['ff'] if it's flipflop (-synlib synthesis_library option should be used in command line)
Get the driver of the net Usage: my $driver = &get_driver($point, $path, $mode); $point: net name or pin name, 'n12345' or 'U12345/A1' $path: Path the net is in. Check get_full_path API for all supported formats. $mode: this pinput is optional, by default 0 which means get the leaf gate driving the net if it is 1, the return value can be the input port in the same path $driver: [driver_path, instance, gate_name, driver_pin, driver_line_in_module, driver_cell_instance] E.G. my $driver = &get_driver("net12345", "u_instance"); $driver = ["Top", "U1247", "NAND2X2", "Y" , 123, "NAND2X2 U1247(.A(hpos[0]),.B(n288),.Y(n331));" ]
Get the net name connecting to the pin Usage: my $net = get_net_of($pin, $path); $pin: A pin of a instance, 'U1234/A1' $path: Check get_full_path API for all supported formats. $net: The net name connecting to the pin
Get the cell connections, a hash returns Usage: my &hash = &get_leaf_info($leaf_inst, $path); $path: The path of the leaf instance. Check get_full_path API for all supported formats. $leaf_inst: the leaf instance. $hash: Returned data in hash format. It has the following data structure my $module = $hash->{module}; my $instance: $hash->{instance}; foreach my $port (keys %{$hash->{ports}}){ my $direction = $hash->{ports}{$port}; } foreach my $port (keys %{$hash->{connections}}){ my $net = $hash->{connections}{$port}; }
Get leaf cell pin's direction input/output/inout Usage: my $dir = &get_leaf_pin_dir($pin, $leaf_name); $pin: pin name, E.G. A or B or Y $leaf: Leaf cell name, E.G. NAND2X2 $dir: return direction, input/output/inout
Get all cells in $path Usage: my $cells = &get_cells($path); $path: Check get_full_path API for all supported formats. $cells: Reference of an array with all instances in "sub_module"
Check if the module is leaf cell Usage: my $leaf = &is_leaf($module); $module: The module under check $leaf: 0, it's a hierarchical module, (Or the module is not defined) 1, it's leaf cell. Like, NAND4X8
Get all hierarchical modules in $path Usage: my $modules = &get_modules($path); $path: Check get_full_path API for all supported formats. $modules: Array reference ['module0', 'module1']
Get all hierarchical instances in $path Usage: my $modules = &get_modules($path); $path: Check get_full_path API for all supported formats. $modules: Array reference ['instance0', 'instance1']
Get top design name Usage: my $topdesign = &get_top($top); $top: By default "Top", Can be "Top_1" or "Top_2" if multiple trees present $topdesign: returned top design name
Get reference of instance Usage: my $reference = &get_ref($instance, $path); $instance: Instance name, "U123" $path: The path that the instance is in. Check get_full_path API for all supported formats. $reference: Return reference name, "NAND2X4"
Get all ports matching the direction in $path Usage: my $matching_ports = &get_ports($direction, $path); $direction: direction, "input", "output" $path: In the path where the ports will be extracted. Check get_full_path API for all supported formats. $matching_ports: Arrary reference, return ports matching the direciton in sub_module
Get the module name from the path, Usage: my $module = &get_module_name($path); $path: Has format of "Top(top_module).u_abc(module_abc)", full path format. $module: The return value of this call will be "module_abc"
Get the instance name from the path, Usage: my $instance = &get_instance_name($path); $path: Has format of "Top(top_module).u_abc(module_abc)", full path format. $instance: The return value of this call will be "u_abc"
Print out message on a text window if the text window does not exist yet, create one automaticly Usage: &print($info); $info: message to be printed. If window is closed in the middle of the perl script, the perl script would be aborted.
Create a schematic window Usage: my $win_id = &sch_create_schematic; $win_id: the schematic window ID.
Get the schematic canvas Usage: my $canvas = &sch_get_canvas($win_id); $win_id: the schematic window ID created by sch_create_schematic $canvas: the schematic handler returned.
Draw the gate on the schematic window ID Usage: my $gate_id = &sch_draw_gate($instance, $path, $win_id); $instance: instance name of the gate, U1234 $path: The path of the instace. Check get_full_path API for all supported formats. $gate_id: The gate ID drawn on the schematic. It would be '', if not drawn
Move gate position on the schematic Usage: &sch_move_gate($dx, $dy, $gate_id, $win_id); $dx,$dy: position adjusted. $gate_id: the gate needed to be moved, $gate_id is returned value of sch_draw_gate $win_id: the schematich window ID
Get current schematic position, gate will be drawn at this position Usage: my ($x, $y) = &sch_get_current_position($win_id); $x,$y: current position returned. $win_id: The schematic ID
Set current schematic position, gate will be drawn at this position Usage: &sch_set_current_position($x,$y,$win_id); $x,$y: The position to be set. $win_id: The schematic ID
Get pin tag with net name Usage: my $pin_tag = &sch_get_pin_tag_with_net($net, $gate_id, $win_id); $net: The net name connecting to the pin. $gate_id: The gate ID. $win_id: The schematic win ID $pin_tag: Returned pin ID matching net. If nothing matchs return ""
Eco save to file
Setup session, provide prefix for new ECO net and cell, ECO name, library Usage:my $session = &eco_setup($prefix, $eco_name, $library_name); $prefix: like xyz/abc/def/ $eco_name : ECO name, like eco01234 $library_name : will appear in TCL script when adding cell, lib_name/NAND2X2 Retrun: $session, handle for the ECO session
Rename Port Port can be input/ouput ports Usage: &eco_rename_port($port_old, $port_new, $path, $eco_session);
Check if exists, $type $name $path my $ret = &exists($type, $name, $path); $type: type, "inst" or "net" $name: the item to be checked. $path: Check get_full_path API for all supported formats.
List library, Usage: my $info = &list_library($detail); $detail: 0, List library name and corresponding file. 1, List library name and leaf cells it contains.
Get the lib name of the reference (leaf cell name) Usage: my $library_name = &get_lib_of_ref($cell); $cell: The reference name. E.G. AND2X4 $library_name: The name of the library where the cell is defined. Note: -synlib synthesis_library option should be used in command line.
List leaf cell information in library, area, timing, function... Usage: my $info = &list_cell_in_lib($cell); $cell: The leaf cell name. E.G. NAND4X8 $info: The leaf cell parameters in synthesis library.