minDualExtension
Specifies, in user units, the minimum distance a shape on a routing layer must extend past a rectangle on a cut layer. The constraint specifies a pair of values which represents the required overhang in the horizontal and vertical directions and can be given in any order.
This constraint can specify a single pair of values (DualValue), or multiple pairs of values (OneDDualArrayTblValue or Dual1DTblValue) that are keyed by the width of the metal wire.
Optional Parameters can be used to qualify when the constraint applies. This constraint is not symmetric.
If you specify a minDualExtension for a layer pair, you should not specify a minExtension constraint.
In some processes, enclosure rules may only apply for rectangular cuts that do not collide with the centerline of the wire (offCenterline). In addition, in end-of-line enclosure rules which specify two enclosure values, it may be necessary for rectangular cut classes to specify that the end-of-line enclosure value is applied to the short edges, and the other overhang value should be applied to the long edges (endSideOverhang).

Usually, an OR constraint group should contain only settings of the same constraint with different parameters. If any of the settings is satisfied, the constraint requirement is met. The exception is that minQuadrupleExtension, minDualExtension, and minWireExtension can be bound together in an OR group and if any of the constraints is satisfied, the extension requirement is met.
minDualExtension Quick Reference
Value Types
minDualExtension constraints have the following value types:
-
DualValuerepresents the minimum extension in each direction in user units (for example,{0.2 0.5}requires an extension of 0.2 in one direction and 0.5 in the opposite direction). -
Dual1DTblValueis two 1-D tables of values.
The first table has width/extension pairs. The lookup key (width) represents the width of a shape on the first layer and the value represents the minimum extension of that first shape past a shape on the second layer. For example,{widthA extA1 widthB extB1…}.
The second table is extension-based extensions. The lookup key (extension) is the minimum extension of a layer1 shape past a layer2 shape in one direction (horizontal or vertical) taken from the extension value in the first table, and the value is the minimum extension in the opposite direction. For example, {extA1 extA2 extB1 extB2…}, where the value ofextA1is the same in both of the 1-D tables. -
OneDDualArrayTblValueuses width values as the lookup key for the table of arrays. For each width, there is a count for the number of extension pairs associated with the width, and the extension pairs.{
If you specify multiple enclosure rules with differentf_width1 i_numPair1{f_ext f_ext}… {f_extf_ext}i_numPair1f_width2 i_numPair2{f_ext f_ext}… {f_extf_ext}i_numPair2…f_widthN i_numPairN{f_ext f_ext}… {f_extf_ext}i_numPairN}minWidthvalues, the largestminWidthrule that is still less than or equal to the wire width applies. For example, if you specify enclosure rules for 0.0 μm and 2.0 μm widths, then a 0.5 μm wire must meet a 0.0 μm rule, and a 2.0 μm wire must meet a 2.0 μm rule. A width of 0 implies that the extensions apply to minimum width wires. Widths greater than 0 imply extensions for wide wires of the given width.
Parameters
The minDualExtension constraint has the following parameters:
-
coincidentAllowed(BoolValue, optional) specifies whether shapes must meet the minimum extension or their edges can be coincident (true). By default and when set tofalse, shapes must meet the minimum extension requirements and the edges cannot be coincident. -
cutClass(DualValue, optional) specifies that the constraint only applies to cut shapes whose width and length are equal to the values in theDualValuepair, specified in that order. Cut class applies to 32nm rules.-
offCenterline(BoolValue, optional) Whentrue, the constraint only applies to rectangular cuts that do not collide with the centerline of the wire. Must be used with thecutClassparameter. -
endSideOverhang(BoolValue, optional) Whentrue, the first extension value corresponds to the overhang of the end (short edge), and the second value corresponds to the overhang of the side (long edge). This parameter only applies to rectangular cut class constraints.
-
-
sizedBy(Value, optional/custom) sizes (shrinks) extension values, in user units. -
length(Value, optional) specifies that the constraint only applies if the longest overhang length is greater than or equal to this parameter value. -
numCuts(IntValue, optional) specifies the minimum required number of same metal cuts for which this constraint applies (default: 1). -
redundantCutDistance(Value, optional) specifies that the constraint applies only if there is a redundant cut that is less than or equal to this distance from the original cut with the same metal shape above and below, and the redundant cut has the required enclosures for a cut given by aminDualExtensionconstraint without a specifiedredundantCutDistanceparameter. TheminDualExtensionconstraint value with theredundantCutDistanceparameter will typically have smaller enclosure requirements. -
atLeastOne(BoolValue, optional) indicates that if at least one cut passes theminDualExtensionconstraint and there exists anotherminDualExtensionconstraint withredundantCutDistancedefined, then any other cut within that distance satisfying the constraint withredundantCutDistancepasses the via extension check. -
except2x2Cuts(Value, optional) specifies that an aligned 2 x 2 array of cuts whose vertical and horizontal distance is less than or equal to this distance will apply and pass the constraint without any further checking. It is best not to put this parameter on a constraint with theredundantCutDistanceparameter.

