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

maxViaStack

spacings(
( maxViaStack
 ['lowerLayer tx_lowerLayer] 
 ['upperLayer tx_upperLayer] 
 ['noSingleCut] 
 ['oneSameMetal f_cutWithin]
 ['minMultiCut x_numCut]
 ['lowCutSizeWithin 
  | 'withinLayerName l_layerNames 'withinList l_withinValues
  ['centerToCenterList l_centerToCenterValues]
  | 'layer tx_layerName 'dualWithin (f_belowWithin f_aboveWithin)
 ]
 ['exceptIndividualArea f_individualArea 'exceptSumArea f_sumArea
 |'exceptMaxArea l_metalLayerNamesAndAreas
 |'areaRatio l_areaRatio]
 ['exceptPGNet] 
 |'exceptPGRouteTopologyList l_PGShapeTypeNames] 
 ['exceptCutClassList l_cutClassNames]
 ['excludeEqual x_value]
 ['noViaList l_viaNames] 
 ['noCutClassList l_cutClassNames] 
 ['sameNetOnly]
 ['exceptExtensionLayerList l_layer
  'exceptExtensionMetalList l_metal
  'exceptExtensionValueList l_value
  'exceptExtensionDirectionList l_direction]
 ['insideLayers (tx_layer1 tx_layer2tx_layerN)
  ['insidePurposes (t_purpose1 t_purpose2t_purposeN)]
 |'outsideLayers (tx_layer1 tx_layer2tx_layerN)
  ['outsidePurposes (t_purpose1 t_purpose2t_purposeN)]]
 x_stackLimit
)
) ;spacings

Sets the maximum allowed number of continuous stacked vias. A via is considered to be in a stack with another via if a cut in one via partially or completely overlaps a cut in another via. The number of vias in a continuous stack must not exceed the number specified by this constraint.

The figure below illustrates a via stack.

In the first example below, if the via stacking limit is set to 3, the leftmost figure violates the constraint because the number of stacked vias is 4 (>3).

In the second example below, if the via stacking limit is set to 3 and 'noSingleCut is specified, the figure on the left violates the constraint because a single-cut via is not allowed in a stack that is taller than 3.

Values

x_stackLimit

The maximum number of vias that can be stacked.

Parameters

'lowerLayer tx_lowerLayer 'upperLayer tx_upperLayer

  

The two together specify a range of layers to which the constraint applies. If this range is not specified, the constraint applies to all layers. The specified layers must all be metal layers.

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

'noSingleCut

This parameter specifies whether stacked vias can be single-cut or if they must be multiple-cut.

  • If this parameter is not specified, single-cut vias can be stacked up to the maximum specified number. Multiple-cut vias interrupt the stack count, effectively resetting the count to zero.
  • If this parameter is specified, via stacks taller than the stack count must consist of all multiple-cut vias.

Type: Boolean

'oneSameMetal f_cutWithin

(Virtuoso Layout Suite EXL and higher tiers) This parameter specifies that the cuts within the specified value that share at least one common metal are considered as multiple cuts.

'minMultiCut x_numCut

(Virtuoso Advanced Node for Layout Standard) This parameter specifies the minimum number of cuts to be considered as a multicut. The default value is 2.

  • If 'noSingleCut is specified, all vias in the stack must have at least f_numCut cuts to pass the constraint.
  • If 'noSingleCut is not specified, a via must have at least f_numCut cuts to interrupt the stack.

'lowCutSizeWithin

It is a stacked via if the upper adjacent layer cut is within the minimum cut size specified on the lower cut layer (as defined in a cutClasses or minWidth constraint).

Type: Boolean

'withinLayerName l_layerNames 'withinList l_withinValues

(Virtuoso Advanced Node for Layout Only) It is a stacked via if the upper adjacent layer cut is within the distance specified by 'withinList of a cut on the lower layer specified with 'withinLayerName.

The number of layer names specified using 'withinLayerName and the number of distance values specified using 'withinList must be the same and must correspond to each other in position.

Type: A list of layer names and a list of floating-point distance values.

'centerToCenterList l_centerToCenterValues

(Virtuoso Layout Suite EXL and higher tiers) This parameter specifies that the distances in 'withinList between two cuts on adjacent layers are measured center-to-center.

'layer tx_layerName 'dualWithin (f_belowWithin f_aboveWithin)

(Virtuoso Advanced Node for Layout Only) The constraint applies if all cuts below tx_layerName are within f_belowWithin and all cuts above tx_layerName are within f_aboveWithin.

Type: A layer name and a pair of floating-point distance values.

'exceptIndividualArea f_individualArea

The constraint does not apply if the metal shape containing a stacked via has an area greater than or equal to this value on a layer other than the bottommost and topmost metal layers.

'exceptSumArea f_sumArea

The constraint does not apply if the union sum of the metal shapes containing a stacked via on layers other than the bottommost and topmost metal layers is greater than or equal to this value.

'exceptMaxArea l_metalLayerNamesAndAreas

(Virtuoso Layout Suite EXL and higher tiers) Specifies an exemption when the area on the specified metal layer is less than the specified area on any specified metal layers.The first value for each entry in the list is a metal layer and the second value is the area.

'areaRatio l_areaRatio

(Virtuoso Layout Suite EXL and higher tiers) Specifies the area conditions to trigger the rule. Each list entry has three values. The first value specifies a cut layer, the second value specifies the area on that cut layer must be less than or equal to the specified value, and the third value specifies the area of the above or below cut layer or area of the current layer should be greater than the specified value.

'exceptPGNet

(Virtuoso Advanced Node for Layout Only) The constraint does not apply to power and ground nets.

Type: Boolean

'exceptPGRouteTopologyList l_PGShapeTypeNames

(Virtuoso Layout Suite EXL and higher tiers) Specifies the list of shape types, which the rule is exempted if all the PG cuts belong to the given types.
Valid values: ring, stripe, followpin, iowire, corewire, blockwire, padring, blockring

'exceptCutClassList l_cutClassNames

(Virtuoso Advanced Node for Layout Only) Any vias belonging to the given cut class on the given layer would interrupt a stack as if the vias did not exist for this rule. Each list entry includes a cut layer and two values indicating the dimensions of a cut.

'excludeEqual x_value

(Virtuoso Layout Suite EXL and higher tiers) The cut should be inside the search window specified by 'lowCutSizeWithin or 'withinList. The cut is not considered stacked if it touches the search window.

'noViaList l_viaNames

(Virtuoso Advanced Node for Layout Only) This is a list of via names that cannot be used for stacking. The via list should be ordered from the lowest cut layer to the highest cut layer and must be in the range specified by 'lowerLayer and 'upperLayer.

You can specify multiple sequences of via names, ordered from the lowest to the highest cut layer, separated using ",". The '*' wildcard is supported.

Type: A list of via names.

'sameNetOnly

(Virtuoso Layout Suite EXL and higher tiers) This parameter specifies that the rule applies only on same-net vias.

'exceptExtensionLayerList l_layer

(Virtuoso Layout Suite EXL and higher tiers) Exempts all the cuts on the specified cut layers that have an extension on a metal layer specified using the exceptExtensionMetalList parameter that is greater than or equal to the values specified by the exceptExtensionValueList parameter in the direction specified in the exceptExtensionDirectionList.

'exceptExtensionMetalList l_metal

(Virtuoso Layout Suite EXL and higher tiers) Exempts all the cuts on the specified cut layers in the exceptExtensionLayerList parameter that have an extension on a metal layer specified using the exceptExtensionMetalList parameter that is greater than or equal to the value specified using the exceptExtensionValueList parameter in the direction specified in the exceptExtensionDirectionList.

'exceptExtensionValueList l_value

(Virtuoso Layout Suite EXL and higher tiers) Exempts all the cuts on the specified cut layer in the exceptExtensionLayerList parameter that have extension on the metal layer specified in the exceptExtensionMetalList parameter greater than or equal to the value specified in the direction specified in exceptExtensionDirectionList.

exceptExtensionDirectionList l_direction

(Virtuoso Layout Suite EXL and higher tiers) Exempts all the cuts on the specified cut layer in the exceptExtensionLayerList parameter that have an extension on the metal layer specified in the exceptExtensionMetalList parameter greater than or equal to the value specified in the exceptExtensionValueList.

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

  

(Virtuoso Layout Suite EXL and higher tiers) 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 (cutLayer) overlap a shape on one of these layers (layer1 layer2layerN).
  • 'outsideLayers: The constraint applies only if the shapes on the specified layer (cutLayer) 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 Layout Suite EXL and higher tiers) The 'insideLayers parameter is limited to only the specified purposes.

Type: String (purpose name)

'outsidePurposes (t_purpose1 t_purpose2t_purposeN)

(Virtuoso Layout Suite EXL and higher tiers) The 'outsideLayers parameter is limited to only the specified purposes.

Type: String (purpose name)

Examples

Example 1: maxViaStack with withinLayerName and withinList

The maximum number of vias in a stack can be three. V2 must be at a distance less than or equal to 0.07 from V1, and V3 must be a distance less than or equal to 0.06 from V2.

Example 2: maxViaStack with noViaList

A V1B, V2C via combination is not allowed in a via stack that can contain a maximum of three vias.

The second sequence of via names illustrates how you can use a wildcard to specify via combinations that are not allowed in a via stack.

Example 3: maxViaStack with noCutClassList

The noCutClassList parameter here specifies that via stacks containing a cut class of either size 0.06x0.12 or 0.06x0.06 on layer V12 and size 0.06x0.06 on layer V23 are a violation, even if the stack does not exceed the maximum height of 5.

spacings(
    ( maxViaStack 'minMultiCut 3  
     'noCutClassList ("V12 0.06 0.12" "V23 0.06 0.06" ","
"V12 0.06 0.06" "V23 0.06 0.06")
5)
) ;spacings

Example 4: maxViaStack with exceptCutClassList

A maximum of 2 vias can be stacked in this case, but the stack is interrupted by a 0.1x0.1 cutClass on layer V2.

Example 5: maxViaStack with dualWithin

The constraint applies between Metal1 and Metal 5 only when all cuts are as specified by the dualWithin values, that is, when all via shapes below V3 are within 0.0 of the V3 shape and all via shapes above V3 are within 0.02 of the V3 shape.


Return to top
 ⠀
X