Product Documentation
Virtuoso Technology Data Constraints Reference
Product Version IC23.1, November 2023

rectShapeDir

spacings(
( rectShapeDir tx_layer 
 ['extendBy f_extendBy ['widthRanges (g_ranges)]]
 ['insideLayers (tx_layer1 tx_layer2tx_layerN)
  ['insidePurposes (t_purpose1 t_purpose2t_purposeN)]
  | 
  'outsideLayers (tx_layer1 tx_layer2tx_layerN)
  ['outsidePurposes (t_purpose1 t_purpose2t_purposeN)]
 ]
  [['exceptViaLayer tx_viaLayer 
  'exceptViaSize (f_viaSize1 f_viaSize2)
  'exceptExactSize (f_exactMetalSize1 f_exactMetalSize2)]
  | 'exceptViaEdgeAligned |'exceptVia
  ]
 ['exceptEdgeLength f_maxLength 'width f_maxWidth ['twoSides]]
 ['exceptRanges (g_exceptRanges)]
 ['exceptNonCorePins]
 ['exceptWidth f_width {'widthHorizontal | 'widthVertical}]  
 ['partialTracks]
 ['onlyOne]
 {"any" | "horizontal" | "vertical"}
)
) ;spacings
spacingTables(
( rectShapeDir tx_layer 
 (( "width" nil nil )
  ['extendBy f_extendBy ['widthRanges (g_ranges)]]
  [['exceptViaLayer tx_viaLayer 
  'exceptViaSize (f_viaSize1 f_viaSize2)
  'exceptExactSize (f_exactMetalSize1 f_exactMetalSize2)
  |'exceptViaEdgeAligned |'exceptVia
  ]
  ]
  ['exceptEdgeLength f_maxLength 'width f_maxWidth ['twoSides]]
  ['exceptRanges (g_exceptRanges)]  ['exceptNonCorePins]
  ['exceptWidth f_width {'widthHorizontal |'widthVertical}]  
  ['partialTracks]
  ['onlyOne]
  [ "any" | "horizontal" | "vertical" ]
 )
 (g_table)
)
) ;spacingTables

Specifies that the shapes on a layer must be rectangular. Depending on their width, these shapes can be restricted to a certain direction. A square shape is both horizontal and vertical. Optionally, narrow rectangular shapes can have small jogs.

Additionally, this constraint is used with the allowedWidthRanges constraint to specify a set of discrete widths for a layer. The allowedLengthRanges constraint must also specify a minimum length greater than or equal to the minimum width to avoid ambiguity while determining the direction.

Values

tx_layer

The layer on which the constraint is applied.

Type: String (layer and purpose names) or Integer (layer number)

"width" nil nil

This identifies the index for table.

g_table

The g_table row is defined as:

f_width {"any" | "horizontal" | "vertical"}

where,

f_width is the width of the rectangle.

Type: A 1-D table specifying floating-point width values and the direction of the rectangle

Parameters

'extendBy f_extendBy

  

(Virtuoso Advanced Node for Layout Standard) All end-of-line edges must be extended by this value before the constraint is applied.

'widthRanges g_ranges

(Virtuoso Advanced Node for Layout Standard) The 'extendBy parameter applies only to the end-of-line edges that have width in this range.

Type: Floating-point values specifying a range of widths

'insideLayers (tx_layer1 tx_layer2tx_layerN)
| 'outsideLayers (
tx_layer1 tx_layer2tx_layerN)

  

(Virtuoso Advanced Node for Layout Standard) Determines if the constraint applies, based on the presence or absence of one or more layers.

  • 'insideLayers: The constraint applies only if the shapes on the specified layer (layer) overlap a shape on one of these layers (layer1 layer2layerN).
  • 'outsideLayers: The constraint applies only if the shapes on the specified layer (layer) overlap the region outside the shapes on one of these layers (layer1 layer2layerN).

For more information, see Region-based Rule (One layer).

Type: String (layer name) or Integer (layer number)

'insidePurposes (t_purpose1 t_purpose2t_purposeN)

(Virtuoso Advanced Node for Layout Standard) The 'insideLayers parameter is limited to only the specified purposes.

Type: String (purpose name)

'outsidePurposes (t_purpose1 t_purpose2t_purposeN)

(Virtuoso Advanced Node for Layout Standard) The 'outsideLayers parameter is limited to only the specified purposes.

Type: String (purpose name)

'exceptViaLayer tx_viaLayer
'exceptViaSize f_viaSize1 f_viaSize2
'exceptExactSize f_exactMetalSize1 f_exactMetalSize2
'exceptViaEdgeAligned
'exceptVia

  

(Virtuoso Advanced Node for Layout Standard) The constraint does not apply to a metal shape with dimensions exactMetalSize1 and exactMetalSize2 if a via with dimensions viaSize1 and viaSize2 placed on viaLayer overlaps it. The metal shape left after subtracting such a shape must either be a rectangle or multiple exactly aligned rectangles.

Moreover, this exemption applies only if an edge of this metal shape in the direction of the constraint is exactly aligned with an edge of such rectangles.

(Virtuoso Layout Suite EXL and higher tiers) The exceptViaEdgeAligned parameter specifies that the rectangular shape checking is exempted by a via, which has an edge aligned to the metal edge of a connected wire.

Type: String (layer name) or Integer (layer number); Float

(Virtuoso Layout Suite EXL and higher tiers) The exceptVia parameter specifies that the rectangular shape checking is exempted by a via.

'exceptEdgeLength f_maxLength

(Virtuoso Advanced Node for Layout Standard) The constraint does not apply if the rectangular shape has a jog with width less than or equal to this value.

'width f_maxWidth

(Virtuoso Advanced Node for Layout Standard) The constraint does not apply if the width of the shape with the maxLength wide jog is less than or equal to this value.

'twoSides

(Virtuoso Advanced Node for Layout Standard) The constraint does not apply if the rectangular shape has maxLength wide jogs on both sides. Additionally, the two jogs must not have a vertical offset.

'exceptRanges (g_exceptRanges)

The constraint does not apply if a rectangle has width in this range.

Type: Floating-point values specifying a range of widths that are exempted

'exceptNonCorePins

(Virtuoso Advanced Node for Layout Standard) The constraint does not apply to the connections to non-standard cell pins. In other words, the connection of a default-width wire to a wide I/O pad or a block pin is allowed.

Type: Boolean

'exceptWidth f_width {'widthHorizontal |'widthVertical}

(Virtuoso Layout Suite EXL and higher tiers) The constraint does not apply if the width in the direction specified by widthHorizontal or widthVertical is less than or equal to f_width.

'partialTracks

(Virtuoso Layout Suite EXL and higher tiers) The rectangular shape checking applies only to specific tracks.

Type: Boolean

'onlyOne

The constraint allows only one shape on the specified layer.

"any" | "horizontal" | "vertical"

The direction of the rectangle.

Type: Boolean

Examples

Example 1: rectShapeDir with vertical

A shape on layer Metal1 must be a rectangle in the vertical direction.

Example 2: rectShapeDir with exceptViaLayer, exceptViaSize, and exceptExactSize

A Metal1 shape with dimensions 0.09x0.12 is overlapped by a 0.3x0.06 via. The constraint is met if the remaining portion of the metal shape is a horizontal rectangle, exactly aligned with a horizontal edge of the exempted portion of the metal shape.

Example 3: rectShapeDir with extendBy and widthRanges

When the edges of a rectangular Metal1 shape with width less than or equal to 0.3 or equal to 0.6 or 0.8 wide are extended by 0.2, the resulting shape must also be rectangular.

Example 4: rectShapeDir with exceptEdgeLength, width, and twoSides

A vertical rectangle on layer Metal1 with width 0.25 must have 0.05 wide jogs on both sides.

Example 5: rectShapeDir with exceptRanges

All rectangles on layer Metal1 must be vertical. However, the constraint does not apply if a rectangle has width in one of the following ranges:


Return to top
 ⠀
X