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

minViaSpacing (One layer)

spacings(
( minViaSpacing tx_cutLayer
 ['shortSideToShortSide | 'shortSideToLongSide | 'shortSideToAnySide 
  | 'longSideToLongSide | 'longSideToAnySide | 'anySideToAnySide
 ]
 ['centerToCenter]
 ['horizontal | 'vertical]
 ['sameNet | 'sameMetal | 'sameVia]
 ['viasOnSameNet | 'viasOnSameMetal | 'viasOnSameVia]
 ['exceptSameNet | 'exceptSameMetal]
 ['exceptViasOnSameNet | 'exceptViasOnSameMetal | 'exceptViasOnSameVia]
 ['sameMask | 'diffMask]
 ['area f_area]
 ['overLayer tx_layer 
  ['overLayerWidth f_layerWidth]
  ['exceptGap f_gap]
  ['exceptSameMetalOverlap]
 ]
 ['length f_length | 'exactLength f_length ['exactSpacing]
  | 'prlRange f_prlRange]
 [
  ['cutClass { f_width | ( f_width f_length) | t_name }
    ['otherCutClass { f_width | ( f_width f_length ) | t_name }]]
  |
  ['fixedCutClassList l_fixedCutClassNames
    ['otherFixedCutClassList l_otherFixedCutClassNames]]
 ]
 ['enclosingLayer tx_enclosingLayer 
  ['viaEdgeType x_edgeType 
   ['bothCuts | 'otherViaEdgeType x_edgeType2] 
   ['sizeByTouchedCorners (f_sizeBy1 f_sizeBy2)
    ['includedEdgeAligned 
     ['alignedHorizontal|'alignedVertical]]]
   ['orthogonalEdgePair 
    ['orthogonalEnclosingMetal]]
  ]
 ]
 ['sizeBy f_sizeBy]
 ['exceptExactAligned]
 ['exceptRanges l_exceptRanges]
 ['insideLayers (tx_layer1 tx_layer2tx_layerN)
  ['insidePurposes (t_purpose1 t_purpose2t_purposeN)]
  |
  'outsideLayers (tx_layer1 tx_layer2tx_layerN)
  ['outsidePurposes (t_purpose1 t_purpose2t_purposeN)]
 ]
 [ 'ignoreRegion ] | [ 'abutRegion ]
 ['facingEdges]
 ['deltaVoltage f_voltage]
 ['horizontalSpacingRange f_spacingRange]
 ['verticalSpacingRange f_spacingRange]
 ['farEnds]
 f_spacing ['manhattan] 
)
) ;spacings
spacingTables(
( minViaSpacing tx_cutLayer
 (( "width" nil nil ["width" nil nil] ) 
  ['shortSideToShortSide | 'shortSideToLongSide | 'shortSideToAnySide 
  | 'longSideToLongSide | 'longSideToAnySide | 'anySideToAnySide
  ]
  ['centerToCenter]
  ['horizontal | 'vertical]
  ['sameNet | 'sameMetal | 'sameVia]
  ['viasOnSameNet | 'viasOnSameMetal | 'viasOnSameVia]
  ['exceptSameNet | 'exceptSameMetal]
  ['exceptViasOnSameNet | 'exceptViasOnSameMetal | 'exceptViasOnSameVia]
  ['sameMask | 'diffMask]
  ['area f_area] 
  ['overLayer tx_layer 
   ['overLayerWidth f_layerWidth]
   ['exceptGap f_gap]
   ['exceptSameMetalOverlap]
  ]
  ['length f_length | 'exactLength f_exactLength ['exactSpacing] 
  'prlRange f_prlRange]
  [
  ['cutClass { f_width | ( f_width f_length) | t_name }
    ['otherCutClass { f_width | ( f_width f_length ) | t_name }]]
  |
  ['fixedCutClassList l_fixedCutClassNames
    ['otherFixedCutClassList l_otherFixedCutClassNames]]
  ]
  ['enclosingLayer tx_enclosingLayer 
  ['viaEdgeType x_edgeType 
   ['bothCuts | 'otherViaEdgeType x_edgeType2] 
   ['sizeByTouchedCorners (f_sizeBy1 f_sizeBy2)
    ['includedEdgeAligned 
     ['alignedHorizontal|'alignedVertical]]]
   ['orthogonalEdgePair 
    ['orthogonalEnclosingMetal]]
  ]
  ]
  ['sizeBy f_sizeBy]
  ['exceptExactAligned]
  ['above | 'below | 'bothAboveBelow]
  ['exceptRanges l_exceptRanges]
  ['insideLayers (tx_layer1 tx_layer2tx_layerN)
   ['insidePurposes (t_purpose1 t_purpose2t_purposeN)]
   |
   'outsideLayers (tx_layer1 tx_layer2tx_layerN)
   ['outsidePurposes (t_purpose1 t_purpose2t_purposeN)]
  ]
  [ 'ignoreRegion ] | [ 'abutRegion ]
  ['facingEdges]
  ['deltaVoltage f_voltage]
  ['horizontalSpacingRange f_spacingRange]
  ['verticalSpacingRange f_spacingRange]
  ['farEnds]
  [f_default]
 )
 (g_table) ['manhattan]
)
) ;spacingTables

Specifies the minimum spacing between via cuts that are on the same net, metal, or via. The required spacing can be independent of the width of the enclosing metal shape or can be dependent on the width of the enclosing metal shapes on the layers above or below, or both. If the enclosing metal shape is rectilinear, the width of the narrowest portion of the shape is considered.

Optional parameters determine whether the spacing is measured center-to-center or edge-to-edge, whether the constraint applies to a certain connectivity type, and whether the constraint applies to via cuts that have an area larger than the specified value. In some processes, the constraint applies only if the via cuts have a parallel run length greater than or equal to the specified value or exactly equal to the specified value, and, in some processes, the constraint does not apply to via cuts that are exactly aligned. You can also use this constraint to define the spacing for a cut class.

Values

tx_cutLayer

The layer on which the constraint is applied.

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

f_spacing

The minimum spacing independent of width.

"width" nil nil

This identifies the index for table.

g_table

The format of the 1-D table is as follows:

(f_index f_spacing)

where, f_spacing is the minimum spacing required between the via cuts when the width of the metal shape enclosing the via cuts is greater than or equal to f_index. By default, the required spacing is determined based on the width of the wider of the enclosing metal shapes on the layers above and below.

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

(f_index1 f_index2 f_spacing)

where, f_index1 and f_index2 represent the widths of the enclosing shapes on the layers above and below.

Type: A 1-D or 2-D table specifying floating-point width and spacing values.

Parameters

'shortSideToShortSide | 'shortSideToLongSide | 'shortSideToAnySide | 'longSideToLongSide | 'longSideToAnySide | 'anySideToAnySide

  

(ICADVM20.1 Only – 95511) The sides between which spacing is measured.

  • 'shortSideToShortSide: Spacing is measured between a short side of one shape and a short side of the other shape.
  • 'shortSideToLongSide: Spacing is measured between a short side of one shape and a long side of the other shape.
  • 'shortSideToAnySide: Spacing is measured between a short side of one shape and any side of the other shape.
  • 'longSideToLongSide: Spacing is measured between a long side of one shape and a long side of the other shape.
  • 'longSideToAnySide: Spacing is measured between a long side of one shape and any side of the other shape.
  • 'anySideToAnySide: Spacing is measured between any side of one shape and any side of the other shape.

Type: Boolean

'centerToCenter

The spacing is measured center-to-center. Otherwise, the spacing is measured edge-to-edge.

Type: Boolean

'horizontal | 'vertical

  

(ICADVM20.1 Only – 95512) If a spacing direction is specified for the constraint, then the parallel run length is measured in the orthogonal direction. If direction is not specified, the constraint applies in any direction.

Type: Boolean

'sameNet | 'sameMetal | 'sameVia

The connectivity type. If the connectivity type is not specified, the constraint applies to any connectivity type, including any two cuts on the same cut layer with no common metal or net.

  • 'sameNet: The constraint applies broadly to all via cuts that are on the same net.
  • 'sameMetal: The constraint applies to a subset of via cuts that meet the sameNet condition and are on contiguous same-metal shapes.
  • 'sameVia: The constraint applies to a smaller subset of via cuts that meet the sameMetal condition and are overlapped by a single metal shape from above and by another single metal shape from below.

This parameter may be specified only if another connectivity type (including viasOnSame*, exceptSame*, and viasOnSame*) is not specified.

'viasOnSameNet | 'viasOnSameMetal | 'viasOnSameVia

(ICADVM20.1 Only – 95511) The constraint applies selectively to vias of the specified connectivity type. If none of these connectivity types are specified, the constraint applies to any connectivity type, including any two cuts on the same cut layer with no common metal or net.

  • 'viasOnSameNet: The constraint applies broadly to all cut shapes that are either logically assigned the same net or electrically connected to the same net.
  • 'viasOnSameMetal: The constraint applies to a subset of cut shapes that meet the viasOnSameNet condition and are also electrically connected by a contiguous metal on either the layer below or the layer above.
  • 'viasOnSameVia: The constraint applies to a smaller subset of cut shapes that meet the viasOnSameMetal condition and are also electrically connected by a contiguous metal on both the layer below and the layer above.

This parameter may be specified only if another connectivity type (including sameNet, sameMetal, sameVia, exceptSameNet, exceptSameMetal, and exceptViasOnSame*) is not specified.

'exceptSameNet | 'exceptSameMetal

(ICADVM20.1 Only – 95512) The constraint does not apply to via cuts with the specified connectivity type. If neither of these connectivity types are specified, the constraint applies to any connectivity type, including any two cuts on the same cut layer with no common metal or net.

  • 'exceptSameNet: The constraint does not apply to via cuts on the same net.
  • 'exceptSameMetal: The constraint does not apply to a subset of via cuts that meet the exceptSameNet condition and are enclosed by a contiguous same-metal shape.

This parameter may be specified only if another connectivity type (including sameNet, sameMetal, sameVia, viasOnSame*, and exceptViasOnSame*) is not specified.

'exceptViasOnSameNet | 'exceptViasOnSameMetal | 'exceptViasOnSameVia

(ICADVM20.1 Only – 95511) The constraint does not apply to vias of the specified connectivity type. If none of these connectivity types are specified, the constraint applies to any connectivity type, including any two cuts on the same cut layer with no common metal or net.

  • 'exceptViasOnSameNet: The constraint does not apply to a broad set of via cuts that are either logically assigned the same net or electrically connected to the same net.
  • 'exceptViasOnSameMetal: The constraint does not apply to a subset of via cuts that meet the exceptViasOnSameNet condition and are also electrically connected by a contiguous metal on either the layer below or the layer above.
  • 'exceptViasOnSameVia: The constraint does not apply to a smaller subset of via cuts that meet the exceptViasOnSameMetal condition and are also electrically connected by a contiguous metal on both the layer below and the layer above.

This parameter may be specified only if another connectivity type (including sameNet, sameMetal, sameVia, exceptSameNet, exceptSameMetal, and viasOnSame*) is not specified.

'sameMask | 'diffMask

The mask type. If mask type is not specified, the constraint applies to all cuts on the layer.

  • 'sameMask: (ICADVM20.1 Only – 95512) The constraint applies only to via cuts on the same mask.
  • 'diffMask: (ICADVM20.1 Only – 95511) The constraint applies only to via cuts on different masks.

Type: Boolean

'area f_area

The constraint applies only if the area of a via cut is greater than this value.

'overLayer tx_layer

  

(ICADVM20.1 Only – 95512) The constraint applies only if both via cuts overlap a single shape on this layer. If exceptGap or exceptSameMetalOverlap is specified, this condition is not checked.

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

'overLayerWidth f_layerWidth

(ICADVM20.1 Only – 95512) The constraint applies only if the width of the overlapping shape is less than or equal to this value.

'exceptGap f_gap

(Virtuoso Layout Suite EXL and higher tiers) The constraint does not apply if there is a gap of exactly this value between the via cuts that overlap the shape on the overLayer layer.

'exceptSameMetalOverlap

(Virtuoso Layout Suite EXL and higher tiers) The constraint does not apply if the via cuts that overlap the shape on the overLayer layer are on the same metal.

'length f_length

The constraint applies only if the parallel run length (prl) between the two via cuts is greater than or equal to this value. Both positive and negative values are allowed.

If multiple minViaSpacing constraints are defined in an AND constraint group, the constraint is applied by evaluating the length values, specified in the ascending order, to locate the first length value for which the actual parallel run length is greater than or equal to the parameter value. As a result, only one constraint in an AND constraint group applies. For example, in an AND constraint group with parallel run length values specified as -1.0, -0.05, 0, 0.05, 1, the constraint value that applies is determined as follows:

Actual length (prl)   Use constraint value for length

<-1 The constraint does not apply.

>=-1 and <-0.05 -1.0

>=-0.05 and <0 -0.05

>=0 and <0.05 0

>=0.05 and <1.0 0.05

>=1.0 1.0

'exactLength f_exactLength

The constraint applies only if the parallel run length between the two via cuts is equal to this value.

'exactSpacing

The spacing between the via cuts must be equal to the constraint value.

Type: Boolean

'prlRange f_prlRange

(ICADVM20.1 Only – 95511) The constraint applies only when the parallel run length between two shapes is in this range. The parallel run length is measured orthogonal to the direction parameter, when it is specified.

'cutClass { f_width | (f_width f_length) | t_name }

  

The cut class to which the constraint applies, specified by width, by width and length, or by name (as defined in a cutClasses constraint). The constraint applies to edges specified by x_edgeType.

'otherCutClass { f_width | (f_width f_length) | t_name }

  

(Virtuoso Layout Suite EXL and higher tiers) The constraint applies if one cut class is of the type cutClass and the other cut class is of the type otherCutClass and are of the type specified by x_edgeType2.

'fixedCutClassList l_fixedCutClassNames

  

(Virtuoso Layout Suite EXL and higher tiers) The constraint provides the list of cut classes for which this constraint specifies the spacing.

'otherFixedCutClassList l_otherFixedCutClassNames

  

(Virtuoso Layout Suite EXL and higher tiers) The constraint provides the list of cut classes. A cut in fixedCutClassList will have specified spacing value with any cut in otherFixedCutClassList.

'enclosingLayer tx_enclosingLayer

(ICADVM20.1 Only – 95512) The enclosing layer for 'viaEdgeType extension checks.

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

'viaEdgeType x_edgeType

(Virtuoso Advanced Node for Layout Standard) The constraint applies only to the via cut edges of this type (the type is defined in the viaEdgeType constraint).

'bothCuts

(Virtuoso Advanced Node for Layout Standard) The constraint applies only if both via cuts satisfy viaEdgeType.

Type: Boolean

'otherViaEdgeType x_edgeType2

(Virtuoso Layout Suite EXL and higher tiers) (Virtuoso Layout Suite EXL and higher tiers) The constraint applies between via edges where one via edge is of the type viaEdgeType and the other via edge is of the type otherViaEdgeType. The type is defined in the viaEdgeType constraint.

'sizeByTouchedCorners (f_sizeBy1 f_sizeBy2)
['includedEdgeAligned ['alignedHorizontal|'alignedVertical]]

(ICADVM20.1 Only – 95511) The constraint is applied after expanding by sizeBy1 the pair of opposite edges that satisfy 'viaEdgeType and by sizeBy2 the other pair of opposite edges of two via cuts only if the two expanded via cuts touch at the corners.

The includedEdgeAligned parameter indicates that the sizeByTouchedCorners spacing is applied if the edges of the expanded window are aligned. The alignment is considered to be in any direction, unless either 'alignedHorizontal or 'alignedVertical is specified.

'orthogonalEdgePair

(Virtuoso Advanced Node for Layout Standard) The constraint checks for orthogonal pairs of edges when centerToCenter is false and viaEdgeType is defined.

Type: Boolean

'orthogonalEnclosingMetal

(Virtuoso Layout Suite EXL and higher tiers) The constraint applies only to orthogonal enclosing metal shapes.

'sizeBy f_sizeBy

(Virtuoso Advanced Node for Layout Standard) The constraint is applied after expanding all via cut edges by this value.

If both 'enclosingLayer and 'sizeBy are specified, the spacing is measured between the AND of the enclosing layer extension and the via extended by the sizeBy value. In other words, the spacing is measured from the enclosing metal edge or the expanded via cut edge, whichever is at a shorter distance from the via cut.

'exceptExactAligned

(Virtuoso Advanced Node for Layout Standard) The constraint applies only to those via cuts that are not exactly aligned.

Type: Boolean

'above | 'below | 'bothAboveBelow

(ICADVM20.1 Only – 95511) The metal shape that is used to determine the spacing between the via cuts. By default, the required spacing is determined based on the width of the wider of the two metal shapes. Only those metal shapes that overlap both via cuts are considered.

  • 'above: The spacing is determined based on the width of the metal shape on the layer above.
  • 'below: The spacing is determined based on the width of the metal shape on the layer below.
  • 'bothAboveBelow: The spacing is determined based on the width of the narrower of the two metal shapes on the layers above and below.

'exceptRanges l_exceptRanges

The constraint does not apply if the spacing between via cuts is in this range.

Type: A list of floating-point values specifying a range of spacings that are exempted.

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

The presence or absence of one or more specified layers determines if the constraint applies.

  • '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 the specified purposes.

Type: String (purpose name)

'outsidePurposes (t_purpose1 t_purpose2t_purposeN)

The 'outsideLayers parameter is limited to the specified purposes.

Type: String (purpose name)

'ignoreRegion

(Virtuoso Layout Suite EXL and higher tiers) The constraint applies if the shapes on the insideLayers intersect any via shape but do not intersect the region between the shapes.

'abutRegion

(Virtuoso Layout Suite EXL and higher tiers) The constraint applies if the shapes on the insideLayers abut the region between the shapes but do not overlap the region.

'deltaVoltage f_voltage

(Virtuoso Layout Suite EXL and higher tiers) The constraint applies if both the cut shape and the metal shape have voltages and the delta voltage between the layer1 shape and the layer2 shape is greater than this value.

The delta voltage is calculated as follows:

  • For asynchronous nets:
    max(V1max, V2max) - min(V1min, V2min)
  • For synchronous nets:
    max(|V1max - V2max|, |V1min - V2min|)

'facingEdges

(Virtuoso Advanced Node for Layout Standard) The constraint applies only when there is no obstruction between edges.

Type: Boolean

'horizontalSpacingRange f_spacingRange

(Virtuoso Layout Suite EXL and higher tiers) The constraint applies only when the horizontal spacing between two shapes is in the specified range.

'verticalSpacingRange f_spacingRange

(Virtuoso Layout Suite EXL and higher tiers) The constraint applies only when the vertical spacing between two shapes is in the specified range.

'farEnds

(Virtuoso Layout Suite EXL and higher tiers) If specified, spacing is calculated between the far ends, including edges, of the vias and the constraint is applicable only for positive parallel run lengths between shapes.

f_default

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

'manhattan

The constraint uses Manhattan distance, which allows a larger spacing at the corners. By default, the constraint uses Euclidean measurement. See Euclidean and Manhattan Spacing Constraints.

Type: Boolean

Examples

Example 1: minViaSpacing with overLayer and overLayerWidth

The spacing between two via cuts must be at least 0.2 if they overlap a Metal1 shape with width less than or equal to 0.09.

Example 2: minViaSpacing with centerToCenter, enclosingLayer, and viaEdgeType

The center-to-center spacing between two via cuts must be at least 0.06. The constraint applies only to via cuts that do not have two opposite edges with extensions less than or equal to 0.009.

Example 3: minViaSpacing with exactLength, enclosingLayer, viaEdgeType, bothCuts, and sizeBy

The spacing between two via cuts expanded by 0.009 must be at least 0.07 if both via cuts have Metal1 extensions less than or equal to 0.009 on a pair of opposite edges and the parallel run length between them is 0.05.

Example 4: minViaSpacing with fixedCutClassList and otherFixedCutClassList

Consider the following scenarios that illustrate the use of the fixedCutClassList and otherFixedCutClassList parameters.

In the following case, the spacings between all combinations of the specified cut classes must be >= 0.02.

In this case, because otherFixedCutClassList is also specified, the spacings between only the indicated combinations of cut classes must be >= 0.02.

Example 5: minViaSpacing with exceptExactAligned

The spacing must be greater than or equal to 0.1 between exactly aligned via cuts and greater than or equal to 0.15 between via cuts that are not exactly aligned.

Example 6: minViaSpacing with centerToCenter, cutClass, enclosingLayer, and sizeByTouchedCorners

The center-to-center spacing between two VA via cuts must be at least 0.07 if both via cuts have Metal1 extensions less than or equal to 0.02 on a pair of opposite edges and the corners of the two vias touch when the pair of edges that satisfy the specified via edge type is expanded by 0.05 and the other pair of edges is expanded by 0.03.

Example 7: minViaSpacing with orthogonalEdgePair

The following diagram illustrates cases of orthogonal pairs where the constraint applies. All the distances must be greater than f_spacing. The arrows indicate the distance between the cut shapes having orthogonal pairs of edges.

The following diagram illustrates cases where the constraint will not apply because the edges are parallel and not orthogonal.

Example 8: minViaSpacing with orthogonalEdgePair and orthogonalEnclosingMetal

The following example illustrates the use of orthogonalEdgePair and orthogonalEnclosingMetal.

Example 9: minViaSpacing with exceptRanges

The spacing between a pair of via cuts on Via1 must be at least 0.5. The vias are exempt from the rule if the spacing between them is equal to 0.1 or greater than 0.15 and less than 0.16.

spacings(
    ( minViaSpacing "Via1"
     'exceptRanges (0.1 "(0.15 0.16)")
0.5
)
) ;spacings

Example 10: minViaSpacing with exceptRanges and facingEdges

The spacing between a pair of via cuts on Via1 must be at least 0.8. The vias are exempt from the rule if the spacing between them is equal to 0.2 and their edges are not facing each other.

Example 11: minViaSpacing with exceptGap and exceptSameMetalOverlap

.

Example 12: minViaSpacing with type of spacing

The spacing between two via cuts is checked using the following constraints.

Example 13: minViaSpacing with overLayer

The spacing between two via cuts is checked using the following constraints. Let’s assume that all cuts belong to the C1 cut class.

Example 14: minViaSpacing with verticalSpacingRange and horizontalSpacingRange

Two constraints are specified. The first constraint requires that the vertical spacing between two shapes be less than 0.03 and the horizontal spacing be more than 0.04. The second constraint does not specify vertical or horizontal spacing.

Example 15: minViaSpacing with farEnds

The spacing between the far ends of vias must be greater than or equal to 0.09.


Return to top
 ⠀
X