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

minProtrusionSpacing

Specifies the required spacings between a wide wire and neighbor wires for the following conditions:

The constraint applies under the following conditions:

minProtrusionSpacing Quick Reference

Constraint Type

Layer

Value Types

ValueArrayValue

Database Types

Design, Technology

Scope

design, foundry

Category

Spacing

Group Operators

AND

Value Type

minProtrusionSpacing constraints have a ValueArrayValue of three Value elements representing, in order, short jog spacing, long jog spacing, and jog-to-jog spacing.

The constraint can be specified for multiple wide widths and with various parallelRunLength, oaDistanceWithin, and length parameters, using an AND constraint group.

To determine the spacing requirements, find the largest values for width and parallelRunLength, where the wide wire width > width and the neighbor wire’s parallel run length > parallelRunLength, and the smallest value oaDistanceWithin where the neighbor wire is < oaDistanceWithin away from the wide wire. If excludeSpacing is given, wires that are within the given distance will be ignored.

The following figure shows the syntax for setting the minProtrusionSpacing constraint.

Syntax for minProtrusionSpacing
Format Syntax

Tcl

set_constraint_parameter -name width -Value f_width 
set_constraint_parameter -name parallelRunLength -Value f_PRL
set_constraint_parameter -name oaDistanceWithin -Value f_distance
set_constraint_parameter -name length -Value f_jogWidth
[set_constraint_parameter -name excludeSpacing -RangeValue s_range]
set_layer_constraint -constraint minProtrusionSpacing \
-layer s_layerName -ValueArrayValue { \
f_shortJogSpacing f_longJogSpacing f_jogToJogSpacing }

LEF

PROPERTY LEF58_SPACINGTABLE
"SPACINGTABLE JOGTOJOGSPACING f_jogToJogSpacing
JOGWIDTH f_jogWidth SHORTJOGSPACING f_shortJogSpacing
{WIDTH f_width PARALLEL f_PRL WITHIN f_distance
[EXCEPTWITHIN f_lowExcludeSpacing f_highExcludeSpacing]
LONGJOGSPACING f_longJogSpacing
[SHORTJOGSPACING f_widthShortJogSpacing]}…
;" ;

Virtuoso

