Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
466 views

Icc - Basic Commands

This command returns a collection of ports from the current design that match specified criteria. It can filter ports by name patterns, associated objects, or object IDs. Various options like -regexp and -quiet are available to control matching behavior.

Uploaded by

sat
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
466 views

Icc - Basic Commands

This command returns a collection of ports from the current design that match specified criteria. It can filter ports by name patterns, associated objects, or object IDs. Various options like -regexp and -quiet are available to control matching behavior.

Uploaded by

sat
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 73

start_gui

NAME
start_gui
Starts the application GUI.
1)
SYNTAX
string start_gui

ARGUMENTS
The start_gui command has no arguments.

DESCRIPTION
This command starts the application GUI from the shell prompt. It is
ignored if the application GUI has already been started. This is an
alias fo the gui_start command.

EXAMPLES
The following example starts the application GUI.

prompt> start_gui

SEE ALSO
stop_gui(2)
gui_start(2)
gui_stop(2)

Version M-2016.12-SP5-1
Copyright (c) 2017 Synopsys, Inc. All rights reserved.

2)

get_attribute

NAME
get_attribute
Returns the value of the specified attribute on the specified
objects.

SYNTAX
string get_attribute
[-class class_name]
[-quiet]
[-return_null_values]
[-value_list]
object_spec
attribute_name

Data Types
class_name string
object_spec collection
attribute_name string

ARGUMENTS
-class class_name
Specifies the class of objects in the object_spec argument when
the object is not a collection. Valid classes are design, port,
cell, net, and so on. This option is required if any object in
the object_spec argument is not a collection.
-quiet Indicates that error and warning messages are not to be
reported.

-return_null_values
Returns an empty string for failed objects when the object_spec
argument contains multiple objects.

-value_list
Returns the result as a list.

object_spec
Specifies the objects from which to get the attribute value.
Each object must be either a collection or a pattern that is
combined with the -class option to find the object. If the
object_spec argument contains an object that is not a collec-
tion, you must also use the -class option.

attribute_name
Specifies the name of the attribute whose value is returned.

DESCRIPTION
This command returns the value of an attribute for the specified
objects. If the data type of the attribute is collection, the command
merges the attribute values into one collection. Otherwise, the command
returns a list of attribute values. By default, if a specified object
cannot be found or the attribute does not exist on the object, that
object is ignored. If you use the -value_list option, the command
returns an empty string in these cases.

Multicorner-Multimode Support
This command uses information from the current scenario only.

3)
set_attribute

NAME
set_attribute
Sets an attribute to a specified value on the specified list of
objects.

SYNTAX
collection set_attribute
[-class class_name]
objects
attribute_name
attribute_value
[-quiet]

Data Types
class_name string
objects collection
attribute_name string
attribute_value string

ARGUMENTS
-class class_name
Specifies the class for objects specified by name in the
object_list argument. Valid classes are design, port, cell,
net, etc.

objects
Specifies the objects on which the attribute is to be set. Each
object is either a collection or a pattern that is combined with
the -class option to find the objects.

attribute_name
Specifies the name of the attribute to be set.

attribute_value
Specifies the value of the attribute. The data type must be the
same as that of the attribute.

-quiet Turns off the warning message that would otherwise be issued if
the attribute or objects are not found.

DESCRIPTION
This command sets the value of an attribute on an object. For a com-
plete list of attributes, see the attributes man page.

This command returns a collection of objects that have the specified


attribute value set. If the attribute is not set on any objects, the
command returns an empty string.

Multicorner-Multimode Support
This command has no dependency on scenario-specific information if
there is no scenario dependency for the attributes. However, for
attributes such as max_leakage_power, which are scenario dependent,
this command uses information from the current scenario only.

EXAMPLES
The following example defines an integer cell attribute named X, and
then sets this attribute to 30 on all cells in this level of the hier-
archy:

prompt> define_user_attribute -type int -classes cell X


cell
prompt> set_attribute [get_cells *] X 30
{U1}

4) list_attributes

NAME
list_attributes
Lists the currently-defined attributes.

SYNTAX
string list_attributes
[-application]
[-class class_name]
[-nosplit]

Data Types
class_name string

ARGUMENTS
-application
Lists application attributes and user-defined attributes.
-class class_name
Limits the listing to attributes of a single class. Valid
classes are bound, cell, cell_site, clock, core_area, design,
die_area, drc_error, group, gui_object, layer, library,
lib_cell, lib_pin, mw_cel, net, physical_bus, physical_lib,
physical_lib_cell, physical_lib_pin, pin, pin_guide, pin_shape,
placement_blockage, plan_group, port, power_domain,
power_switch, region, route_guide, rp_group, rp_group_instance,
rp_group_keepout, shape, site_row, supply_net, supply_port, ter-
minal, text, track, via, via_region, and voltage_area.

-nosplit
Prevents lines from being split when column fields overflow.
Most of the attribute information is listed in fixed-width
columns. If the information for a given field exceeds the col-
umn width, the next field begins on a new line in the correct
column.

DESCRIPTION
The list_attributes command displays an alphabetically-sorted list of
currently-defined attributes. The attributes are divided into two cat-
egories: application-defined and user-defined. By default,
list_attributes lists all user-defined attributes.

Using the -application option adds all application attributes to the


listing. Since there are many application attributes, you can limit
the listing to a specific object class by using the -class option.

Multicorner-Multimode Support
This command has no dependency on scenario-specific information.

EXAMPLES
The following is an example listing of some attributes defined with the
define_user_attribute command:

prompt> list_attributes
****************************************
Report : List of Attribute Definitions
Design :
****************************************

5)
get_ports
NAME
get_ports
Creates a collection of ports from the current design that match
the specified criteria.

SYNTAX
collection get_ports
[-quiet]
[-regexp | -exact]
[-nocase]
[-filter expression]
[patterns
| -of_objects objects
| -object_id object_id]
[-all]
Data Types
expression string
patterns list
objects collection
object_id integer

ARGUMENTS
-quiet Suppresses warning and error messages if no objects match. Syn-
tax error messages are not suppressed.

-regexp
Views the patterns argument as a regular expression rather than
a simple wildcard pattern.

This option also modifies the behavior of the =~ and !~ filter


operators to use regular expressions rather than simple wildcard
patterns.

The regular expression matching is similar to the Tcl regexp


command. When using the -regexp option, be careful how you
quote the patterns argument and filter expression. Using rigid
quoting with curly braces around regular expressions is recom-
mended. Note that regular expressions are always anchored; that
is, the expression is assumed to begin matching at the beginning
of an object name and end matching at the end of an object name.
You can widen the search by adding ".*" to the beginning or end
of the expressions, as needed.

The -regexp and -exact options are mutually exclusive; you can
use only one.

-exact Considers wildcards to be plain characters, and does not inter-


pret their meaning as wildcards.

The -regexp and -exact options are mutually exclusive; you can
use only one.

-nocase
Makes matches case-insensitive, both for the patterns argument
and for the ==, =~, and !~ filter operators.

-filter expression
Filters the collection with the specified expression. For each
port in the collection, the expression is evaluated based on the
port's attributes. If the expression evaluates to true, the port
is included in the result.

To see the list of port attributes that you can use in the
expression, use the list_attributes -application -class port
command.

For more information about how to use the -filter option, see
the filter_collection man page.

patterns
Creates a collection of ports whose names match the specified
patterns. Patterns can include the * (asterisk) and ? (question
mark) wildcard characters. For more information about using and
escaping wildcards, see the wildcards man page. Pattern match-
ing is case sensitive unless you use the -nocase option.

When you search for bussed ports, you can specify a bus bit
range in the patterns argument by specifying the start bit and
the end bit separated by a colon (:). The start bit and end bit
must be integers and you cannot include spaces between the bus
bit values and the colon; you can, however, include spaces
between the bus characters, [ or ], and the bus bit range speci-
fication. If the specified pattern violates the bus bit range
syntax, the tool assumes that the pattern does not represent a
bus and performs the search by using normal pattern matching.

The patterns, -of_objects, and -object_id arguments are mutu-


ally exclusive; you can specify only one. If you do not specify
any of these arguments, the command uses * (asterisk) as the
default pattern.

-of_objects objects
Creates a collection of ports connected to the specified
objects. Each object can be a net, terminal, bound, or via
region.

The patterns, -of_objects, and -object_id arguments are mutu-


ally exclusive; you can specify only one. If you do not specify
any of these arguments, the command uses * (asterisk) as the
default pattern.

-object_id object_id
Creates a collection that contains the port with the specified
Milkyway object ID. To determine the Milkyway object ID, use the
get_attribute command to return the value of the object_id
attribute.

The patterns, -of_objects, and -object_id arguments are mutually


exclusive; you can specify only one. If you do not specify any
of these arguments, the command uses * (asterisk) as the default
pattern.

-all Includes power and ground ports.

DESCRIPTION
This command creates a collection of ports by selecting ports from the
current design that match the specified criteria.

The command returns a collection if any ports match the criteria. If


no objects match the criteria, the command returns an empty string.

You can use this command at the command prompt or you can nest it as an
argument to another command, such as query_objects. In addition, you
can assign the result to a variable.

When issued from the command prompt, the command behaves as though you
have called the query_objects command to report the objects in the col-
lection. By default, it displays a maximum of 100 objects. You can
change this maximum by using the collection_result_display_limit vari-
able.

For information about collections and the querying of objects, see the
collections man page.

In addition, see the man pages for the all_inputs and all_outputs com-
mands, which also create collections of ports.

Multicorner-Multimode Support
This command has no dependency on scenario-specific information.

EXAMPLES
The following example queries all input ports beginning with "mode".
Although the output looks like a list, it is only a display.

prompt> get_ports mode* -filter {@port_direction == in}


{mode[0] mode[1] mode[2]}

The following example sets the driving cell for ports beginning with
"in" to an FD2 library cell.

prompt> set_driving_cell -lib_cell FD2 -library my_lib \


[get_ports in*]

5)

get_terminals

NAME
get_terminals
Creates a collection of terminals that match the specified cri-
teria.

SYNTAX
collection get_terminals
[-quiet]
[-regexp | -exact]
[-nocase]
[-filter expression]
[-within region
| -touching region
| -intersect region
| -at point]
[patterns
| -of_objects port_list
| -object_id object_id]

Data Types
expression string
region list of points
point point
patterns list
port_list collection
object_id integer

ARGUMENTS
-quiet Suppresses warning and error messages if no objects match. Syn-
tax error messages are not suppressed.

-regexp
Views the patterns argument as a regular expression rather than
a simple wildcard pattern.
This option also modifies the behavior of the =~ and !~ filter
operators to use regular expressions rather than simple wildcard
patterns.

The regular expression matching is similar to the Tcl regexp


command. When using the -regexp option, be careful how you
quote the patterns argument and filter expression. Using rigid
quoting with curly braces around regular expressions is recom-
mended. Note that regular expressions are always anchored; that
is, the expression is assumed to begin matching at the beginning
of an object name and end matching at the end of an object name.
You can widen the search by adding ".*" to the beginning or end
of the expressions, as needed.

The -regexp and -exact options are mutually exclusive; you can
use only one.

-exact Considers wildcards to be plain characters, and does not inter-


pret their meaning as wildcards.

The -regexp and -exact options are mutually exclusive; you can
use only one.

-nocase
Makes matches case-insensitive, both for the patterns argument
and for the ==, =~, and !~ filter operators.

-filter expression
Filters the collection with the specified expression. For each
terminal in the collection, the expression is evaluated based on
the terminal's attributes. If the expression evaluates to true,
the terminal is included in the result.

To see the list of terminal attributes that you can use in the
expression, use the list_attributes -application -class terminal
command.

For more information about how to use the -filter option, see
the filter_collection man page.

-within region
Creates a collection that contains all terminals that are com-
pletely inside the specified region and do not overlap the
boundary. The region boundary can be rectangle or polygon.

The format for specifying a rectangle is {{llx lly} {urx ury}}


or {llx lly urx ury}, which specifies the lower-left and upper-
right corners of the rectangle.

The format for specifying a polygon is {{x1 y1} {x2 y2} ... {xN
yN} {x1 y1}}, where each {x y} pair specifies one point of the
input polygon. A valid polygon must be rectilinear, so the
startpoint and endpoint of the polygon are the same point.

The coordinate unit is specified in the technology file; typi-


cally the unit is microns.

The -within, -touching, -intersect, and -at options are mutually


exclusive; you can specify only one. If you do not specify any
of these options, the command searches for terminals in the
entire design.

-touching region
Creates a collection that contains all terminals that are inside
the specified region, including those that overlap the boundary.
The region boundary can be rectangle or polygon.

The format for specifying a rectangle is {{llx lly} {urx ury}}


or {llx lly urx ury}, which specifies the lower-left and upper-
right corners of the rectangle.

The format for specifying a polygon is {{x1 y1} {x2 y2} ... {xN
yN} {x1 y1}}, where each {x y} pair specifies one point of the
input polygon. A valid polygon must be rectilinear, so the
startpoint and endpoint of the polygon are the same point.

The coordinate unit is specified in the technology file; typi-


cally the unit is microns.

The -within, -touching, -intersect, and -at options are mutually


exclusive; you can specify only one. If you do not specify any
of these options, the command searches for terminals in the
entire design.

-intersect region
Creates a collection that contains all terminals that intersect
the boundary of the specified region and at least part of the
cell is outside of the specified region. The region boundary can
be rectangle or polygon.

The format for specifying a rectangle is {{llx lly} {urx ury}}


or {llx lly urx ury}, which specifies the lower-left and upper-
right corners of the rectangle.

The format for specifying a polygon is {{x1 y1} {x2 y2} ... {xN
yN} {x1 y1}}, where each {x y} pair specifies one point of the
input polygon. A valid polygon must be rectilinear, so the
startpoint and endpoint of the polygon are the same point.

The coordinate unit is specified in the technology file; typi-


cally the unit is microns.

The -within, -touching, -intersect, and -at options are mutually


exclusive; you can specify only one. If you do not specify any
of these options, the command searches for terminals in the
entire design.

-at point
Creates a collection that contains all terminals at the speci-
fied point. The format for specifying a point is {x y}.

The coordinate unit is specified in the technology file; typi-


cally it is microns.

The -within, -touching, -intersect, and -at options are mutually


exclusive; you can specify only one. If you do not specify any
of these options, the command searches for terminals in the
entire design.

patterns
Creates a collection of terminals whose names match the speci-
fied patterns. Patterns can include the * (asterisk) and ?
(question mark) wildcard characters. For more information about
using and escaping wildcards, see the wildcards man page. Pat-
tern matching is case sensitive unless you use the -nocase
option.

The patterns, -of_objects, and -object_id arguments are mutually


exclusive; you can specify only one. If you do not specify
either of these arguments, the command uses * (asterisk) as the
default pattern.

