Product Documentation
Virtuoso Space-based Router Command Reference
Product Version IC23.1, September 2023

proute_row_straps

proute_row_straps
-layers {s_layerName} 
-nets {s_netName…} 
-net_width f_userunit 
[ -connect_inst_terms [ true | false ] ] 
[ -dump_rows i_numRows ] 
[ {-extend | -extend_long} [ true | false ] [ -direction {horizontal|vertical} ]
 [ -ring_layers {s_layerName} ] 
 [ -partial_overlap [ true | false ] ] ] 
[ -class_applies_to_top_level_rings [ true | false ] ] 
[ -class1 {s_className …} ] 
[ -class2 {s_className …} ] 
[ -class3 {s_className …} ] 
[ -class4 {s_className …} ] 
[ -class5 {s_className …} ] 
[ -core_ring_layers {s_layerName…} ] 
[ -full_overlap [ true | false ] ] 
[ -height f_height ] 
[ -check_for_obstacles [ true | false ] ] 
[ -ignore_obstacles [ true | false ] | -ignore_purposes {s_purposeName} ] 
[ -jog_straps [ true | false ] 
 [ -max_wrong_way_jog_of_class1 f_userunit] 
 [ -max_wrong_way_jog_of_class2 f_userunit] 
 [ -max_wrong_way_jog_of_class3 f_userunit] 
 [ -max_wrong_way_jog_of_class4 f_userunit] 
 [ -max_wrong_way_jog_of_class5 f_userunit] 
 [ -max_wrong_way_jog f_userunit ] 
 [ -max_wrong_way_ring_jog f_userunit ] 
 [ -max_full_overlap_jog f_userunit ] ] 
