set_spine_nets
set_spine_nets
{-net {s_netName…} | -set d_setObj}
[ -bias_mode {middle | side | ratio} ]
[ -clear [ true | false ] ]
[ -direction {vertical | horizontal}
[ -layers {s_layerName…} ]
[ -max_cluster_dist f_distance ]
[ -max_pins i_count]
[ -optimize_cluster_ratio i_ratio]
[ -tap_type {direct | short_steiner | steiner | tree}]
[ -trunk_rule_spec s_routeSpecName ]
[ -trunk_type
{ single_driver | single_median | single_middle |
| single_in_channel | multi_in_channel
| narrow_middle | narrow_median | wide | tree} ]
Description
Sets parameters for spine routing. Usually, this is not required before running spine_route because the spine router can automatically tune the routing based on the configuration of the net. Use this command before running spine_route to force the spine router to use certain settings.
The spine router will normally use a narrow_middle, narrow_median or wide trunk type, depending on the aspect ratio of the net and the location of the receiver pins. If you issue this command without arguments, the spine router will use a single_median trunk type instead.
To check the spine parameters that were set by this command, use report_spine_nets.
Arguments
|
-bias_mode {middle | side | ratio}
|
|
|
(Applies only for -trunk_type single_in_channel and -trunk_type multi_in_channel) Specifies the preferred placement for an individual spine in a channel.
|
|
|
middle
|
Places the spine at the center of the associated channel.
|
|
|
ratio
|
(Default) Places the spine at a position relative to the ratio of the receiving pins on both sides of the channel. The distance from the spine to the edges of the sides have the same ratio as the pins on the two sides. The spine will be closer to the side with more pins.
|
|
|
side
|
Places the spine toward the side with more receiving pins.
|
|
-clear [ true | false ]
|
Resets parameters that are set by this command to their default settings.
Default: false
|
|
-direction {vertical | horizontal}
|
|
|
(Applies only if the trunk_type is single_driver, single_median, single_in_channel, or multi_in_channel) Sets the spine direction. By default, the longer aspect of the bounding box of the net pins is used.
|
|
-layers {s_layerName}
|
Sets preferred layers for the spine. The lowest layer that matches the spine’s direction will be preferred. If only one layer is given, it will be used, even when the direction of the spine is perpendicular to the layer’s routing direction for single_driver and single_median trunk types only.
Default: preferred or valid layers for the net
|
|
-max_cluster_dist f_distance
|
|
|
Specifies the maximum distance between clustered pins.
|
|
-max_pins i_count
|
Specifies the maximum number of pins in a tap cluster.
|
|
-net {s_netName…}
|
Sets parameters only for nets in the list.
|
|
-optimize_cluster_ratio i_ratio
|
|
|
Used with -max_pins and -max_cluster_dist to fine-tune clustering. Suggested settings are greater than 2, and 3 is a good average. A value of 3 specifies that a pin will be clustered if the extra distance for clustering (connecting the pin to a neighbor pin) is less than 1/3 of the original distance from the pin to the spine.
|
|
-set d_setObj
|
Sets parameters only for nets in the set.
|
|
-tap_type s_tapType
|
Specifies the topology of the taps.
|
|
|
direct
|
Connects each tap directly to the trunk. This is the default when trunk_type is single_driver or single_median, and for narrow topologies.
|
|
|
short_steiner
|
This is a type of steiner tap that allows only local clustering. This is the default when trunk_type is not single_driver or single_median, and the net topology is nearly equal in height and width (has an aspect ratio near one).
|
|
|
steiner
|
Connects to the nearest receiver group or to the trunk, whichever is closest.
|
|
|
tree
|
The tap topology is determined automatically by spine_route based on the aspect ration of the bounding box of the net’s receiver pins.
|
|
-trunk_rule_spec s_routeSpecName
|
|
|
Specifies the route spec to use for the trunk.
|
|
-trunk_type s_trunkType
|
|
|
Specifies the trunk style.
|
|
|
multi_in_channel
|
|
|
|
(Requires -direction to specify the direction of the trunk spines) Makes a trunk by placing spines in channels between instance rows containing receivers, then connecting the spines to a perpendicular main trunk and the drivers.
|
|
|
narrow_median
|
Makes a trunk that is aligned with the median coordinate in the direction of the spine.
|
|
|
narrow_middle
|
Makes a trunk that is aligned with the middle of the net’s bounding box.
|
|
|
single_driver
|
Makes a single trunk that connects directly to the driver.
|
|
|
single_in_channel
|
|
|
|
(Requires -direction to specify the direction of the trunk) Makes a single trunk in a channel close to the center of the net’s bounding box.
|
|
|
single_median
|
Makes a single trunk that is located at the median coordinate in the spine direction. This is the default.
|
|
|
tree
|
The trunk placement is determined automatically by spine_route based on the aspect ratio of the net and the topology of the receivers and drivers.
|
|
|
wide
|
Makes a trunk by clustering the receivers to identify representatives, then forming a tree where every driver-to-representative path is a shortest path. This is typically used when the net is approximately equal in height and width.
|
Examples
The following command causes spine_route to route using single_median trunks instead of one of the normal trunk type defaults: narrow_middle, narrow_median or wide.
set_spine_nets
The following commands create a single vertical spine on the M2 layer that is connected to the driver.
set_spine_nets -net net1 -trunk_type single_driver -layers M2 -direction vertical
spine_route -net net1
Related Topics
Specialty Route Commands
report_spine_nets
spine_route
Return to top