spacings(
( minProtrusionSpacing s_layerName
'width f_width
'length f_PRL
'within f_distance
'protrusionLength f_jogWidth
['excludeSpacing (s_range)]
(
short f_shortJogSpacing    long f_longJogSpacing
between f_jogToJogSpacing
)
}
) ;spacings

Parameters

The following figure shows how these parameters are measured for this constraint. The green shaded region shows the area being checked.

Illustration for minProtrusionSpacing Constraint

Examples

This section includes the following examples:

Example 1—minProtrusionSpacing (Two Widths)

Graphic examples for minProtrusionSpacing commands in the following table, which set two wide widths, are shown in Illustration for minProtrusionSpacing (Two Widths).

Example 1—minProtrusionSpacing (Two Widths)
Format Syntax

Tcl

create_constraint_group -name proSpaceGp -opType and
set_constraint_parameter -name width -Value 0.4 
set_constraint_parameter -name parallelRunLength -Value 0.2
set_constraint_parameter -name oaDistanceWithin -Value 0.5
set_constraint_parameter -name length -Value 0.2
set_layer_constraint -constraint minProtrusionSpacing \
-layer Metal1 -group proSpaceGp -create true \
-ValueArrayValue { 0.08 0.13 0.7 }
set_constraint_parameter -name width -Value 0.8 
set_constraint_parameter -name parallelRunLength -Value 0.3
set_constraint_parameter -name oaDistanceWithin -Value 0.5
set_constraint_parameter -name length -Value 0.2
set_layer_constraint -constraint minProtrusionSpacing \
-layer Metal1 -group proSpaceGp -create true \
-ValueArrayValue { 0.08 0.15 0.7 }

LEF

PROPERTY LEF58_SPACINGTABLE "
"SPACINGTABLE JOGTOJOGSPACING 0.7
JOGWIDTH 0.2 SHORTJOGSPACING 0.08
WIDTH 0.4 PARALLEL 0.2 WITHIN 0.5
LONGJOGSPACING 0.13
WIDTH 0.8 PARALLEL 0.3 WITHIN 0.5
LONGJOGSPACING 0.15 ; " ;

Virtuoso

spacings(
( minProtrusionSpacing "Metal1" 'width 0.4 'length 0.2
'within 0.29 'protrusionLength 0.2
(
short 0.08
long 0.13
between 0.7
)
)
( minProtrusionSpacing "Metal1" 'width 0.8 'length 0.3
'within 0.5 'protrusionLength 0.2
(
short 0.08
long 0.15
between 0.7
)
)
) ;spacings
Illustration for minProtrusionSpacing (Two Widths)

Example 2—minProtrusionSpacing (One Width)

Graphic examples for minProtrusionSpacing commands in the following table, which set one width, are shown in figures Illustration for minProtrusionSpacing (One Width) and Additional Illustrations for minProtrusionSpacing (One Width).

Table -1 Example 2—minProtrusionSpacing (One Width)

Format Syntax

Tcl

set_constraint_parameter -name width -Value 0.8 
set_constraint_parameter -name parallelRunLength -Value 0.3
set_constraint_parameter -name oaDistanceWithin -Value 0.5
set_constraint_parameter -name length -Value 0.2
set_layer_constraint -constraint minProtrusionSpacing
-layer Metal1 -ValueArrayValue { 0.08 0.15 0.7 }

LEF

PROPERTY LEF58_SPACINGTABLE
"SPACINGTABLE JOGTOJOGSPACING 0.7 JOGWIDTH 0.2 SHORTJOGSPACING 0.08
WIDTH 0.8 PARALLEL 0.3 WITHIN 0.5 LONGJOGSPACING 0.15 ;" ;

Virtuoso

spacings(
( minProtrusionSpacing "Metal1" 'width 0.8 'length 0.3
'within 0.5 'protrusionLength 0.2
(
short 0.08
long 0.15
between 0.7
)
)
) ;spacings
Illustration for minProtrusionSpacing (One Width)

Additional Illustrations for minProtrusionSpacing (One Width)

Example 3—minProtrusionSpacing with excludeSpacing

In this example, the required spacing between a wire that is within 0.5 user units of a > 0.8 wide wire with a protrusion and a parallel run length > 0.3 is dependent on the length of the protrusion (jogWidth). Short jog spacing is 0.08, long jog spacing is 0.15, and jog-to-jog spacing is 0.7. However, when the narrow wire is in the exclusion area, >= 0.25 and < 0.4 user units from the wide wire, the constraint does not apply.

Format Syntax

Tcl

set_constraint_parameter -name width -Value 0.8 
set_constraint_parameter -name parallelRunLength -Value 0.3
set_constraint_parameter -name oaDistanceWithin -Value 0.5
set_constraint_parameter -name length -Value 0.2
set_constraint_parameter -name excludeSpacing \
-RangeValue {"[0.25 0.4)"}
set_layer_constraint -constraint minProtrusionSpacing \
-layer Metal1 -ValueArrayValue { 0.08 0.15 0.07}

LEF

PROPERTY LEF58_SPACINGTABLE
"SPACINGTABLE JOGTOJOGSPACING 0.07 JOGWIDTH 0.2 SHORTJOGSPACING 0.08
WIDTH 0.8 PARALLEL 0.3 WITHIN 0.5
EXCEPTWITHIN 0.25 0.4 LONGJOGSPACING 0.15 ;" ;

Virtuoso

spacings(
( minProtrusionSpacing "Metal1"
'width 0.8
'length 0.3
'within 0.5
'protrusionLength 0.2
'excludeSpacing {"[0.25 0.4)"}
(
short 0.08
long 0.15
between 0.07
)
)
) ;spacings
Illustration for minProtrusionSpacing with excludeSpacing

Related Topics

Spacing Constraints

check_space


Return to top
 ⠀
X