-
exceptCutMetalEdgeExtension(BoolValue, optional) Whentrue,if a metal shape of a cut via protrudes on a certain side of the wide wire, then the enclosure is not checked on that side. In addition, the enclosure based on the width of the protrusion must also be checked against the cut. -
oaSpacingDirection(IntValue, optional) is an integer specifying the direction in which the first extension value applies; the second value applies in the opposite direction. Valid values: 0 any 1 horizontal 2 vertical -
stepSizePair(DualValue, optional) increases the required extension using the formula below:constraint value + n*stepSizePair
The order of the two numbers corresponds to the order in the constraint value. If an entry is zero, then no stepped extension applies in that direction. -
Width-based constraint values of
OneDDualArrayTblValueorDual1DTblValuespecify the extension requirements for wires that are greater than or equal to a given width value. A width of 0 implies that the extensions apply to minimum width wires. Widths greater than 0 imply extensions for wide wires of the given width. Some processes define exceptions to the via enclosure constraints provided that cut shapes on the wire shapes are sufficiently close, known as redundant vias. If you specify multiple enclosure rules with different minWidth values, the largest minWidth rule that is still less than or equal to the wire width applies. The following parameters can be used with wide wireminDualExtensionvalues to specify conditions for redundant via exceptions:-
oaCutDistance(Value, optional) specifies that if there is a neighbor cut that is less than or equal to this distance from a cut, then the neighbor cut is considered to be a redundant via.
The following parameters are mutually exclusive:-
oaNoSharedEdge(BoolValue, optional) determines whether vias on a shared edge that are withinoaCutDistancecan be counted as redundant. If the value of this parameter istrue, only cuts that are less than or equal tooaCutDistanceaway but not along the same wire edge are considered to be redundant. The default of this parameter isfalse, meaning that cuts along the same wire edge and withinoaCutDistancecan be counted as redundant. -
hasParallelRunLength(BoolValue, optional) specifies that the constraint does not apply if there is a redundant cut less than or equal tooaCutDistanceaway with a parallel run length > 0 on the opposite edges for all failed edges of the original cut shape which do not satisfy the minimum extension requirements. The default for this parameter isfalse.
-
-
parallelRunLengthWidth(BoolValue, optional), if set totrue, both cuts must be covered by a maximal rectangle that maps to the same width bucket. The default for this parameter isfalse.
Examples
Example 1—minDualExtension with DualValue
This example sets ground rules for Metal1 shapes overlapping via1 and Metal2 shapes overlapping via1.
Example 2—minDualExtension with OneDDualArrayTblValue
This example sets three ground rules for Metal1 shapes overlapping via1. For a Metal1 width of 0, two extension pairs are given, {0.05 0.20} and {0.10 0.10}. For Metal1 widths greater than or equal to 0.5, extensions must be 0.20 and 0.30 on opposite sides. The OneDDualArrayTblValue for this example is represented in Table .