-of_objects port_list
Creates a collection of terminals connected to the specified
ports.

The patterns, -of_objects, and -object_id arguments are mutually


exclusive; you can specify only one. If you do not specify
either of these arguments, the command uses * (asterisk) as the
default pattern.

-object_id object_id
Creates a collection that contains the terminal with the speci-
fied Milkyway object ID. To determine the Milkyway object ID,
use the get_attribute command to return the value of the
object_id attribute.

The patterns, -of_objects, and -object_id arguments are mutually


exclusive; you can specify only one. If you do not specify
either of these arguments, the command uses * (asterisk) as the
default pattern.

DESCRIPTION
This command creates a collection of terminals by selecting terminals
from the current design that match the specified criteria.

The command returns a collection if any terminals match the criteria.


If no objects match the criteria, the command returns an empty string.

You can use this command at the command prompt or you can nest it as an
argument to another command, such as query_objects. In addition, you
can assign the result to a variable.

When issued from the command prompt, the command behaves as though you
have called the query_objects command to report the objects in the col-
lection. By default, it displays a maximum of 100 objects. You can
change this maximum by using the collection_result_display_limit vari-
able.

For information about collections and the querying of objects, see the
collections man page.

Multicorner-Multimode Support
This command has no dependency on scenario-specific information.

EXAMPLES
The following example creates a collection of terminals named reset or
with a prefix of clock:

prompt> get_terminals [list reset clock*]


{reset clock}

6)

set_fp_pin_constraints

NAME
set_fp_pin_constraints
Sets pin assignment constraints that are honored during pin cut-
ting and pin assignment.

SYNTAX
status set_fp_pin_constraints
[-allow_feedthroughs off | on]
[-allowed_layers layers]
[-block_level]
[-bus_ordering lsb_to_msb | msb_to_lsb | scrambled |
consistent_wirelengths]
[-corner_keepout_num_wiretracks wiretracks_number
-corner_keepout_percent_side keepout_percentage]
[-exclude_clock_feedthroughs off | on]
[-exclude_feedthroughs nets]
[-exclude_hfn_feedthroughs hfn_number]
[-exclude_network]
[-exclude_scan_chain_net_feedthroughs off | on]
[-exclude_sides side_numbers]
[-hard_constraints {off | spacing | location | layer}]
[-incremental off | on]
[-keep_buses_together off | on]
[-nets nets
| -exclude_nets nets
| -pins pins]
[-no_stacking stacking_allowed | pg_pins_only | signal_pins_only |
all]
[-pin_preroute_spacing preroute_spacing_number]
[-pin_spacing pin_spacing_number]
[-read_feedthrough_map off | on]
[-feedthrough_map_file file_name]
[-reserved_channel_nets nets]
[-reserved_channel_threshold channel_size]
[-scramble_skip skip_number]
[-use_physical_constraints off | on]
[blocks]

Data Types
layers collection
wiretracks_number integer
keepout_percentage real
nets collection
hfn_number integer
side_numbers string
pins collection
preroute_spacing_number integer
pin_spacing_number integer
file_name string
channel_size real
skip_number integer

7)

get_selection

NAME
get_selection
Returns a collection that contains the objects in the current
selection.

SYNTAX
collection get_selection
[-slct_targets target_selection_bus
[-slct_targets_operation operation]]
[-create_slct_buses]
[-name selection_bus]
[-type object_type]
[-design design]
[-more_than more]
[-fewer_than fewer]
[-count]
[-num max_objects]
[-type_list]

Data Types
target_selection_bus string
operation string
selection_bus string
object_type string
design string
more integer
fewer integer
max_objects integer

ARGUMENTS
-slct_targets target_selection_bus
Specifies the name of the selection bus in which to store the
result. When you use this option, the command returns the tar-
get_selection_bus value. By default, the command returns the
result in a collection.

-slct_targets_operation operation
Specifies the operation used to store the result in the selec-
tion bus specified by the -slct_targets option. The valid val-
ues for the operation argument are clear, add, and remove.

You can use the -slct_targets_operation option only when you


also use the -slct_targets option.

-create_slct_buses
Creates a new selection bus in which to store the result.

-name selection_bus
Specifies the selection bus from which the selection is taken.

-type object_type
Filters the selection by object type and returns only the
objects of the specified object_type. The valid values for
object_type and their descriptions are

design -- design object


port -- port object
net -- net object
cell -- cell object
pin -- pin object
path -- timing path object

-design design
Returns only objects in the filter specified by design.

-more_than more
Returns 1 if the selection bus contains more than the number of
objects specified by more; otherwise, returns 0.

This option and the -type_list option are mutually exclusive.

-fewer_than fewer
Returns 1 if the selection bus contains more than the number of
objects specified by fewer; otherwise, returns 0.

This option and the -type_list option are mutually exclusive.

-count Returns the number of elements contained in the selection bus.

This option and the -type_list option are mutually exclusive.

-num max_objects
Specifies the maximum number of objects in the collection. The
tool returns max_objects objects or fewer depending on the num-
ber of objects in the current selection.

-type_list
Returns only the number of objects of each object type in the
collection.

You cannot use this option with the -more_than option, the
-fewer_than option, or the -count option.

DESCRIPTION
The get_selection command returns a collection that contains the cur-
rent selection in the tool. By default, the command returns a collec-
tion handle (identifier) if any objects are selected. If no objects
are selected, the command returns an empty string.

By default, the command returns a heterogeneous collection that con-


tains all the objects that are currently selected. If you use the
-type option, the command returns a homogeneous collection that has
been filtered to contain only the objects of the type that you specify.

You can enter the get_selection command at the command prompt, or you
can nest it as an argument to another command, such as query_objects),
or assign the get_selection result to a variable.

When you enter get_selection at the command prompt, it behaves as if


you had called query_objects to display the objects in the collection.
By default, get_selection displays a maximum of 100 objects. You can
change this maximum by using the collection_result_display_limit vari-
able.

The "implicit query" property of get_selection allows you to display


cells in a collection. However, if you want the flexibility provided
by the options of the query_objects command (for example, to display
the object class), use get_selection as an argument to query_objects.

For information about collections and the querying of objects, see the
collections man page.

Multicorner-Multimode Support
This command has no dependency on scenario-specific information.

8)
change_selection

NAME
change_selection
Changes the selection in the GUI, taking a collection of objects
and changing the selection according to the type of change spec-
ified.

SYNTAX
status change_selection
[-name slct_bus]
[-replace]
[-add]
[-remove]
[-toggle]
[-type object_type]
[-clock_trees clock_tree_list]
collection

Data Types
slct_bus string
object_type list
clock_tree_list list
collection list

ARGUMENTS
-name slct_bus
Specifies to change the selection bus by using the value of
slct_bus. By default, the command changes the selection bus by
using the name global.

-replace
Replaces the current selection with the objects in the collec-
tion. This is the default behavior when no options are speci-
fied.

-add Adds the objects in the collection to the current selection. By


default, this option is off.

-remove
Removes the objects that are specified in the collection from
the current selection. By default, this option is off.
-toggle
Adds each item that is specified in the collection to the selec-
tion bus if it is not currently contained in the selection bus.
If it is currently contained in the selection bus, it is
removed. By default, this option is off.

-type object_type
Specifies the type to change. Only those items from the collec-
tion that are of the type specified by object_type are used to
change the selection. The valid values are design, port, net,
cell, pin, and path (timing path). By default, the command uses
the entire collection.

-clock_trees clock_tree_list
Specifies a list of clock trees for changing the selection. By
default, this option is off.

collection
Specifies the collection of objects to use to change the selec-
tion. The type of change that is applied to the current selec-
tion with the collection is specified by the options listed
above. By default, this option is off.

DESCRIPTION
The change_selection command changes the selection in the GUI. When
selections are changed, the GUI updates all relevant windows to reflect
it.

A collection of objects and the type of change are given as input to


the command. The collection of objects might be returned as the result
of another command, such as the get_designs command. If the collection
is empty and you use the -replace option (or let the command default by
specifying no option), the current selection is cleared.

If you use the -type option, only the type of objects specified are
used to change the current selection. For example, if you use -type
design, the command uses only the design objects in the collection to
change the current selection. If you do not use the -type option, all
objects in the collection are used to change the current selection.
For example, if you use the -add option without using the -type option,
all objects, regardless of their type, are added to the current selec-
tion.

For information about collections, see the collections man page.

Multicorner-Multimode Support
This command has no dependency on scenario-specific information.

9)
check_legality

NAME
check_legality
Checks the legality of the current placement.

SYNTAX
int check_legality
[-verbose]
ARGUMENTS
-verbose
Prints a detailed report of all possible violations. By default,
the command reports only a summary of all violations.

DESCRIPTION
The check_legality command checks the legality of the current placement
and prints out a report of violation statistics. The violations can be
classified as:

1. Cells that are not on rows


2. Cells overlapping each other
3. Cells overlapping with blockages in the design
4. Cells with orientation that is not allowed for the row on which a cell is
placed
5. Cells with a core site type not equal to that of the row on which cells
are placed
6. Cells overlapping with power straps in the design

Multicorner-Multimode Support
This command has no dependency on scenario-specific information.

EXAMPLES
The following example shows the command for printing out a summary of
all violations.

prompt> check_legality
10)

check_mv_design

NAME
check_mv_design
Checks for violations in a multivoltage design.

SYNTAX
status check_mv_design
[-verbose]
[-isolation]
[-target_library_subset]
[-opcond_mismatches]
[-connection_rules]
[-level_shifters]
[-power_nets]
[-clock_gating_style]
[-diode_cells]
[-max_messages message_count]
[-output output_file_name]

Data Types
message_count unsigned integer
output_file_name string

ARGUMENTS
-verbose
Reports the violations in detail. When this option is not used,
only a summary of the violations is reported in the log file.

-isolation
Reports electrical isolation issues:

o Nets that require isolation, but the isolation cell is miss-


ing

o Nets that do not require isolation, but an isolation cell is


present

o Isolation cells that do not cross a power domain boundary

-target_library_subset
Checks for inconsistent settings between the target library,
target library subset, and operating conditions. This option
reports the following conditions:

o Conflicts between the target library subset and the global


target_library variable setting. The target library subset
must be a subset of the library set specified by the tar-
get_library variable.

o Conflicts between the operating condition and target library


subset. There must be at the least one library from the tar-
get library subset that has the same process, voltage, and
temperature as the operating condition being used on a block.

o Conflicts between a cell and the target library subset speci-


fication on the parent design of the cell. This check ensures
that the cells from the specified target library subset are
used.

-opcond_mismatches
Reports the technology cells instantiated in the design with
incompatible operating conditions. The option checks for con-
flicts between a cell and the operating condition specified on
the parent design of the cell. This check ensures that the oper-
ating condition at which the cell is characterized matches the
operating condition specified on the design.

-connection_rules
Reports violations in the always-on synthesis and pass-gate con-
nections:

o Always-on net driven by a normal cell

o Always-on net or a net from an always-on domain driving a


pass gate

o Always-on cell driving a normal net

o Two pass gates connected to each other

-level_shifters
Reports level shifter violations:

o Net requiring level-shifting with no level-shifter cell

o Net on which a level-shifter cell cannot be added because


either the net is marked as dont_touch or the net is driven by
a pin operating at a different voltage
o Level-shifter cell shifting an incorrect voltage difference

o Input pin of a level-shifter cell driven by a pin operating


at a different voltage

o Output pin of a level-shifter cell driving pins operating at


a different voltage

o Level-shifter cell that violates level-shifter strategy set-


tings

-power_nets
Reports power and ground pin connections, including the follow-
ing information:

o PG pin mismatch between the logical library and FRAM library

o Power and ground connection summary

o Power and ground pins whose connections cannot be derived and


the reason that the derivation fails

o Power and ground pins whose existing connections do not match


with the derived connection from the power domains.

A mismatch between an existing PG connection and the connection


derived from the power domains can occur for any of the follow-
ing reasons:
-- "Unknown power pin type" indicates either the power pin does
not have a type or the pin has a type without connection
semantics. Automatic power connection supports the following
power pin types: primary_power_pin, primary_ground_pin,
backup_power_pin, backup_ground_pin, internal_power_pin, and
internal_ground_pin.

-- "Invalid pin type for the cell or the cell's power domain"
indicates that the cell's power domain does not have a power
net connection with the matching type for the power pin type.
For example, this situation occurs when a regular cell has a
backup ground pin, but the cell's power domain does not have a
backup ground net connection.

-- "No signal pin that uses this PG pin as the


related_power_pin/related_ground_pin." This issue occurs only
on level-shifter and isolation cells. The power connection of
a power pin on a level-shifter or isolation cell is obtained
through tracing cells connected to related signal pins of the
power pin. The power connection fails if a power pin has no
related signal pin, for example, when no signal pin uses the
power pin as the related_power_pin or related_ground_pin in
the logical library cell definition.

-- "Cells connected to the related signal pins of the level


shifter or isolation cell requiring different PG nets." This
issue occurs only on level-shifter and isolation cells. The
tool cannot derive a proper power net for a specific pin
because different nets are needed for the same pin, based on
cells connected to the related signal pins.
-- "Back-to-back connection of level-shifter and isolation
cell" occurs when a level-shifter or isolation cell is
directly connected to another level-shifter or isolation cell.
The automatic connection of a power pin on such level-shifter
or isolation cells might fail if the tracing of related signal
connections reaches only other level-shifter or isolation
cells.

This option also reports bias pin connections, when a supply net
and its connected supply nets through supply ports or power
switches are used as the power/nwell/deepnwell net, and also as
the ground/pwell/deeppwell net.

-clock_gating_style
Reports hierarchical blocks for which there is no library cell
that meets its operating condition and specified clock-gating
style. Clock-gate insertion cannot be performed.

-diode_cells
Checks for and reports multivoltage violations related to diodes
cells.

-max_messages message_count
Sets a maximum limit on the number of messages written into the
log file and output file.

-output output_file_name
Writes the output of the check_mv_design command to a file spec-
ified by the file name argument. If a file of the specified name
already exists, it is over-written.

This file can be opened in the MV Advisor browser in the Design


Vision GUI. Alternatively, the same file can be opened in an
HTML browser by using the absolute path of the file.

The output file contains the details of all violations reported,


even when the -verbose option is not used.

DESCRIPTION
The check_mv_design command checks the design, multivoltage con-
straints, electrical isolation requirements, and connection rules. It
issues error and warning messages as appropriate.

The checker options can be combined to adjust the level of detail in


the final report. If the command is used without any checker options,
it reports only a summary of all violations found.

If the -verbose option is used, the command reports details of all vio-
lations in the log file. The -max_messages option limits the number of
violations reported. When other checker options are specified, the
message count specified by the -max_messages option applies to each
type of check performed. If no specific checker is specified, the mes-
sage count applies to the total number of messages generated by all
types of checks performed. If -max_messages is not specified, the com-
mand writes out all messages without limit.

