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

minOppSpanSpacing

spacings(
( minOppSpanSpacing tx_layer 
     'width f_width 'eolWidth f_eolWidth ['length f_length]
     ['sameMask]
     ['jointWidth f_jointWidth] 'jointLength f_jointLength
     ['jointToEdgeEnd f_jointToEdgeEnd]
     ['jointExtension f_jointExtension] 
     ['jointCornerOnly]
     [(('exceptEdgeLength f_edgeLength ['prl f_parallelRunLength]) …)]
     ['prl f_parallelRunLength]
     ['endToEndPRL f_endToEndPRL]
     ['endToJointPRL f_endToJointPRL]
     ['jointToEndPRL f_jointToEndPRL]
     ['jointToJointPRL f_jointToJointPRL]
     ['sideToEndPRL f_sideToEndPRL]
     ['sideToJointPRL f_sideToJointPRL] 
     ['jointToSidePRL f_jointToSidePRL] 
     ['sideToSidePRL f_sideToSidePRL] 
     ['sideLength f_sideLength] 
     ['sideExtension f_sideExtension] 
     ['sideToSideLength f_sideToSideLength]
     ['sideToSideExtension f_sideToSideExtension] 
     ['sideEdgeLength f_sideEdgeLength]]
     (
      (endToEnd f_endSpacing1 f_endSpacing2)
      (jointToEnd f_jointSpacing f_endSpacing)
      (endToJoint f_endSpacing f_jointSpacing)
      (jointToJoint f_jointSpacing1 f_jointSpacing2)
      [(sideToEnd f_sideSpacing f_endSpacing)
       (sideToJoint f_sideSpacing f_jointSpacing)
            [(jointToSide f_jointSpacing f_sideSpacing)
             (sideToSide f_sideSpacing1 f_sideSpacing2)
            ]
      ]
     )
)
) ;spacings

Defines the minimum spacing requirement for a wire with two neighboring wires on opposite sides with projected parallel run length greater than zero. The neighboring wires are classified as EOL or as T or L joints. End spacing is the distance between an end-of-line edge (EOL) and the middle wire and joint spacing is the distance between a joint and the middle wire.

In an end-to-end or joint-to-joint scenario, either both spacing values must be greater than or equal to the smaller of the two specified spacing values, or at least one spacing must be greater than or equal to the larger of the two specified spacing values.

In an end-to-joint or joint-to-end scenario, both endToJoint and jointToEnd conditions must be fulfilled individually, and to fulfill a condition, either joint spacing must be greater than or equal to jointSpacing or end spacing must be greater than or equal to endSpacing.

The figure below illustrates end-of-line wires.

Edges labeled A, B, and C represent end-of-line edges and SA, SBn, and SCn represent the lengths of the sides that contain the respective end-of-line edge. The constraint applies if an end-of-line edge is less than eolWidth wide and the length of each of the two sides containing the end-of-line edge is greater than or equal to length.

The figure below illustrates joints.

Edges labeled A, B, and C are joints if their width is less than eolWidth or jointWidth and the span lengths SpA, SpB, and SpC, respectively, are greater than jointLength. The constraint applies only if the distance JtoE, measured from the joint to the end of the edge that contains the joint, is less than or equal to jointToEndEdge. A joint need not necessarily be a T or L joint; a joint can be any edge that fulfills the conditions listed above.

The figures below illustrate the four different types of spacing. The width of the middle wire must be less than width.

The following figures illustrate side and joint extensions. The green edge depicts a joint.

The first figure below illustrates a side-to-side spacing scenario and the second figure illustrates the criterion for determining a side edge when 'sideEdgeLength is specified.

Values

tx_layer

The layer on which the constraint is applied.

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

endToEnd f_endSpacing1 f_endSpacing2

  

Either both spacing values must be greater than or equal to the smaller of the two specified spacing values, or at least one spacing must be greater than or equal to the larger of the two specified spacing values.

jointToEnd f_jointSpacing f_endSpacing

The joint spacing must be at least jointSpacing and the end spacing must be at least endSpacing.

Both endToJoint and jointToEnd spacing must be fulfilled individually.

endToJoint f_endSpacing f_jointSpacing

The end spacing must be at least endSpacing and the joint spacing must be at least jointSpacing.

Both endToJoint and jointToEnd spacing must be fulfilled individually.

jointToJoint f_jointSpacing1 f_jointSpacing2

  

Either both spacing values must be greater than or equal to the smaller of the two specified spacing values, or at least one spacing must be greater than or equal to the larger of the two specified spacing values.

sideToEnd f_sideSpacing f_endSpacing

The spacing between a side that satisfies 'sideLength and the middle wire must be at least sideSpacing and between an end-of-line edge and the middle wire must be at least endSpacing.

sideToJoint f_sideSpacing f_jointSpacing

  

The spacing between a side that satisfies 'sideLength and the middle wire must be at least sideSpacing and between a joint and the middle wire must be at least jointSpacing.

jointToSide f_jointSpacing f_sideSpacing

  

The spacing between a joint and the middle wire must be at least jointSpacing and between a side that satisfies 'sideLength and the middle wire must be at least sideSpacing.

sideToSide f_sideSpacing1 f_sideSpacing2

The spacing of the sides of neighboring wires from the middle wire must be at least sideSpacing1 and sideSpacing2. Any defined global parallel run length is ignored when checking side-to-side spacing.

Parameters

'width f_width

The constraint applies only if the middle wire has width less than this value.

'eolWidth f_eolWidth

  

The constraint applies only if the end-of-line width of the neighboring wires is less than this value.

'length f_length

The constraint applies only if the length of both sides of a neighboring wire is greater than or equal to this value.

The neighboring wire may be a joint if its length is less than this value along any one side.

'sameMask

(Virtuoso Advanced Node for Layout Only) The constraint applies only if all three wires are on the same mask.

'jointWidth f_jointWidth

If the width of an end-of-line edge of a neighboring wire is less than this value, the end-of-line edge is a joint.

'jointLength f_jointLength

  

If the width of an end-of-line edge of a neighboring wire is less than jointWidth or eolWidth and its span length is greater than this value, it is a joint.

'jointToEdgeEnd f_jointToEdgeEnd

The constraint applies only if the distance measured from the joint to the end of the edge that contains the joint is less than or equal to this value.

'jointExtension f_jointExtension

  

The joint is extended by this value on both sides.

'jointCornerOnly

The joint must form a joint corner, which is a convex corner consisting of two consecutive joints.

'exceptEdgeLength f_exceptEdgeLength ['prl f_parallelRunLength]

The constraint does not apply if length or jointLength is greater than or equal to exceptEdgeLength and the projected parallel run length is less than or equal to parallelRunLength.

'prl f_parallelRunLength

  

The constraint applies only if the projected parallel run length between the wires on opposite sides is greater than this value.

This global parallel run length value applies if parallel run length is not specified for a given end, joint, and side combination.

'endToEndPRL f_endToEndPRL

The constraint applies only if the parallel run length for end-to-end scenario is greater than this value.

'endToJointPRL f_endToJointPRL

The constraint applies only if the parallel run length for end-to-joint scenario is greater than this value.

'jointToEndPRL f_jointToEndPRL

The constraint applies only if the parallel run length for joint-to-end scenario is greater than this value.

'jointToJointPRL f_jointToJointPRL

The constraint applies only if the parallel run length for joint-to-joint scenario is greater than this value.

'sideToEndPRL f_sideToEndPRL

  

The constraint applies only if the parallel run length for side-to-end scenario is greater than this value.

'sideToJointPRL f_sideToJointPRL

The constraint applies only if the parallel run length for side-to-joint scenario is greater than this value.

'jointToSidePRL f_jointToSidePRL

  

The constraint applies only if the parallel run length for joint-to-side scenario is greater than this value.

'sideToSidePRL f_sideToSidePRL

The constraint applies only if the parallel run length for side-to-side scenario is greater than this value.

'sideLength f_sideLength

The length of the edges of a neighboring wire containing the end-of-line edge must be greater than or equal to this value in a side-to-end and side-to-joint scenario.

If 'sideLength is defined, then sideToEnd and sideToJoint must also be defined.

'sideExtension f_sideExtension

  

One side of a neighboring wire that satisfies 'sideLength is extended by this value in the direction beyond the end-of-line edge in a side-to-end and side-to-joint scenario. The other side has zero extension.

The 'sideLength and 'sideExtension parameters together define a search window.

'sideToSideLength f_sideToSideLength

The length of the edges of the wires containing the end-of-line edge must be greater than or equal to this value in a side-to-side scenario.

'sideToSideExtension f_sideToSideExtension

  

One side of a neighboring wire that satisfies 'sideToSideLength is extended by this value in the direction beyond the end-of-line edge in a side-to-side scenario. The other side has zero extension.

The 'sideToSideLength and 'sideToSideExtension parameters together define a search window. The constraint applies only if a side is present inside the search window.

'sideEdgeLength f_sideEdgeLength

  

The length of an edge containing a joint must be greater than this value for the edge to be considered a side.

Examples

Example 1: minOppSpanSpacing with width, eolWidth, jointLength, and exceptEdgeLength

The constraint applies if the following conditions are satisfied:

The constraint does not apply if the span length of the joint is greater than 0.08 and the parallel run length between two neighboring wires is less than 0.03.

Example 2: minOppSpanSpacing with width, eolWidth, jointLength, sideLength, and prl

The constraint applies if the following conditions are satisfied:


Return to top
 ⠀
X