To set the minDualExtension constraint for this example, you would use the following:
| Width | Number of Extension Pairs | Extension Pairs |
|---|---|---|
Example 3—minDualExtension with cutDistance
In this example, if the wire width is greater than or equal to 0.3 μm, then an enclosure of 0.03 μm in all directions is required except when there is a redundant cut within 0.2 μm, then a {0.0 0.05} or {0.01 0.04} enclosure is needed. Cuts along the same edge and within cutDistance can be considered to be redundant (by default, the oaNoSharedEdge parameter is false).

Example 4—minDualExtension with cutDistance and oaNoSharedEdge=true
In this example, if the wire width is greater than or equal to 0.3 μm, then an enclosure of 0.03 μm in all directions is required unless there is a redundant cut within 0.2 μm. In this case, via cuts that share a wire edge are not considered redundant.

Example 5—minDualExtension with hasParallelRunLength Parameter
In this example, one of the following conditions must be satisfied:
-
A {0.03 0.03} enclosure applies for wires >= 0.3 μm wide except when there is a redundant via on the opposite edge within
cutDistancethat has a common parallel run length on > 0. -
Minimum width wires must have {0.0 0.05} or {0.02 0.02} enclosures.

Example 6— minDualExtension with length and width Parameters
This example defines a cut layer that requires an enclosure of 0.05 μm on opposite sides and 0.0 μm on the other two sides, as long as the total length enclosure on any two opposite sides is greater than or equal to 0.7 μm. Otherwise, it requires 0.05 μm on all sides if the total enclosure length is less than or equal to 0.7 μm. It also requires 0.10 μm on all sides if the metal layer has a width that is greater than or equal to 1.0 μm. The following figure illustrates examples of violations and acceptable vias for the minDualExtension values)


Example 7— minDualExtension with numCuts
In this example, VA vias with two or more same metal cuts must have 0.15 μm overhang on any two opposite sides of the routing layers. Otherwise, VA vias with only one cut must have an overhang of 0.20 μm on any two opposite sides of the routing layers.

Example 8— minDualExtension with redundantCutDistance
In this example, if there is a redundant cut < 0.10 μm from a cut that has a {0.0 0.20} enclosure, then the redundant cut must have a {0.0 0.15} enclosure.

Example 9— minDualExtension with exceptCutMetalEdgeExtension
In this example, if a metal shape of a cut via protrudes on a certain side of the wide wire, then the enclosure is not checked on that side. In addition, the enclosure based on the width of the protrusion must also be checked against the cut.
- For a cut in a wire of any width, the enclosure must be 0.00 μm on two opposite sides and 0.02 μm on the other two opposite sides.
- For a cut in wire with width greater than or equal to 0.15 μm and less than 0.3 μm, 0.02 μm overhang on four sides is needed.
-
For a cut in wire with width greater than or equal to 0.3 μm, 0.03 μm overhang on four sides is needed.

Example 10—minDualExtension with offCenterline and endSideOverhang
In this example, there must be short/end extensions of 0.05 μm and long side extensions of 0.03 μm for Metal1 shapes beyond VxBAR cut class vias (0.02 x 0.04) on V1. The constraint applies only when the cut does not intersect with the centerline of the Metal1 shape that is equal to 0.15 μm wide.

Example 11—minDualExtension with oaSpacingDirection and stepSizePair
Specifies that the vertical extensions for Metal2 shapes beyond V1 shapes must be greater than or equal to 0.1user units and the horizontal extensions must be greater than or equal to 0.2 user units. If greater than the minimum extension value, vertical extensions must be 0.1 plus an integer multiple of 0.04. The horizontal extensions have no step size restriction.
set_constraint_parameter -name oaSpacingDirection -IntValue 2
set_constraint_parameter -name stepSizepair -DualValue {0.04 0}
set_layerpair_constraint -constraint minDualExtension \
-layer1 Metal2 -layer2 V1 -DualValue {0.1 0.2}

Related Topics
Return to top