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

proute_cell_row

proute_cell_row
{-layers {s_layerName} | -pin_layers {s_layerName}} 
-nets {s_netName…} 
[ -routing_area {f_xlo f_ylo f_xhi f_yhi}] 
[ -extend_to_boundary_with_pins [ true | false ] 
  | {-extend | -extend_long} [ true | false ] 
 [ -ring_layers {s_layerName} ] 
 [ -partial_overlap [ true | false ] ] ] 
[ -class_applies_to_top_level_rings [ true | false ] ] 
[ -core_ring_layers {s_layerName…} ] 
[ -direction {horizontal | vertical} ] 
[ -ignore_obstacles [ true | false ] | -ignore_purposes {s_purposeName} ] 
[ -incomplete_rings [ true | false ] ] 
[ -class1 {s_className …} ] 
[ -class2 {s_className …} ] 
[ -class3 {s_className …} ] 
[ -class4 {s_className …} ] 
[ -class5 {s_className …} ] 
[ -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 ] ] 
[ -all_term_types {core_ring | block_ring | stripes | cell_row_straps 
 | unknown} ] 
[ -ignore_blockage_of_class {s_className} ] 
[ -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}} ] ] 
[ -max_msg_count i_count ] 
[ -max_row_gap f_userunit ] 
[ -power_only [ true | false ] ] 
[ -row_end [ true | false ] ] 
[ -silent [ true | false ] ] 
[ -undoable [ true | false ] ] 
[ -use_cellname_as_class [ true | false ] ] 

Description

Adds straps along aligned pins of standard cells.

For faster processing, you can use proute_row_straps, which requires that rows be defined and that the placement of the straps for those rows be carefully specified.

To add interlayer connections for the straps, use proute_via_insertion.
When adding cell row straps, check the signalType property for the net. If the net is not specified as power or ground, you must either change the property value or specify -power_only false to route the cell row straps.

Specifying Block Boundary Clearances

You can prevent straps from extending across block boundaries by specifying the class of macro blocks in a list given by one of the stop_at_boundary_of_class arguments. Up to five unique lists of classes can be specified, each with a different clearance specification, given by the corresponding boundary_clearance argument. For the boundary clearance, if a single value is given, it applies to all four sides of the block. If a list of four values is given, they must be given in the exact order of left, bottom, right, and top. Positive values are measured outward from the block boundary to the end of the strap. Negative values indicate the distance inward from the block boundary to the end of the strap.

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.

-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 cell row 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 routing direction for the cell row straps.

Default: preferred routing direction

-extend [ true | false ]

If true, cell row straps are extended to the nearest power rail. If a cell row strap cannot at least partially overlap the power rail, it will not be extended. If false, cell row straps are not extended.

Default: false

-extend_long [ true | false ]

  

Same as -extend but, when true, attempts to extend any unextended cell row to the core ring.

Default: false

-extend_to_boundary_with_pins [ true | false ]

  

When true, attempts to extend cell row straps to the design prBoundary with added pins. Refer to Figure  for an illustration.

Default: false, cell row straps are not extended beyond the cells

-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 cell rows, that is specific to this condition.

If there are incomplete ring segments on concave U-turns surrounding a block, cell rows 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 cell rows, 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 cell rows, 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 cell rows, 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 cell rows, 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 cell rows, that is specific to this condition.

Default: false

-layers {s_layerName }

Specifies the layers to connect.

-max_msg_count i_count

Specifies the maximum number of message for each message type to output.

Default: 10

-max_row_gap f_userunit

Specifies the largest cell-row gap to be connected. By default, all aligned standard cells in each row are strapped, regardless of gap distance.

-nets {s_netName…}

Specifies the nets to route.

-partial_overlap [ true | false ]

  

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

Default: false

-pin_layers {s_layerName }

Specifies the pin layers to connect.

-power_only [ true | false ]

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

-ring_layers {s_layerName}

  

(Applies only when -extend or -extend_long is given) Specifies the layers on which to extend cell rows.

-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.

-row_end [ true | false ]

If true, routes standard cells to the end of the defined rows. By default, standard cells are routed only to the last cell in the row.

-silent [ true | false ]

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

Default: false

-stop_at_boundary_of_class {s_className…}

  

Stops strap extensions 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.

-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 figure shows examples that illustrate how the row_end, max_row_gap, and extend_to_boundary_with_pins arguments can be used to control the placement of standard cell row straps.

Examples of Cell Row Placement

Example 1 — Strap to the Last Cell in Each Row (Default)

proute_cell_row -layers met1 -nets {VDD VSS}

Example 2 — Strap to the End of Rows

proute_cell_row -layers met1 -nets {VDD VSS} -row_end

Example 3 —Strap with Maximum Row Gap Size

proute_cell_row -layers met1 -nets {VDD VSS} -max_row_gap 20

Example 4— Strap to the prBoundary with Pins

proute_cell_row -layers met1 -nets {VDD VSS} -extend_to_boundary_with_pins true

Related Topics

Power Route Commands


Return to top
 ⠀
X