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

minCutClassSpacing

Specifies the minimum spacing between cuts of different classes on the same layer. This constraint enables cut class aware spacing rules. Spacing requirements depend on the following factors:

In some processes, the spacing between two square cuts of a particular cut class which are perfectly aligned vertically or horizontally is different from the spacing for unaligned cuts.

minCutClassSpacing Quick Reference

Constraint Type

Layer

Value Types

TwoDTblValue

Database Types

Design, Technology

Scope

design, foundry

Category

Via Construction

Group Operators

AND, OR

Value Type

TwoDTblValue

Specifies the minimum spacing between cuts of different classes on the same layer. The column header (-TblCols) and the row headers for the 2-D table (TwoDTblValue) specify the width and length for each cut class.

Required Parameters

None

Optional Parameters

cutClassCenterToCenter

  

Specifies whether the cut spacing is measured from cut-center-to-cut-center (1) or cut-edge-to-cut-edge (0). By default, cut spacing is performed cut-edge-to-cut-edge. The column header (-TblCols) and the row headers for the 2-D table specify the width and length for each cut class.

Type: Int2DTblValue

cutClassList

Stores the cut class dimensions in an array of DualValue, each with the width and length of a cut class.

Type: DualValueTbl

cutClassMeasureType

Specifies how the constraint should be applied for each cut class combination as centerAndEdge (2) or centerAndEdgeNoPRL (3). The table layout is identical to the constraint value table.

  • centerAndEdge (2): The maximum of all applicable values should be measured center-to-center. The minimum of all applicable values should be measured edge-to-edge.
  • centerAndEdgeNoPRL (3): The spacing between two cuts should be the greater of the following two values: the maximum of all applicable values, measured center-to-center; and the minimum of all applicable values, measured edge-to-edge.

Type: TwoDTblValue

cutClassProfile

Specifies an extension distance applied only to cut shapes of rectangular cut classes before measuring cut spacing. The table layout is identical to the constraint value table.

Type: TwoDTblValue

defaultCutSpacing

Specifies the default cut spacing between cut classes.

Type: Value

exactAlignedSpacing

Specifies an array of DualValue pairs, if set. The first value in each DualValue is the width of a square cut class. The second value is the spacing (or clearance), in user units, required between completely aligned horizontal or vertical cuts of the cut class.

Type: DualValueTbl

exceptConnectivityType

  

Determines the vias to which this constraint does not apply. This parameter is mutually exclusive with oaConnectivityType.

String   Integer Value

sameNetConnectivity   1
  Constraint does not apply to same net only

sameIslandConnectivity   2
  Constraint does not apply to via cuts connected by contiguous same metal

directConnectShapesConnectivity   3
  Constraint does not apply to via cuts directly connected by the same metal

sameViaConnectivity   4
  Constraint does not apply to via cuts with the same metal above and same metal below

Type: StringAsIntValue

oaConnectivityType

Determines the shapes to which the constraint applies. This parameter is mutually exclusive with exceptConnectivityType.

String   Integer Value

anyConnectivity (default)   0
  Constraint applies to any connectivity

sameNetConnectivity   1
  Constraint applies to same net only

sameIslandConnectivity   2
  Constraint applies to via cuts connected by contiguous same metal

directConnectShapesConnectivity   3
  Constraint applies to via cuts directly connected by the same metal

sameViaConnectivity   4
  Constraint applies to via cuts with the same metal above and same metal below

Type: StringAsIntValue

parallelRunLength

Specifies that the constraint applies only if the parallel run length (prl) between the two via cuts is greater than or equal to this value. Both positive and negative values are allowed.

If multiple minCutClassSpacing constraints are defined in an AND constraint group, the constraint is applied by evaluating the prl values, specified in the ascending order, to locate the first prl value for which the actual prl is greater than or equal to the parameter value. As a result, only one constraint in an AND constraint group applies. For example, in an AND constraint group with prl values specified as -1.0, -0.05, 0, 0.05, 1, the constraint value that applies is determined as follows:

Actual length (prl) Use constraint value for length

<-1   The constraint does not apply.

>=-1 and <-0.05   -1.0

>=-0.05 and <0   -0.05

