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

minQuadrupleExtension

spacingTables(
( minQuadrupleExtension tx_layer1 tx_layer2
 (( "width" nil nil )
  ['cutClass {f_width | (f_width f_length) | t_name}]
  ['allSides 
  ['useMaxWidth | 'useMinWidth | 'withinFirstWidth]
  ]
  ['horizontal | 'vertical]
  ['mask1 | 'mask2 | 'mask3]
  ['directionalExtension]
  ['otherLayer tx_otherLayer 
   ['parallelWithinTable g_paraWithinTable]
  ['otherMask1 | 'otherMask2 | 'otherMask3]
  | 'trimLayer tx_trimLayer ['trimLengthTable g_trimLengthTable]
  |'exactZero g_exactZeroTable
   ['includeAbuttedTable g_includeAbuttedTable] 
  ]
  ['otherWithinWidthTable g_otherWithinWidthTable
  {'otherWithinWidthHorizontal |'otherWithinWidthVertical}
   ['otherSideTable g_otherSideTable]
   ['exceptMetalOverlap]
  ]
  ['lineEndGapOnlyTable g_lineEndGapOnlyTable]
  ['mustUseTable g_mustUseTable]
  ['lengthTable g_lengthTable]
  ['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)]
  ]
  [f_default]
 )
 (g_table)
)
) ;spacingTables

Specifies the minimum extension of a shape with the specified minimum width on layer1 past a shape on layer2. The extension of a shape on layer1 can have up to four different values, applicable to the four edges of the layer2 shape, which is typically a square or a rectangle. The first two extensions apply to one pair of opposite edges, for example, top and bottom, or left and right, and the other two extensions apply to the other pair of opposite edges.

When layer1 is a non-via layer and layer2 a via layer, an enclosure check is done; layer2 when expanded by constraint values should be enclosed by layer1 in this case. When both layers are non-via layers, an extension check is done from the inner edge of layer1 to the outer edge of layer2.

Optionally, if either of the two extension sets is asymmetric, that is, extension1 is not equal to extension2, or extension3 is not equal to extension4, the smallest of the four extension values must be met on all four sides of the layer2 shape, including the corners. Additionally, in this case, the extensions apply to the minimum width layer1 shape that the layer2 shape touches or overlaps. If both extension sets are symmetric, that is, extension1 equals extension2 and extension3 equals extension4, the specified extensions apply to the maximum width layer1 shape that the layer2 shape overlaps or touches.

The minQuadrupleExtension constraint can be set to apply only in a certain direction. In this case, the extensions in the specified direction must meet the first constraint-value-pair, and the extensions in the perpendicular direction must meet the second constraint-value-pair.

However, if 'directionalExtension is specified, the first two extension values are applied on the short edges of a rectangular via cut, while the last two extension values are applied on the long edges of the rectangular via cut.

If 'parallelWithinTable is specified, the constraint applies only if there exists a layer1 (metal) neighbor on at least one side of the via cut at a distance less than paraWithin from it and has common parallel run length greater than or equal to paraLength with it (that is, overlaps or is inside a dotted search window shown in the figure below).

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 minQuadrupleExtension, minOppExtension, 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.

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

tx_layer2

The second layer on which the constraint is applied.

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

"width" nil nil

  

This identifies the index for table.

f_default

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

g_table

The table row is defined as follows:

( f_width ((f_ext1 f_ext2 f_ext3 f_ext4 ['minSum] ['maxLength g_maxLength]) …) )

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_ext2 f_ext3 f_ext4 are extension pairs. The first pair specifies layer1 extensions on one set of opposite sides/edges of the layer2 shape, and the second pair specifies extensions on the other set of opposite sides/edges of the layer2 shape.

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

'minSum: Two sides may have any extension as long as the sum of the two extensions is greater than or equal to the sum of the specified extensions and the smaller extension is greater than or equal to the smaller of the two specified extensions.

Type: Boolean

'maxLength f_maxLength: (Virtuoso Advanced Node for Layout Only) The constraint applies only if the length of the layer1 shape is less than or equal to this value.

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

'allSides

If either of the extension sets is asymmetric, the smallest of the four extension values must be met on all sides of the cut shape, including the corners.

Type: Boolean

'useMaxWidth

(Virtuoso Advanced Node for Layout Only) The width of the widest metal shape that the cut shape overlaps is used to look up the extension requirement.

Type: Boolean

'useMinWidth

(Virtuoso Advanced Node for Layout Only) The width of the narrowest metal shape that the cut shape overlaps is used to look up the extension requirement.

Type: Boolean

'withinFirstWidth

(Virtuoso Advanced Node for Layout Only) The enclosure required by the first width value specified in the table applies only if the via cut is completely within a wire that satisfies this width. Otherwise, the width of the wire that the via cut touches or overlaps is used to look up the enclosure value.

Type: Boolean

'horizontal | 'vertical

The first extension pair is measured in the given direction; the second extension pair is measured in the perpendicular direction. If direction is not specified, the extension pairs are measured in any direction.

Type: Boolean

'mask1 | 'mask2 | 'mask3

(Virtuoso Advanced Node for Layout Only) The constraint applies only to the shapes on the specified mask.

Type: Boolean

'directionalExtension

(Virtuoso Advanced Node for Layout Only) The first two extension values are applied on the short edges of a rectangular via cut, while the last two extension values are applied on the long edges of a rectangular via cut.

Type: Boolean

'otherLayer tx_otherlayer

(Virtuoso Advanced Node for Layout Only) The layer against which the width must be checked. However, extension values still apply on the metal to which the constraint applies.

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

'parallelWithinTable (g_paraWithinTable)

  

(Virtuoso Advanced Node for Layout Only) The constraint applies only if there exists a layer1 (metal) neighbor on at least one side of the via cut at a distance less than f_paraWithin from it and has common parallel run length greater than or equal to f_paraLength with it.

The format of a row in paraWithinTable is as follows:

( f_width ((f_paraLength f_paraWithin)) )

where, f_width is the width of the enclosing metal shape and f_paraLength and f_paraWithin are the values that apply when width is greater than or equal to f_width.

Type: A 1-D table indexed on width, specifying corresponding floating-point parallel run length and distance values

'otherMask1 | 'otherMask2 | 'otherMask3

(Virtuoso Layout Suite EXL and higher tiers) The constraint applies to this mask on otherLayer.

'exactZero g_exactZeroTable

(Virtuoso Layout Suite EXL and higher tiers) Specifies that if any of the given extension values is equal to zero, the enclosures must be exactly zero on the given sides and more than or equal to the non-zero extension values on the other sides.

'includeAbuttedTable g_includeAbuttedTable

(Virtuoso Advanced Node for Layout Only) The table format specified with this parameter must exactly match the table format of the constraint value. In a set of extension values, the first number can be 1 or 0. The value 1 specifies that a cut abutted to a wide wire needs to meet the wide wire extension. The value 0 indicates that the parameter does not apply to this extension.

'otherWithinWidthTable g_otherWithinWidthTable {'otherWithinWidthHorizontal | 'otherWithinWidthVertical}

(Virtuoso Layout Suite EXL and higher tiers) The corresponding extension applies only if there is a neighbor wire with width greater than the first value and within a distance given by the second value. The distance is measured in the specified direction (otherWithinWidthHorizontal or otherWithinWidthVertical).

The table format specified must match the table format of the constraint value. In each set of four numbers corresponding to a set of extensions, the first value is the width of the other wire and the second value is the within search distance of the other wire.

'otherSideTable g_otherSideTable

(Virtuoso Layout Suite EXL and higher tiers) The table format specified with this parameter must exactly match the format of the constraint value. For a given extension tuple, if the otherWithinWidthTable condition is met, then the extension opposite of the neighbor wire needs to be at least as much as specified in the first number.

'exceptMetalOverlap

(Virtuoso Layout Suite EXL and higher tiers) Specifies that the extension requirements specified in the otherWithinWidthTable parameter cannot be applied if the cut overlaps with the metal.

'trimLayer tx_trimLayer

(Virtuoso Advanced Node for Layout Only) The extension value must be satisfied at the line-end that a trim shape on this layer overlaps.

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

'trimLengthTable g_trimLengthTable

(Virtuoso Advanced Node for Layout Only) The constraint applies only if the length of the trim shape is greater than or equal to the first given value in the trimLengthTable table, which has the following format:

( f_width ((f_trimLength f_trimLength) (f_trimLength f_trimLength) …) )

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_trimLength is the length of the trim shape that touches or overlaps the line-ends of the layer1 shapes. The constraint applies only if the length of the trim shape is greater than or equal to f_trimLength. Additionally, the constraint applies only to the outermost layer1 shapes that the trim shape touches or overlaps.
For each constraint value in table, which comprises a set of four extension values, specify two lists with two f_trimLength values each, of which only the first f_trimLength value applies and the rest are ignored. As a result, all four f_trimLength values in the set can be the same. For a detailed representation, see Example 7: minQuadrupleExtension with trimLayer and trimLengthTable.

Type: A 1-D table indexed on width, specifying corresponding floating-point length value for the trim shape.

'lineEndGapOnlyTable g_lineEndGapOnlyTable

(Virtuoso Layout Suite EXL and higher tiers) The constraint value corresponding to this table entry applies only if the lineEndGap constraint condition on this layer is met. The table format specified must match the table format of the constraint value.

Each constraint value corresponds to two pairs of numbers in this table. The default is 0 for all numbers. The lineEndGap constraint is enabled by setting the first of the 4 numbers to 1.

'mustUseTable g_mustUseTable

(Virtuoso Layout Suite EXL and higher tiers) Specifies if the first value is 1, the corresponding extension set needs to be met and all other extension sets for the same width are ignored.

'lengthTable g_lengthTable

(Virtuoso Layout Suite EXL and higher tiers) Specifies if the first value is 1, the corresponding extension set only applies if the span length of the wire containing the cut is greater than or equal to the second value.

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

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)

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)

Examples

Example 1: minQuadrupleExtension with horizontal

The extensions must be 0.1 and 0.12, measured in the horizontal direction, and 0.05 and 0.07, measured in the vertical direction.

Example 2: minQuadrupleExtension with allSides and minSum

A Metal1 shape with width greater than or equal to 0.3 must have a minimum extension of 0.05 on all four sides, including the corners. The extensions of two opposite sides must either be 0.08 and 0.1, or their sum must be greater than or equal to 0.18 and the smaller of the two extensions must be greater than or equal to 0.08.

Example 3: minQuadrupleExtension with otherLayer

Via1 via cuts must have Metal2 extensions of at least 0.015 on all four sides when the Metal2 wire is greater than or equal to 0.1 wide.

Via1 via cuts must have Metal2 extensions of at least 0.019 on all four sides when the cut overlaps or touches a Metal1 wire that is greater than or equal to 0.2 wide.

Example 4: minQuadrupleExtension with exactZero

Example 5: minQuadrupleExtension with maxLength

A Metal1 wire with length less than or equal to 0.05 must have a minimum extension of 0.012 on a pair of opposite edges of a Via1 via cut. If the length of the wire is greater than 0.05, the extension must be at least 0.015.

Example 6: minQuadrupleExtension with allSides and withinFirstWidth

A Metal1 wire must have an extension of (0.020 0.015) on two opposite sides of a Via1 via cut that is completely within the wire.

If the via cut is not completely within the wire with width 0.020 and the width of the Metal1 wire that it overlaps is greater than or equal to 0.024, the wire must have a minimum extension of 0.001 on all four sides of the via cut, including the corners. Additionally, the extensions on two opposite sides of the via cut must be (0.020 0.015).

Example 7: minQuadrupleExtension with trimLayer and trimLengthTable

A Metal1 wire, which is overlapped by a TrimMetal1 shape with length greater than or equal to 0.08, must satisfy a minimum extension requirement of 0.02 on two opposite sides of a Via1 via shape. The check applies only to the two outermost wires in the given set.

Example 8: minQuadrupleExtension with includeAbuttedTable

In this example, if a cut abuts a wire that is 0.2 wide, the extension values (0.0 0.0 0.0 0.15) need to be met.

spacingTables(
     ;( constraint         layer1          [layer2]
; (( index1Definitions [index2Defintions]) [defaultValue] )
; ( table) )
;( --------------------------------------------)
( minQuadrupleExtension "Metal1" "Via1"
(( "width" nil nil )
'includeAbuttedTable ((("width"))
(
0.0 ((0.0 0.0) (0.0 0.0))
0.2 ((1.0 0.0) (0.0 0.0) (0.0 0.0) (0.0 0.0))
0.3 ((0.0 0.0) (0.0 0.0))
))
)
(
0.0 ((0.0 0.0 0.0 0.013))
0.2 ((0.0 0.0 0.0 0.015) (0.05 0.05 0.018 0.018))
0.3 ((0.018 0.018 0.02 0.022))
)
)
) ;spacingTables

Example 9: minQuadrupleExtension with otherWithinWidthTable

For width less than or equal to 0.2, the extension value (0.0 0.0 0.015 0.015) applies only if there is a neighbor wire of width more than 0.05 within 0.07 measured in the horizontal direction. In addition, the extension in the horizontal distance opposite the neighbor wire needs to be at least 0.018.

spacingTables(
     ;( constraint         layer1          [layer2]
; (( index1Definitions [index2Defintions]) [defaultValue] )
; ( table) )
;( --------------------------------------------)
( minQuadrupleExtension "Metal1" "Via1"
(( "width" nil nil )
'otherWithinWidthTable ((("width"))
(
0.0 ((0.0 0.0) (0.0 0.0))
0.2 ((0.05 0.07) (0.0 0.0) (0.0 0.0) (0.0 0.0))
0.3 ((0.0 0.0) (0.0 0.0))
))
'otherWithinWidthHorizontal
'otherSideTable ((("width"))
(
0.0 ((0.0 0.0) (0.0 0.0))
0.2 ((0.018 0.0) (0.0 0.0) (0.0 0.0) (0.0 0.0))
0.3 ((0.0 0.0) (0.0 0.0))
))
)
(
0.0 ((0.0 0.0 0.0 0.013))
0.2 ((0.0 0.0 0.015 0.015) (0.05 0.05 0.018 0.018))
0.3 ((0.018 0.018 0.02 0.022))
     )
)
) ;spacingTables

Example 10: minQuadrupleExtension in an OR group

The minExtensionDistance, minOppExtension, and minQuadrupleExtension constraints are semantically connected and can be grouped in an OR constraint group. As a result, only one constraint in the constraint group needs to be satisfied, as illustrated in this example.

minExtensionDistance
Value = 0.2
Spacing Direction = horizontal

minOppExtension
Value = (0.15 0.1)
Spacing Direction = horizontal

minQuadrupleExtension
Width = 0 –> ( (0.12 0.1) (0.15 0.15) )
Spacing Direction = horizontal

Example 11: minQuadrupleExtension with metal versus non-via layers

This example illustrates the difference between how the constraint applies differently depending on the nature of the two layers.

a. Enclosures are used when the constraint is applied between metal and cut layers. The layer2 shape must be fully enclosed on all four sides.

b. Extensions are used when the constraint is applied between device layers or metal over non-via extension. Only the side edges of the layer2 shape must be enclosed.

Example 12: minQuadrupleExtension with lineEndGapOnlyTable

The first extension set for width 0.2 applies only if the lineEndGap condition for Metal1 is met.

spacingTables(

...
( minQuadrupleExtension "Metal1" "Via1"
(( "width" nil nil )
'lineEndGapOnlyTable ((("width"))
(
0.0 ((0.0 0.0) (0.0 0.0))
0.2 ((1.0 0.0) (0.0 0.0) (0.0 0.0) (0.0 0.0))
0.3 ((0.0 0.0) (0.0 0.0))
))
)
(
0.0 ((0.0 0.0 0.0 0.013))
0.2 ((0.0 0.0 0.015 0.015) (0.05 0.05 0.018 0.018))
0.3 ((0.018 0.018 0.02 0.022))
)
;spacingTables


Return to top
 ⠀
X