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

minOppExtension

orderedSpacings(
( minOppExtension tx_layer1 tx_layer2
 ['cutClass {f_width | (f_width f_length) | t_name} ['endSide]]
 ['widthHorizontal | 'widthVertical]
 ['cutDistance f_cutDistance ['noSharedEdge | 'hasParaRunLength]]
 ['length f_length
  | 'extraCut ['extraOnly]
  | 'redundantCutWithin f_distance
 ]
 ['stepSizePair (f_val1 f_val2)]
 ['area f_area]
 ['horizontal | 'vertical]
 ['insideLayers (tx_layer3 tx_layer4 … tx_layerN)
  ['insidePurposes (t_purpose1 t_purpose2 … t_purposeN)]
  |
  'outsideLayers (tx_layer3 tx_layer4 … tx_layerN)
  ['outsidePurposes (t_purpose1 t_purpose2 … t_purposeN)]
 ]
 ['distanceWithin f_distance 'nearbyLayer tx_layer]
 ['otherLayer tx_otherLayer 
  'otherWidth f_otherWidth
  {'withinHorizontal | 'withinVertical}
  'parallelWithin f_parallelWithin
   ['otherExtension f_otherExtension]
 ]
 ['alignedLayer g_layer 'alignedHorizontal | 'alignedVertical]
 (f_ext f_oppExt) ['coincidentAllowed]
)
) ;orderedSpacings
spacingTables(
( minOppExtension tx_layer1 tx_layer2
 (( "width" nil nil )
  ['widthHorizontal | 'widthVertical]
  ['cutClass {f_width | (f_width f_length) | t_name}
  ['endSide ['offCenterline]]
  ]
  ['cutDistance f_cutDistance
  ['noSharedEdge | 'hasParaRunLength | 'hasExactPrl f_hasExactPrl]
  ]
  ['length f_length
  | 'extraCut ['extraOnly ['exactPrl f_exactPrl]]
  | 'redundantCutWithin f_distance
  ]
  ['exceptCutMetalEdgeExt | 'useMinWidth]
  ['stepSizePair (f_val1 f_val2)]
  ['horizontal | 'vertical]
  ['includeAbutted] ['minCorner]
  ['jogLengthOnly f_jogLength ['treatLAsJog]
  {'horizontalJog | 'verticalJog}
  'jogWireWidth f_jogWireWidth
  ]
  ['hollowHorizontal f_horiLength | 'hollowVertical f_vertLength ['hollowOffset f_offset]]
  ['insideLayers (tx_layer3 tx_layer4 … tx_layerN)
   ['insidePurposes (t_purpose1 t_purpose2 … t_purposeN)]
  |
   'outsideLayers (tx_layer3 tx_layer4 … tx_layerN)
   ['outsidePurposes (t_purpose1 t_purpose2 … t_purposeN)]
  ]
  ['distanceWithin f_distance 'nearbyLayer tx_layer]
  [f_default]
 ['alignedLayer g_layer 'alignedHorizontal | 'alignedVertical]
 )
 (g_table) ['coincidentAllowed]
)
) ;spacingTables

Specifies the minimum extension of a shape on layer1 past a shape on layer2. Typically, layer1 is a metal layer and layer2 is a cut layer.

The constraint specifies a pair of extension values, of which one applies to one set of opposite sides/edges of the layer2 shape and the other applies to the other set of opposite sides/edges of the layer2 shape. For example, if the first value is used to evaluate the extensions in the horizontal direction, the second value is used to evaluate the extensions in the vertical direction. Moreover, the extension values can apply in a different direction for different shapes on the specified layer.

Optionally, the minOppExtension constraint can be set to apply only in a certain direction. In this case, the extensions in the specified direction must satisfy the first constraint value, and the extensions in the perpendicular direction must satisfy the second constraint value. The constraint can also be used to specify multiple pairs of extension values that are applied based on the width of the layer1 shape.

In some processes, the constraint can be applied only to rectangular cut shapes that do not collide with the centerline of the wire. Additionally, for rectangular cut classes, the first extension value can be applied to the short edges and the second extension value can be applied to the long edges.

This constraint definition is not symmetric, which means that the minimum extension of a shape on layer1 past a shape on layer2 is not the same as the minimum extension of a shape on layer2 past a shape on layer1. Therefore, if you specify the minOppExtension constraint for a layer pair, you should not specify the minExtension constraint for that layer pair.

Multiple minOppExtension constraints can be defined in a precedence constraint group. In such a constraint group, the constraints are ordered first by width and cut distance, then by width, and finally by length. Members in the group that do not specify width have the lowest precedence.

An OR constraint group should contain settings for only the same constraint, with different parameters. If any of the settings is satisfied, the constraint requirement is met. An exception is made for minOppExtension, minQuadrupleExtension, and minExtensionDistance constraints, which can be bound together in an OR group, and if any of these constraints is satisfied, the extension requirement is met.

Values

tx_layer1

The first layer on which the constraint is applied. The shape on this layer is the enclosing shape.

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

tx_layer2

The second layer on which the constraint is applied. The shape on this layer is enclosed by the layer1 shape.

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

f_ext f_oppExt

  

The extension values.

  • f_ext: The minimum extension on opposite sides in one direction, horizontal or vertical.
  • f_oppExt: The minimum extension on opposite sides in the perpendicular direction.

"width" nil nil

This identifies the index for table.

g_table

The table row is defined as follows:

( f_width ((f_ext1 f_oppExt1) (f_ext2 f_oppExt2)…)

where,

  • f_width is the width of the layer1 shape. The constraint applies only if the width of the layer1 shape is greater than or equal to this value.
  • f_ext1 f_oppExt1 f_ext2 f_oppExt2 are the extension pairs.

Type: A 1-D table specifying floating-point width and extension values

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

'endSide

The first extension pair is applied to the short edge of the cut shape and the second extension pair is applied to the long edge of the cut shape (applies only to rectangular cut shapes).

Type: Boolean

'offCenterline

The constraint applies only to rectangular cut shapes that do not collide with the centerline of the enclosing shape.

Type: Boolean

'cutDistance f_cutDistance

The constraint does not apply if a cut shape has a neighboring cut shape at a distance less than or equal to this value.

'noSharedEdge

The constraint does not apply if the two cut shapes that satisfy 'cutDistance are placed along different edges of the enclosing shape.

In other words, if the two cut shapes are placed along the same edge of the enclosing shape, the extra cut shape along the edge is not counted and the constraint applies.

Type: Boolean

'hasParaRunLength

The constraint does not apply to cut shapes that are at a distance less than or equal to cutDistance if cut edges opposite all failing cut edges (edges that do not satisfy the minimum extension requirement) share a parallel run length greater than zero with neighboring cut shapes.

Type: Boolean

'hasExactPrl f_hasExactPrl

(Virtuoso Advanced Node for Layout Standard) The constraint does not apply to cut shapes that are at a distance less than or equal to cutDistance if the parallel run length between the cut shapes is equal to this value.

'length f_length

The constraint applies only if the length of the enclosing shape is greater than or equal to this value.

'extraCut

The constraint applies only if two or more cut shapes overlap a contiguous same-metal shape.

For via cuts, 'extraCut can be used without specifying 'cutDistance. However, for raw cuts, you must specify 'cutDistance.

Type: Boolean

'extraOnly

(Virtuoso Advanced Node for Layout Only) If a minOppExtension constraint definition contains this parameter, it is this constraint definition that must be satisfied, and not the other extension rules that do not depend on width. Width-dependent extension rules still apply.

Type: Boolean

'exactPrl f_exactPrl

(Virtuoso Advanced Node for Layout Standard) The constraint applies to a via with two or more cuts only if the cuts have parallel run length equal to this value.

'redundantCutWithin f_distance

The constraint applies only if the cut shape is at a distance less than or equal to this value from a cut shape that satisfies another minOppExtension constraint defined without the 'redundantCutWithin parameter. Additionally, the two cut shapes must overlap a contiguous same-metal shape on the layer above or below.

The constraint defined with this parameter has smaller enclosure requirements.

'horizontal | 'vertical

(Virtuoso Advanced Node for Layout Standard) The first extension pair is measured in the given direction; the second extension pair is measured in the direction perpendicular to the given direction. If direction is not specified, the extension pairs are measured in any direction.

Type: Boolean

'widthHorizontal | 'widthVertical

(Virtuoso Layout Suite EXL and higher tiers) Only widths of metal shapes in the specified direction are considered for the corresponding width-based extension lookup.

'exceptCutMetalEdgeExt | 'useMinWidth

When the exceptCutMetalEdgeExt parameter is used, if an edge of a cut shape or an edge of a metal shape enclosing the cut shape protrudes over a wide wire, it is exempted from the extension requirement, and the constraint value based on the width of the wide wire applies to the other three edges that overlap the wide wire. The cut shape must also meet the extension requirement that applies based on the width of the enclosing metal shape.

Alternatively, use the useMinwidth parameter to specify that the minimum width of the wires that overlap a cut should be used to look up the corresponding width-based extension.

Type: Boolean

'includeAbutted

(Virtuoso Advanced Node for Layout Standard) The constraint applies only if the cut shape abuts a wider shape.

Type: Boolean

'area f_area

The constraint does not apply if the area of the enclosing shape is greater than this value.

'minCorner

Only the minimum extension is required on the corners.

Type: Boolean

'stepSizePair (f_val1 f_val2)

(Virtuoso Advanced Node for Layout Standard) The extensions are applied as multiples of these two values. The order of the two 'stepSizepair values corresponds to the order of the constraint values. If an entry is zero, no stepped extension applies in that direction.

The required extension is calculated as follows:

constraint value + n*stepSizePair, where n>=0

'jogLengthOnly f_jogLength

(Virtuoso Advanced Node for Layout Only) The constraint applies only if a cut shape overlaps with a wrong-way jog—with edge length less than jogLength and width equal to jogWireWidth—sandwiched by two right-way wires with projected parallel run length less than zero in the wrong-way direction in a 'Z' shape.

'treatLAsJog

(Virtuoso Advanced Node for Layout Only) The constraint also applies to an L-shaped jog.

Type: Boolean

'horizontalJog | 'verticalJog

(Virtuoso Advanced Node for Layout Only) The direction in which the length of the jog is measured.

Type: Boolean

'jogWireWidth f_jogWireWidth

(Virtuoso Advanced Node for Layout Only) The constraint applies only if the width of a Z-shaped jog is equal to this value.

'hollowHorizontal f_horiLength | 'hollowVertical f_vertLength

(Virtuoso Advanced Node for Layout Only) The portion of the via cut that does not require an extension.

  • 'hollowHorizontal: The center of the via cut extended horizontally by the specified value on both sides does not require an extension.
  • 'hollowVertical: The center of the via cut extended vertically by the specified value on both sides does not require an extension.

'hollowOffset f_offset

(Virtuoso Layout Suite EXL and higher tiers) The exact offset for the hollow portion to be misaligned from the center of the via. The default is 0.

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

(Virtuoso Advanced Node for Layout Standard) Determines if the constraint applies, based on the presence or absence of one or more layers.

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

(Virtuoso Advanced Node for Layout Standard) The 'insideLayers parameter is limited to only the specified purposes.

Type: String (purpose name)

'outsidePurposes (t_purpose1 t_purpose2t_purposeN)

(Virtuoso Advanced Node for Layout Standard) The 'outsideLayers parameter is limited to only the specified purposes.

Type: String (purpose name)

'distanceWithin f_distance 'nearbyLayer tx_layer

The constraint applies only if the distance between the layer1 shape (metal shape) and the layer shape, in Euclidean measurement, is less than or equal to distance.

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

'otherLayer tx_otherLayer 'otherWidth f_otherWidth {'withinHorizontal | 'withinVertical} 'parallelWithin f_parallelWithin ['otherExtension f_otherExtension]

(Virtuoso Advanced Node for Layout Only) The constraint applies only if there is a shape on layer tx_otherLayer with width greater than f_otherWidth within f_parallelWithin measured in direction withinHorizontal or withinVertical of this cut shape but on a different net.

(Virtuoso Layout Suite EXL and higher tiers) The f_otherExtension value specifies the enclosure on the opposite side of a cut edge that faces the wire fulfilling the f_otherWidth condition.

f_default

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

'coincidentAllowed

The edges of a cut shape can coincide with the edges of the enclosing shape. Otherwise, the cut shape must meet the extension requirement.

Type: Boolean

'alignedLayer g_layer 'alignedHorizontal | 'alignedVertical

(Virtuoso Advanced Node for Layout Standard) The layer for which the alignment of the via with the shape is to be checked. Alignment is checked in the direction specified.

Examples

Example 1: minOppExtension with endSide

A Via1 via cut of type VB (0.4x0.6) enclosed by a Metal1 wire must have 0.1 extensions on the short edges and 0.0 extensions on the long edges of the enclosing wire.

Example 2: minOppExtension with vertical

A Via1 via cut enclosed by a Metal1 wire must have 0.1 extensions in the vertical direction and 0.2 extensions in the horizontal direction.

Example 3: minOppExtension with offCenterline

A Via1 via cut of type VB (0.4x0.6) enclosed by a Metal1 wire must have 0.05 extension in one direction and 0.03 extension in the perpendicular direction if the width of the Metal1 wire is greater than or equal to 0.15, provided the via cut does not collide with the centerline of the wire.

Example 4: minOppExtension with includeAbutted

A Via1 via cut enclosed by a Metal1 wire with width greater than or equal to 0.2 must have 0.05 extensions in both directions if it abuts a wider wire.

Example 5: minOppExtension with cutDistance

A Via1 via cut enclosed by a Metal1 wire with width greater than or equal to 0.3 must have 0.03 extensions on all sides. If two via cuts are less than 0.2 apart, the constraint does not apply.

Example 6: minOppExtension with cutDistance and noSharedEdge

A Via1 via cut enclosed by a Metal1 wire with width greater than or equal to 0.3 must have 0.03 extensions on all sides. If two via cuts are less than 0.2 apart and are placed along different edges of the wire, the constraint does not apply.

Example 7: minOppExtension with cutDistance and hasParaRunLength

If the width of a Metal1 shape is greater than or equal to 0.3, Via1 via cuts must have 0.03 extensions on all sides. This width-based constraint definition does not apply if:

When the width-based constraint does not apply, an extension requirement of (0.0, 0.05) or (0.2, 0.2) must be met.

Example 8: minOppExtension with extraCut

If two or more Via1 via cuts overlap a contiguous Metal1 shape, the via cuts must have 0.0 extension in one direction and 0.15 extension in the perpendicular direction.

Example 9: minOppExtension with redundantCutWithin

A Via1 via cut enclosed by a Metal1 shape with width greater than or equal to 0.3 must have 0.03 extensions on all sides. If two or more via cuts overlap a contiguous Metal1 shape, the via cuts must have 0.0 extension in one direction and 0.02 extension in the perpendicular direction. Additionally, a via cut placed less than 0.1 apart from another via cut must have 0.0 extension in one direction and 0.01 extension in the perpendicular direction.

Example 10: minOppExtension with exceptCutMetalEdgeExt

If an edge of a Via1 via cut or an edge of a Metal1 shape enclosing the via cut protrudes over a wide wire, it is exempted from the extension requirement. The following are the extension requirements based on width:

Example 11: minOppExtension with length

A Via1 via cut enclosed by a Metal1 wire with length greater than or equal to 0.70 must have 0.05 extension in one direction and 0.00 extension in the perpendicular direction.

Example 12: minOppExtension with jogLengthOnly, verticalJog, and jogWireWidth

A Via1 via cut enclosed by a Metal1 wrong-way Z-shaped jog with edges less than 0.1 long and width equal to 0.05 must have 0.03 extension in one direction and 0.00 extension in the perpendicular direction.

Example 13: minOppExtension with hollowHorizontal and hollowOffset

A Via1 via cut enclosed by a Metal1 shape must have 0.03 extension in one direction and 0.00 extension in the perpendicular direction. The center of the via cut extended horizontally by 0.02 on both sides, with an offset of 0.005, does not require an extension.

Example 14: minOppExtension with distanceWithin and nearbyLayer

A V1 via cut enclosed by an M1 shape must have 0.1 extension in both directions if the distance between the M1 shape and a nearby MIMCAP shape is less than or equal to 15.0. Otherwise, the extension in both directions must be 0.05.

orderedSpacings( 
    ( minOppExtension "M1" "V1" 
     (0.05 0.5) 
)
( minOppExtension "M1" "V1"
'distanceWithin 15.0 'nearbyLayer "MIMCAP"
(0.1 0.1)
)
) ;orderedSpacings

Example 15: minOppExtension with otherExtension

The constraint applies     to a Via1 cut shape enclosed by Metal1     when a vertical Metal2 shape of width 0.015 or greater is within 0.025 of the cut shape. The extension must be at least 0 in one direction and 0.02 in the other direction. In addition, the extension in the direction away from the Metal2 wire must be 0.023.

orderedSpacings( 
    ( minOppExtension "M1" "V1" 
     'otherLayer "Metal2" 
'otherWidth 0.015
'withinHorizontal
'parallelWithin 0.025
'otherExtension 0.023
(0.0 0.02)
)
) ;orderedSpacings

Example 16: minOppExtension with widthHorizontal and widthVertical

Consider the following constraint when width directions are specified or not specified.

Example 17: minOppExtension with alignedLayer

Consider the following constraints specified in an OR group, where only the first constraint specifies alignedLayer.


Return to top
 ⠀
X