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

minViaSpacing (Two layers)

spacings(
( minViaSpacing tx_cutLayer1 tx_cutLayer2 
 ['centerToCenter]
 ['sameNet | 'sameMetal]
 ['stack]
 ['area f_area]
 ['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 ['extendBy f_extendBy]
 ]
 ['sizeBy f_sizeBy]
 ['exceptSameNet | 'exceptSameMetal]
 ['overlapNotAllowed]
 ['horizontal | 'vertical
  ['prl f_prl ['oppositeSides] | 'prlRange f_prlRange]
 ['insideLayers (tx_layer3 tx_layer4tx_layerN)
  ['insidePurposes (t_purpose1 t_purpose2t_purposeN)]
  |
  'outsideLayers (tx_layer3 tx_layer4tx_layerN)
  ['outsidePurposes (t_purpose1 t_purpose2t_purposeN)]
 ] |
 ['cornerEuclidian]
 ['deltaVoltage f_voltage]
 f_spacing
)
) ;spacings
spacingTables(
( minViaSpacing tx_cutLayer1 tx_cutLayer2 
 (( "width" nil nil ["width" nil nil] )
  ['centerToCenter] 
  ['sameNet | 'sameMetal]
  ['stack]
  ['area f_area]
  ['cutClass { f_cutWidth | (f_cutWidth f_cutLength) | t_name }]
  ['otherCutClass { f_width | (f_width f_length) | t_name }]
  ['enclosingLayer tx_enclosingLayer
  ['viaEdgeType x_edgeType ['extendBy f_extendBy]
  ]
  ['sizeBy f_sizeBy]
  ['exceptSameNet | 'exceptSameMetal]
  ['overlapNotAllowed]
  ['horizontal | 'vertical
  ['prl f_prl ['oppositeSides] | 'prlRange f_prlRange]
  ]
  [f_default]
  ['insideLayers (tx_layer3 tx_layer4tx_layerN)
   ['insidePurposes (t_purpose1 t_purpose2t_purposeN)]
  |
   'outsideLayers (tx_layer3 tx_layer4tx_layerN)
   ['outsidePurposes (t_purpose1 t_purpose2t_purposeN)]
  ] |
 ['cornerEuclidian]
 ['deltaVoltage f_voltage]
 )
 (g_table)
)
) ;spacingTables 

Specifies the minimum spacing required between via cuts on different layers. The required spacing can be independent of the width of the via cuts or can be dependent on the width of one or both via cuts.

Optional parameters determine whether spacing is measured center-to-center or edge-to-edge, whether the constraint applies to a certain connectivity type, whether same-net via cuts on different layers can be stacked if aligned, and whether the constraint applies to via cuts that have an area greater than or equal to the specified value.

Values

tx_cutLayer1

The first cut layer on which the constraint is applied.

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

tx_cutLayer2

The second cut layer on which the constraint is applied.

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

f_spacing

The minimum spacing required between via cuts on different layers, independent of the width of the via cuts.

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

This identifies the index for table.

g_table

The minimum spacing required between via cuts on different layers, depending on the width of the via cuts.

The table has the following format:

(f_widthCut1 f_spaceValue) or (f_widthCut1 f_widthCut2 f_spaceValue)

where,

  • f_widthCut1: The width of the via cut on cutlayer1 must be greater than or equal to this value.
  • f_widthCut2: The width of the via cut on cutlayer2 must be greater than or equal to this value.
  • f_spaceValue: The spacing between the two cuts on different layers must be greater than or equal to this value.

A 1-D table means that the required spacing is dependent on the width of one of the two via cuts, and a 2-D table means that the required spacing is dependent on the width of both via cuts.

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

Parameters

'centerToCenter

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

Type: Boolean

'sameNet | 'sameMetal

  

The connectivity type. If 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 only if the via cuts are on the same net.
  • 'sameMetal: The constraint applies only if the via cuts are on contiguous same-metal shapes.

Type: Boolean

'stack

The via cuts on two different layers can be stacked if their center points are exactly aligned. Otherwise, the via cuts cannot be stacked.

'area f_area

The constraint applies only if the area of a via cut is greater than or equal to this value. The value for this parameter is assumed to be greater than the default spacing value.

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

(Virtuoso Advanced Node for Layout Standard) The cut class to which the constraint applies on cutLayer1, specified by width, by width and length, or by name (as defined in a cutClass constraint).

  • f_width: Width
  • f_length: Length
  • t_name: Name of the cut class

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

(Virtuoso Advanced Node for Layout Standard) The cut class to which the constraint applies on cutLayer2, specified by width, by width and length, or by name (as defined in a cutClasses constraint).

  • f_width: Width
  • f_length: Length
  • t_name: Name of the cut class

'fixedCutClassList l_fixedCutClassNames

  

The constraint applies to the edges of this list of cut classes if their type is as specified by x_edgeType.

'otherFixedCutClassList l_otherFixedCutClassNames

  

The constraint applies to all cut classes in l_fixedCutClassNames that have the specified spacing with any cut classes in l_otherFixedCutClassNames and are of the type specified by x_edgeType2.

If not specified, the constraint applies to all cut classes in l_fixedCutClassNames.

'enclosingLayer tx_enclosingLayer

(Virtuoso Advanced Node for Layout Standard) 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 on cutLayer1 (the type is defined in the viaEdgeType constraint).

'extendBy f_extendBy

(Virtuoso Advanced Node for Layout Standard) An extension equal to this value is applied to the via cut edges that satisfy 'viaEdgeType before the constraint is applied.

If 'sizeBy is also specified, the extension is applied after sizing the cuts.

'sizeBy f_sizeBy

(Virtuoso Advanced Node for Layout Standard) The constraint is applied after sizing all the edges of the via cut on cutLayer1 by this value.

If both 'enclosingLayer and 'sizeBy are specified, the spacing is measured between the geometric AND (or intersection) of the enclosing layer extension and the via extended by sizeBy. 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.

'exceptSameNet | 'exceptSameMetal

(Virtuoso Advanced Node for Layout Only) The constraint does not apply to via cuts with certain connectivity types.

  • 'exceptSameNet: The constraint does not apply to via cuts on the same net.
  • 'exceptSameMetal: The constraint does not apply to via cuts enclosed by a contiguous same-metal shape.

Type: Boolean

'overlapNotAllowed

If specified, the constraint applies when vias overlap except when the center points of overlapping vias are aligned with the stack parameter being specified.

'horizontal | 'vertical ['prl f_prl] 'oppositeSides

(Virtuoso Advanced Node for Layout Only) If a spacing direction is specified for the constraint, then the parallel run length is measured in the orthogonal direction.

When the spacing direction is specified, f_prl can also be specified. In this case, the constraint applies only if the parallel run length is equal to or greater than the f_prl value, which is measured orthogonally to the spacing direction.

When f_prl is specified, the oppositeSides parameter can also be specified. In this case, the constraint applies only if the layer1 shape is surrounded by the layer2 shape on opposite sides.

'prlRange f_prlRange

(Virtuoso Advanced Node for Layout Only) 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.

f_default

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

'insideLayers (tx_layer3 tx_layer4tx_layerN)
| 'outsideLayers (
tx_layer3 tx_layer4tx_layerN)

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

  • 'insideLayers: The constraint applies when the region between the shapes on the specified layers (layer1 and layer2) overlaps a shape on one of these layers (layer3 layer4layerN).
  • 'outsideLayers: The constraint applies when the region between the shapes on the specified layers (layer1 and layer2) overlaps the region outside the shapes on one of these layers (layer3 layer4layerN).

For more information, see Region-based Rule (Two layers).

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)

'cornerEuclidian

(Virtuoso Advanced Node for Layout Only) The corner-to-corner spacing (that is, when parallel run length is less than zero) between shapes is measured using Euclidean measure type (the spacing halo has rounded corners).

The default measure type is Manhattan.

Type: Boolean

'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|)

Examples

Example 1: minViaSpacing with centerToCenter, enclosingLayer, and viaEdgeType

The center-to-center spacing between a Via1 cut that satisfies viaEdgeType 1 (the constraint applies only to via cuts that do not have two opposite edges with extensions less than or equal to 0.009) and a Via2 cut must be at least 0.06.

Example 2: minViaSpacing with edgeType, enclosingLayer, sizeBy, and extendBy

The edge-to-edge spacing between a viaEdgeType 2 Via1 cut edge and a Via2 cut must be at least 0.07 when the Via1 cut is sized by 0.009 and extended by 0.008. The constraint applies only to Via1 cuts with opposite edge extensions less than or equal to 0.009 (any edges on those via cuts with extension less than or equal to 0.009 are viaEdgeType 2).

Example 3: minViaSpacing with stack and overlapNotAllowed

The constraint applies only if the via cuts are overlapping without the center points being aligned.

Example 4: minViaSpacing with direction and prl

The constraint applies only if the spacing between the vias is more than or equal to .017 and prl is greater than or equal to .002.

Example 5: minViaSpacing with direction, prl, and oppositeSides

The constraint applies only if the spacing between the vias is more than or equal to .017, prl is greater than or equal to .002, and the Via1 shape is surrounded by the Via2 shape on opposite sides.


Return to top
 ⠀
X