Multicorner-Multimode Support
This command uses information from the current scenario only.
EXAMPLES
The following command reports all multivoltage violations in the
design:

prompt> check_mv_design -verbose

11)
verify_pg_nets

NAME
verify_pg_nets
Checks whether all power and ground pins of standard cells,
macro cells, and pad cells are connected to the corresponding
power and ground nets.

SYNTAX
status verify_pg_nets
[-error_cell view_name]
[-std_cell_pin_connection check | ignore]
[-macro_pin_connection at_least_one | all | ignore]
[-pad_pin_connection at_least_one | all | ignore]
[-nets {collection_of_nets}]

Data Types
view_name string

ARGUMENTS
-error_cell view_name
Specifies the name of the error view. The error view is saved in
the err subdirectory of the current working directory.

If you do not specify this option, the command creates an error


view named top_cell_name.err.

-std_cell_pin_connection check | ignore


Controls whether the standard cell PG pin connections are
checked.

By default (check), the command checks the standard cell PG pin


connections. To ignore these checks, set this option to ignore.

-macro_pin_connection at_least_one | all | ignore


Controls whether (and how) the macro cell PG pin connections are
checked.

By default (at_least_one), the command checks whether each macro


cell has at least one pin connected to power and ground. To
check that each macro cell has all its power and ground pins
connected to power and ground, set this option to all. To ignore
these checks, set this option to ignore.

-pad_pin_connection at_least_one | all | ignore


Controls whether (and how) the pad cell PG pin connections are
checked.

By default (at_least_one), the command checks whether each pad


cell has at least one pin connected to power and ground. To
check that each pad cell has all its power and ground pins con-
nected to power and ground, set this option to all. To ignore
these checks, set this option to ignore.

DESCRIPTION
The verify_pg_nets command checks whether the power and ground pins of
standard cells, macro cells, and pad cells are connected to the corre-
sponding power and ground nets.

The verify_pg_nets command also checks each power and ground net for
floating shapes and creates an error view so that you can display the
violations in the error browser.

This command checks power and ground pins only. It does not check tie-
high and tie-low pins, which are signal pins.

Use the connect_pg_nets command to specify port-to-net connections for


power and ground nets if they are not part of the netlist.

Multicorner-Multimode Support
This command has no dependency on scenario-specific information.

EXAMPLES
The following example does not check the standard cell PG pin connec-
tions, checks all macro pin PG connections, and checks that at least
one PG pin on each pad cell is connected. The violations are stored in
an error view named err/top_cell_name.err.

prompt> verify_pg_nets -std_cell_pin_connection ignore \


-macro_pin_connection all

12)

write_floorplan

NAME
write_floorplan
Writes a Tcl script that contains detailed floorplanning infor-
mation for the specified design. This file can be used to re-
create elements of the floorplan.

SYNTAX
status write_floorplan
[-all]
[-cell design_name]
[-create_bound]
[-no_bound]
[-no_create_boundary]
[-no_placement_blockage]
[-no_plan_group]
[-no_route_guide]
[-no_voltage_area]
[-objects object_collection]
[-placement {placement_info_types} [-create_terminal]]
[-preroute]
[-user_shape]
[-net_shape]
[-include_shapes_on_non_routing_layers]
[-row]
[-pin_guide]
[-sm_all]
[-sm_bound]
[-sm_cell_row]
[-sm_placement {placement_info_types}]
[-sm_placement_blockage]
[-sm_plan_group]
[-sm_preroute]
[-sm_route_guide]
[-sm_track]
[-sm_voltage_area]
[-track]
file_name

Data Types
design_name string
object_collection collection
placement_info_types keyword
file_name string

ARGUMENTS
-all Writes all floorplan information to the Tcl script. You can com-
bine the -all option with the -no_bound, -no_create_boundary,
-no_placement_blockage, -no_plan_group, -no_route_guide, and
-no_voltage_area options to prevent writing certain types of
information. The -create_terminal option is ignored and always
enabled when using the -all option. The -all option writes user
and net shapes on metal layers that are written by the
-user_shape and -net_shape options.

-cell design_name
Specifies the design name to use for writing floorplan informa-
tion. By default, the floorplan information is written for the
current design.

-create_bound
Writes create_bounds commands instead of update_bounds commands
for bound objects. This option has no effect if you specify the
-no_bound option. By default, the command writes update_bounds
commands to the Tcl script.

-no_bound
Prevents the writing of bound information to the Tcl script. By
default, bound information is written.

-no_create_boundary
Prevents the writing of boundary information to the Tcl script.
By default, the command writes boundary information.

-no_placement_blockage
Prevents the writing of placement blockage information to the
Tcl script. By default, the command writes placement blockage
information.

-no_plan_group
Prevents the writing of plan group information to the Tcl
script. By default, the command writes plan group information.

-no_route_guide
Prevents the writing of route guide information to the Tcl
script. By default, the command writes route guide information.

-no_voltage_area
Prevents the writing of voltage area information to the Tcl
script. By default, the command writes voltage area information.

-objects object_collection
Specifies the objects to write to the Tcl script. Use this
option to limit the types or scope of objects written to the
output file. This option takes a collection that contains one or
more of the following object types: terminals, cell instance,
placement blockage, route guide, plan group, voltage area,
bound, die area, core area, and cell row.

The command writes the specified object information only if


their associated object type is enabled for output.

-placement {placement_info_types}
Writes the specified placement information to the output file.
Valid placement values are: io, std_cell, hard_macro,
soft_macro, and terminal. You can specify one or more of these
values. The io keyword causes the command to write I/O pads.
The soft_macro keyword causes the command to write black box
cells because they are considered soft macros. The std_cell
keyword causes the command to write standard cell placement
information. The hard_macro keyword causes the command to write
hard macro placements.

The terminal keyword causes the command to write pins. When you
use the -placement terminal option, you should also use the
-create_terminal option.

By default, the command does not write placement information.

-create_terminal
Writes remove_terminal and create_terminal commands to the Tcl
script. The command writes create_terminal commands for termi-
nals if there are pins in the design.

To use this option, you must also use the -placement {terminal}
option.

-preroute
Writes preroute information to the Tcl script. By default, the
command does not write preroute information.

-user_shape
Writes the user shapes created on metal layers by the cre-
ate_user_shape command to the Tcl script. By default, the com-
mand does not write these user shapes.

-net_shape
Writes the net shapes created on metal layers by the cre-
ate_net_shape command to the Tcl script. By default, the command
does not write these net shapes.

-include_shapes_on_non_routing_layers
Writes the user shapes on both routing and non-routing layers.
You must also include the -user_shape and -net_shape options
when you specify the -include_shapes_on_non_routing_ers option.
In you do not specify the -include_shapes_on_non_routing_layers
option, the -user_shape and -net_shape options write out only
user shapes on routing layers.

-row Writes row information to the Tcl script. By default, the com-
mand does not write row information.

-pin_guide
Writes pin guide information to the Tcl script. By default, the
command does not write pin guide information.

-sm_all
Writes all floorplan information for each soft macro. By
default, no floorplan information is written for soft macros.

-sm_bound
Writes bound information for each soft macro. By default, no
bound information is written for soft macros.

-sm_cell_row
Writes cell row information for each soft macro. By default, no
cell row information is written for soft macros.

-sm_placement {placement_info_types}
Writes the specified placement information for each soft macro.
Valid placement values are: io, std_cell, hard_macro,
soft_macro, and terminal. For more information about the place-
ment information keywords, see the description for the -place-
ment option. By default, no placement information is written for
soft macros.

-sm_placement_blockage
Writes placement blockage information for each soft macro. By
default, no placement blockage information is written for soft
macros.

-sm_plan_group
Writes plan group information for each soft macro. By default,
no plan group information is written for soft macros.

-sm_preroute
Writes preroute information for each soft macro. By default, no
preroute information is written for soft macros.

-sm_route_guide
Writes route guide information for each soft macro. By default,
no route guide information is written for soft macros.

-sm_track
Writes track information for each soft macro. By default, no
track information is written for soft macros.

-sm_voltage_area
Writes voltage area information for each soft macro. By default,
no voltage area information is written for soft macros.

-track Writes track information to the Tcl script. By default, the com-
mand does not write track information.
file_name
Specifies the name of the file to which the floorplan informa-
tion is written.

DESCRIPTION
This command writes a Tcl script file that contains floorplan informa-
tion for the current or user-specified design. You restore the floor-
plan information by reading the generated file with the read_floorplan
command.

The write_floorplan command writes commands relative to the top of the


design, regardless of the current instance. The generated Tcl script
must be read from the top of the design.

By default, the command writes floorplan information only for the top-
level design. The information includes the boundary data and informa-
tion on the following objects: bounds, placement blockages, route
guides, plan groups, and voltage areas.

To output hierarchical information, you must use the -sm_placement,


-sm_placement_blockage, -sm_route_guide, -sm_plan_group, -sm_volt-
age_area, -sm_bound, -sm_cell_row, -sm_track, -sm_preroute, or -sm_all
options.

When you specify the -format icc2 option, the write_floorplan command
writes out the floorplan files in Tcl and DEF format into a folder
named by the file_name argument. The folder contains a main floor-
plan.tcl script file, which you can use to load the floorplan in IC
Compiler II. The script

o Uses the read_def command to load the floorplan.def file

o Sources commands to read the generated Tcl format files

o Uses the remaining settings or constraints that are not captured in


the DEF or individual generated Tcl files

Multicorner-Multimode Support
This command has no dependency on scenario-specific information.

13)
list_mw_cels

NAME
list_mw_cels
Prints the list of Milkyway designs in the current Milkyway
library.

SYNTAX
status list_mw_cels
[-all_views]
[-all_versions]
[-sort]

ARGUMENTS
-all_views
List all views of Milkyway designs in the current Milkyway
library. If specifying this option without -all_versions
option, the version number will not be listed.

-all_versions
List all versions of Milkyway designs in the current Milkyway
library. If specifying this option without -all_views option,
the designs of CEL view will only be listed.

-sort Sort the list by alphabet.

DESCRIPTION
This command prints the list of Milkyway designs in the current Milky-
way library. The library must be open. And note that it will show the
design name if any view of the design exists in the library. It also
prints the following information about the Milkyway design:

o open if it is an open Milkyway design.

o read_only if it is opened in read only mode.

o current if it is the currently active Milkyway design.

Multicorner-Multimode Support
This command has no dependency on scenario-specific information.

EXAMPLES
The following example lists the Milkyway designs in the current
library:

prompt> list_mw_cels
top
AND
NOR
1
prompt> list_mw_cels -all_views
top.CEL
AND.CEL
NOR.CEL
NOR.FRAM
1
prompt> list_mw_cels -all_versions
top.CEL;1
top.CEL;2
AND.CEL;1
NOR.CEL;1
1
prompt> list_mw_cels -all_views -all_versions -sort
AND.CEL;1
NOR.CEL;1
NOR.FRAM;1
top.CEL;1

14)
open_mw_cel

NAME
open_mw_cel
Opens a Milkyway design for viewing or editing.

SYNTAX
collection open_mw_cel
[-readonly]
[-library library]
[-version version]
[-not_as_current]
[-sync_port_names]
mw_cel_name

Data Types
library string
version int
mw_cel_name list

ARGUMENTS
-readonly
Opens the Milkyway design only for reading, not writing. You
cannot modify and save the Milkyway design opened with this
option.

-library library
Specifies the Milkyway library in which the design exists. This
option is ignored if there is already an open Milkyway library.

If you also use the -readonly and -library options and the spec-
ified library is not already opened, that library is opened as
read-only. If you want to open another Milkyway design for writ-
ing in the same library, you need to close and reopen the
library to have write access to the library.

If the library is already open in read-only mode, the Milkyway


design is also opened in read-only mode.

-version version
Specifies the version of the Milkyway design to open, an inte-
ger. This option overrides any version number specified in the
mw_cel_name argument.

-not_as_current
Opens the Milkyway design in the background; the design is
opened but not made the current design. The current design stays
the same. The GUI uses this option to overlay a different view
of a Milkyway design on the current Milkyway design.

-sync_port_names
Synchronizes changed ports names from the child macro cell to
the top cell. Whether or not this option is used, the tool syn-
chronizes the ports of the child macro cell to the top cell
based on the ports names. However, if the port names of the
child macro cell have been changed, then the names do not match,
and this option must be used to synchronize the modified ports
names of the child macro cell to the top cell.

Note that if you delete ports and create new ports in the child
macro cell, the synchronization operation might map the newly
created ports to the original ones incorrectly.

mw_cel_name
Specifies the name of the Milkyway design to open.
You can specify the Milkyway design name using two parts: the
design name and the view name. For example, "top.CEL" specifies
the CEL view of the Milkyway design named "top". If you specify
a simple name without an extension such as "top", the command
opens the Milkyway design named "top.CEL". To open a view other
than the CEL view, you need to explicitly specify the view name.

The mw_cel_name argument can be a Milkyway design name list or a


Milkyway design collection. This means you can open several
Milkyway designs at the same time. The last opened Milkyway
design is set as the current Milkyway design. You can switch the
current Milkyway design among the open designs by using the cur-
rent_mw_cel command.

For information on specifying the mw_cel_name argument using a


collection, see the mw_cel_collection man page.

DESCRIPTION
This command opens a Milkyway design and automatically sets it as the
current Milkyway design, allowing you to view or edit the design. If
the GUI is running, the design is displayed in a new layout window. To
start the GUI, use the gui_start command.

You can optionally specify the Milkyway library from which to open the
design using the -library option. Otherwise, the command opens the
design in the currently open Milkyway library (previously opened by the
open_mw_lib command).

To close an open Milkyway design, use the close_mw_cel command.

Multicorner-Multimode Support
This command has no dependency on scenario-specific information.

15)

save_mw_cel

NAME
save_mw_cel
Saves the specified design in Milkyway format.

SYNTAX
status save_mw_cel
[-as name]
[-overwrite | -increase_version]
[-scenarios scenario_list]
[-hierarchy]
[-check_only]
design_name

Data Types
name string
scenario_list list
design_name string

ARGUMENTS
-as name
Saves the specified design as a Milkyway design with the speci-
fied name. This can be a new or existing Milkyway design.

The name can be formatted as A[.B], in which the string A repre-


sents the base name of the design and the string B represents
the view name of the design: CEL, FRAM, err, or FILL. Refer to
the man page of mw_cel_collection for detailed information on
specifying a Milkyway design name.

-overwrite
Overwrites the stored version of the Milkyway design. This is
the default behavior if the -increase_version option is not
used.

-increase_version
Increases the version number of the Milkyway design being saved,
which preserves the previously stored version. This option can
be used together with the -as option.

-scenarios scenario_list
Specifies a list of scenarios whose constraints are saved with
the Milkyway design. By default, the command includes all sce-
narios.

