Product Documentation
Virtuoso Space-based Router Constraint Reference
Product Version IC23.1, June 2023

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

Enclosure Rule

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

Constraint Type

Layer pair

Value Types

DualValue, Dual1DTblValue, OneDDualArrayTblValue

Database Types

Design, Technology

Scope

net (for create_derived_vias only), design, foundry

Category

Extension

Group Operators

AND, OR

Value Types

minDualExtension constraints have the following value types:

Parameters

The minDualExtension constraint has the following parameters:

Examples

Example 1—minDualExtension with DualValue

This example sets ground rules for Metal1 shapes overlapping via1 and Metal2 shapes overlapping via1.

Format Example

Tcl

set_layerpair_constraint -layer1 Metal1 -layer2 Via1 \
-constraint minDualExtension -hardness hard -DualValue {0.05 0.20}
set_layerpair_constraint -layer1 Metal2 -layer2 Via1 \
-constraint minDualExtension -hardness hard -DualValue {0.10 0.10}

LEF

LAYER Via1
ENCLOSURE ABOVE 0.10 0.10 ;
ENCLOSURE BELOW 0.05 0.20 ;

Virtuoso

orderedSpacings (
( minOppExtension "Metal2" "Via1" ( 0.10 0.10 ))
( minOppExtension "Metal1" "Via1" ( 0.05 0.20 ))
)

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:

Format Example

Tcl

set_layerpair_constraint -layer1 Metal1 -layer2 via1 \
-constraint minDualExtension -hardness hard -row_name width \
-OneDDualArrayTblValue {0 2 0.05 0.20 0.10 0.10 0.5 1 0.20 0.30}

LEF

LAYER via1
ENCLOSURE BELOW 0.05 0.20 ;
ENCLOSURE BELOW 0.10 0.10 ;
ENCLOSURE BELOW 0.20 0.30 WIDTH 0.5 ;
Example of minDualExtension OneDDualArrayTblValue
Width Number of Extension Pairs Extension Pairs

0.0

2

{ 0.05  0.20 } { 0.10 0.10 }

0.5

1

{ 0.20  0.30 }

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

Format Example

Tcl

set_layer_constraint -constraint minWidth -layer via34 -Value 0.10
set_layer_constraint -constraint minSpacing -layer via34 -Value 0.10
create_constraint_group -name Ext34 -opType or 
#minDualExtension settings for m3 layer below via34
set_layerpair_constraint -layer1 m3 -layer2 via34 \
-create true -group Ext34 \
-constraint minDualExtension -OneDDualArrayTblValue { \
0 2 0.0 0.05 0.01 0.04 }
set_constraint_parameter -name numCuts -IntValue 2
set_constraint_parameter -name oaCutDistance -Value 0.2
set_layerpair_constraint -layer1 m3 -layer2 via34 \
-create true -group Ext34 \
-constraint minDualExtension -OneDDualArrayTblValue { \
0.3 1 0.03 0.03}
#minDualExtension settings for m4 layer above via34 
set_layerpair_constraint -layer1 m4 -layer2 via34 \
-create true -group Ext34 \
-constraint minDualExtension -OneDDualArrayTblValue { \
0 2 0.0 0.05 0.01 0.04 }
set_constraint_parameter -name numCuts -IntValue 2
set_constraint_parameter -name oaCutDistance -Value 0.2
set_layerpair_constraint -layer1 m4 -layer2 via34 \
-create true -group Ext34 \
-constraint minDualExtension -OneDDualArrayTblValue { \
0.3 1 0.03 0.03}

LEF

LAYER via34 
TYPE CUT ;
WIDTH 0.10 ; #minimum size of a cut
SPACING 0.10 ; #minimum edge-to-edge spacing is 0.10
ENCLOSURE 0.0 0.05 ; #overhang 0.0 0.05
ENCLOSURE 0.01 0.04 ; #or, overhang 0.01 0.04
#if metal width >= 0.3, need 0.03 0.03, unless extra cut across
# wire within 0.2μm; applies to m4 and m3 layers above and below
ENCLOSURE 0.03 0.03 WIDTH 0.3 EXCEPTEXTRACUT 0.2 ;
...
END via34
Illustration for minDualExtension with cutDistance Example

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.

Format Example

Tcl

set_constraint_parameter -name oaNoSharedEdge -BoolValue true
set_constraint_parameter -name cutDistance -Value 0.2
set_layerpair_constraint -layer1 Metal1 -layer2 via1 \
-constraint minDualExtension -hardness hard -row_name width \
-OneDDualArrayTblValue {0.3 1 0.03 0.03}
By default, numCuts=1.

LEF

PROPERTY LEF58_ENCLOSURE
"ENCLOSURE BELOW 0.03 0.03
WIDTH 0.3 EXCEPTEXTRACUT 0.2 NOSHAREDEDGE ;" ;
Illustration for minDualExtension with cutDistance and oaNoSharedEdge Example

Example 5—minDualExtension with hasParallelRunLength Parameter

In this example, one of the following conditions must be satisfied:

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)

Format Example

Tcl