>=0 and <0.05   0

>=0.05 and <1.0   0.05

>=1.0   1.0

Type: Value

oaSpacingDirection

Specifies the direction in which the completely aligned spacing applies.

Valid Values:
anyDirection 0  Horizontally and vertically    (default)
horizontalDirection 1  Horizontally only
verticalDirection 2  Vertically only

The oaSpacingDirection parameter can only be specified if the exactAlignedSpacing parameter is defined.

Type: StringAsIntValue

sameMask

Specifies whether the constraint applies only between shapes on the same mask (true) or between all shapes on the given layer (false, the default).

Type: BoolValue

nonCutClassEdgeSpacing

Specifies the spacing, in user units, between cutClass shapes and non-cutClass shapes (for example, blockages).

Type: ValueArrayValue

bothNegativeParallelRunLengths

Allows both horizontal and vertical offsets between the cut shapes to be used as parallel run lengths, if the parallel run length between the cut shapes is less than zero.

When this parameter is specified, two separate checks are performed using the two offset values. If horizontal offset is used as the parallel run length, required spacing is looked up by taking into account the vertical edges facing each other, and when vertical offset is used as the parallel run length, required spacing is looked up by taking into account the horizontal edges facing each other. The maximum of the spacing values thus obtained is the required spacing.

If this parameter is not specified, the smaller of the two offsets is considered as the parallel run length and spacing is looked up using this value. Because the edges that are facing each other cannot be determined, the maximum of the four possible spacing values is compared with the Euclidean spacing.

If this parameter is specified for one minCutClassSpacing constraint defined on a particular layer, it must be specified for all minCutClassSpacing constraints defined on that layer.

Type: BoolValue

Examples

Example 1: minCutClassSpacing for a Square Cut Class

# default is edge-to-edge measurements. Change this to
# center-to-center (value of 1 enables center-to-center)
set_constraint_parameter -name cutClassCenterToCenter \
-TblCols { 0.10 0.10 } \
-Int2DTblValue { 0.10 1 1 \
0.10 1 1 }
# parallel run length can be >= 0. This is the default.
set_constraint_parameter -name parallelRunLength -Value 0
set_layer_constraint -constraint minCutClassSpacing \
-layer V1 \
-TblCols { 0.10 0.10 } \
-TwoDTblValue { 0.10 0.20 0.20 \
0.10 0.20 0.20 }

Specifies 0.20 user units as the cut-to-cut spacing between two VA vias (0.10x0.10), measured center-to-center.

Example 2: minCutClassSpacing for a Square and a Rectangular Cut Class

create_constraint_group -name cutClassSpacing -opType or -db tech add_constraint_group -subGroupName cutClassSpacing -groupType foundry
# edge-to-edge spacing by default
# case 1: no parallel run length
set_constraint_parameter -name parallelRunLength -Value -0.001
set_layer_constraint -constraint minCutClassSpacing \
-layer V1 -group cutClassSpacing \
-TblCols { 0.10 0.25 0.25 0.25 } \
-TwoDTblValue { 0.10 0.15 0.15 0.15 0.15 \
0.25 0.15 0.15 0.15 0.15 \
0.25 0.15 0.15 0.50 0.50 \
0.25 0.15 0.15 0.50 0.50} -create true
# case 2: parallel run length > 0
set_constraint_parameter -name parallelRunLength -Value 0.001
set_layer_constraint -constraint minCutClassSpacing \
-layer V1 -group cutClassSpacing \
-TblCols { 0.10 0.25 0.25 0.25 } \
-TwoDTblValue { 0.10 0.40 0.40 0.30 0.30 \
0.25 0.40 0.15 0.15 0.15 \
0.25 0.30 0.15 0.50 0.50 \
0.25 0.30 0.15 0.50 0.50} -create true

Assumes that a rectangular cut class (0.1x0.25) and square cut class (0.25x0.25) are defined. The following conditions apply:

To specify the constraint using Tcl, two minCutClassSpacing constraints must be set in an OR constraint group, one for cuts with no parallel run length (parallelRunLength parameter set to -0.001) and the other for cuts with parallel run length > 0 (parallelRunLength parameter set to 0.001). When setting the constraint values, include -create true to ensure that each constraint value is added, instead of overwriting a previously set value.