-hierarchy
Saves the modified top-level Milkyway design, its modified sub-
designs, and all attached files. The saved data overwrites the
previously stored versions of the designs. By default, the com-
mand saves only the specified design, not its subdesigns.

-check_only
Reports the list of Milkyway designs to be saved, but does not
execute the save operation. This option works only with the
-hierarchy option.

design_name
Specifies explicitly the Milkyway design to be saved. By
default, the command saves the current Milkyway design.

DESCRIPTION
This command saves the current Milkyway design or a specified design in
Milkyway format. It does not affect the open status of Milkyway designs
in the current session. To open or close Milkyway designs, use the
open_mw_cel or close_mw_cel command.

When you use the -as option, the command saves the specified design as
a new design, along with the files associcated with the design. The
associated views overwrite any identically named views if the view name
of the saved design is CEL and the period character (.) is not speci-
fied in the name of the new design.

The -increase_version option increases the version of the design to be


saved. If you combine the -as option with the -increase_version option,
the command increases the versions of the associated views if the view
name of the saved design is CEL and the period character (.) is not
specified in the name of the design to be saved.

The tool runs a database consistency checker before it saves the Milky-
way design. If the check fails, it appends "_CORRUPT" to the Milkyway
design name. For example, if you are saving the design named abc.CEL
and the consistency checker detects an error, the command writes out
the Milkyway design using the name "abc_CORRUPT.CEL".

To save the Milkyway design hierarchically, use the -hierarchy option,


which saves the lower-level designs in addition to the specified
design. When the command finishes saving the design hierarchy, it
reports the names of the saved Milkyway views.

The command saves the top-level Milkyway design or subdesigns when they
have been modified. When the top-level Milkyway design is unmodified
while subdesigns are modified, the commands saves the modified subde-
signs and updates the time stamp of the top-level Milkyway design.

The -hierarchy option does not close any Milkyway designs. Thus, any
open Milkyway designs remain open after the hierarchical save. If you
do another hierarchical save, the whole process is applied again for
the specified top-level Milkyway design.

When you use the -check_only option together with the -hierarchy
option, the command reports the list of Milkyway designs to be saved,
but does not save the Milkyway designs.

Multicorner-Multimode Support
By default, this command uses information from both active and inactive
scenarios. You can select different scenarios by using the -scenarios
option.

EXAMPLES
The following example saves the current design as a Milkyway design
named "my_new_design".

prompt> save_mw_cel -as my_new_design


Information: Performing CEL netlist consistency check. (MWDC-118)
Information: CEL consistency check PASSED. (MWDC-119)
Information: Saved design named my_new_design. (UIG-5)
1

16

close_mw_cel

NAME
close_mw_cel
Closes the specified Milkyway designs.

SYNTAX
status close_mw_cel
[-save]
[-hierarchy]
[-all_views]
[-all_versions]
[mw_cel_list]

Data Types
mw_cel_list list

ARGUMENTS
-save Indicates that the specified Milkyway designs are to be saved
before closing. By default, the command discards any changes
made to the Milkyway design and closes the specified Milkyway
design.

-hierarchy
Closes the specified top design and all opened child designs. By
default, the command closes only the specified Milkyway designs.

When -hierarchy is specified, mw_cel_list can only specify the


top design.

The -hierarchy argument cannot be used with -all_views and


-all_versions.

-all_views
Closes all opened views of specified Milkyway designs. By
default, the command closes only the specified Milkyway designs.
If this option is used with -save, only views supported by
save_mw_cel will be saved first and then all opened views will
be closed. If specifying this option without -all_versions,
only the latest versions of all views will be closed.

The -all_views argument cannot be used with -hierarchy.

-all_versions
Closes all versions of specified Milkyway designs. If specify-
ing this option with -all_views, all views and all versions of
the specified Milkway designs will be closed, or else only all
versions of the specified views will be closed.

The -all_versions argument cannot be used with -hierarchy.

mw_cel_list
Specifies Milkyway designs to be closed. You can specify Milky-
way designs by name, name pattern, or by the Milkyway design
collection's name. For example, specifying top matches a Milky-
way design named top in the current library. Specifying top*
matches all Milkyway designs having names beginning with top.
The command close_mw_cel [get_mw_cels *] closes all Milkyway
designs in the current library. By default, the command uses
the current Milkyway design.

DESCRIPTION
This command saves or discards specified Milkyway designs or the cur-
rent Milkyway design and then closes them.

If the closed Milkyway design appears in any design stack, it will be


poped out from those stacks first.

If the current working design is poped out of stack or is closed, we


will switch current working design to the top of most recently used
stack.

Multicorner-Multimode Support
This command has no dependency on scenario-specific information.

17)
read_def

NAME
read_def
Annotates the design with data from a file in Design Exchange
Format (DEF).

SYNTAX
status read_def
[-check_only]
[-enforce_scaling]
[-no_incremental]
[-verbose]
[-turn_via_to_inst]
[-inexactly_matched_via_to_inst]
[-lef lef_file_names]
[-snet_no_shape_as_user_enter]
[-snet_no_shape_as_detail_route]
[-preserve_wire_ends]
def_file_names

Data Types
lef_file_names list
def_file_names list

ARGUMENTS
-check_only
Analyzes the input DEF file without annotating any of the data
on the design. It provides diagnostic information on the cor-
rectness and integrity of DEF file.

-enforce_scaling
Instructs the tool to continue to annotate the design with
information given in the DEF file, even when conversion of data
from DEF units to library units could result in roundoff errors.

-no_incremental
Removes all pre-existing physical annotations before reading in
the physical information in the DEF file.

-verbose
Generates additional debugging messages of two types: informa-
tion and warnings.

-turn_via_to_inst
Creates turn vias as via cell instances rather than path
objects. Turn vias are represented in DEF as a single rectangle
(usually a piece of dangling metal).

-inexactly_matched_via_to_inst
Creates inexactly matched vias as via cell instances. Inexactly
matched vias are vias that match a Milkyway technology contact
code's cut dimensions, but the enclosure dimensions are larger
than those of the contact code. By default, the tool creates
inexactly matched vias as contact arrays and extra paths on the
enclosure layers.

-lef lef_file_names
Imports the rotated vias and design-specific nondefault rules
from the LEF files into the design. The incremental LEF files
are generated by the write_def command.
-snet_no_shape_as_user_enter
Marks the wire segments without "+ SHAPE" statement in SPECIAL-
NETS with the route type "user enter".

-snet_no_shape_as_detail_route
Marks the wire segments without "+ SHAPE" statement in SPECIAL-
NETS with the route type "detail route".

-preserve_wire_ends
Creates special power/ground wiring as paths without extensions
(that is, square ends), special fill wiring as rectangles, and
all other special and regular wiring as wires with half-width
extensions (that is, square ends by half-width).

def_file_names
Specifies the name of the file from which to draw physical data
to annotate onto the design. This file must be in Design
Exchange Format (DEF). For multiple files, the DEF files are
read in incrementally, and you must specify the DEF files in the
correct order. It strongly recommended that you remove overlap-
ping floorplanning data, such as ROWS, and duplicate routing
geometry data in the DEF files. Otherwise, these conditions
might be error-prone in the subsequent flow.

DESCRIPTION
This command annotates the design with physical design data taken from
a file in Design Exchange Format (DEF). The command can read both
uncompressed and compressed (in gzip format) DEF files.

The command reads physical data associated with the current design from
a DEF file. If cell, port, or net specified in the DEF file does not
exist in the database, the corresponding object is created in the
Milkyway database.

Multicorner-Multimode Support
This command has no dependency on scenario-specific information.

EXAMPLES
In the following example, the design is annotated with the physical
data defined in the DEF file named top.def.

prompt> read_def top.def

18)

add_end_cap

NAME
add_end_cap
Adds end cap cells to the cell rows in the current design.

SYNTAX
status add_end_cap
-lib_cell lib_cell_name
[-vertical_cells lib_cell_names [-fill_corner]]
[-mode both | bottom_left | upper_right]
[-mirror]
[-respect_padding]
[-respect_blockage]
[-respect_keepout]
[-ignore_soft_blockage]
[-skip_fixed]
[-next_to_fixed]
[-at_va_boundary]
[-at_plan_group_boundary]

Data Types
lib_cell_name collection of one cell
lib_cell_names collection of one or more cells

ARGUMENTS
-lib_cell lib_cell_name
Specifies the reference library cell to be used as horizontal
end caps. You can specify only one cell.

This is a required option.

-vertical_cells lib_cell_names
Specifies the reference library cells to be used as vertical end
caps.

By default, the tool does not add vertical end cap cells.

-fill_corner
Fills the corners where vertical and horizontal end caps meet
with horizontal end cap cells. You must use this option with the
-vertical_cells option.

By default, the tool does not fill corners.

-mode both | bottom_left | upper_right


Specifies how to place the end cap cells.

The behavior for each mode is


o both (the default)
Places an end cap cell at both ends of the row. The left end
cap in normal orientation and the right end cap is flipped.
Note that the -mirror option has no effect when using the both
mode.

o bottom_left
Places an end cap cell at the bottom of a vertical row or to
the left of a horizontal row.

o upper_right
Places an end cap cell at the top of a vertical row or to the
right of a horizontal row.

-mirror
Places the end cap cell in a flipped orientation. This option
has no effect when you specify -mode both.

By default, the tool places the cell in its normal orientation.

-respect_padding
Prevents the tool from placing end cap cells in the padding
areas around macro cells.
By default, the tool can place end cap cells in the padding
areas.

-respect_blockage
Prevents the tool from placing end cap cells inside placement
blockages.

By default, the tool can place end cap cells inside placement
blockages.

-respect_keepout
Prevents the tool from placing end cap cells inside the keepout
margins around macro cells. This option does not apply to keep-
out margins on other types of cells.

-ignore_soft_blockage
Ignores soft blockages and honors only hard blockages. You must
use this option with the -respect_blockage option.

-skip_fixed
Prevents the tool from placing end cap cells at locations that
are occupied by fixed cells. If placing a horizontal end cap at
either end of a row that overlaps a fixed cell, no horizontal
end cap is placed.

You must use this option with the -vertical_cells option. This
option is mutually exclusive with the -next_to_fixed option.

By default, the tool does not respect fixed cells.

-next_to_fixed
Treats fixed cells that are less than one unit tile from a
boundary as a macro and places a horizontal end cap cell next to
the fixed cell. Other fixed cells are ignored by this option.

This option is mutually exclusive with the -skip_fixed option.

-at_va_boundary
Places horizontal end cap cells on both sides of the vertical
voltage area boundaries. When you use this option, rows are
treated as cut by the vertical voltage area boundaries. There-
fore, horizontal end cap cells are placed on both sides of a
vertical voltage area boundary.

If a voltage area does not have guard bands, its boundary is


ignored during end cap insertion.

By default, voltage area boundaries are ignored during end cap


insertion.

-at_plan_group_boundary
Places horizontal end cap cells on both sides of the vertical
plan group boundaries. When you use this option, rows are
treated as cut by vertical plan group boundaries. Therefore,
horizontal end cap cells are placed on both sides of a vertical
plan group boundary.

By default, plan group boundaries are ignored during end cap


insertion.
DESCRIPTION
This command allows you to add horizontal end cap cells at both ends of
a cell row and, optionally, to add vertical end cap cells along hori-
zontal edges. An end cap cell is typically not a logic cell and is
added before placement to serve a special purpose for the row, such as
a decoupling capacitor. You should specify a proper end cap cell
because the tool can accept any standard cell as an end cap cell.

If you use the -vertical_cells option and the remaining gaps are larger
than or equal to the smallest vertical end cap cells, the tool inserts
the vertical end cap cells in the specified order. If the remaining
gaps are smaller than the smallest vertical end cap cells, the tool
inserts the next cell in order. To avoid unfilled gaps, carefully con-
sider the size of the vertical end cap cells that you specify.

Multicorner-Multimode Support
This command has no dependency on scenario-specific information.

EXAMPLES
The following example adds horizontal end cap cells named MY_END_CAP to
the current design.

prompt> add_end_cap -lib_cell MY_END_CAP

18)

add_tap_cell_array

NAME
add_tap_cell_array
Adds tap cells to the design, forming a two-dimensional array
structure.

SYNTAX
status add_tap_cell_array
-master_cell_name cell_name
-distance tap_cell_distance
[-offset distance]
[-pattern normal | every_other_row | stagger_every_other_row]
[-voltage_area {voltage_area_collection}]
[-plan_group plan_group_collection]
[-tap_cell_identifier tap_cell_prefix]
[-tap_cell_separator tap_cell_separator]
[-no_tap_cell_under_layers layer_list]
[-well_port_name port_name]
[-well_net_name net_name]
[-substrate_port_name port_name]
[-substrate_net_name net_name]
[-connect_power_name power_net_name]
[-connect_ground_name ground_net_name]
[-fill_boundary_row true | false]
[-fill_macro_blockage_row true | false]
[-boundary_row_double_density true | false]
[-macro_blockage_row_double_density true | false]
[-left_macro_blockage_extra_tap by_rule | must_insert | no_insert]
[-right_macro_blockage_extra_tap by_rule | must_insert | no_insert]
[-left_boundary_extra_tap by_rule | must_insert | no_insert]
[-right_boundary_extra_tap by_rule | must_insert | no_insert]
[-ignore_soft_blockage true | false]
[-at_distance_only true | false]
[-skip_fixed_cells true | false | tap]
[-respect_keepout]
[-remove_redundant_tap_cells]
[-no_1x]

Data Types
cell_name string
tap_cell_distance float
distance float
voltage_area_collection collection
plan_group_collection collection
tap_cell_prefix string
tap_cell_separator string
layer_list list
port_name string
net_name string
power_net_name string
ground_net_name string

ARGUMENTS
-master_cell_name cell_name
Specifies the library reference cell to be used as a tap cell.
You can specify only a single library cell.

This is a required option.

-distance tap_cell_distance
Specifies the distance in microns between two tap cells in a
row. This distance is referred to as the tap distance.

This is a required option.

-offset distance
Specifies the distance in microns that the tap pattern should be
shifted to the right.

If the offset distance is a multiple of the tap distance, the


effective offset is 0. For example, if the tap distance is 10
microns and the offset is 32 microns, the effective offset is 2
(32 - 3x10).

The default is 0.

-pattern normal | every_other_row | stagger_every_other_row


Specifies the tap cell insertion pattern.

The supported patterns are


o normal (the default)
The tool adds tap cells to every row using the specified tap
distance. The tap distance specified for this pattern should
be approximately twice the design rule distance limit.

o every_other_row
The tool adds tap cells to every other row for odd rows only.
This reduces the number of required tap cells by approximately
half as compared to the normal pattern. The tap distance spec-
ified for this pattern should be approximately twice the
design rule distance limit.

