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

minSpanLengthSpacing

spacingTables(
( minSpanLengthSpacing tx_layer 
 (( "prl" nil nil "spanLength" nil nil )
  ['horizonal | 'vertical | 'any] 
  ['exceptJogLength f_length 
  ['useEdgeLength] ['treatLAsJog]
  {'horizontalJog | 'verticalJog}
  ['jogWidth (f_jogWidth f_wireWidth)]
  ]
  ['eolWidth f_eolWidth 
  [endOfLineExemptionRanges (g_endOfLineExemptionRanges)]
  ]
  ['exactSpacingTable g_exactSpacingTable]
  ['spacingToMinSpanTable g_spacingToMinSpanTable]
  ['exactSelfSpacingTable g_exactSelfSpacingTable]
  ['eolSpacingTable g_eolSpacingTable]
  ['sameMask | 'diffMask]
  ['minSpanSpacingRanges g_minSpanTable
  ['minSpanSpacingRangesPrl g_minSpanPrlTable]
  ]
  ['minSpanForExceptEolWidth f_minSpanEolWidth]
  ['insideLayers (tx_layer1 tx_layer2 … tx_layerN)
   ['insidePurposes (t_purpose1 t_purpose2 … t_purposeN)]
  |
   'outsideLayers (tx_layer1 tx_layer2 … tx_layerN)
   ['outsidePurposes (t_purpose1 t_purpose2 … t_purposeN)]
  ]
  ['eolExceptionNoPrl]
 )
 (g_table)
)
) ;spacingTables

(Virtuoso Advanced Node for Layout Standard) Specifies the spacing between two shapes based on their spans and the parallel run length between them. Optionally, the spacing can apply in the specified direction or to shapes on the same mask. Z- and L-shaped jogs are exempt from the spacing requirement if they meet all the specified criteria.

Additionally, a few exact spacings and a spacing range can be specified for a set of spans, typically the two smallest allowed widths, if the parallel run length between the shapes is non-zero.

Span is the width of a shape measured in the spacing direction and is not always the smallest dimension of the shape. End-of-line width is measured in the direction perpendicular to the span and spacing direction.

Optionally, you can use the 'useEdgeLength parameter to specify how the length in 'exceptJogLength should be measured.

In the figure above, both y1 and y2 must be less than length for the "Z" shape to qualify for the 'exceptJogLength exemption. If 'useEdgeLength is not specified, the span (length of the jog) must be less than length.

Values

tx_layer

The layer on which the constraint is applied.

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

"prl" nil nil "spanLength" nil nil

This identifies the index for table.

g_table

The format of the table is as follows:

(f_prl f_spanLength) f_spacing

where,

  • f_prl applies if the parallel run length between the two shapes is greater than or equal to this value.
  • f_spanLength applies if the larger of the two spans is greater than or equal to this value.
  • f_spacing is the spacing required between the two shapes.

Type: A 2-D table specifying floating-point parallel run length, spans, and spacing values

Parameters

'horizontal | 'vertical | 'any

  

The direction in which the constraint applies.

  • 'horizontal: The constraint applies only in the horizontal direction.
  • 'vertical: The constraint applies only in the vertical direction.
  • 'any: The constraint applies in both horizontal and vertical directions. This is the default value.

Type: Boolean

'exceptJogLength f_length

  

The constraint does not apply between a Z-shaped jog and a neighboring wire with end-of-line width less than or equal to wireWidth and direction perpendicular to the direction in which the length of the jog is measured if the following conditions are satisfied:

  • The length of the jog is less than this value.
  • The width of the jog is less than or equal to jogWidth.
  • The width of the adjacent wires is less than or equal to wireWidth and their projected parallel run length in the direction of the jog is less than zero.

'treatLAsJog

The jog exemption for a Z-shaped jog also applies to an L-shaped jog.

Type: Boolean

'useEdgeLength

(Virtuoso Advanced Node for Layout Only) The length of the edges in the wrong-way direction (non-preferred routing direction) of a wrong-way jog in a Z shape must be less than length. Otherwise, the span (length of the jog) must be less than length.

Type: Boolean

'horizontalJog | 'verticalJog

The direction in which the length of the jog is measured. For example, if the routing direction is vertical, the jog direction must be horizontal.

Type: Boolean

'jogWidth f_jogWidth f_wireWidth

The constraint does not apply to a Z- or L-shaped jog with length less than length in the specified direction if the following conditions are satisfied:

  • The width of the jog is less than or equal to jogWidth.
  • The end-of-line width of the adjacent wires and the neighboring wire is less than or equal to wireWidth.

'eolWidth f_eolWidth

  

The constraint value table does not apply to edges with width less than this value. Instead, the spacing specified with 'eolSpacingTable applies.

'endOfLineExemptionRanges g_endOfLineExemptionRanges

The constraint value table applies to an end-of-line width that is less than eolWidth if it lies in the specified range.

Type: Floating-point values specifying a range of end-of-line widths to which the constraint applies

'exactSpacingTable g_exactSpacingTable

The spacing between two shapes can be equal to a spacing value listed in this table.

Type: A 1-D table, indexed on span, specifying floating-point spacing values

'spacingToMinSpanTable g_spacingToMinSpanTable

(Virtuoso Advanced Node for Layout Only) The spacing of a shape with a larger span to a shape with smaller span can be greater than or equal to a spacing value listed in this table if the larger of the two spans is greater than the corresponding index.

Type: A 1-D table, indexed on span, specifying floating-point spacing values

'exactSelfSpacingTable g_exactSelfSpacingTable

(Virtuoso Advanced Node for Layout Only) The spacing for shapes in the same span length range can be equal to a spacing value listed in this table.

Type: A 1-D table, indexed on span, specifying floating-point spacing values

'eolSpacingTable g_eolSpacingTable

The end-of-line spacing that is applied when the end-of-line width of the wire is less than eolWidth.

Type: A 1-D table, indexed on span, specifying floating-point spacing values

'sameMask | 'diffMask

(Virtuoso Advanced Node for Layout Only) When sameMask is specified, the constraint applies only to shapes on the same mask, regardless of any different mask shapes that may be placed between them.

(Virtuoso Layout Suite EXL and higher tiers) When diffMask is specified, the constraint applies only between shapes of different mask colors.

Type: Boolean

'minSpanSpacingRanges g_minSpanTable

  

The additional exact spacings or a spacing range specified for a set of spans if the parallel run length between the shapes is non-zero.

Typically, these ranges are used to specify a different set of legal spacing ranges for wires with smaller spans. Therefore, this spacing is smaller than the spacing stored in the constraint’s value table, which is based on wider span and parallel run length values.

The format of the table is as follows:

(f_spanLength1 f_spanLength2) l_ranges

where,

  • f_spanLength1 applies if the span of the first shape is greater than or equal to this value.
  • f_spanLength2 applies if the span of the second shape is greater than or equal to this value.
  • l_ranges specifies the spacing required between the two shapes.

This parameter is used instead of 'spacingToMinSpanTable if spacing ranges need to be specified; it is mutually exclusive with both 'exactSpacingTable and 'spacingToMinSpanTable.

For information about how to interpret this parameter, see Example 4a: minSpanLengthSpacing with minSpanSpacingRanges.

Type: A 2-D table, indexed on the span of the two shapes, specifying floating-point spacing values

'minSpanSpacingRangesPrl g_minSpanPrlTable

  

(Virtuoso Advanced Node for Layout Only) The additional exact spacings or a spacing range specified by 'minSpanSpacingRanges is applied if the parallel run length between the shapes is greater than the value specified by this parameter.

The format of the table is as follows:

(f_spanLength1 f_spanLength2) f_prl

where,

  • f_spanLength1 applies if the span of the first shape is greater than or equal to this value.
  • f_spanLength2 applies if the span of the second shape is greater than or equal to this value.
  • f_prl specifies the parallel run length required between the two shapes for the spacing values specified by 'minSpanSpacingRanges to apply. The parallel run length between the two shapes must be greater than this value.

Type: A 2-D table, indexed on the span of the two shapes, specifying floating-point parallel run length values

'minSpanForExceptEolWidth f_minSpanForExceptEolWidth

(Virtuoso Advanced Node for Layout Only) The constraint applies to edges with width less than eolWidth if the span of a shape measured in the specified spacing direction is less than this value.

'insideLayers (tx_layer1 tx_layer2tx_layerN)
| 'outsideLayers (
tx_layer1 tx_layer2tx_layerN)

  

Determines if the constraint applies, based on the presence or absence of one or more layers.

  • 'insideLayers: The constraint applies only if the shapes on the specified layer (layer) overlap a shape on one of these layers (layer1 layer2layerN).
  • 'outsideLayers: The constraint applies only if the shapes on the specified layer (layer) overlap the region outside the shapes on one of these layers (layer1 layer2layerN).

For more information, see Region-based Rule (One layer).

Type: String (layer name) or Integer (layer number)

'insidePurposes (t_purpose1 t_purpose2t_purposeN)

The 'insideLayers parameter is limited to only the specified purposes.

Type: String (purpose name)

'outsidePurposes (t_purpose1 t_purpose2t_purposeN)

The 'outsideLayers parameter is limited to only the specified purposes.

Type: String (purpose name)

'eolExceptionNoPrl

(Virtuoso Advanced Node for Layout Only) The exception of eolWidth applies even when there is no PRL between two shapes. If this parameter is not set, the eolWidth exception is applied only when two shapes have common run length.

Type: Boolean

Examples

Example 1: minSpanLengthSpacing with horizontal, exceptJogLength, and exactSpacingTable

Example 2: minSpanLengthSpacing with horizontal and exactSpacingTable

The minimum horizontal spacing between two wires must be as follows:

Example 3: minSpanLengthSpacing with horizontal, exactSpacingTable, and spacingToMinSpanTable

The minimum horizontal spacing requirement between two wires is as follows:

Example 4a: minSpanLengthSpacing with minSpanSpacingRanges

The values used in the example are defined as follows:

The following table represents the constraint’s value table. In most cases, the spacing requirement for parallel run length 'p' is 0 if -prl1 < p < 0. However, this does not apply to the two smallest span lengths, where a minimum spacing requirement exists. Additionally, the rows for Sp2, Sp6, and Sp7 can be eliminated because the spacing values for these are the same as that in the neighboring rows (Sp1 and Sp5).

spanlength/prl

-prl1 < 0

prl = 0

prl2 > 0

Sp1

S12

S12

S12

Sp2

S12

S12

S12

Sp3

0

S4

S4

Sp4

0

S7

S7

Sp5

0

S10

S10

Sp6

0

S10

S10

Sp7

0

S10

S10

Sp8

0

S13

S10

Sp9

0

S11

S14

The table below represents the spacing table for the 'minSpanSpacingRanges parameter. The table stops at shapes with span Sp6. This is because the spacing for shapes with span Sp7 and up depends only on the parallel run length, which means that the constraint’s value table holds all the required information.

spanLength/spanLength

Sp1

Sp2

Sp3

Sp4

Sp5

Sp6

Sp1

=X1, =X2, = X3, >=S12

=X1, =X2, =X3, >=S12

>=S9

>=S3

>=S8

>=S7

Sp2

=X1, =X2, =X3, >=S12

=X1, =X2, =X3, >=S12

>=S9

>=S3

>=S8

>=S7

Sp3

>=S9

>=S9

0

0

0

0

Sp4

>=S3

>=S3

0

0

0

0

Sp5

>=S8

>=S8

0

0

0

0

Sp6

>=S7

>=S7

0

0

0

0

To reduce duplication of data, entries in this table that duplicate information in the constraint’s value table can be set to 0. For example, the spacing between shapes of Sp3 and Sp4 is >=S7, which is the same as that in the Sp4 row of the constraint’s value table for prl > 0. Therefore, the corresponding entry in this table is set to 0.

Additionally, row Sp1 in the table above can be eliminated because rows Sp1 and Sp2 are identical. Similarly, column Sp1 can be eliminated because columns Sp1 and Sp2 are identical.

Example 4b: minSpanLengthSpacing with minSpanSpacingRanges

The minimum spacing requirement between two wires is as follows:

Example 4c: minSpanLengthSpacing with minSpanSpacingRanges

The minimum spacing requirement between two wires when parallel run length is greater than or equal to -0.1 is as follows:

Example 5: minSpanLengthSpacing with minSpanSpacingRanges and minSpanSpacingRangesPrl

The minimum spacing requirement between two wires is as follows:

spacingTables(
    ( minSpanLengthSpacing "Metal2"
     (( "prl" nil nil "spanlength" nil nil ) 
'vertical
'exceptJogLength 0.1
'useEdgeLength
'verticalJog
'jogWidth (0.09 0.05)
'minSpanSpacingRanges
(
(( "spanLength1" nil nil "spanLength2" nil nil ))
(
(0.0 0.0 ) (0.05 ">=0.07")
(0.0 0.09) (0.06 ">=0.08")
(0.09 0.0 ) (0.08 ">=0.08")
(0.09 0.09) (">=0.08")
)
)
'minSpanSpacingRangesPrl
(
(( "spanLength1" nil nil "spanLength2" nil nil ))
(
(0.0 0.0 ) -0.01
(0.0 0.09) -0.02
(0.09 0.0 ) -0.02
(0.09 0.09) 0
)
)
)
  (
(0.0 0.0 ) 0.07
(0.0 0.09) 0.08
)
)
) ;spacingTables

Example 6: minSpanLengthSpacing with eolWidth and eolSpacingTable

If the end-of-line width of a wire is less than 0.05, the spacing requirement between this end-of-line wire and another wire, as determined by their span, is as follows:

spacingTables(
    ( minSpanLengthSpacing "Metal2"
     (( "prl" nil nil "spanlength" nil nil ) 
'vertical
'eolWidth 0.05
'eolSpacingTable ((( "spanlength" ))
(
0.0 0.07
0.09 0.07
0.11 0.09
)
)
)
(
(0.0 0.0 ) 0.07
(0.0 0.09) 0.08
(0.0 0.11) 0.09
)
)
) ;spacingTables

Return to top
 ⠀
X