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

minSpacing (Two layers)

spacings(
( minSpacing tx_layer1 tx_layer2 
 ['orthogonalSpacing f_orthoSpacing]
 ['horizontal | 'vertical]
 ['overlapNotAllowed]
 ['crossingAllowed]
 ['cornerAllowed]
 ['length f_length]
 ['exceptSameMetal]
 ['insideLayers (tx_layer4 tx_layer5tx_layerN)
  ['insidePurposes (t_purpose1 t_purpose2t_purposeN)]
  |
  'outsideLayers (tx_layer4 tx_layer5tx_layerN)
  ['outsidePurposes (t_purpose1 t_purpose2t_purposeN)]
 f_spacing ['manhattan] ['coincidentAllowed]
)
) ;spacings
spacingTables(
( minSpacing tx_layer1 tx_layer2
 (( "width" nil nil "width" nil nil )
  ['horizontal | 'vertical]
  ['overlapNotAllowed] 
  ['crossingAllowed]
  [f_default]
 )
 (g_table) ['manhattan] 
)
( minSpacing tx_layer1 tx_layer2
 (( "width" nil nil "length" nil nil )
  ['horizontal | 'vertical]
  ['overlapNotAllowed] 
  ['crossingAllowed]
  [f_default]
 )
 (g_table) ['manhattan] 
)
( minSpacing tx_layer1 tx_layer2
 (( "twoWidths" nil nil "length" nil nil )
  ['horizontal | 'vertical]
  ['overlapNotAllowed] 
  ['crossingAllowed]
  [f_default]
 )
 (g_table) ['manhattan] 
)
) ;spacingTables

Specifies the minimum edge-to-edge spacing required between two adjacent, non-intersecting shapes on two different layers. The required spacing can be dependent on the direction in which the spacing is measured, on the width of both the shapes or on the width of the shapes and the parallel run length between them.

The figures below illustrate how the constraint is applied:

The constraint does not apply in the scenarios illustrated by the figures below:

For some processes, the minimum spacing between a cut shape on one layer and a metal shape on a second layer on a different net is measured using a more complex method called orthogonal spacing. If the shapes are on the same net and orthogonal spacing is specified, the constraint does not apply.

The minimum orthogonal spacing check is determined by the following method: A pair of opposite sides of the layer1 shape is grown by a distance equal to abs(minimum spacing - orthogonal spacing)/2, denoted by "y" in the figure below. Similarly, the other pair of opposite sides of the layer1 shape is shrunk by the same distance. The minimum required spacing between the modified layer1 shape and the layer2 shape is given by (minimum spacing + orthogonal spacing)/2, denoted by "x" in the figure below.

The spacing check is then repeated by shrinking the edges that were previously grown and growing the edges that were previously shrunk. The constraint is violated only if the layer2 shape is found in the gray region of check shown in the figure below.

Values

tx_layer1

The first layer on which the constraint is applied.

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

tx_layer2

The second layer on which the constraint is applied.

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

f_spacing

The minimum spacing required between two shapes.

"width" nil nil "width" nil nil

This identifies the index for table.

"width" nil nil "length" nil nil

This identifies the index for table.

"twoWidths" nil nil "length" nil nil

This identifies the index for table.

g_table

The format of a 2-D table is as follows:

( (f_index1 f_index2) f_value

)

where,

  • f_index1 and f_index2 both represent widths (of the two shapes), or f_index1 is the width of the wider of the two shapes and f_index2 is the parallel run length between the two shapes.
  • f_value is the minimum spacing that applies when the width and parallel run length are both greater than or equal to the corresponding indexes.
If twoWidths is specified, the lookup table establishes the minimum spacing between a pair of shapes based on the widths of both shapes and the parallel run length between them. Additionally, the widths and the parallel run length must be greater than the corresponding indexes (and not greater than or equal to).
In a spacing table, all values should be explicitly specified. When a value is not specified, the default value f_default is used.

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

Parameters

'orthogonalSpacing f_orthoSpacing

  

The different-net clearance between objects on a cut layer and objects on a routing layer must be equal to this value.

'horizontal | 'vertical

The direction in which the constraint applies. If direction is not specified, the constraint applies in any direction.

  • 'horizontal: The constraint applies only in the horizontal direction.
  • 'vertical: The constraint applies only in the vertical direction.

Type: Boolean

'overlapNotAllowed

  

(Virtuoso Advanced Node for Layout Standard) Shapes are not allowed to overlap. Otherwise, same-net shapes can overlap.

'crossingAllowed

(Virtuoso Advanced Node for Layout Only) The constraint does not apply to crossing shapes.

'cornerAllowed

(Virtuoso Advanced Node for Layout Only) The constraint does not apply if the corners of the two shapes touch.

'length f_length

(Virtuoso Layout Suite EXL and higher tiers) The constraint applies only to shapes with length less than this value.

'exceptSameMetal

(Virtuoso Layout Suite EXL and higher tiers) The constraint does not apply to contiguous same-metal shapes.

Type: Boolean

'insideLayers (tx_layer3 tx_layer4tx_layerN)
| 'outsideLayers (
tx_layer3 tx_layer4tx_layerN)

(Virtuoso Layout Suite EXL and higher tiers) Determines if the constraint applies, based on the presence or absence of one or more layers.

  • 'insideLayers: The constraint applies when the region between the shapes on the specified layers (layer1 and layer2) overlaps a shape on one of these layers (layer3 layer4layerN).
  • 'outsideLayers: The constraint applies when the region between the shapes on the specified layers (layer1 and layer2) overlaps the region outside the shapes on one of these layers (layer3 layer4layerN).

For more information, see Region-based Rule (Two layers).

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

''insidePurposes (t_purpose1 t_purpose2t_purposeN)| 'outsidePurposes (t_purpose1 t_purpose2t_purposeN)

(Virtuoso Layout Suite EXL and higher tiers) Limits the 'insideLayers and 'outsideLayers parameters to the specified purposes.

Type: String (purpose name)

'manhattan

The constraint uses Manhattan distance, which allows a larger spacing at the corners.

By default, the constraint uses Euclidean measurement.

Type: Boolean

f_default

The spacing value to be used when no table entry applies or is specified (using g_table). Ensure that the default spacing value is sufficiently large to represent all missing spacing values in the table. Ideally, it should be greater than or equal to the largest specified spacing in the table.

'coincidentAllowed

The edges the two shapes can coincide. Otherwise, the shapes must meet the spacing requirement.

Type: Boolean

Examples

Example 1: minSpacing with vertical

The vertical spacing between Metal1 and Metal2 shapes must be at least 1.5.

Example 2: minSpacing with orthogonalSpacing

The spacing between Via1 and Metal1 shapes must be at least 0.1. Orthogonal spacing specified is 0.2, which means that Via1 shapes are grown and shrunk by 0.05 ((0.2 - 0.1)/2 = 0.05) and the spacing required in this case is 0.15 ((0.2 + 0.1)/2 = 0.15).

Example 3: minSpacing with crossingAllowed

The spacing between Metal1 and Metal2 shapes must be at least 0.1. The constraint does not apply to crossing wires.


Return to top
 ⠀
X