o stagger_every_other_row
The tool adds tap cells to every row. The tap cells on even
rows are offset with half the tap distance relative to the odd
rows, producing a checkerboard-like pattern. This pattern also
reduces the number of required tap cells by approximately half
as compared to the normal pattern. The tap distance specified
for this pattern should be approximately four times the design
rule distance limit.

-voltage_area {voltage_area_collection}
Inserts tap cells only in the specified voltage areas.

By default, the tool inserts tap cells in all voltage areas.

If you specify both the -voltage_area and -plan_group options,


taps cells are inserted only in those locations that meet both
requirements.

-plan_group plan_group_collection
Inserts tap cells only in the specified plan groups and under
the plan group hierarchy.

By default, the tool inserts tap cells in all plan groups.

If you specify both the -voltage_area and -plan_group options,


taps cells are inserted only in those locations that meet both
requirements.

-tap_cell_identifier tap_cell_prefix
Specifies the prefix for the inserted tap cells.

By default, no prefix is added.

-tap_cell_separator tap_cell_separator
Specifies the separator character that is used when composing
the instance name of the tap cell.

The tap cell instance name consists of a prefix, the library


reference cell name, the tap layer number, and a rolling number.
For example, the instance name "tapfiller!MY_TAP!98!25" has the
tapfiller prefix, the MY_TAP library reference cell name, the
tap layer number 98, the rolling number 25, and the tap cell
separator !. This naming convention allows you to do pattern
matching selection of the tap cells.

The default is "!".

-no_tap_cell_under_layers layer_list
Avoids placing tap cells under the preroutes on the specified
metal layers.

-well_port_name port_name
Specifies the port name of the well tie.

-well_net_name net_name
Specifies the net name of the well tie.
-substrate_port_name port_name
Specifies the port name of the substrate tie.

-substrate_net_name net_name
Specifies the net name of the substrate tie.

-connect_power_name power_net_name
Specifies the net to connect the tap cell's power pin if there
is more than one power net in the design,

-connect_ground_name ground_net_name
Specifies the net to connect the tap cell's ground pin if there
is more than one ground net in the design.

-fill_boundary_row true | false


Specifies the density adjustment of the tap cell array.

When you use the -pattern every_other_row option, every other


row is empty to reduce the number of tap cells inserted. When
set to true (the default), this option instructs the tool to
fill the section of a row that is adjacent to the chip boundary
to avoid tap rule violations. When set to false, the section of
the row adjacent to the chip boundary might need to rely on tap
cells outside the boundary to satisfy the tap distance rule.

This option is effective only when you also use the -pattern
every_other_row option.

-fill_macro_blockage_row true | false


Specifies the density adjustment of the tap cell array.

When you use the -pattern every_other_row option, every other


row is empty to reduce the number of tap cells inserted. When
set to true (the default), this option instructs the tool to
fill the section of a row that is adjacent to the macro or
blockage boundary to avoid tap rule violations. When set to
false, the section of the row adjacent to the macro or blockage
boundary might need to rely on tap cells outside the boundary to
satisfy the tap distance rule.

This option is effective only when you also use the -pattern
every_other_row option.

-boundary_row_double_density true | false


Specifies the density adjustment of the tap cell array.

When you use the -pattern stagger_every_other_row option, every


other row is staggered to reduce the number of tap cells
inserted. When set to true (the default), this option instructs
the tool to double the tap density on the section of a row that
is adjacent to the chip boundary to avoid tap rule violations.
When set to false, the section of the row adjacent to the chip
boundary might need to rely on tap cells outside the boundary to
satisfy the tap distance rule.

This option is effective only when you also use the -pattern
stagger_every_other_row option.

-macro_blockage_row_double_density true | false


Specifies the density adjustment of the tap cell array.

When you use the -pattern stagger_every_other_row option, every


other row is staggered to reduce the number of tap cells
inserted. When set to true (the default), this option instructs
the tool to double the tap density on the section of a row that
is adjacent to the macro or blockage boundary to avoid tap rule
violations. When set to false, the section of the row adjacent
to the macro or blockage boundary might need to rely on tap
cells outside the boundary to satisfy the tap distance rule.

This option is effective only when you also use the -pattern
stagger_every_other_row option.

-left_macro_blockage_extra_tap by_rule | must_insert | no_insert


Specifies the density adjustment of the tap cell array.

Valid values for this option are


o by_rule (the default)
If the left row edge is more than the minimum tap distance
from the closest tap cell on the same row as the macro or
blockage, the tool inserts an extra tap cell at the minimum
tap distance from the left edge. Note that the minimum tap
distance is half of the spacing specified by the -distance
option.

This setting might insert an extra tap cell, but always


ensures that the minimum tap distance rule is not violated.

o must_insert
If there is no tap cell within the minimum tap distance from
the left row edge, the tool inserts an extra tap cell at the
minimum tap distance from the left edge.

If there is a tap cell within the minimum tap distance from


the left row edge, the tool inserts an extra tap cell exactly
at the left edge.

Note that the minimum tap distance is half of the spacing


specified by the -distance option.

o no_insert The tool never inserts an extra tap cell at the left
edge of the row. When you use this setting, standard cells
near the left side of the row might need to rely on tap cells
inside the macro or blockage to satisfy the tap distance rule.

-right_macro_blockage_extra_tap by_rule | must_insert | no_insert


Specifies the density adjustment of the tap cell array.

Valid values for this option are


o by_rule (the default)
If the right row edge is more than the minimum tap distance
from the closest tap cell on the same row as the macro or
blockage, the tool inserts an extra tap cell at the minimum
tap distance from the right edge. Note that the minimum tap
distance is half of the spacing specified by the -distance
option.

This setting might insert an extra tap cell, but always


ensures that the minimum tap distance rule is not violated.

o must_insert
If there is no tap cell within the minimum tap distance from
the right row edge, the tool inserts an extra tap cell at the
minimum tap distance from the right edge.

If there is a tap cell within the minimum tap distance from


the right row edge, the tool inserts an extra tap cell exactly
at the right edge.

o no_insert The tool never inserts an extra tap cell at the


right edge of the row. When you use this setting, standard
cells near the right side of the row might need to rely on tap
cells inside the macro or blockage to satisfy the tap distance
rule.

-left_boundary_extra_tap by_rule | must_insert | no_insert


Specifies the density adjustment of the tap cell array.

Valid values for this option are


o by_rule (the default)
If the left edge of a row adjacent to the design's boundary is
more than the minimum tap distance from the closest tap cell
on the same row, the tool inserts an extra tap cell at the
minimum tap distance from the left edge. Note that the mini-
mum tap distance is half of the spacing specified by the -dis-
tance option.

This setting might insert an extra tap cell, but always


ensures that the minimum tap distance rule is not violated.

o must_insert
If there is no tap cell within the minimum tap distance from
the left row edge, the tool inserts an extra tap cell at the
minimum tap distance from the left edge.

If there is a tap cell within the minimum tap distance from


the left row edge, the tool inserts an extra tap cell exactly
at the left edge.

o no_insert The tool never inserts an extra tap cell at the left
edge of the row. When you use this setting, standard cells
near the left side of the row might need to rely on tap cells
outside the design's boundary to satisfy the tap distance
rule.

-right_boundary_extra_tap by_rule | must_insert | no_insert


Specifies the density adjustment of the tap cell array.

Valid values for this option are


o by_rule (the default)
If the right edge of a row adjacent to the design's boundary
is more than the minimum tap distance from the closest tap
cell on the same row, the tool inserts an extra tap cell at
the minimum tap distance from the right edge. Note that the
minimum tap distance is half of the spacing specified by the
-distance option.
This setting might insert an extra tap cell, but always
ensures that the minimum tap distance rule is not violated.

o must_insert
If there is no tap cell within the minimum tap distance from
the right row edge, the tool inserts an extra tap cell at the
minimum tap distance from the right edge.

If there is a tap cell within the minimum tap distance from


the right row edge, the tool inserts an extra tap cell exactly
at the right edge.

o no_insert The tool never inserts an extra tap cell at the


right edge of the row. When you use this setting, standard
cells near the right side of the row might need to rely on tap
cells outside the design's boundary to satisfy the tap dis-
tance rule.

-ignore_soft_blockage true | false


Controls whether soft blockages are ignored during tap cell
insertion.

The default is false.

-at_distance_only true | false


Specifies the density adjustment of the tap cell array.

By default (false), extra tap cells can be inserted at locations


other than the specified distance, distance/2, or distance/4
(stagger mode).

When this option is set to true, the tool inserts tap cells only
at the specified distance, distance/2, or distance/4 (stagger
mode). This could cause DRC violations.

This option is effective only when the one or more of the fol-
lowing options are set to by_rule: -left_macro_block-
age_extra_tap, -right_macro_blockage_extra_tap, -left_bound-
ary_extra_tap, and -right_boundary_extra_tap.

-skip_fixed_cells true | false | tap


Controls whether existing fixed cells are treated as blockages.

When this option is true (the default), existing fixed cells are
treated like blockages and tap cells are not placed on top of
fixed cells. Extra tap cells might be placed next to fixed
cells, using the same rules as those applied to blockages.

When this option is set to false, tap cell insertion ignores


existing fixed cells and might cause overlaps by placing tap
cells on top of fixed cells. This setting cannot be used with
the -no_1x option.

When this option is set to tap, the tool does not place a tap
cell if the location is occupied by a fixed standard cell. The
result is similar to setting this option to false, except that
the tool does not place a tap cell that would cause an overlap.

-respect_keepout
Prevents the placement of tap cells inside the keepout margins
around macro cells.

By default, the tool can place tap cells inside the keepout mar-
gins.

-remove_redundant_tap_cells
Runs a clean-up operation after placing the well tap cells to
remove tap cells with the specified master cell name that are
not strictly necessary to meet the tap distance for the normal
pattern.

The clean-up operation removes redundant tap cells regardless of


whether they were placed during the same command or earlier in
the design process.

-no_1x Does not to allow one-unit-tile fillers in the design. When you
specify this option, tap cells are not placed at locations that
would cause one-unit-tile gaps between a tap cell and fixed
cells, macros, blockages, and the chip boundary. The no one-
unit-tile spacing rule takes precedence over all other tap
rules. The tool first places tap cells and then checks for one-
unit-tile gaps. Tap cells that cause single one-unit-tile gaps
are either moved (to the left or right) to the next legal loca-
tion or removed if no legal location is found. Tap cells that do
not cause one-unit-tile gaps are not moved.

Setting this option might cause tap distance and pattern viola-
tions. You need to specify a tighter tap distance to prevent
these violations.

This option cannot be used with the -skip_fixed_cells false


option.

DESCRIPTION
This command adds tap cells to the design, forming a two-dimensional
array structure. A tap cell is a special nonlogic cell with a well tie,
substrate tie, or both. Tap cells are typically used when most or all
standard cell in the library contain no substrate or well taps. The
design rules typically specify a distance limit from every transistor
of a standard cell to a well or substrate tie.

This command is used to insert tap cells before global placement so


that all standard cells that are subsequently placed can satisfy the
distance limit because of the inserted tap cells. You should specify
the tap distance and offset based on your specific design rule's dis-
tance limit. The command has no knowledge of the design rule's distance
limit. A visual check is recommended after running this command to
ensure that all standard cell placeable areas are properly protected by
tap cells. You can select several tap cell placement patterns.

The command can connect a substrate or well port of a tap cell to a


specified net. It can also connect a power or ground port of the tap
cells to a specified power or ground net.

Multicorner-Multimode Support
This command has no dependency on scenario-specific information.

19)
insert_buffer

NAME
insert_buffer
Inserts buffer cells on specified nets or nets connected to
specified ports or pins.

SYNTAX
collection insert_buffer
[-new_net_names new_net_names]
[-new_cell_names new_cell_names]
[-location coordinate_list]
[-orientation orientation_list]
[-no_of_cells number]
[-inverter_pair]
[-freeze_silicon]
object_list
buffer_lib_cell
[-divide_load_by denominator]
[-repeater_distance length]
[-port_half_distance]
[-ignore_pin_cap]

Data Types
new_net_names list
new_cell_names list
coordinate_list list
orientation_list list
number integer
object_list list
buffer_lib_cell collection

ARGUMENTS
-new_net_names new_net_names
Specifies the names of the new nets created by buffer insertion.
You should specify one net name per buffer, or two net names per
inverter pair when inserting inverter pairs. You can optionally
specify only a single common base name; the tool generates new
net names by adding unique numeric suffixes to this base name.

The specified names can be any valid net names, but must be leaf
(not hierarchical) names and cannot contain embedded hierarchi-
cal separators. They must be unique in the current context, as
specified by the current instance. If the specified net name
already exists, the command adds a suffix of "_%d" or "_%d_%d"
to the net name.

By default, the command uses the base name eco_net.

-new_cell_names new_cell_names
Specifies the names of the new buffer cells inserted. You
should specify one cell name per buffer, or two cell names per
inverter pair when inserting inverter pairs. You can optionally
specify only a single common base name; the tool generates new
cell names by adding unique numeric suffixes to this base name.

The specified names can be any valid cell names, but must be
leaf (not hierarchical) names and cannot contain embedded hier-
archical separators. They must be unique in the current context,
as specified by the current instance. If the specified cell
name already exists, the command adds a suffix of "_%d" or
"_%d_%d" to the cell name.

By default, the command uses the common base name eco_cell.

-location coordinate_list
Specifies the lower-left coordinates in microns for the loca-
tions of the buffer cells or inverter pairs, in the format {x1
y1 x2 y2 ...}. You must specify one location per buffer when
inserting buffers, or two locations per inverter pair when
inserting inverter pairs. These locations can be any valid x-y
coordinate pair inside the placement region of the core area,
relative to the chip origin.

By default, the tool derives the locations for the buffers based
on the pins specified for the object_list argument.

-orientation orientation_list
Specifies the orientation of the buffer cells or inverter pairs.
You must specify one orientation per buffer when inserting
buffers, or two orientations per inverter pair when inserting
inverter pairs. These orientations can be any valid orientation
allowed in the library, such as N, W, S, E, FN, FW, FS, or FE.
By default, the command uses the N orientation.

-no_of_cells number
Specifies the number of buffer cells or inverter pairs to be
inserted per net. The inserted repeaters are connected back-to-
back in series. By default, the command inserts a single buffer
cell or inverter pair per net.

-inverter_pair
Inserts inverter pairs instead of buffer cells. If you use this
option, you need to also specify a library cell that has an
inverting output, using the buffer_lib_cell option.

-freeze_silicon
Inserts buffer cells in a transitional state to support the ECO
freeze silicon flow. The place_freeze_silicon or
map_freeze_silicon command deletes the instances and replaces
them with existing spare cells of the same reference library
cell.

object_list
Specifies a list of nets, pins, or ports to be buffered. The
new buffers or inverter pairs are placed in the specified net or
in the net connected to the specified pins or ports, close to
pin or port.

