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

minAdjacentViaSpacing

Specifies the required minimum distance in user units between adjacent via cuts. A via cut is considered adjacent if it is within the specified distance from another cut in any direction including a 45-degree angle. Additional distance is required when multiple cuts are adjacent to ensure that geometries are not merged during fabrication.

Optional parameters determine whether via spacing is measured center-to-center or edge-to-edge, whether the constraint applies to only certain connectivity types, and whether the constraint applies to vias on power and ground nets. In some processes, a specific spacing rule may only apply if the vias have no parallel run length, as opposed to being aligned.

minAdjacentViaSpacing Quick Reference

Constraint Type

Layer

Value Types

Value

Database Types

Design, Technology

Scope

net, route, Term, instTerm, blockage, net group, group2group, reflexive, transreflexive, design, foundry

Category

Via Construction

Group Operators

AND, OR

Value Type

Value

Specifies the minimum distance required between adjacent vias.

Required Parameters

distance

Specifies the maximum distance apart, in user units, for cuts to be considered adjacent.

Type: Value

numCuts

Specifies the minimum required number of adjacent cuts for this constraint to apply.

Type: IntValue

The constraint applies when at least numCuts other vias are adjacent within a given distance.

Optional Parameters

cutClass

The constraint applies only to vias with the given dimensions.

Type: DualValue

exactAligned

The constraint applies when the cut has this number of via cuts that are perfectly aligned horizontally and/or vertically and are less than distance from each other.

Otherwise, the constraint applies when there are at least numCuts non-perfectly aligned cuts. The numCuts value must be smaller than the exactAligned value.

Type: IntValue

exactSpacing

Specifies whether the minAdjacentViaSpacing value is an exact value. This is used for contacts that must be aligned. This parameter is not supported by LEF.

Type: BoolValue

oaCenterToCenter

Determines whether the minimum spacing applies center-to-center (true) or edge-to-edge (false, default).

Type: BoolValue

oaConnectivityType

Specifies the shapes to which this constraint applies, based on their connectivity.

Type: StringAsIntValue

oaExceptSamePGNet

Specifies that the constraint does not apply to power and ground nets. The default is false, meaning the constraint applies to all nets.

Type: BoolValue

noParallelRunLength

Specifies that the rule applies only among cuts with no common parallel run length. Default is false.

Type: BoolValue

allCuts

Specifies that a neighbor cut would belong to any cut classes. Default is false.

Type: BoolValue

cutSizeRangeArray

Specifies ranges for the xSpan and ySpan values of cuts.

Type: RangeArrayValue

  • {xRange yRange} Cuts with xSpan values that fall within the xRange and ySpan values that fall within the yRange for all cuts.
  • {xRange1 yRange1 xRange2 yRange2} First cut with xSpan values in xRange1 and ySpan in yRange1 and neighboring cuts with xSpan in xRange2 and ySpan in yRange2.

twoCuts

Specifies that the via spacing applies between two cuts only if each of them has at least twoCuts neighbor cuts at less than the distance.

Type: IntValue

exceptOppositeCornerNeighbors

Specifies that the constraint does not apply if all neighbors are on opposite corners.

Type: BoolValue

oaConnectivityType Parameter Values for Via Spacing Constraints
String Integer Value Constraint applies to:

anyConnectivity

0

(Default) Any connectivity

sameNetConnectivity

1

Same net only

sameIslandConnectivity

2

Via cuts connected by contiguous same metal

directConnectShapesConnectivity

3

Via cuts directly connected by the same metal

sameViaConnectivity

4

Via cuts with the same metal above and same metal below

Connectivity Type Examples for Vias

Examples

Example 1: minAdjacentViaSpacing Edge-to-edge

set_constraint_parameter -name numCuts -IntValue 3
set_constraint_parameter -name distance -Value 0.1
set_constraint_parameter -name oaCenterToCenter -BoolValue false
set_layer_constraint -constraint minAdjacentViaSpacing -layer VIA1 -Value 0.11

Extra space is needed for any via with three or more adjacent cuts that are within 0.1. The adjacent vias require spacing greater than or equal to 0.11.

In the following figure, each of the cases shows at most two adjacent vias to any given via, therefore only default spacing is needed.

Illustration for minAdjacentViaSpacing Edge-to-edge

In the following figure, all the cases show one or more cuts with three or more adjacent cuts and require the minAdjacentViaSpacing spacing, instead of the smaller default spacing.

Illustration of minAdjacentViaSpacing with numCuts

Example 2: minAdjacentViaSpacing Center-to-Center

set_constraint_parameter -name numCuts -IntValue 2
set_constraint_parameter -name distance -Value 0.2
set_constraint_parameter -name oaCenterToCenter -BoolValue true
set_layer_constraint -constraint minAdjacentViaSpacing -layer VIA1  -Value 0.2

Extra space is needed for any via with two or more adjacent cuts that are within 0.2, measured center-to-center. The adjacent vias require spacing greater than or equal to 0.2, measured center-to-center.

The following figure illustrates how center-to-center measurements are made for determining the number of adjacent vias within distance and the spacing needed for vias that meet the criteria for the minAdjacentViaSpacing constraint.

Illustration for minAdjacentViaSpacing with oaCenterToCenter

Example 3: minAdjacentViaSpacing with noParallelRunLength

set_constraint_parameter -name numCuts -IntValue 2
set_constraint_parameter -name distance -Value 0.2
set_constraint_parameter -name oaCenterToCenter -BoolValue true
set_constraint_parameter -name noParallelRunLength -BoolValue true
set_layer_constraint -constraint minAdjacentViaSpacing \
-layer VIA1 -Value 0.2

Specifies that the minimum adjacent via spacing measured center-to-center must be 0.2 user units if there are at least two adjacent vias with no parallel run length within 0.2 user units.

Illustration for minAdjacentViaSpacing with noParallelRunLength

Related Topics

Via Construction Constraints

check_space


Return to top
 ⠀
X