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

viaKeepoutZone

spacings(
( viaKeepoutZone tx_cutLayer
 'cutClass {f_width | (f_width f_length) | t_name}
 ['otherCutClass {f_width1 | (f_width1 f_length1) | t_name1}]
 'dualExtension (f_ext1 f_ext2)
 ['dualSideExtension (f_sideExt1 f_sideExt2) ['sideVertical]]
 ['sameMask]
 ['exactAligned f_spacing
  ['allEdge | 'shortEdge | 'longEdge]
 ]
 ['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)]
 ]
 ['cornerOnly]
 ['exceptSameNet]
 ['viasAnyConnectivity | 'viasOnSameMetal | 'viasOnDiffMetal]
 f_extension
)
) ;spacings

(Virtuoso Advanced Node for Layout Only) Defines a keepout zone that determines the spacing between via cuts of the specified cut class and any other cut class, or between via cuts of the two specified cut classes. The keepout zone is a combination of the keepout zones defined by the constraint value (extension) and by the parameters 'dualExtension (can be specified for both square and rectangular cut classes) and, optionally, 'dualSideExtension (can be specified only for rectangular cut classes). If the optional 'sideVertical parameter is specified, 'dualSideExtension, which is typically specified only for rectangular cut classes, can be specified for square cut classes as well.

1. When 'sideVertical and 'cornerOnly are NOT specified

The following figure illustrates the two keepout zones for a square via cut, one defined by the constraint value (green) and the other defined by 'dualExtension (blue). When only 'dualExtension is specified for a square or rectangular via cut, the keepout zone is the union of the two regions formed by extending outward the two extension values, ext1 and ext2, from each pair of opposite edges of the via cut.

The following figure illustrates the three keepout zones for a rectangular via cut when both 'dualExtension and 'dualSideExtension are specified: the first defined by the constraint value (green), the second defined by 'dualExtension (blue, with ext1 on the ends and ext2 on the sides), and the third defined by 'dualSideExtension (red, with sideExt1 on the sides and sideExt2 on the ends).

A violation occurs if a via cut of any cut class or of the type specified using 'otherCutClass overlaps any of the keepout zones.

2. When 'sideVertical is specified

When 'sideVertical is specified, both 'dualExtension and 'dualSideExtension can be specified for a square via cut. In this setting, 'dualExtension is used to define a horizontal keepout zone (blue) and 'dualSideExtension is used to define a vertical keepout zone (red), as shown in the following figure.

3. When 'cornerOnly is specified

When 'cornerOnly is specified, all cut edges are extended outward by extension in Euclidean measurement to form the keepout zone for the constraint value. However, this keepout zone applies only at the corners that are outside the keepout zones defined by 'dualExtension and 'dualSideExtension, as shown in the following figure.

Values

tx_cutLayer

The cut layer on which the constraint is applied.

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

f_extension

All cut edges are extended outward by this value in Euclidean measurement to define a keepout zone.

Parameters

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

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

'otherCutClass {f_width1 | (f_width1 f_length1) | t_name1}

The cut class that must not overlap any keepout zone, 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

'dualExtension (f_ext1 f_ext2)

The two values together define a second keepout zone.

  • For a square or rectangular via cut when 'dualSideExtension is not specified: The keepout zone is the union of the two regions formed by extending outward the two extension values, ext1 and ext2, from each pair of opposite edges of the via cut.
  • For a rectangular via cut when 'dualSideExtension is also specified: The keepout zone extends outward by ext1 from both ends (short edges) of the via cut and by ext2 from both sides (long edges) of the via cut.

'dualSideExtension (f_sideExt1 f_sideExt2)

  

The two values together define a third keepout zone that extends outward by sideExt1 from both sides and by sideExt2 from both ends of the rectangular via cut.

If 'sideVertical is specified, this parameter can be set for both square and rectangular via cuts.

'sideVertical

Both 'dualExtension and 'dualSideExtension parameters can be specified for square cut classes, with 'dualExtension defining a horizontal keepout zone and 'dualSideExtension defining a vertical keepout zone.

Type: Boolean

'sameMask

The constraint applies only to via cuts on the same mask.

Type: Boolean

'exactAligned f_spacing

The distance between exactly aligned via cuts must be greater than or equal to this value. The via cuts are not subject to the keepout zone check.

'allEdge | 'shortEdge | 'longEdge

The edge on which rectangular via cuts must be exactly aligned to trigger the 'exactAligned check.

  • 'allEdge: (Default) The rectangular via cuts can be exactly aligned on any edge.
  • 'shortEdge: The rectangular via cuts must be exactly aligned on the end/short edges.
  • 'longEdge: The rectangular via cuts must be exactly aligned on the side/long edges.

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

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)

'cornerOnly

The keepout zone defined by the constraint value is applied only on the corners that are not covered by the keepout zones defined by 'dualExtension and 'dualSideExtension.

Type: Boolean

'exceptSameNet

Specifies that the constraint does not apply to via cuts on the same net.

Type: Boolean

'viasAnyConnectivity | 'viasOnSameMetal | 'viasOnDiffMetal

(Virtuoso Layout Suite EXL and higher tiers) The constraint applies to vias of the specified connectivity type.  

  • 'viasAnyConnectivity: The constraint applies to all cut shapes, regardless of the connectivity type.
  • 'viasOnSameMetal: The constraint applies to a subset of cut shapes that are electrically connected by a contiguous metal on either the layer below or the layer above.
  • 'viasOnDiffMetal: The constraint applies to a subset of cut shapes that are electrically connected by different metals on the layer below and the layer above.

This parameter may be specified only if exceptSameNet is not specified.

Example

On layer Via1, a VA via cut must not overlap with the keepout zones defined for a VB via cut if both via cuts are on the same mask. Additionally, the keepout zone defined by the constraint value 0.08 applies only on the corners where the keepout zones defined by 'dualExtension and 'dualSideExtension do not apply.


Return to top
 ⠀
X