set_layer_constraint -constraint minWidth -layer via34 -Value 0.20
set_layer_constraint -constraint minSpacing -layer via34 -Value 0.20
create_constraint_group -name Ext34 -opType or 
# minDualExtension settings for m3 metal below via34 layer
set_constraint_parameter -name length -Value 0.7
set_layerpair_constraint -layer1 m3 -layer2 via34 \
-create true -group Ext34 \
-constraint minDualExtension -DualValue {0.05 0.0}
set_layerpair_constraint -layer1 m3 -layer2 via34 \
-create true -group Ext34 \
-constraint minDualExtension -OneDDualArrayTblValue { \
0 1 0.05 0.05 \
1.0 1 0.1 0.1}
# minDualExtension settings for m4 metal above via34 layer
set_constraint_parameter -name length -Value 0.7
set_layerpair_constraint -layer1 m4 -layer2 via34 \
-create true -group Ext34 \
-constraint minDualExtension -DualValue {0.05 0.0}
set_layerpair_constraint -layer1 m4 -layer2 via34 \
-create true -group Ext34 \
-constraint minDualExtension -OneDDualArrayTblValue { \
0 1 0.05 0.05 \
1.0 1 0.1 0.1}

LEF

LAYER via34 
TYPE CUT ;
WIDTH 0.20 ; #cuts .20 x .20 squares
SPACING 0.20 ; #via34 edge-to-edge spacing is 0.20
ENCLOSURE 0.05 0.0 LENGTH 0.7 ; #overhang 0.05 0.0 if total >= 0.7
ENCLOSURE 0.05 0.05 ; #or, overhang 0.05 on all sides
ENCLOSURE 0.10 0.10 WIDTH 1.0 ; #if width >= 1.0, always need 0.10
...
END via34
Illustrations for minDualExtension with Length and Width Example

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.

Format Example

Tcl

create_constraint_group -name Ext34 -opType and 
# minDualExtension settings for m3 metal below via34 layer
set_constraint_parameter -name cutClass -DualValue {0.5 0.3}
set_layerpair_constraint -layer1 m3 -layer2 via34 \
-create true -group Ext34 \
-constraint minDualExtension -DualValue {0.000 0.20}
# smaller extension required if there is an extra same metal cut
set_constraint_parameter -name cutClass -DualValue {0.5 0.3}
set_constraint_parameter -name numCuts -IntValue 2
set_layerpair_constraint -layer1 m3 -layer2 via34 \
-create true -group Ext34 \
-constraint minDualExtension -DualValue {0.000 0.15}
# minDualExtension settings for m4 metal above via34 layer
set_constraint_parameter -name cutClass -DualValue {0.5 0.3}
set_layerpair_constraint -layer1 m4 -layer2 via34 \
-create true -group Ext34 \
-constraint minDualExtension -DualValue {0.000 0.20}
# smaller extension required if there is an extra same metal cut
set_constraint_parameter -name cutClass -DualValue {0.5 0.3}
set_constraint_parameter -name numCuts -IntValue 2
set_layerpair_constraint -layer1 m4 -layer2 via34 \
-create true -group Ext34 \
-constraint minDualExtension -DualValue {0.000 0.15}

LEF

PROPERTY LEF58_ENCLOSURE
"ENCLOSURE CUTCLASS VA 0.000 0.20 ;
ENCLOSURE CUTCLASS VA 0.000 0.15 EXTRACUT ; " ;
Illustration for minDualExtension with numCuts Example

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.

Format Example

Tcl

create_constraint_group -name Ext34 -opType and 
# minDualExtension settings for m3 metal below via34 layer
set_layerpair_constraint -layer1 m3 -layer2 via34 \
-create true -group Ext34 \
-constraint minDualExtension -DualValue {0.000 0.20}
# specify the redundantCutDistance and enclosures
set_constraint_parameter -name redundantCutDistance -Value 0.1
set_layerpair_constraint -layer1 m3 -layer2 via34 \
-create true -group Ext34 \
-constraint minDualExtension -DualValue {0.000 0.15}
# minDualExtension settings for m4 metal above via34 layer
set_layerpair_constraint -layer1 m4 -layer2 via34 \
-create true -group Ext34 \
-constraint minDualExtension -DualValue {0.000 0.20}
# specify the redundantCutDistance and enclosures
set_constraint_parameter -name redundantCutDistance -Value 0.1
set_layerpair_constraint -layer1 m4 -layer2 via34 \
-create true -group Ext34 \
-constraint minDualExtension -DualValue {0.000 0.15}

LEF

PROPERTY LEF58_ENCLOSURE
"ENCLOSURE 0.00 0.20 ; #overhang 0.0 0.20
ENCLOSURE 0.00 0.15 REDUNDANTCUT 0.1; " ;
Illustration for minDualExtension with redundantCutDistance Example

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.

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.

Format Example

Tcl

set_constraint_parameter -name offCenterline   -BoolValue true 
set_constraint_parameter -name endSideOverhang -BoolValue true
set_constraint_parameter -name cutClass -DualValue { 0.02 0.04}
set_layerpair_constraint -layer1 V1 -layer2 Metal1 \
-constraint minDualExtension
# width # ext1 ext2
-OneDDualArrayTblValue {0.15 1 0.05 0.03}

LEF

ENCLOSURE CUTCLASS VXBAR OFFCENTERLINE
END 0.05 SIDE 0.03 WIDTH 0.15

Virtuoso

spacingTables(
(minOppExtension "V1" "Metal1"
(( "width" nil nil )
'offCenterline
'cutclass (0.02 0.04)
'endSide )
( 0.15 ( (0.05 0.03) )
) )
) ;spacingTables
Illustration for minDualExtension with offCenterline and endSideOverhang Example

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}
Example —minDualExtension with oaSpacingDirection and stepSizePair

Related Topics

Extension Constraints

check_extension


Return to top
 ⠀
X