Example 3: minCutClassSpacing for a Rectangular Cut Class

create_constraint_group -name cutClassSpacing -opType or -db tech add_constraint_group -subGroupName cutClassSpacing -groupType foundry
# edge-to-edge spacing by default
# case 1: no parallel run length
set_constraint_parameter -name parallelRunLength -Value -0.001
set_layer_constraint -constraint minCutClassSpacing \
-layer V1 -group cutClassSpacing \
-TblCols { 0.10 0.25 } \
-TwoDTblValue { 0.10 0.15 0.15 \
0.25 0.15 0.15 } -create true
# case 2: parallel run length > 0
set_constraint_parameter -name parallelRunLength -Value 0.001
set_layer_constraint -constraint minCutClassSpacing \
-layer V1 -group cutClassSpacing \
-TblCols { 0.10 0.25 } \
-TwoDTblValue { 0.10 0.15 0.15 \
0.25 0.15 0.40 } -create true

Assumes that a rectangular cut class (VB) is defined (0.1x0.25). The following conditions apply:

To specify the constraint using Tcl, two minCutClassSpacing constraints must be set in an OR constraint group, one for cuts with no parallel run length (parallelRunLength parameter set to -0.001) and the other for cuts with parallel run length > 0 (parallelRunLength parameter set to 0.001). When setting the constraint values, include -create true to ensure that each constraint value is added, instead of overwriting a previously set value.

Example 4: minCutClassSpacing for Three Cut Classes

create_constraint_group -name cutClassSpacing -opType or -db tech add_constraint_group -subGroupName cutClassSpacing -groupType foundry
# This section sets the constraint with parallel run length = 0 (no overlap)
set_constraint_parameter -name parallelRunLength -Value -0.001
set_constraint_parameter -name cutClassCenterToCenter \
-TblCols { 0.1 0.1 0.1 0.25 0.25 0.25} \
-Int2DTblValue { 0.1 1 1 0 0 0 0
0.1 1 1 0 0 0 0
0.1 0 0 0 0 0 0
0.25 0 0 0 0 0 0
0.25 0 0 0 0 1 1
0.25 0 0 0 0 1 1 }
set_layer_constraint -constraint minCutClassSpacing \
-layer V1 -hardness hard -group cutClassSpacing -create true \
-TblCols { 0.1 0.1 0.1 0.25 0.25 0.25} \
-TwoDTblValue { 0.1 0.2 0.2 0.15 0.15 0.15 0.15
0.1 0.2 0.2 0.15 0.15 0.15 0.15
0.1 0.15 0.15 0.15 0.15 0.15 0.15
0.25 0.15 0.15 0.15 0.15 0.15 0.15
0.25 0.15 0.15 0.15 0.15 0.5 0.5
0.25 0.15 0.15 0.15 0.15 0.5 0.5 }
# This section sets the constraint with parallel run length > 0
set_constraint_parameter -name parallelRunLength -Value 0.001
set_constraint_parameter -name cutClassCenterToCenter \
-TblCols { 0.1 0.1 0.1 0.25 0.25 0.25} \
-Int2DTblValue { 0.1 1 1 0 0 0 0
0.1 1 1 0 0 0 0
0.1 0 0 0 0 0 0
0.25 0 0 0 0 0 0
0.25 0 0 0 0 1 1
0.25 0 0 0 0 1 1 }
set_layer_constraint -constraint minCutClassSpacing \
-layer V1 -hardness hard -group cutClassSpacing -create true \
-TblCols { 0.1 0.1 0.1 0.25 0.25 0.25} \
-TwoDTblValue { 0.1 0.2 0.2 0.3 0.15 0.15 0.15
0.1 0.2 0.2 0.3 0.15 0.15 0.15
0.1 0.3 0.3 0.4 0.4 0.3 0.3
0.25 0.15 0.15 0.4 0.15 0.15 0.15
0.25 0.15 0.15 0.3 0.15 0.5 0.5
0.25 0.15 0.15 0.3 0.15 0.5 0.5 }