[ -max_depth i_levelOfHierarchy ] 
[ -max_msg_count i_count ] 
[ -max_row_gap f_userunit ] 
[ -offset f_relativeDistance ] 
[ -power_only [ true | false ] ] 
[ -routing_area {f_xlo f_ylo f_xhi f_yhi} ] 
[ -silent [ true | false ] ] 
[ -site_names {s_siteName} 
[ -undoable [ true | false ] ] 
[ -ignore_blockage_of_class {s_className} ] 
[ -all_term_types {core_ring | block_ring | stripes | cell_row_straps 
 | unknown} ] 
[ -stop_at_boundary_of_class {s_className} 
  [ -boundary_clearance {f_clearanceValue 
    | {f_leftValue f_bottomValue f_rightValue f_topValue}} ] ] 
[ -stop_at_boundary_of_class1 {s_className} 
  [ -boundary_clearance1 {f_clearanceValue 
    | {f_leftValue f_bottomValue f_rightValue f_topValue}} ] ] 
[ -stop_at_boundary_of_class2 {s_className} 
  [ -boundary_clearance2 {f_clearanceValue 
    | {f_leftValue f_bottomValue f_rightValue f_topValue}} ] ] 
[ -stop_at_boundary_of_class3 {s_className} 
  [ -boundary_clearance3 {f_clearanceValue 
    | {f_leftValue f_bottomValue f_rightValue f_topValue}} ] ] 
[ -stop_at_boundary_of_class4 {s_className} 
  [ -boundary_clearance4 {f_clearanceValue 
    | {f_leftValue f_bottomValue f_rightValue f_topValue}} ] ] 
[ -stop_at_boundary_of_class5 {s_className} 
  [ -boundary_clearance5 {f_clearanceValue 
    | {f_leftValue f_bottomValue f_rightValue f_topValue}} ] ] 
[ -incomplete_rings [ true | false ] ] 
[ -stop_at_rings_of_class1 {s_className} [ -ring_layers1 {s_layerName} ] ] 
[ -incomplete_rings1 [ true | false ] ] 
[ -stop_at_rings_of_class2 {s_className} [ -ring_layers2 {s_layerName} ] ] 
[ -incomplete_rings2 [ true | false ] ] 
[ -stop_at_rings_of_class3 {s_className} [ -ring_layers3 {s_layerName} ] ] 
[ -incomplete_rings3 [ true | false ] ] 
[ -stop_at_rings_of_class4 {s_className} [ -ring_layers4 {s_layerName} ] ] 
[ -incomplete_rings4 [ true | false ] ] 
[ -stop_at_rings_of_class5 {s_className} [ -ring_layers5 {s_layerName} ] ] 
[ -incomplete_rings5 [ true | false ] ] 
[ -trim_at_row_ends [ true | false ] ] 
[ -use_cellname_as_class [ true | false ] ]
[ -ring_extension_upper_layer f_userunit ]
[ -ring_extension_lower_layer f_userunit ]

Description

Adds row straps for the given layers. With the same functionality as proute_cell_row, this command is designed for faster processing, but requires that rows be defined and placement of the straps with respect to those rows must be carefully specified using -net_width and -offset.

The command will fail under these circumstances:

To add interlayer connections for the straps, use proute_via_insertion.

Arguments

-all_term_types {core_ring | block_ring | stripes | cell_row_straps | unknown}

Treats the given classes of macro block terminals on specified ring layers as this power type.

-boundary_clearance {f_clearanceValue | {f_leftValue f_bottomValue f_rightValue f_topValue}}

  

Specifies the clearance for blocks of the class given by stop_at_boundary_of_class. For an explanation of the argument value, refer to Specifying Block Boundary Clearances.

-boundary_clearance1 {f_clearanceValue | {f_leftValue f_bottomValue f_rightValue f_topValue}}

  

Specifies the clearance for blocks of the class given by the stop_at_boundary_of_class1 argument.For an explanation of the argument value, refer to Specifying Block Boundary Clearances.

-boundary_clearance2 {f_clearanceValue | {f_leftValue f_bottomValue f_rightValue f_topValue}}

  

Specifies the clearance for blocks of the class given by the stop_at_boundary_of_class2 argument.For an explanation of the argument value, refer to Specifying Block Boundary Clearances.

-boundary_clearance3 {f_clearanceValue | {f_leftValue f_bottomValue f_rightValue f_topValue}}

  

Specifies the clearance for blocks of the class given by stop_at_boundary_of_class3.For an explanation of the argument value, refer to Specifying Block Boundary Clearances.

-boundary_clearance4 {f_clearanceValue | {f_leftValue f_bottomValue f_rightValue f_topValue}}

  

Specifies the clearance for blocks of the class given by stop_at_boundary_of_class4.For an explanation of the argument value, refer to Specifying Block Boundary Clearances.

-boundary_clearance5 {f_clearanceValue | {f_leftValue f_bottomValue f_rightValue f_topValue}}

  

Specifies the clearance for blocks of the class given by stop_at_boundary_of_class5.For an explanation of the argument value, refer to Specifying Block Boundary Clearances.

-check_for_obstacles [ true | false ]

When true, checks each row for obstacles. When false, no checking is done; this is useful to speed up processing when it is known that no obstacles are present, such as on an empty layer.

Default: true

-class_applies_to_top_level_rings [ true | false ]

Stops strap extensions at top-level block rings around blocks whose class is specified in the “of class” arguments.

Default: false

-class1 {s_className…}

Specifies a list of classes of macro blocks that belong to class1 for “of_class1” arguments.

-class2 {s_className…}

Specifies a list of classes of macro blocks that belong to class2 for “of_class2” arguments.

-class3 {s_className…}

Specifies a list of classes of macro blocks that belong to class3 for “of_class3” arguments.

-class4 {s_className…}

Specifies a list of classes of macro blocks that belong to class4 for “of_class4” arguments.

-class5 {s_className…}

Specifies a list of classes of macro blocks that belong to class5 for “of_class5” arguments.

-connect_inst_terms [ true | false ]

  

If true, adds specific connections from straps to corresponding instance terminals.

Default: false

-core_ring_layers {s_layerName…} | all

  

Limits the layers of core-ring segments for determining the core ring bounds. If this is not specified, then ring_layers applies. If ring_layers is not specified, then all core-ring segments apply.

-direction {horizontal | vertical}

  

Specifies the direction for the cell row straps. By default, the preferred routing direction for the layer is used.

-dump_rows i_numRows

If non-zero, dumps information on the given number of rows per site without performing any routing.

Default: 0

{-extend | -extend_long}[ true | false ]

  

If -extend is true, cell row straps are extended to the nearest power rail.

If -extend_long is true, cell row straps are extended to the nearest power rail. Then power router attempts to extend any unextended cell row to the core ring.

Default: false

-full_overlap [ true | false ]

When true, straps must fully overlap same net shapes. If a straight strap does not fully overlap an existing same net shape and -jog_straps is specified, the strap can be jogged to achieve full overlap; otherwise, the strap is not added.

Default: false

-height f_height

Routes only rows with sites of this height.

-ignore_blockage_of_class {s_className…}

  

Ignores the blockages in macro blocks that belong to a class in this list.

-ignore_obstacles [ true | false ]

  

When true, ignores all obstacles and creates power segments without regard to rule violations. This is useful to get a quick preliminary power layout or when it is known that there are no obstacles, such as on an empty layer.

Default: false

-ignore_purposes {s_purposeName…}

  

Similar to -ignore_obstacles, ignores objects on the given purposes. By default, no purposes are ignored.

-incomplete_rings [ true | false ]

When true, top-level block rings are assumed to be incomplete (depopulated). This causes an alternate algorithm to be used for adding the row straps, that is specific to this condition.

If there are incomplete ring segments on concave U-turns surrounding a block, row straps cannot be placed in the U-turn area.

Default: false

-incomplete_rings1 [ true | false ]

When true, internal block rings of class 1 are assumed to be incomplete (depopulated). This causes an alternate algorithm to be used for adding the row straps, that is specific to this condition.

Default: false

-incomplete_rings2 [ true | false ]

When true, internal block rings of class 2are assumed to be incomplete (depopulated). This causes an alternate algorithm to be used for adding the row straps, that is specific to this condition.

Default: false

-incomplete_rings3 [ true | false ]

When true, internal block rings of class 3 are assumed to be incomplete (depopulated). This causes an alternate algorithm to be used for adding the row straps, that is specific to this condition.

Default: false

-incomplete_rings4 [ true | false ]

When true, internal block rings of class 4 are assumed to be incomplete (depopulated). This causes an alternate algorithm to be used for adding the row straps, that is specific to this condition.

Default: false

-incomplete_rings5 [ true | false ]

When true, internal block rings of class 5 are assumed to be incomplete (depopulated). This causes an alternate algorithm to be used for adding the row straps, that is specific to this condition.

Default: false

-max_full_overlap_jog f_userunit

(Applies only when -full_overlap true and -jog_straps true) Specifies the maximum amount of jog for straps to prefer full overlap when stopping at block rings.

Default: net_width + minSpacing for the net

-max_wrong_way_jog f_userunit

(Applies only when -jog_straps true) Specifies the maximum amount of jogging around obstacles that is permitted in the wrong-way direction.

Default: net_width

-max_wrong_way_jog_of_class1 f_userunit

(Applies only when -jog_straps true) Specifies the maximum amount of jogging that is permitted in the wrong-way direction around obstacles associated with macro blocks of class1.

Default: net_width

-max_wrong_way_jog_of_class2 f_userunit

(Applies only when -jog_straps true) Specifies the maximum amount of jogging that is permitted in the wrong-way direction around obstacles associated with macro blocks of class2.

Default: net_width

-max_wrong_way_jog_of_class3 f_userunit

(Applies only when -jog_straps true) Specifies the maximum amount of jogging that is permitted in the wrong-way direction around obstacles associated with macro blocks of class3.

Default: net_width

-max_wrong_way_jog_of_class4 f_userunit

(Applies only when -jog_straps true) Specifies the maximum amount of jogging that is permitted in the wrong-way direction around obstacles associated with macro blocks of class4.

Default: net_width

-max_wrong_way_jog_of_class5 f_userunit

(Applies only when -jog_straps true) Specifies the maximum amount of jogging that is permitted in the wrong-way direction around obstacles associated with macro blocks of class5.

Default: net_width

-max_wrong_way_ring_jog f_userunit

(Applies only when -jog_straps true) Specifies the maximum amount of jogging around obstacles that is permitted in the wrong-way direction when stopping at rings.

Default: net_width

-net_width f_userunit

Specifies the width for the row straps in user units.

-nets {s_netName…}

Specifies the nets to route.

-offset f_relativeDistance

  

For horizontal rows, specifies the y distance of the first net’s strap relative to the bottom side of a zero-orientation row. For vertical rows, specifies the x distance of the first net’s strap relative to the left side of a zero-orientation row. Default: 0

-partial_overlap [ true | false ]

  

If true, allows strap extension to partially overlap with other shapes on the same net and layer.

Default: false

-power_only [ true | false ]

If true (default), only power and ground nets are allowed. If false, signal nets are also allowed.

-ring_extension_lower_layer f_userunit

Distance to extend stripe past inner edge of a ring segment on the metal layer below stripe.

Deafult: 0

-ring_extension_upper_layer f_userunit

Distance to extend stripe past inner edge of a ring segment on the metal layer above stripe.

Deafult: 0

-ring_layers {s_layerName…}

(Applies only when -extend or -extend_long is given) Specifies the layers on which to extend cell rows. If not specified, all layers apply.

-ring_layers1 {s_layerName…}

Specifies the ring layers for -stop_at_rings_of_class1. Default: all layers

-ring_layers2 {s_layerName…}

Specifies the ring layers for -stop_at_rings_of_class2. Default: all layers

-ring_layers3 {s_layerName…}

Specifies the ring layers for -stop_at_rings_of_class3. Default: all layers

-ring_layers4 {s_layerName…}

Specifies the ring layers for -stop_at_rings_of_class4. Default: all layers

-ring_layers5 {s_layerName…}

Specifies the ring layers for -stop_at_rings_of_class5. Default: all layers

-routing_area {f_xlo f_ylo f_xhi f_yhi}

Specifies the outer bounds for the area of the standard cells to add straps to. Connects only pins that intersect the area and extends cell row straps to the area bounds.

-silent [ true | false ]

When true, outputs only error messages. When false, all message types are output.

Default: false

-site_names {s_siteName…}

  

Routes only rows with sites of these names.

-stop_at_boundary_of_class {s_className…}

  

Stops stripe sections at the boundary of macro blocks that belong to a class in this list. Use -boundary_clearance to specify the clearance around the boundary, otherwise minimum spacing will be used.

-stop_at_boundary_of_class1 {s_className…}

  

Stops strap extensions at the boundary of macro blocks that belong to a class in this list. Use -boundary_clearance1 to specify the clearance around the boundary, otherwise minimum spacing will be used.

-stop_at_boundary_of_class2 {s_className…}

  

Stops strap extensions at the boundary of macro blocks that belong to a class in this list. Use -boundary_clearance2 to specify the clearance around the boundary, otherwise minimum spacing will be used.

-stop_at_boundary_of_class3 {s_className…}

  

Stops strap extensions at the boundary of macro blocks that belong to a class in this list. Use -boundary_clearance3 to specify the clearance around the boundary, otherwise minimum spacing will be used.

-stop_at_boundary_of_class4 {s_className…}

  

Stops strap extensions at the boundary of macro blocks that belong to a class in this list. Use -boundary_clearance4 to specify the clearance around the boundary, otherwise minimum spacing will be used.

-stop_at_boundary_of_class5 {s_className…}

  

Stops strap extensions at the boundary of macro blocks that belong to a class in this list. Use -boundary_clearance5 to specify the clearance around the boundary, otherwise minimum spacing will be used.

-stop_at_rings_of_class1 {s_className…}

  

Stops strap extensions at the internal block rings of macro blocks that belong to a class in the given list.

-stop_at_rings_of_class2 {s_className…}

  

Stops strap extensions at the internal block rings of macro blocks that belong to a class in the given list.

-stop_at_rings_of_class3 {s_className…}

  

Stops strap extensions at the internal block rings of macro blocks that belong to a class in the given list.

-stop_at_rings_of_class4 {s_className…}

  

Stops strap extensions at the internal block rings of macro blocks that belong to a class in the given list.

-stop_at_rings_of_class5 {s_className…}

  

Stops strap extensions at the internal block rings of macro blocks that belong to a class in the given list.

-trim_at_row_ends [ true | false ]

  

When true, trim main row strap back from obstacles near row ends. When false, entire strap fails when such obstacles are present.

Default: false

-undoable [ true | false ]

Permits this command to be undone. Default is the current setting for the proute.undoable environment variable which defaults to false on startup.

-use_cellname_as_class [ true | false ]

Allows specification of cellnames instead of class names for the *of_class* arguments.

Examples

The following command adds row straps for the VSS and VDD nets on Metal1 and extends cell rows to the nearest power rails.

proute_row_straps -nets {VSS VDD} -layers Metal1 -net_width 0.36 -offset 0.18 -extend

Related Topics

Power Route Commands

proute_cell_row


Return to top
 ⠀
X