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

proute_core_ring

proute_core_ring
-layers {s_layerName s_layerName} 
-nets {s_netName…} 
{-net_width f_userunit | -layer_width {f_width}} 
[ -contour [ true | false ] [ -min_jog f_userunit ] ] 
[ -core_clearance f_userunit 
 | -pad_clearance f_userunit 
 | -in_area_clearance f_userunit 
   {-routing_area {f_xlo f_ylo f_xhi f_yhi} 
   | -routing_area {f_x1 f_y1 f_x2 f_y2 f_x3 f_y3 f_x4 f_y4
                  f_x5 f_y5 f_x6 f_y6 } 
   | -use_border_blockage} 
 | -out_area_clearance f_userunit 
   {-routing_area {f_xlo f_ylo f_xhi f_yhi} 
   | -routing_area {f_x1 f_y1 f_x2 f_y2 f_x3 f_y3 f_x4 f_y4
                  f_x5 f_y5 f_x6 f_y6 }} ] 
[ -depopulate {[L] [B] [R] [T] [H] [V]} ] 
[ -ignore_obstacles [ true | false ] | -ignore_purposes {s_purposeName} ] 
[ -lattice [ true | false ] ]
[ -net_clearance f_userunit ] 
[ -power_only [ true | false ] ] 
[ -silent [ true | false ] ] 
[ -undoable [ true | false ] ]

Description

Adds rings around the core of a design that has pads, around the entire design without pads, inside the design bounds, or inside or outside of a given region.

The ring location is dependent on the optional setting of one of the following ring location reference arguments:

If none of these arguments is given and peripheral pads exist, then the rings are centered in the area between the core and the pads. If peripheral pads do not exist, rings are placed starting from the minimum clearance outward from the design bounds.

The core bounds is the rectilinear outline of the outermost prBoundaries of all non-pad, non-standard cell instances, and, if rows are defined, the bounds of all rows, or, if no rows are defined, the prBoundaries of all standard cells.

The design bounds is the prBoundary of the top-level design (occurrence). If no prBoundary is defined, then the design bounds is the bounding box of the design.

Arguments

-contour [ true | false ]

If true, the core ring will follow the rectilinear contour of the core, pads, or routing_area, depending on the ring location reference clearance specified. If false or when no ring location reference clearance is specified, the core ring will be rectangular.
Default: false

-core_clearance f_userunit

If peripheral pads exist, indicates the ring’s clearance outward from the core bounds. If peripheral pads do not exist, indicates the ring’s clearance outward from the design bounds. Must be a positive number.

-depopulate {[L] [B] [R] [T] [H] [V]}

  

Prevents one or more segments of the core ring from being added.

  

B

Bottom segment

  

H

Horizontal segments

  

L

Left segment

  

R

Right segment

  

T

Top segment

  

V

Vertical segments

-layer_width {f_width1 f_width2…}

  

Specifies the width, in microns, to use for each layer given in the -layers list, respectively, for all nets.

-layers {s_layer1Name s_layer2Name }

Specifies at least two orthogonal metal layers to use for the core ring of each net. One layer must have a preferred horizontal direction and one other layer must have a preferred vertical direction.

-min_jog f_userunit

Removes contour jogs that are less than the given length, in user units, measured centerline-to-centerline.

Default:

  • (lattice true) min_jog = number of nets * (net_width + net_clearance)
  • (lattice false) min_jog = (net_width + net_clearance)

-net_clearance f_userunit

Specifies the minimum spacing between the power nets. By default, this value is the greater of the minimum clearance of the two layers specified by -layers.

-net_width f_userunit

Specifies the total width for the nets routed. By default, this value is the greater of the minimum widths of the two layers.

If you specify a net width value that is greater than the maxWidth of one of the given layers, multiple rings are added for each net such that the following are true:

  • All added wire is equal in width.
  • The width of the added wire is greater than or equal to the greater of the minWidth of the two layers and less than or equal to the lesser of the maxWidth of the two layers.
  • The sum of the wire widths for each net in a ring set is equal to the given net width.