If you specify a net, the inserted buffer is the new load of the
specified existing net.

If you specify pins, the tool groups all of the specified pins
based on the nets to which they are connected. When the grouped
pins are load pins, the tool inserts the buffers so that the new
buffer cells can drive them. When the grouped pins are driver
pins, the tool connects the new buffer cells so that they become
the load of the specified driver pin.
buffer_lib_cell
Specifies the library cell object to be used as a buffer or
inverter. Specify the object as either a named library cell or
a library cell collection. If the library cell is a buffer
cell, the number of instances inserted is equal to the number
specified by the -no_of_cells option. If the library cell is an
inverter, the cells are inserted as pairs, so the number of
instances inserted is twice the number specified by the
-no_of_cells option.

If the library cell has both inverting and noninverting outputs


(that is, it can act as both a buffer and inverter), the
-inverter_pair option controls which output is used. If the
library cell has multiple outputs of the same type, the command
uses the first noninverting or inverting output found.

-divide_load_by denominator
This option is obsolete. Use the add_buffer_on_route command
instead.

-repeater_distance length
This option is obsolete. Use the add_buffer_on_route command
instead.

-port_half_distance
This option is obsolete. Use the add_buffer_on_route command
instead.

-ignore_pin_cap
This option is obsolete. Use the add_buffer_on_route command
instead.

DESCRIPTION
This command adds buffers or inverter pairs at one or more specified
nets, pins, or ports. A library cell with a single input and one or
more outputs can be used as the buffer or inverter, as long as each
output has the same or inverted logic function of the input.

Like all other netlist editing commands, all of the insert_buffer com-
mand's arguments must be valid to have a successful command run. If
any specified argument is invalid, the netlist remains unchanged. If
the command succeeds, the result is a collection of the newly inserted
cells. If the command fails, the result is an empty collection or an
empty string.

By default, each newly created cell has a name beginning with the
eco_cell string and ending with a unique numeric suffix. Each newly
created net has a name beginning with the eco_net string and ending
with a unique numeric suffix. To override the default name strings,
use the -new_net_names and -new_cell_names options.

Note that the locations of the new cells specified by the -location
option or the locations derived by the tool are not legalized. If you
use the legalize_placement command after using the insert_buffer com-
mand, the tool might move these new cells around to find legal loca-
tions.

You can mimic buffer insertion by using other commands such as cre-
ate_cell, create_net, disconnect_net, and connect_net. The
insert_buffer command provides a more efficient and reliable way to
insert buffers.

The insert_buffer command uses the following basic rules to check its
arguments for validity:

o The pin or port must be in the current scope (at or below the cur-
rent instance).
For a description of special scoping rules, see the "Buffering Inside
Boundary Pins" section.

o The pin or port must be connected to a net.

o Bidirectional pins cannot be buffered.

o The net cannot be a PG net or a tie net.

o The specified library cell cannot be a sequential device.

o The specified library cell must be a buffer or inverter, as previ-


ously defined.

o The library cell must have an inverting output when you use the
-inverter_pair option.
The command uses the first inverting output and inserts two cells so
that it preserves the logic sense of the path.

o The number argument of the -no_of_cells option must be a positive,


nonzero integer.

Inserting and Connecting the New Buffer


The following figure shows a network example that is used to describe
the rules used by the insert_buffer command to connect the new buffer
or inverter pair.

+--- e3/A
|
e1/Z ---- old_net -----+--- e4/A
|
+--- e5/A
If the specified pin is a load, the load first is disconnected from its
old net and then connected to the new net, as shown in the following
figure:

+--- eco_cell --- eco_net --- e3/A


|
e1/Z ---- old_net -----+--- e4/A
|
+--- e5/A

If the specified pin is a driver, all loads on that net are discon-
nected from the old net and are connected to the new net, as shown in
the following figure:

+--- e3/A
|
e1/Z --- old_net --- eco_cell --- eco_net -+--- e4/A
|
+--- e5/A
If you specify a list of load pins on the same net, these load pins are
grouped and the new net drives them, as shown in the following figure:

+--- e3/A
|
e1/Z --- old_net -+- eco_cell --- eco_net -+--- e4/A
|
+--- e5/A
The command cannot buffer a multidriver net.

Buffering Inside Boundary Pins


When you specify the insertion of a buffer at a pin on the boundary of
a hierarchical block, the insert_buffer command inserts the buffer
either inside or outside the hierarchical block, depending on the cur-
rent hierarchical scope. To insert the buffer inside the hierarchical
block, set the scope to that block by using the current_instance com-
mand, and then run the insert_buffer command. The tool inserts the
buffer within the block to which the current_instance is set.

Multicorner-Multimode Support
This command has no dependency on scenario-specific information

20)
magnet_placement

NAME
magnet_placement
Performs magnet placement. Pulls standard cells closer to
macros and assigns legal locations.

SYNTAX
status magnet_placement
[-move_fixed]
[-mark_fixed]
[-move_soft_fixed]
[-mark_soft_fixed]
[-hierarchy_mode default | block | all]
[-exclude_cells object_list]
[-avoid_soft_blockages]
[-stop_by_sequential_cells]
[-exclude_buffers]
[-logical_level level]
[-stop_points object_list]
[-cells object_list]
[-align]
magnet_objects

Data Types
object_list collection
level integer
magnet_objects collection

ARGUMENTS
-move_fixed
Specifies that a cell marked fixed can be moved. A warning
occurs when a fixed cell is being moved. By default, fixed
cells cannot be moved.
-mark_fixed
Specifies that the cells are to be marked fixed after placement.
By default, no cells are marked fixed.

-move_soft_fixed
Specifies that a cell marked soft fixed can be moved. A warning
occurs when a soft-fixed cell is being moved. By default, fixed
cells cannot be moved.

-mark_soft_fixed
Specifies that the cells are to be marked fixed after placement.
By default, no cells are marked fixed.

-hierarchy_mode default | block | all


Specifies that magnet placement is in hierarchy placing mode.
This means that all the cell instances within each hierarchical
block specified that are connected to the magnet object are
pulled toward it. All hierarchies specified by using the -cells
option are placed one by one.

The option must be used with -cells options, which by default


accepts only flat cell instances as input. When this option is
specified, the option -cells accepts only hierarchical cell
instances as input.

The valid modes are:

o default
The tool traces through only buffers and inverters when
traversing from the magnet object to the cells within the
specified hierarchical block. This is the default setting.

o block
The tool does not traces through any cell when traversing from
the magnet object to the cells within the hierarchical block.
The tool pulls the cells of the specified hierarchical block
toward the magnet object only if they are directly connected
to the magnet object. This is the most restrictive setting.

o all
The tool traces through all combinational cells when travers-
ing from the magnet object to the cells within the specified
hierarchical block. However, it does not trace through sequen-
tial cells. This is the least restrictive setting.

-exclude_cells object_list
Instructs the command to skip the specified cells when pulling
cells toward the magnet object.

-avoid_soft_blockages
Specifies that cells should not be placed over soft blockages.
By default, soft blockages are ignored.

-stop_by_sequential_cells
Specifies to stop pulling cells closer to the magnet objects
when a sequential cell is encountered during level traversal.
This option should be used together with -logical_level

-exclude_buffers
Specifies not to consider buffers and inverters when calculating
the level. They are pulled like normal cells but are skipped
over for level determination. By default, buffers and inverters
are considered as one level of logic. This option should only
be used together with -logical_level.

-logical_level level
Specifies the number of logical levels to pull. By default,
level is 1 (only the first-level cells are pulled).

This option is mutually exclusive with -stop_points.

-stop_points object_list
Specifies to pull only the cells that are on the timing paths
between the magnet objects and the stop-points objects. The
objects can be lists of any pin, port, or cell objects.

This option is mutually exclusive with -logical_level and


-exclude_buffers.

-cells object_list
Specifies to pull only the cells in the specified object list.
You specify only cell objects in the object list.

This option is mutually exclusive with -logical_level,


-exclude_buffers, -stop_by_sequential_cells, and -stop_points.

-align Specifies to place the cells in a horizontal or vertical align-


ment with respect to the pin of the macro.

magnet_objects
Specifies the objects to become magnets. The objects can be a
fixed macro cell, a fixed standard cell, a pin of a fixed macro
cell, or an I/O pin. Objects like vias and blockages are not
allowed to be magnets.

DESCRIPTION
The magnet_placement command allows you to define a set of objects as
magnets and pull the neighboring cells up to a specified logical level
closer to the magnet. Specify a large macro with many placeable stan-
dard cell neighbors. Magnet placement can be used on this type of
macro to ensure that the standard cells are placed close to the macro,
resulting in better timing and congestion.

It is considered best practice to run the magnet_placement command


before the create_placement command, so that sufficient areas are
available for magnet placement operation.

If there are a large number of high fanout nets, the magnet_placement


command might pull a large number of cells resulting in long runtime.
To avoid this situation, set the magnet_placement_fanout_limit variable
to a reasonable value. The default is 1000.

The effect of magnet placement is not preserved from one invocation to


another; for example, if cells A and B are made magnets and there are
cells that are connected to both of them through possibly multiple lev-
els. Running magnet_placement A and then magnet_placement B could
result in a different result from running magnet_placement [get_cells
"A B"] together. Doing the two cells together gives the correct
result.

If magnet_placement is invoked after create_placement, there could be


standard cells already placed. In such a case, finding legal locations
for all the cells might not be possible. Therefore, the magnet_place-
ment command places cells on top of existing cells. You should use the
-mark_fixed command to set a restriction on the cells, so the place_opt
and create_placement commands do not move the cells. You can then use
these commands and run the legalize_placement command to remove the
overlaps. This moves standard cells away from the magnet cells. You
might need to remove the fixed restriction on magnet cells and then run
the legalize_placement command again to legalize the magnet cells.

If you do not want cells to overlap, set the magnet_placement_dis-


able_overlap variable before running the magnet_placement command.

With the -stop_by_sequential_cells option, if you want to pull the


sequential cell element toward the magnet object, set the icc_mag-
netpl_stop_after_seq_cell variable before running the magnet_placement
command.

By default, only the logic before sequential elements is pulled by mag-


net placement.

With the -cells option, the cells that you specify should form an
intact datapath together with the magnet object. For example, if magnet
object connects to cell_a, cell_a connects to cell_b, you should spec-
ify both cell_a and cell_b. These cells do not have to be in a timing
path. Do not use the -cells option with the -stop_points,
-stop_by_sequential_cells, -exclude_buffers, and -logical_level
options.

If the magnet_placement command finds a fixed cell and the -move_fixed


option is not specified, the fixed cell and all cells behind it are not
pulled.

Multicorner-Multimode Support
This command has no dependency on scenario-specific information.

21)
set_app_var

NAME
set_app_var
Sets the value of an application variable.

SYNTAX
string set_app_var
-default
var
value

Data Types
var string
value string

ARGUMENTS
-default
Resets the variable to its default value.
var Specifies the application variable to set.

value Specifies the value to which the variable is to be set.

DESCRIPTION
The set_app_var command sets the specified application variable. This
command sets the variable to its default value or to a new value you
specify.

This command returns the new value of the variable if setting the vari-
able was successful. If the application variable could not be set,
then an error is returned indicating the reason for the failure.

Reasons for failure include:

o The specified variable name is not an application variable, unless


the application variable sh_allow_tcl_with_set_app_var is set to true
See the sh_allow_tcl_with_set_app_var man page for details.

o The specified application variable is read only.

o The value specified is not a legal value for this application vari-
able

22)
placer_max_cell_density_threshold

NAME
placer_max_cell_density_threshold
Enables a mode of coarse placement in which cells can clump
together.

TYPE
float

DEFAULT
-1

DESCRIPTION
This variable enables a mode of coarse placement in which cells are not
distributed evenly across the surface of the chip, but are allowed to
clump together. The value you specify sets the threshold of how
tightly the cells are allowed to clump. A value of 1.0 allows no gaps
between cells.

A reasonable value is one that is above the background utilization of


your design but below 1.0. For example, if your background utilization
is 40%, or 0.4, a reasonable value for this variable is a value between
0.4 and 1.0. The higher the value, the more tightly the cells clump
together.

You can use this feature in conjunction with any command that invokes
coarse placement, such as create_fp_placement, create_placement, and
place_opt.

For example, to set the threshold to 0.7, enter


prompt> set placer_max_cell_density_threshold 0.7

23)
report_physical_bus

NAME
report_physical_bus
Displays information about physical bus.

SYNTAX
status report_physical_bus
[physical_bus_list]

Data Types
physical_bus_list list

ARGUMENTS
physical_bus_list
Specifies the list of physical buses to be reported.

You can specify element of the list with a name pattern of phys-
ical buses or a collection containing physical buses.

By default, all physical buses in the current design are


reported.

DESCRIPTION
This command displays information about the specified physical buses.

In the report, nets in a physical bus are listed following the order in
that physical bus.

Multicorner-Multimode Support
This command has no dependency on scenario-specific information.

23)
report_physical_signoff_options

NAME
report_physical_signoff_options
Reports option values set by set_physical_signoff_options that
are shared (in common) by signoff_drc command and sig-
noff_metal_fill command, etc.

SYNTAX
status report_physical_signoff_options
[-default]

ARGUMENTS
-default
Report default options of set_physical_signoff_options.

DESCRIPTION
This command reports option values that have been set by set_physi-
cal_signoff_options command.

Multicorner-Multimode Support
This command has no dependency on scenario-specific information.
EXAMPLES
The following example runs the report_physical_signoff_options command.

prompt> set_physical_signoff_options \
-exec_cmd icv \
-dp_hosts { machine_1 machine_2 machine_3 machine_4 } \
-num_cpus 4 \
-drc_runset drc.rs \
-fill_runset fill.rs \
-mapfile layermap

prompt> report_physical_signoff_options

24)

get_bounds

NAME
get_bounds
Creates a collection of bounds from the current design.

SYNTAX
collection get_bounds
[-quiet]
[-regexp | -exact]
[-nocase]
[-filter expression]
[patterns | -of_objects objects]

Data Types
expression string
patterns list
objects list

ARGUMENTS
-quiet Suppresses warning and error messages if no objects match. Does
not suppress syntax error messages.

-regexp
Views the patterns argument as a regular expression rather than
a simple wildcard pattern.

This option also modifies the behavior of the =~ and !~ filter


operators to use regular expressions rather than simple wildcard
patterns.

The regular expression matching is similar to the Tcl regexp


command. When using the -regexp option, be careful how you
quote the patterns argument and filter expression. Using rigid
quoting with curly brackets around regular expressions is recom-
mended. Note that regular expressions are always anchored; that
is, the expression is assumed to begin matching at the beginning
of an object name and end matching at the end of an object name.
You can widen the search by adding ".*" to the beginning or end
of the expressions, as needed.

-exact Considers wildcards to be plain characters, and does not inter-


pret their meaning as wildcards.

