Product Documentation
Virtuoso Technology Data Constraints Reference
Product Version IC23.1, November 2023

forbiddenSpacingRanges

spacings(
( forbiddenSpacingRanges tx_Layer
 ['sameMask | 'mask1 | 'mask2 | 'mask3]
 ['horizontal | 'vertical]
 ['ignoreMiddle]
 'firstSpanLength (f_firstSpan1 f_firstSpan2)
 'secondSpanLength (f_secondSpan1 f_secondSpan2)
 ['firstRectOnly | 'firstExceptRectOnly]
 ['secondRectOnly | 'secondExceptRectOnly]
 ['firstOtherSpanLength g_firstOtherSpanLength
  ['firstExactEqual | 'firstLessThan]
 |'orthogonalNonEol g_orthogonalNonEol
 |'secondNonEol (g_minWidth g_maxWidth)]
 ['secondOtherSpanLength g_secondOtherSpanLength
  ['secondExactEqual | 'secondLessThan]
 |'secondOtherEdgeLength g_secondOtherEdgeLength]
 ['offGridOnly (g_minWidth g_maxWidth)
  ['otherTwoWidth (g_minWidth g_maxWidth)]]
 'prl f_prl 
 ['unionPrl g_spanLength]
 (g_ranges)
)
) ;spacings

(Virtuoso Advanced Node for Layout Only) Specifies a list of forbidden spacing ranges between two wires on the given layer.

Values

tx_layer

The layer on which the constraint is applied.

Type: String (layer and purpose names) or Integer (layer number)

g_ranges

The spacing that is forbidden between the two wires.

Type: A list of floating-point value ranges specifying forbidden spacing

Parameters

'sameMask

The forbidden spacing is applied between two wires on the same mask. If a wire on a different mask is present between the two wires, it is ignored.

Type: Boolean

'mask1 | 'mask2 | 'mask3

  

The mask on which forbidden spacing is applied.

Type: Boolean

'horizontal | 'vertical

The direction in which forbidden spacing is applied.

Type: Boolean

'ignoreMiddle

(Virtuoso Layout Suite EXL and higher tiers) The constraint ignores any wires between two wires to which it applies.

'firstSpanLength (f_firstSpan1 f_firstSpan2)

The constraint applies only if one of the two wires has span length greater than or equal to firstSpan1 and less than or equal to firstSpan2.

'secondSpanLength (f_secondSpan1 f_secondSpan2)

The constraint applies only if the other wire has span length greater than or equal to secondSpan1 and less than or equal to secondSpan2.

'firstRectOnly

(Virtuoso Layout Suite EXL and higher tiers) The constraint applies on rectangular wires only.

'firstExceptRectOnly

(Virtuoso Layout Suite EXL and higher tiers) The constraint does not apply on rectangular wires.

'secondRectOnly

(Virtuoso Layout Suite EXL and higher tiers) The constraint applies on rectangular wires only.

'secondExceptRectOnly

(Virtuoso Layout Suite EXL and higher tiers) The constraint does not apply on rectangular wires.

'firstOtherSpanLength g_firstOtherSpanLength
|'firstExactEqual
|'firstLessThan
|'firstOtherEdgeLength g_firstOtherEdgeLength
|'orthogonalNonEol g_orthogonalNonEol
|'secondNonEol (g_minWidth g_maxWidth)

The firstOtherSpanLength constraint applies only if the span length in the orthogonal direction of firstSpanLength is more than the given value.

(Virtuoso Layout Suite EXL and higher tiers) The firstExactEqual constraint changes the comparison operation to exactly equal to the value specified in the firstOtherSpanLength parameter.

(Virtuoso Layout Suite EXL and higher tiers) The firstLessThan constraint changes the comparison operation to less than in the firstOtherSpanLength parameter.

(Virtuoso Layout Suite EXL and higher tiers) The firstOtherEdgeLength constraint applies when the entire edge length in the orthogonal direction is greater than the specified value.

(Virtuoso Layout Suite EXL and higher tiers) The orthogonalNonEol constraint specifies that the edge in the orthogonal direction of forbidden spacing is not an end-of-line (EOL) with width or length less than the specified value.

(Virtuoso Layout Suite EXL and higher tiers) The secondNonEol constraint specifies that another edge is a non-EOL with width greater than or equal to the first specified value and less than or equal to the second specified value.

'secondOtherSpanLength g_secondOtherSpanLength
|'secondExactEqual
|'secondLessThan
|'secondOtherEdgeLength
g_secondOtherEdgeLength

The secondOtherSpanLength constraint applies only if the span length in the orthogonal direction of secondSpanLength is more than the given value.

(Virtuoso Layout Suite EXL and higher tiers) The secondExactEqual constraint changes the comparison operation to exactly equal to the value specified in the secondOtherSpanLength parameter.

(Virtuoso Layout Suite EXL and higher tiers) The secondLessThan constraint changes the comparison operation to less than in the secondOtherSpanLength parameter.

(Virtuoso Layout Suite EXL and higher tiers) The secondOtherEdgeLength constraint applies when the entire edge length in the orthogonal direction is greater than the specified value.

'offGridOnly (g_minWidth g_maxWidth)

(Virtuoso Layout Suite EXL and higher tiers) The constraint applies only if at least one of the wires is an off-grid wire in the specified range.

'otherTwoWidth (g_minWidth g_maxWidth)

(Virtuoso Layout Suite EXL and higher tiers) The constraint applies only if the other wire width is in the specified range.

'prl f_prl

The constraint applies only if the parallel run length between the two wires is greater than this value.

'unionPrl g_spanLength

(Virtuoso Layout Suite EXL and higher tiers) The constraint applies only if the parallel run length which is the union sum of the edges with span length greater than or equal to the specified value against the neighbour edges.

Examples

Example 1: forbiddenSpacingRanges with firstSpanLength and secondSpanLength

The spacing between two wires on the same mask must not be greater than or equal to 0.16 and less than or equal to 0.20 if the following conditions are satisfied:

Example 2: forbiddenSpacingRanges with firstOtherSpanLength and secondOtherSpanLength

The horizontal spacing between two wires on the same mask must not be greater than or equal to 0.16 or less than or equal to 0.20 if the following conditions are satisfied:

spacings(
    (forbiddenSpacingRanges "Metal1" 'sameMask 'horizontal
     'firstSpanLength (0.0 0.05)
'secondSpanLength (0.08 3.0)
'firstOtherSpanLength 0.04
'secondOtherSpanLength 0.06
'prl 0
("[0.16 0.20]")
)
) ;spacings

The following diagram illustrates firstOtherSpanLength and secondOtherSpanLength:

forbiddenEdgePitchRange

spacings(
( forbiddenEdgePitchRange tx_layer 
 'width f_width ['prl f_prl]
 ['minWidth f_minWidth 
  ['outerWidth f_outerWidth]
  ['outerWithin f_outerWithin]
  ['outerSameMask]
 ]
 ['parallelWithin f_parallelWithin 
  | 'exactSpacingNeighbor f_exactSpacing 
   ['spanLength f_spanLength ['within f_within]]
  | 'neighborSpacingRanges g_neighborSpacingRanges
 ['exceptWireWidthSpacingList (g_exactWidth g_spacing)…]
 ['ignoreMiddleWire (g_Width g_spacing)]
 ]
 ['secondForbiddenRange g_secondForbiddenRange]
 ['sameMask | 'mask1 | 'mask2 | 'mask3]
 ['exactWireWidth]
 ['otherWidth f_otherWidth]
 (g_range)
)
) ;spacings

(Virtuoso Advanced Node for Layout Standard) Restricts the spacing between the left-to-left and right-to-right edges (or between top-to-top and bottom-to-bottom edges) of two shapes on a layer if a shape from a different metal island lies between the two shapes. The constraint applies only if the width of the first shape is less than the specified value.

Optionally, you can specify that the common projected parallel run length between the two edges and the in-between shape must be greater than a particular value.

Values

tx_layer

The layer on which the constraint is applied.

Type: String (layer and purpose names) or Integer (layer number)

g_range

The forbidden spacing range, that is, the spacing between shapes must not fall in this range.

The forbidden spacing range is specified using the format:

[f_min1 f_max1]

where, f_min1 <= spacing <= f_max1

Type: Floating-point values specifying a range of spacings that are not allowed

Parameters

'width f_width

The constraint applies only if the width of the first shape is less than this value.

'minWidth f_minWidth

  

(Virtuoso Advanced Node for Layout Only) The constraint applies to a shape with width less than width and greater than minWidth if the shape is sandwiched by two shapes. The forbidden spacing applies between the middle shape and the outer shapes.

'outerWidth f_outerWidth

(Virtuoso Advanced Node for Layout Only) The constraint applies only if the width of the two outer shapes is greater than this value.

'outerWithin f_outerWithin

(Virtuoso Advanced Node for Layout Only) The constraint applies only if the distance between the two outer shapes is less than this value.

'outerSameMask

(Virtuoso Advanced Node for Layout Only) The constraint applies only if the two outer shapes are on the same mask. The mask applied to the middle shape is ignored.

Type: Boolean

'prl f_prl

The constraint applies only if the parallel run length between the two edges and the in-between shape is greater than this value.

'parallelWithin f_parallelWithin

  

The constraint applies only if the first shape has neighboring shapes on both sides at a distance less than this value.

The spacing between the two shapes is measured from the bottom/top edge to the top/bottom edge (or from the right/left edge to the left/right edge).

'exactSpacingNeighbor f_exactSpacing

The constraint applies only if the first shape has a neighboring shape at a distance equal to this value on the side opposite to the one on which spacing applies.

The spacing between the two shapes is measured from the bottom/top edge to the top/bottom edge (or from the right/left edge to the left/right edge). A shape from a different metal island need not be present between the two shapes.

'spanLength f_spanLength

The constraint applies only if the span length of the second wire is less than this value.

Span length is measured perpendicular to the parallel run length.

'within f_within

The constraint applies only if the second shape has a neighboring shape at a distance less than this value from it on either side.

'neighborSpacingRanges g_neighborSpacingRanges

The constraint applies only if the spacing between the first shape and a neighboring shape falls in this range.

Type: Floating-point values specifying a range of spacings that trigger the constraint

'exceptWireWidthSpacingList (g_exactWidth g_spacing)

(Virtuoso Layout Suite EXL and higher tiers) The constraint specifies that neighbour wires, with at least one of them not in the forbidden spacing range, having width exactly equal to the given value with PRL greater than 0 and the spacing less than the given value are merged as if the gap between the wires is filled. For this parameter,  g_exactWidth is the width value and g_spacing is the spacing value.

'ignoreMiddleWire (g_Width g_spacing)

(Virtuoso Layout Suite EXL and higher tiers) The constraint specifies that if there is a wire with a width not the same as the value of g_width or a spacing to the triggering wire not the same as the value of g_spacing, between the triggering wire and the forbidden spacing range wire, that wire is ignored.

'secondForbiddenRange g_secondForbiddenRange

A second forbidden spacing range.

The forbidden spacing range is specified using the format:

[f_min2 f_max2]

where, f_min2 <= spacing <= f_max2

This second forbidden spacing range can be specified only if 'parallelWithin or 'exactSpacingNeighbor is specified.

Type: Floating-point values specifying an additional range of spacings that are not allowed

'sameMask

The constraint applies only to shapes on the same mask.

The shapes between which forbidden spacing is checked must be on the same mask; the mask applied to neighboring shapes is ignored.

Type: Boolean

'mask1 | 'mask2 | 'mask3

(Virtuoso Advanced Node for Layout Only) The constraint applies only to the shapes on the specified mask.

Type: Boolean

'exactWireWidth

The constraint applies only if the width of the first shape is equal to width.

Type: Boolean

'otherWidth f_otherWidth

The constraint applies only if the width of the second shape is greater than or equal to this value.


Return to top
 ⠀
X