Some roundoff error can cause the total width to be slightly greater than specified net width.

-nets {s_netName…}

Specifies the nets to route. One or more nets can be given. When more than one net is given, the list order of the nets determines the placement of the rings, with the first net on the innermost ring, followed by the second, and so on, to the last net of the list on the outermost ring.

-out_area_clearance f_userunit

Requires that -routing_area also be given. Indicates the ring’s clearance outward from the routing area. Must be a non-negative number.

-pad_clearance f_userunit

If peripheral pads exist, indicates the ring’s clearance inward from the pads. If peripheral pads do not exist, indicates the ring’s clearance inward from the design bounds. Must be a positive number.

-power_only [ true | false ]

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

-routing_area {f_xlo f_ylo f_xhi f_yhi}
-routing_area {f_x1 f_y1 f_x2 f_y2 f_x3 f_y3 f_x4 f_y4 f_x5 f_y5 f_x6 f_y6 }

Indicates the reference ring location in conjunction with an area clearance (-in_area_clearance or -out_area_clearance) given as two xy coordinate pairs for a rectangular area, or as six or more xy coordinate pairs for a polygonal area.

-silent [ true | false ]

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

Default: false

-use_border_blockage

Places rings inside blockages that touch the design boundary on the ring layers. If specified, both -in_area_clearance and -contour must also be given. Cannot be used with -routing_area.

Examples

No Ring Location Reference Arguments Given

If the design has peripheral pads, the core rings are centered in the area between the pads and the core of the design. If the design has no pads, the core rings surround the entire design starting from minClearance, outward from the design boundary.

The following example adds core rings for VDD and VSS on adjacent layers, met2 and met3. If pads are present, the core rings are centered between the pads and the core. If pads do not exist, the core rings are constructed starting from minClearance outward from the design boundary.

proute_core_ring -layers {met2 met3} -net_width 8 -net_clearance 2 -nets {VDD VSS}

With -core_clearance

If the design has peripheral pads, the core rings are created outward starting at core_clearance from the core boundary or, if peripheral pads do not exist, the core rings are created outward starting at core_clearance from the design bounds.

The following example adds core rings for VDD and VSS on adjacent layers, met2 and met3. If pads are present, the core rings are constructed outward starting at core_clearance from the core boundary. If pads do not exist, the core rings are constructed outward starting at core_clearance from the design boundary.

proute_core_ring -layers {met2 met3} -net_width 8 -net_clearance 2 -nets {VDD VSS} -core_clearance 0.6

With -pad_clearance

If the design has peripheral pads, the core rings are created inward starting at pad_clearance from the pads or, if peripheral pads do not exist, the core rings are created inward starting at pad_clearance from the design bounds.

The following example adds core rings for VDD and VSS on adjacent layers, met2 and met3. If pads are present, the core rings are constructed inward starting at pad_clearance from the pads. If pads do not exist, the core rings are constructed inward starting at pad_clearance from the design boundary.

proute_core_ring -layers {met2 met3} -net_width 8 -net_clearance 2 -nets {VDD VSS} -pad_clearance 0.6

With -in_area_clearance

When -in_area_clearance is given, the core rings are created inward starting at in_area_clearance from the routing_area.

The following example adds core rings for VDD and VSS on adjacent layers, met2 and met3. The core rings are constructed inward starting at in_area_clearance from the routing_area.

proute_core_ring -layers {met2 met3} -net_width 8 -net_clearance 2 -nets {VDD VSS} -in_area_clearance 0.6 -routing_area [get_window_area]

With -out_area_clearance

When -out_area_clearance is given, the core rings are created outward starting at out_area_clearance from the routing_area.

The following example adds core rings for VDD and VSS on adjacent layers, met2 and met3. The core rings are constructed outward starting at out_area_clearance from the routing_area.

proute_core_ring -layers {met2 met3} -net_width 8 -net_clearance 2 -nets {VDD VSS} -out_area_clearance 0.6 -routing_area { 100 100 550 600 }

Related Topics

Power Route Commands


Return to top
 ⠀
X