-nocase
Makes matches case-insensitive, both for the patterns argument
and for the ==, =~, and !~ filter operators.

-filter expression
Filters the collection with the specified expression. For each
bound in the collection, the expression is evaluated based on
the bound's attributes. If the expression evaluates to true, the
bound is included in the result.

To see the list of bound attributes that you can use in the
expression, use the list_attributes -application -class bound
command.

For more information about how to use the -filter option, see
the filter_collection man page.

patterns
Creates a collection of bounds whose names match the specified
patterns. Patterns can include the * (asterisk) and ? (question
mark) wildcard characters. For more information about using and
escaping wildcards, see the wildcards man page. Pattern match-
ing is case sensitive unless you use the -nocase option.

The patterns argument and -of_objects option are mutually exclu-


sive; you can use only one. If you do not use either one, the
command uses the asterisk (*) as the default pattern.

-of_objects objects
Creates a collection of bounds that contain the specified
objects. The objects must be leaf cells or ports.

The patterns argument and -of_objects option are mutually exclu-


sive; you can use only one. If you do not use either one, the
command uses the asterisk (*) as the default pattern.

DESCRIPTION
This command creates a collection of bounds from the current design
that match the specified criteria.

The command returns a collection if any bounds match the criteria. If


no objects match the criteria, the command returns an empty string.

You can use this command at the command prompt or you can nest it as an
argument to another command, such as query_objects or report_bounds. In
addition, you can assign the result to a variable.

When issued from the command prompt, the command behaves as though you
have called the query_objects command to report the objects in the col-
lection. By default, it displays a maximum of 100 objects. You can
change this maximum by using the collection_result_display_limit vari-
able.

For information about collections and the querying of objects, see the
collections man page.

Multicorner-Multimode Support
This command has no dependency on scenario-specific information.

EXAMPLES
The following example gets all bounds with names that start with
my_bound.

prompt> get_bounds my_bound*

25)
remove_bounds

NAME
remove_bounds
Removes bounds from the current design.

SYNTAX
status remove_bounds
[-verbose]
[-all]
[-name bound_name_list]
objects

Data Types
bound_name_list list
objects string

ARGUMENTS
-verbose
Prints information about what is being deleted.

-all Removes all bounds from the current design. This command
removes only bounds that have been created using the cre-
ate_bounds command. Bounds created in an input PDEF file cannot
be removed.

-name bound_name_list
Specifies to remove bounds with the given names.

objects
Specifies bound objects to be removed. You can use the
get_bounds command to specify the objects.

DESCRIPTION
This command removes bounds constraints from the current design. If
you specify the -all option, all bounds are be removed from the design,
with the exception of those specified in an input PDEF file. If you
give a list of bound names, the bounds with the specified names are
removed. The ID is displayed every time a bound is created. You can
use the report_bounds command to view the ID.

Multicorner-Multimode Support
This command has no dependency on scenario-specific information.

EXAMPLES
The following example removes the bounds named temp_0 and temp_1.

prompt> remove_bounds -name {temp_0 temp_1}


prompt> remove_bounds [get_bounds *]
26)
get_placement_blockages

NAME
get_placement_blockages
Creates a collection of placement blockages that match the spec-
ified criteria.

SYNTAX
collection get_placement_blockages
[-quiet]
[-within region
| -touching region
| -intersect region]
[-filter expression]
[-type hard | soft | pin | hard_macro | partial]
[patterns]

Data Types
region list of points
expression string
patterns list

ARGUMENTS
-quiet Suppresses warning and error messages.

-within region
Creates a collection that contains all placement blockages that
are completely inside the specified region and do not overlap
the boundary. The region boundary can be a rectangle or a poly-
gon.

The format for specifying a rectangle is {{llx lly} {urx ury}}


or {llx lly urx ury}, which specifies the lower-left and upper-
right corners of the rectangle.

The format for specifying a polygon is {{x1 y1} {x2 y2} ... {xN
yN} {x1 y1}}, where each {x y} pair specifies one point of the
input polygon. A valid polygon must be rectilinear, so the
startpoint and endpoint of the polygon are the same point.

The coordinate unit is specified in the technology file; typi-


cally the unit is microns.

The -within, -touching, and -intersect options are mutually


exclusive; you can specify only one. If you do not specify any
of these options, the command searches the entire design.

-touching region
Creates a collection that contains all placement blockages that
are inside the specified region, including those that overlap
the boundary. The region boundary can be a rectangle or a poly-
gon.

The format for specifying a rectangle is {{llx lly} {urx ury}}


or {llx lly urx ury}, which specifies the lower-left and upper-
right corners of the rectangle.

The format for specifying a polygon is {{x1 y1} {x2 y2} ... {xN
yN} {x1 y1}}, where each {x y} pair specifies one point of the
input polygon. A valid polygon must be rectilinear, so the
startpoint and endpoint of the polygon are the same point.

The coordinate unit is specified in the technology file; typi-


cally the unit is microns.

The -within, -touching, and -intersect options are mutually


exclusive; you can specify only one. If you do not specify any
of these options, the command searches the entire design.

-intersect region
Creates a collection that contains all placement blockages that
intersect the boundary of the specified region and at least part
of the cell is outside of the specified region. The region
boundary can be a rectangle or a polygon.

The format for specifying a rectangle is {{llx lly} {urx ury}}


or {llx lly urx ury}, which specifies the lower-left and upper-
right corners of the rectangle.

The format for specifying a polygon is {{x1 y1} {x2 y2} ... {xN
yN} {x1 y1}}, where each {x y} pair specifies one point of the
input polygon. A valid polygon must be rectilinear, so the
startpoint and endpoint of the polygon are the same point.

The coordinate unit is specified in the technology file; typi-


cally the unit is microns.

The -within, -touching, and -intersect options are mutually


exclusive; you can specify only one. If you do not specify any
of these options, the command searches the entire design.

-filter expression
Filters the collection with the specified expression. For each
placement blockage in the collection, the expression is evalu-
ated based on the placement blockage's attributes. If the
expression evaluates to true, the placement blockage is included
in the result.

To see the list of placement blockage attributes that you can


use in the expression, use the list_attributes -application
-class placement_blockage command.

For more information about how to use the -filter option, see
the filter_collection man page.

-type hard | soft | pin | hard_macro | partial


Indicates the type of placement blockage. By default, this com-
mand matches all kinds of placement blockages.

patterns
Creates a collection of placement blockages whose names match
the specified patterns. Placement blockages that are named by
the tool have the naming convention PB#n, where n is an integer.
Patterns can include the * (asterisk) and ? (question mark)
wildcard characters. For more information about using and escap-
ing wildcards, see the wildcards man page. Pattern matching is
case sensitive.
If you do not specify this argument, the command uses * (aster-
isk) as the default pattern.

DESCRIPTION
This command creates a collection of placement blockages by selecting
placement blockages from the current design that match the specified
criteria.

The command returns a collection if any ports match the criteria. If


no objects match the criteria, the command returns an empty string.

You can use this command at the command prompt or you can nest it as an
argument to another command, such as query_objects. In addition, you
can assign the result to a variable.

When issued from the command prompt, the command behaves as though you
have called the query_objects command to report the objects in the col-
lection. By default, it displays a maximum of 100 objects. You can
change this maximum by using the collection_result_display_limit vari-
able.

For information about collections and the querying of objects, see the
collections man page.

Multicorner-Multimode Support
This command has no dependency on scenario-specific information.

27)
remove_placement_blockage

NAME
remove_placement_blockage
Removes placement blockages.

SYNTAX
status remove_placement_blockage
patterns | -name name | -all
[-verbose]

Data Types
patterns collection
name string

ARGUMENTS
patterns
Specifies the pattern by which this command finds and removes a
placement blockage. The patterns can be a collection of block-
ages, or other formats, such as * or pb#* (removes all placement
blockages) or pb#7789 (removes one placement blockage whose
object_id is 7789).

The patterns argument, the -name option, and the -all option are
mutually exclusive.

-name name
Specifies a name by which this command finds and removes a
placement blockage. The name must be the same name specified
for the placement blockage when it was created with the cre-
ate_placement_blockage command. The name must not be a runtime
name, such as pb#7789.

The patterns argument, the -name option, and the -all option are
mutually exclusive.

-all Removes all placement blockages in the current design.

The patterns argument, the -name option, and the -all option are
mutually exclusive.

-verbose
Prints additional messages.

DESCRIPTION
This command removes all specified placement blockages.

Multicorner-Multimode Support
This command has no dependency on scenario-specific information.

EXAMPLES
The following example removes all placement blockages:

prompt> remove_placement_blockage -all

The following example uses the patterns argument to remove placement


blockages:

prompt> remove_placement_blockage \
[get_placement_blockages * -within {{2 2} {25 25}}]

28)
report_congestion

NAME
report_congestion
Reports the congestion statistics.

SYNTAX
status report_congestion
[-routing_stage global | track | detail]
[-effort minimum | low | medium | high]
[-from_saved_congestion_map]
[-grc_based]
[-grc_number grc_number]
[-overflow_threshold threshold]
[-by_layer]
[-coordinates {rectangle}
| -polygon {polygon_area}]

Data Types
grc_number integer
threshold integer
rectangle list of points
polygon_area list of points

ARGUMENTS
-routing_stage global | track | detail
Specifies the routing stage for reporting the congestion map.

The following values are valid:

o global (the default)


Reports a global route congestion map. By default, the tool
generates a new global route congestion map by running medium-
effort global routing. To use another effort level for the
global routing, use the -effort option.

To report the existing global route congestion map instead of


generating a new one, use the -from_saved_congestion_map
option.

o track
Reports a track assignment congestion map. By default, the
tool generates a new track assignment congestion map from the
current track assignment routing information. Before running
this command, you need to ensure that the design is track
assigned.

To report the existing track assignment congestion map instead


of generating a new one, use the -from_saved_congestion_map
option.

o detail
Reports a detail route congestion map. By default, the tool
generates a new detail route congestion map from the current
detail routing information. Before running this command, you
need to ensure that the design is detail routed.

To report the existing detail route congestion map instead of


generating a new one, use the -from_saved_congestion_map
option.

-effort minimum | low | medium | high


Specifies the global routing effort level when the tool gener-
ates a global route congestion map.

The lower effort has a faster runtime but results in a more pes-
simistic congestion number. The higher effort has a better con-
gestion result but requires a longer runtime. The default is
medium.

This option applies only when the routing stage is global.

This option is mutually exclusive with the -from_saved_conges-


tion_map option.

-from_saved_congestion_map
Reports the existing congestion map for the specified routing
stage from the design library.

The command runs faster when you specify this option because the
congestion map is not regenerated. However, it is possible that
the existing congestion map is not up-to-date, so you need to
ensure that the existing congestion map is valid and up-to-date
when using this option.
This option and the -effort option are mutually exclusive.

If you do not specify either option, the command generates a


congestion map based on the routing stage specified in the
-routing_stage option.

-grc_based
Generates a GRC-based congestion report that provides informa-
tion about the 10 worst global routing cells (GRCs) in terms of
total congestion, horizontal congestion, and vertical conges-
tion.

-grc_number grc_number
Generates a GRC-based congestion report that is similar to the
report generated by the -grc_based option, except that it
reports the specified number of global routing cells for each
category, rather than 10.

-overflow_threshold threshold
Specifies the threshold for the overflow value.

When you use this option, the command generates a GRC-based con-
gestion report. The report is similar to the report generated by
the -grc_based option, except that it reports only those global
routing cells that exceed the specified overflow threshold, up
to a maximum of 10 global routing cells per category.

-by_layer
Generates a layer-based congestion report, which includes a con-
gestion summary for each routing layer and the default conges-
tion summary.

-coordinates {rectangle}
Generates a congestion report for only the specified region.
The format for specifying a rectangle is {llx lly urx ury}. The
coordinates of the rectangle are in microns.

This option and the -polygon option are mutually exclusive.

If you do not specify either option, the tool generates a con-


gestion report for the entire design.

-polygon {polygon_area}
Generates a congestion report only for the specified region.
The format for specifying a polygon is {{x1 y1} {x2 y2} {x3
y3}...{x1 y1}}. Note that the first point and the last point in
the list must be the same. The coordinates of the polygon are in
microns.

This option and the -coordinates option are mutually exclusive.

If you do not specify either option, the tool generates a con-


gestion report for the entire design.

DESCRIPTION
This command generates a congestion map based on the specified routing
stage. By default, it runs global routing, generates a new congestion
map, and reports congestion statistics for the current design.
During global routing, this command uses Zroute as the default router.
To use the classic router instead, use the set_route_mode_options
-zroute false command. Note that this setting affects all routing com-
mands.

For congestion analysis purposes, the design is divided into small


regions called global routing cells (GRCs). A given global routing cell
is considered overcongested if the actual number of wires passing
through the global routing cell is greater than the number of available
tracks in the global routing cell.

The default congestion report provides a summary of the congestion


information, which includes the total congestion, the horizontal con-
gestion, and the vertical congestion. You can report additional infor-
mation by selecting a GRC-based report, using the -grc_based, -grc_num-
ber, or -overflow_threshold option or layer-based congestion report
using the -by_layer option.

In the congestion report, the Overflow value is the total number of


wires in the design global routing cells that do not have a correspond-
ing track available. The Max value corresponds to the highest number of
overutilized wires in a single global routing cell. The GRCs value is
the total number of overcongested global routing cells in the design.

This command creates an on-disk file in your Milkyway database.

Multicorner-Multimode Support
This command has no dependency on scenario-specific information.

EXAMPLES
The following example runs the report_congestion command:

prompt> report_congestion
...
Both Dirs: Overflow = 39 Max = 8 (1 GRCs) GRCs = 14 (0.26%)
H routing: Overflow = 6 Max = 2 (2 GRCs) GRCs = 4 (0.07%)
V routing: Overflow = 33 Max = 8 (1 GRCs) GRCs = 10 (0.18%)

29)
psynopt

NAME
psynopt
Performs incremental optimization on the design.

SYNTAX
status psynopt
[-area_recovery]
[-only_area_recovery]
[-congestion]
[-no_design_rule | -only_design_rule]
[-only_hold_time]
[-in_place_size_only]
[-size_only]
[-preserve_footprint]
[-power]
[-only_power]
[-ignore_scan]
[-continue_on_missing_scandef]
[-refine_critical_paths max_path_count]

Data Types
max_path_count int

ARGUMENTS
-area_recovery
Enables area recovery for the cells not on the timing critical
paths.

By default, the command does not perform area recovery.

-only_area_recovery
Specifies that only area recovery is performed. Timing opti-
mization and logical design rule fixing are not performed.

This option cannot be used with the -only_design_rule or the


-only_hold_time options.

-congestion
Enables congestion removal algorithms for improved routability.

By default, the command does not perform congestion removal.

-no_design_rule
Disables logical design rule fixing.

