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

allowedSpacingRanges (One layer)

spacings(
( allowedSpacingRanges tx_layer 
 ['sameMask | 'diffMask]
 ['mask1 | 'mask2 | 'mask3]
 ['exceptWidthEdge]
 ['width f_width]
 ['jointEOLWidthRanges g_jointEOLWidthRanges]
 ['horizontal | 'vertical] 
 ['widthRanges (g_widthRanges)] 
 ['exceptOverLayer tx_exceptOverLayer 
  'overLayerPrl f_prl 
  'overLayerWidthRanges (g_overLayerWidthRanges)
 ]
 ['exceptNumShapes g_exceptNumShapeRange 
  'numShapeDistance f_distance
  'numShapeWidthRanges (g_numShapeWidthRanges)
  ['numShapeMaxWidth f_maxWidth]
 ]
 ['stepSize f_stepSize ['stepRange g_stepRange]]
 ['overLayer tx_overLayer]
 ['insideLayers (tx_layer1 tx_layer2 … tx_layerN)
  ['insidePurposes (t_purpose1 t_purpose2 … t_purposeN)]
  |
  'outsideLayers (tx_layer1 tx_layer2 … tx_layerN)
  ['outsidePurposes (t_purpose1 t_purpose2 … t_purposeN)]
 ]
 (g_ranges) 
)
) ;spacings
spacingTables(
( allowedSpacingRanges tx_layer
 (( "width" nil nil ["width" nil nil] ) 
  ['sameMask | 'diffMask]
  ['mask1 | 'mask2 | 'mask3]
  ['exceptWidthEdge]
  ['width f_width]
  ['jointEOLWidthRanges g_jointEOLWidthRanges]
  ['parallelRunLengthTable] 
  ['horizontal | 'vertical] 
  ['widthRanges (g_widthRanges)] 
  ['exceptOverLayer tx_exceptOverLayer 
  'overLayerPrl f_prl 
  'overLayerWidthRanges (g_overLayerWidthRanges) 
  ] 
  ['exceptNumShapes g_exceptNumShapeRange 
  'numShapeDistance f_distance
  'numShapeWidthRanges (g_numShapeWidthRanges)
  ]
  ['insideLayers (tx_layer1 tx_layer2 … tx_layerN)
   ['insidePurposes (t_purpose1 t_purpose2 … t_purposeN)]
  |
   'outsideLayers (tx_layer1 tx_layer2 … tx_layerN)
   ['outsidePurposes (t_purpose1 t_purpose2 … t_purposeN)]
  ]
  [f_default]
 )
 (g_table)
)
) ;spacingTables

Specifies a set of allowed spacing ranges between two shapes on a layer. Spacing can be independent of the width of the shapes, dependent on the width of one shape, or dependent on the width of both shapes.

The following three conditions define the bounding criteria for the constraint. At least one of these conditions must be specified to limit the bounds of the constraint:

Values

tx_layer

The layer on which the constraint is applied.

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

g_ranges

The allowed spacing ranges specified as follows:

(spacingRange1 spacingRange2 …)

Type: Floating-point values specifying a range of spacings that are allowed

"width" nil nil ["width" nil nil]

  

This identifies the index for table.

g_table

The format of a 1-D table row is as follows:

(f_width f_spacing)

where, f_width is the width of the wider of the two shapes and f_spacing is the spacing allowed when the width is greater than or equal to the corresponding index.

If 'parallelRunLengthTable is specified, the 1-D table is indexed on the parallel run length, instead of width.

The format of a 2-D table is as follows:

((f_width1 f_width2) f_spacing)

where, f_width1 and f_width2 represent the widths of the two shapes and f_spacing is the spacing allowed when both widths are greater than or equal to the corresponding indexes.

Type: A 1-D table specifying floating-point width (or parallel run length) and spacing values, or a 2-D table specifying floating-point width and spacing values

Parameters

'sameMask | 'diffMask

  

(Virtuoso Layout Suite EXL and higher tiers) The mask type.

  • 'sameMask: The constraint applies only between shapes on the same mask.
  • 'diffMask: The constraint applies only between shapes on different masks.

Type: Boolean

'mask1 | 'mask2 | 'mask3

  

(Virtuoso Layout Suite EXL and higher tiers) The mask of the shapes to which this rule belongs to.

Type: Boolean

'exceptWidthEdge

  

(Virtuoso Advanced Node for Layout Only) The constraint does not apply to any edges of a square shape or to edges whose span is considered as the width of the shape.

'width f_width

  

The constraint applies only if the width of both adjacent shapes is less than this value.

'jointEOLWidthRanges g_jointEOLWidthRanges

  

(Virtuoso Layout Suite EXL and higher tiers) The constraint applies only for L or T joints having end-of-line width in specified ranges.

'horizontal | 'vertical

The direction in which spacing is measured. If direction is not specified, spacing is measured in any direction.

Type: Boolean

'widthRanges (g_widthRanges)

(Virtuoso Advanced Node for Layout Standard) The constraint applies only to shapes with width in this range.

Type: Floating-point values specifying a range of widths that trigger the constraint

'exceptOverLayer tx_exceptOverLayer 'overLayerPrl f_prl 'overLayerWidthRanges (g_overLayerWidthRanges)

These parameters together define an exemption that applies to two adjacent shapes.

(Virtuoso Advanced Node for Layout Standard) The constraint does not apply if all of the following conditions are met:

  • The shapes overlap layer exceptOverLayer.
    Type: String (layer name) or Integer (layer number)
  • The parallel run length between the shapes is less than or equal to prl.
  • The spacing between the shapes falls in the range specified by overLayerWidthRanges.
    Type: Floating-point values specifying a range of spacings that are exempt

'exceptNumShapes g_exceptNumShapeRange 'numShapeDistance f_distance 'numShapeWidthRanges (g_numShapeWidthRanges) 'numShapeMaxWidth f_maxWidth

These parameters together define an exemption that applies to groups of adjacent shapes.

(Virtuoso Advanced Node for Layout Standard) The constraint does not apply if all of the following conditions are met:

  • The number of shapes in a group is less than or equal to exceptNumShapes.
    Type: Integer values specifying a range for the number of shapes that is exempt
  • The distance between a pair of shapes in a group is less than or equal to distance.
  • The spacing between two groups of shapes falls in the range specified by numShapeWidthRanges.
    Type: Floating-point values specifying a range of spacings that are exempt
  • The width of each shape in the group is less than or equal to maxWidth.

'stepSize f_stepSize

(Virtuoso Advanced Node for Layout Standard) The allowed spacings (Slegal) are restricted to the following values:

Slegal = Smin + n*stepSize

where, Smin is the lower end of the range specified by stepRange and n>=0. If stepRange is not specified, Smin is the lower end of the constraint value.

'stepRange g_stepRange

(Virtuoso Advanced Node for Layout Standard) The stepped spacing specified with 'stepSize applies only in this range, which is fully contained in the constraint value.

Type: Floating-point values specifying a range of spacing

'overLayer tx_overLayer

(Virtuoso Advanced Node for Layout Standard) The constraint applies only to those shapes that overlap a single shape on this layer.

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

'parallelRunLengthTable

The spacing table is indexed on the parallel run length between two shapes, instead of on width.

Type: Boolean

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

  

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)

The 'insideLayers parameter is limited to only the specified purposes.

Type: String (purpose name)

'outsidePurposes (t_purpose1 t_purpose2t_purposeN)

The 'outsideLayers parameter is limited to only the specified purposes.

Type: String (purpose name)

f_default

The spacing value to be used when no table entry applies.

Examples

Example 1: allowedSpacingRanges with horizontal, exceptOverLayer, overLayerPrl, and overLayerWidthRanges

The horizontal spacing between two Metal1 shapes must be greater than or equal to 0.1 and less than or equal to 0.19 or greater than or equal to 0.4 except when all of the following conditions are met:

Example 2: allowedSpacingRanges with horizontal, exceptNumShapes, numShapeDistance, and numShapeWidthRanges

The horizontal spacing between two Metal1 shapes must be greater than or equal to 0.05 and less than or equal to 0.1 or greater than or equal to 0.4 except when all of the following conditions are met:

Example 3: allowedSpacingRanges with horizontal, exceptNumShapes, numShapeDistance, numShapeWidthRanges, and numShapeMaxWidth

The horizontal spacing between two Metal1 shapes must be greater than or equal to 0.05 and less than or equal to 0.1 or greater than or equal to 0.4 except when all of the following conditions are met:

Example 4: allowedSpacingRanges with vertical and stepSize

The vertical spacing between two Metal1 shapes must be greater than or equal to 0.1 and less than or equal to 0.2. A legal spacing value is the sum of the lower bound of this spacing range (0.1) and a multiple of 0.05.

Example 5: allowedSpacingRanges with overLayer

The spacing between two Metal1 shapes must be greater than 0.1 if both shapes overlap a single Metal2 shape.

Example 6: allowedSpacingRanges with exceptWidthEdge

The spacing between two Metal1 shapes must be greater than 0.6 and parallel edges are length edges.

Example 7: allowedSpacingRanges with sameMask and diffMask

The spacing between two Metal1 shapes must be greater than 0.6 and parallel edges are length edges.

bumpMinSpacing

spacings(
( bumpMinSpacing tx_layer
 'width f_width
 g_spacing
)
); spacings

(Virtuoso Layout Suite EXL and higher tiers) Specifies the bump to wire spacing if the width of the bump is greater than the bump width.

Values

tx_layer

The layer on which the constraint is applied.

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

g_spacing

The minimum spacing between the bump and the wire on the specified layers.

Parameters

'width f_width

Specifies the width of a bump to trigger the bump spacing. The constraint applies when the bump width is greater than f_width.

Example

Specifies the bump to wire spacing.

spacings(     (bumpMinSpacing “RDL1” 'width 10      5.0)
) ;spacings


Return to top
 ⠀
X