Assumes three cut classes are defined for the layer: VA, VB, and VC. VA and VC are square cut classes (0.1x0.1 and 0.25x0.25, respectively). VB is a rectangular cut class (0.1x0.25). The following conditions apply:

To specify the constraint using Tcl, two minCutClassSpacing constraints must be set in an OR constraint group, one for cuts with no parallel run length (parallelRunLength parameter set to -0.001) and the other for cuts with parallel run length > 0 (parallelRunLength parameter set to 0.001). For each constraint, parameters must be set to specify center-to-center or edge-to-edge cut spacing and the parallel run length, which applies to the cut spacing. When setting the constraint value, include -create true to ensure that each constraint value is added, instead of overwriting a previously set value.

Example 5: minCutClassSpacing with nonCutClassEdgeSpacing

# nonCutClassEdgeSpacing 
# edge-to-edge spacing for a 0.04x0.04 cut class or
# a 0.04x0.08 cut class to a non-cut class shape (cut or blockage)
# pairs are <edgelength> <spacing>
# first two pairs are for 0.04x0.04 square cut class; spacing 0.2
# second two pairs are for 0.04x0.08 rectangular cut class
# the spacing to the short edge (0.04) is 0.22
# the spacing to the long edge (0.08) is 0.25
set_constraint_parameter -name nonCutClassEdgeSpacing \
-ValueArrayValue { 0.04 0.2 \
0.04 0.2 \
0.04 0.22 \
0.08 0.25 }
# default is edge-to-edge measurements. Change this to
# center-to-center (value of 1 enables center-to-center)
set_constraint_parameter -name cutClassCenterToCenter \
-TblCols { 0.04 0.04 0.04 0.08} \
-Int2DTblValue { 0.04 1 1 0 0 \
0.04 1 1 0 0 \
0.04 0 0 0 0 \
0.08 0 0 0 0 }
# constraint value
set_layer_constraint -constraint minCutClassSpacing \
-layer V1 \
-TblCols { 0.04 0.04 0.04 0.08} \
-TwoDTblValue { 0.04 0.1 0.1 0.15 0.15 \
0.04 0.1 0.1 0.15 0.15 \
0.04 0.15 0.15 0.18 0.18 \
0.08 0.15 0.15 0.18 0.18 }

Assumes two cut classes are defined for the layer: VA and VB. VA is a square cut class (0.04x0.04). VB is a rectangular cut class (0.04x0.08). The following conditions apply:

Example 6: minCutClassSpacing with bothNegativeParallelRunLengths

create_constraint_group -name cutClassSpacing -opType or -db tech
add_constraint_group -subGroupName cutClassSpacing -groupType foundry
# This section sets the constraint with parallel run length = -0.1
set_constraint_parameter -name parallelRunLength -Value -0.1
set_constraint_parameter -name bothNegativeParallelRunLengths -BoolValue true
set_layer_constraint -constraint minCutClassSpacing \
-layer V1 -hardness hard -group cutClassSpacing -create true \
-TblCols { 0.1 0.2 0.2 0.4} \
-TwoDTblValue { 0.1 0.2 0.2 0.2 0.22 \
0.2 0.2 0.2 0.21 0.23 \
0.2 0.2 0.21 0.3 0.3 \
0.4 0.21 0.23 0.3 0.3 }
# This section sets the constraint with parallel run length = -0.2
set_constraint_parameter -name parallelRunLength -Value -0.2
set_constraint_parameter -name bothNegativeParallelRunLengths -BoolValue true
set_layer_constraint -constraint minCutClassSpacing \
-layer V1 -hardness hard -group cutClassSpacing -create true \
-TblCols { 0.1 0.2 0.2 0.4} \
-TwoDTblValue { 0.1 0.2 0.2 0.2 0.22 \
0.2 0.2 0.2 0.21 0.24 \
0.2 0.2 0.21 0.3 0.3 \
0.4 0.21 0.23 0.3 0.3 }

Defines spacing between two cut shapes of type VA (0.2x0.1) and VB (0.2x0.4) with parallel run length (PRL) -0.1 and -0.2.

Related Topics

Via Construction Constraints

check_space


Return to top
 ⠀
X