When you specify this option, the tool exits before fixing the
design rule violations. You can check the results in a con-
straint report before fixing the violations.

By default, the command performs both logical design rule fixing


and timing optimization before exiting.

The -no_design_rule and -only_design_rule options are mutually


exclusive.

-only_design_rule
Specifies that only logical design rule fixing is performed.
Timing optimization is not performed.

By default, the command performs both logical design rule fixing


and timing optimization before exiting.

The -no_design_rule and -only_design_rule options are mutually


exclusive.

-only_hold_time
Specifies that only hold time violations are fixed.

When you use this option, you must use the set_fix_hold command
to specify the clocks on which to perform hold time fixing
before running the psynopt command.

This option cannot be used with the -no_design_rule option.

-in_place_size_only
Restricts optimization to in-place sizing changes only. Opti-
mization procedures that insert new cells and remove cells are
disabled.

With the -in_place_size_only option, sizing changes are further


constrained for minimal engineering change order (ECO) placement
changes. For example, a cell is sized to improve timing or
design rule costs only if the newly-sized cell can fit into any
available space adjacent to the original cell location. The
resulting transformation is verified to ensure that it is legal.

The -in_place_size_only option is recommended for postroute


flow, so optimization changes are constrained for minimal ECO
changes. The psynopt command with the -in_place_size_only
option should be run as a final step after the design is final-
ized and legal, to provide extra quality of results (QoR) with-
out causing significant ECO changes. Because the optimization on
the entire design is highly constrained, significant QoR change
are not expected with the -in_place_size_only option.

The -size_only and -in_place_size_only options are mutually


exclusive.

-size_only
Restricts optimization to sizing changes only. Optimization
procedures that insert new cells and remove cells are disabled.

See the description for the -in_place_size_only option for


information about how to further constrain sizing changes.

The -size_only and -in_place_size_only options are mutually


exclusive.

-preserve_footprint
Restricts optimization to footprint-preserving sizing only.

Footprint-preserving sizing is done by using a footprint


attribute added by vendors. When the tool sizes the cell, in
addition to checking that the size of the cell is the same, it
also checks that the number of pins, the names of the pins, and
the footprint attribute are the same. However, the tool does
not check that the physical pin locations are the same; the tool
assumes that this is done by library vendor when it added the
footprint attribute.

-power
Enables power-aware timing optimization and leakage-power opti-
mization.

The psynopt command can perform leakage-power optimization based


on either the multiple-threshold-voltage constraint or the leak-
age values of the library cells. To perform leakage-power opti-
mization based on the multiple-threshold-voltage constraint, use
the set_multi_vth_constraint command to define this constraint
before running the psynopt command. If this constraint is not
defined, the tool bases the leakage-power optimization on the
leakage values of the library cells.

When you specify this option for a multicorner-multimode design,


you must use the set_scenario_options command to select the
leakage scenarios before running the psynopt command.

By default, neither power-aware timing optimization nor leakage-


power optimization is performed. To perform power-aware timing
optimization without leakage-power optimization, do not use this
option, but set the icc_preroute_power_aware_optimization vari-
able to true.

-only_power
Enables only leakage-power optimization.

-ignore_scan
Ignores scan chain connections during placement.

When you specify this option, you must load the SCANDEF data
that defines the scan chains before running the psynopt command.
You can use the get_scan_chains command to check if the SCANDEF
data is available.

-continue_on_missing_scandef
Continues placement when the design contains scan chains but no
SCANDEF data.

By default, missing SCANDEF data causes the command to exit with


an error message. If you specify this option, the command con-
tinues with a warning and results in reduced QoR.

Setting this option enables the placer to continue and consider


the scan chains regardless of the setting of the -ignore_scan
option.

-refine_critical_paths max_path_count
Specifies the number of worst critical paths on which to perform
register optimization. Register optimization moves registers and
combinational logic along timing paths to minimize timing viola-
tions.

The default is 0.

This option cannot be used with the -only_area_recovery,


-only_design_rule, -only_hold_time, and -only_power options.

DESCRIPTION
The psynopt command performs incremental preroute or postroute opti-
mization on the current design. The output of this command is a
legally placed netlist.

Multicorner-Multimode Support
This command uses information from all active scenarios. If you enable
power optimization, you must select the leakage scenarios before run-
ning the psynopt command.

EXAMPLES
The following example runs the psynopt command in the preroute flow:

prompt> psynopt
30) Command Reference
place_opt
NAME
place_opt
Performs simultaneous placement, routing, and optimization on
the design.

SYNTAX
status place_opt
[-effort low | medium | high]
[-area_recovery]
[-optimize_dft]
[-congestion]
[-power]
[-cts]
[-spg]
[-skip_initial_placement]
[-consider_scan]
[-continue_on_missing_scandef]
[-optimize_icgs]

ARGUMENTS
-effort low | medium | high
Specifies the effort level for place_opt.

The default effort level is medium.

If you specify high, the place_opt command spends more time to


further improve the quality of results (QoR).

If you specify low, the place_opt command spends less time on


improving the QoR.

-area_recovery
Enables area recovery for the cells not on the timing critical
paths.

By default, area recovery is not performed.

-optimize_dft
Enables scan chain reordering, which performs placement-aware
scan reordering. It aims to reduce the scan chain wire length,
minimize congestion, and improve routability.

When you specify this option, you must load the SCANDEF data
that defines the scan chains before running the place_opt com-
mand. You can use the get_scan_chains command to check if the
SCANDEF data is available.

-congestion
Enables congestion removal algorithms for improved routability.

By default, congestion removal is not performed.

-power
Enables power-aware timing optimization and leakage-power opti-
mization during the place_opt command.

The place_opt command can perform leakage-power optimization


based on either the multiple-threshold-voltage constraint or the
leakage values of the library cells. To perform leakage-power
optimization based on the multiple-threshold-voltage constraint,
use the set_multi_vth_constraint command to define this con-
straint before running the place_opt command. If this con-
straint is not defined, the tool bases the leakage-power opti-
mization on the leakage values of the library cells.

When you specify this option for a multicorner-multimode design,


you must use the set_scenario_options command to select the
leakage scenarios before running the place_opt command.

By default, neither power-aware timing optimization nor leakage-


power optimization is performed. To perform power-aware timing
optimization without leakage-power optimization, do not use this
option, but set the icc_preroute_power_aware_optimization vari-
able to true.

-cts
Enables clock tree synthesis, optimization, and routing within
the place_opt command. It also enables the optimization engine
to work with propagated clock network delays.

When you specify this option, you must specify all clock-related
constraints before running the place_opt command.

-spg
Enables the use of Synopsys physical guidance information from
the Design Compiler tool. The compile_ultra command in Design
Compiler needs to run with the same option. With the -spg
option, the place_opt uses the physical guidance information
from Design Compiler to guide optimization.

This option cannot be used with the -skip_initial_placement


option.

-skip_initial_placement
Skips the initial placement stage that is invoked first during
the place_opt flow.

When you specify this option, you must ensure that the initial
placement has been performed; that is, all cells have valid
locations and macro cells are fixed. Otherwise, the place_opt
command exits with an error.

You also need to ensure that high fanout synthesis has been
done. With this option, only incremental high fanout synthesis
is performed during the place_opt flow.

This option cannot be used with the -spg option.

-consider_scan
Considers the scan chain connections during placement. You
should not specify this option when performing the DFT optimiza-
tion flow because scan nets affect placement.

By default, the command ignores scan nets and disables DFT opti-
mization.

-continue_on_missing_scandef
Continues placement when the design contains scan chains but no
SCANDEF data.

By default, missing SCANDEF data causes the command to exit with


an error message. If you specify this option, the command con-
tinues with a warning and results in reduced QoR.

Setting this option enables the placer to continue and consider


the scan chains regardless of the setting of the -consider_scan
option.

-optimize_icgs

Enables additional optimization for clock gates and clock enable


paths during place_opt command.

You should consider using this option when clock gating


enable paths are critical bottle necks for timing closer in your
design.

Prior to using place_opt with -optimize_icgs option, you must


load all the clock tree synthesis options and settings, includ-
ing the clock tree synthesis scenarios, to ensure correct syn-
thesis of the clocks in the design. When this option is speci-
fied, the place_opt command performs restructuring of the clock
gating logic and the clock gating latencies are considered dur-
ing the place_opt flow. Estimated clock gating skew margin val-
ues are applied to clock enable paths, viewable in timing
reports.

DESCRIPTION
This command performs simultaneous placement, routing, and optimization
on the current design. The output of this command is a legally placed
netlist. If you specify the -cts option, the output also includes a
fully synthesized, optimized, routed, and extracted clock network.

Multicorner-Multimode Support
This command uses information from all active scenarios. If you enable
power optimization, you must select the leakage scenarios before run-
ning the place_opt command.

EXAMPLES
The following example runs the place_opt command in timing-driven mode.

prompt> place_opt

SEE ALSO
clock_opt(2)
create_buffer_tree(2)
create_placement(2)
extract_rc(2)
identify_clock_gating(2)
legalize_placement(2)
psynopt(2)
route_opt(2)
set_place_opt_cts_strategy(2)
create_net_search_pattern(2)
set_net_search_pattern_delay_estimation_options(2)
set_multi_vth_constraint(2)
set_scenario_options(2)
icc_preroute_power_aware_optimization(3)
set_place_opt_strategy(2)
report_place_opt_strategy(2)

31)
create_placement

NAME
create_placement
Performs coarse placement on the current design.

SYNTAX
status create_placement
[-effort low | medium | high]
[-quick]
[-timing_driven]
[-congestion [-congestion_effort low | medium | high]]
[-check_only]
[-mpc]
[-consider_scan]
[-continue_on_missing_scandef]
[-optimize_icgs]

ARGUMENTS
-effort low | medium | high
Specifies the CPU effort level for coarse placement. The
default effort level is medium.

-quick Enables fast coarse placement suitable for floorplan explo-


ration.

-timing_driven
Enables direct timing-driven placement mode.

-congestion
Enables congestion-driven placement mode.

-congestion_effort low | medium | high


Specifies the effort level for congestion mode. The default
effort level is medium. Expect a significant increase in run-
time for high effort. This option can only be used in conjunc-
tion with the -congestion option.

-check_only
Checks whether the design and the libraries have all of the nec-
essary information to run the command. This option cannot be
used with other options.

-mpc Runs create_placement with minimum physical constraints. This


option instructs the command to check for any floorplan in the
design. If there is no floorplan, it creates a floorplan based
on the minimum physical constraints. If you do not specify any
physical constraints, the tool assumes a set of default values
and creates a default floorplan based on the number of cells and
the total areas needed.

The default values are 60% cell density and 1:1 aspect ratio.
The cell area information is taken from the physical cell
library. See the set_mpc_options command for details on how to
set up physical constraints.

-consider_scan
Specifies to consider the scan chain connections during place-
ment. You should not specify this option when performing the
DFT optimization flow because scan nets affect placement.

By default, the command ignores scan nets and disables DFT opti-
mization.

-continue_on_missing_scandef
Specifies to continue placement when the design contains scan
chains but no SCANDEF data. By default, missing SCANDEF data
causes the command to exit with an error message. If you specify
this option, the command continues with a warning and results in
reduced QoR. Setting this option enables the placer to continue
and consider the scan chains regardless of the setting of the
-consider_scan option.

-optimize_icgs
When the option is specified, additional steps to merge and
restructure the clock gates based on design topology are per-
formed. You should consider using this option when clock gating
enable paths are timing critical in your design. This option
will increase runtime.

DESCRIPTION
The create_placement command performs coarse placement on the current
design.

Multicorner-Multimode Support
This command uses information from all active scenarios.

EXAMPLES
The following example runs the create_placement command in timing-
driven mode:

prompt> create_placement -effort high -timing_driven

SEE ALSO
legalize_placement(2)
psynopt(2)
read_def(2)
write_def(2)

33)
refine_placement

NAME
refine_placement
Performs incremental placement with congestion optimization.

SYNTAX
status refine_placement
[-congestion_effort low | medium | high]
[-perturbation_level min | medium | high | max]
[-ignore_scan]
[-coordinates bbox
| [-continue_on_missing_scandef]

Data Types
bbox rectangle

ARGUMENTS
-congestion_effort low | medium | high
Specifies the effort level of congestion removal. The higher
effort, the less attention is paid to other objects: timing,
density and total wire-length. The default effort level is
medium.

-perturbation_level min | medium | high | max


Specifies the perturbation level for the placement to optimize
congestion. Specifying min produces the least amount of movement
from the placement. The higher the level specified, the more
movement you might expect from the placement. So, specifying max
produces the most movement from the placement. The default
effort level is medium.

-ignore_scan
Ignores scan chain connections during placement. Before using
this option you must first use the read_def command to read in
scan chain information.

-coordinates bbox
Specifies one rectangle, or multiple rectangle regions list,
from which to run incremental congestion removal.

The "bbox" is lower-left and upper-right coordinates of a rect-


angle. The "bbox_list" is list of rectangles; each rectangle is
specified by lower-left and upper-right coordinates.

The default (without this option) is to run incremental place-


ment for the entire design, which is the recommended way to use
this command. If you want to specify one or more localized
regions on which incremental placement should be done, you can
use this option to prevent any disturbance of the rest of the
converged design. The region based refinement may cause tim-
ing/congestion degradation if regions are not properly speci-
fied.

Relative Placement groups are not allowed to exist within a


region when multiple regions are specified, however they are
allowed to exist within a region if only one region is speci-
fied. Specified regions are not allowed to overlap with each
others.

The units of the -coordinates are in microns.

No runtime improvement is expected when this option is used; it


is primarily used to restrict the placer from making changes
outside the specified rectangles.

-continue_on_missing_scandef
Specifies to continue placement when the design contains scan
chains but no SCANDEF data. By default, missing SCANDEF data
causes the command to exit with an error message. If you specify
this option, the command continues with a warning and results in
reduced QoR. Setting this option enables the placer to continue
and consider the scan chains regardless of the setting of the
-ignore_scan option.

DESCRIPTION
The refine_placement command performs incremental congestion optimiza-
tion for the current design. This command does not touch netlist, and
it provides a legalized placement at the end.

Multicorner-Multimode Support
This command operates a scenario selected based on timing QoR.

EXAMPLES
The following example runs the refine_placement command in low-effort
congestion mode:

prompt> refine_placement -congestion_effort low

The following example runs the refine_placement command in single


region:

prompt> refine_placement -coordinates { $llx1 $lly1 $urx1 $ury1 }

The following example runs the refine_placement command in multiple


regions:

prompt> refine_placement -coordinates { {$llx1 $lly1 $urx1 $ury1} {$llx2


$lly2 $urx2 $ury2} }

SEE ALSO
create_placement(2)
remove_congestion_options(2)
report_congestion(2)
report_congestion_options(2)
set_congestion_options(2)

You might also like