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

minEndOfLineSpacing

spacings(
( minEndOfLineSpacing tx_layer
     ['horizontal | 'vertical]
     'width f_width ['oppWidth f_oppWidth]
     'distance f_eolWithin ['negativePRL]
     ['paraEdgeWithin f_parWithin 'paraEdgeSpace f_parSpace
          ['paraEdgeCount x_edgeCount]
          ['subtractWidth] 
          ['paraMinLength f_parMinLength]
          ['sameMetal | 'sameNet]
          ['nonEolCornerOnly]
          ['prl f_prl]
          ['parallelSameMask]
     ]
     ['cutEolSpace f_cutEolSpace
          ['cutClass {f_width | (f_width f_length) | t_name}]
          ['cutEolAbove | 'cutEolBelow]
          ['enclosureEndWidth g_enclosureEndWidth
               ['enclosureEndWithin g_enclosureEndWithin]
          ]
     ]
     ['widthRanges (g_ranges)]
     ['extendBy f_extendBy]
     ['sizeBy f_sizeBy]
     ['sameMask | 'diffMask]
     ['fillConcaveCorner f_fill]
     ['exactEolWidth]
     ['exceptExactEolWidth (f_exactWidth f_otherWidth)]
     ['wrongDirSpace f_wrongDirSpace]
     ['wrongDirWithin f_wrongDirWithin]
     ['endToEndSpace f_endToEndSpace
          ['otherEndWidth f_otherEndWidth]
          ['oneCutSpace f_oneCutSpace]
  ['twoCutSpace f_twoCutSpace]
          ['extension {f_extension | (f_extension f_wrongDirExtension)}]
  ['bothWires]['equalRectWidth]
     ]
     ['maxLength f_maxLength | 'minLength f_minLength ['twoSides]]
               ['encloseDistance f_encloseDist 'cutToMetalSpace f_cutToMetalSpace
          ['above | 'below] 
          ['allCuts]
     ]
     ['exceptExactAligned]
     ['insideLayers (tx_layer1 tx_layer2tx_layerN)
      ['insidePurposes (t_purpose1 t_purpose2t_purposeN)]
          | 
      'outsideLayers (tx_layer1 tx_layer2tx_layerN)
      ['outsidePurposes (t_purpose1 t_purpose2t_purposeN)]
     ]
     f_eolSpace
)
) ;spacings

This constraint can also be applied using the following legacy syntax:

spacings(
( minEndOfLineSpacing tx_layer
     (f_width f_eolWithin [f_parWithin [f_parSpace [x_edgeCount]]]
     f_eolSpace)
)
) ;spacings

Specifies the minimum edge-to-edge spacing between an end-of-line shape and neighboring parallel shapes that are within the specified region of the end-of-line shape on a layer. The number of supported neighboring parallel shapes is zero, one, or two. Typically, the spacing allowed using this constraint (eolSpace) is slightly larger than the minimum allowed spacing on the specified layer. However, the minimum allowed spacing must be greater than the lateral verification distance (eolWithin) for the spacing check.

If two face-to-face edges have width less than eolWidth and their parallel run length is greater than zero, end-to-end spacing (endToEndSpace) applies instead of eolSpace.

The following figure illustrates the two scenarios explained above:

The following figures illustrate how the constraint applies when either one or two parallel edges are present inside the search window defined by parSpace and parWithin (parallel-edge check). If the number of parallel edges specified is two, they must be present on either side of the end-of-line shape. Edge-to-edge spacing must be greater than or equal to eolSpace.

The following figures illustrate two more scenarios in which edge-to-edge spacing must be greater than or equal to eolSpace.

If the two shapes are perpendicular to each other, the lateral verification distance applied in the right and wrong direction is eolWithin and wrongDirWithin, respectively, as shown below.

In the following figures, you can see the right-direction and wrong-direction extensions applied to two shapes that are face-to-face. The spacing requirement varies based on the number of vias present.

Values

tx_layer

The first layer on which the constraint is applied.

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

f_eolSpace

The minimum required spacing between an end-of-line edge and its neighboring geometry.

Parameters

'horizontal | 'vertical

  

(Virtuoso Advanced Node for Layout Standard) The direction in which the constraint applies. If direction is not specified, the constraint applies to all end-of-line edges.

  • 'horizontal: The constraint applies only to vertical end-of-line edges.
  • 'vertical: The constraint applies only to horizontal end-of-line edges.

Type: Boolean

'width f_eolWidth

  

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

'oppWidth f_oppWidth

  

The constraint applies only if a neighboring shape beyond the end-of-line edge has perpendicular span less than this value.

'distance f_eolWithin

  

The end-of-line edge is extended on both sides by this value to define an exclusion region. A violation occurs if the lateral distance between an end-of-line edge and a neighboring shape is less than this value (lateral distance for applying the spacing check).

'negativePRL

(Virtuoso Advanced Node for Layout Only) The constraint applies only if a neighboring shape has a parallel run length of less than zero with the shape having an end-of-line edge measured in the routing direction.

'paraEdgeWithin f_parWithin

  

The constraint applies only if the distance of a neighboring parallel shape from the end-of-line edge, measured along the end-of-line shape, is less than this value (parWithin).

'paraEdgeSpace f_parSpace

  

The constraint applies only if the lateral distance between an end-of-line shape and a neighboring parallel shape is less than this value (parSpace).

'paraEdgeCount x_edgeCount

  

The constraint applies only if the number of neighboring parallel shapes that satisfy both 'paraEdgeWithin and 'paraEdgeSpace is equal to this value.

Supported values are 0, 1, and 2. If this value is equal to 2, the two neighboring parallel edges must be on opposite sides of the end-of-line shape.

'subtractWidth

The constraint applies only if the lateral distance between an end-of-line shape and a neighboring parallel shape is less than the value obtained after subtracting eolWidth from parSpace.

Type: Boolean

'paraMinLength f_parMinLength

  

The length of the end-of-line side must be greater than this value for a parallel edge on that side to be counted while applying the parallel-edge check.

'sameNet | 'sameMetal

  

(Virtuoso Advanced Node for Layout Standard) The connectivity type. If connectivity type is not specified, the constraint applies to any connectivity type, including any two shapes on the same layer with no common metal or net.

  • 'sameNet: The constraint applies only if the end-of-line shape and the neighboring shapes are on the same net.
  • 'sameMetal: The constraint applies only if the neighboring edges on the side and perpendicular to the end-of-line edge are part of a contiguous same-metal shape.
The constraint does not apply if the neighboring edge on the side extends beyond the search window.

Type: Boolean

'nonEolCornerOnly

The constraint does not apply if a corner inside the search window is formed by a non-end-of-line edge.

Type: Boolean

'prl f_prl

The constraint applies only if the parallel run length between an end-of-line side and a neighboring edge is greater than this value.

'parallelSameMask

(Virtuoso Advanced Node for Layout Only) The constraint applies only if the neighboring parallel shape found inside the search window has the same mask as that applied to the end-of-line edge. A neighboring parallel shape with a different mask is ignored.

Type: Boolean

'cutEolSpace f_cutEolSpace

The spacing between an end-of-line edge that touches a via cut on a cut layer above or below the metal layer and a non-end-of-line edge perpendicular to it must be greater than or equal to this value.

'cutClass {f_width | (f_width f_length) | t_name}

  

The cut class to which the constraint applies, specified by width, by width and length, or by name (as defined in a cutClasses constraint).

  • f_width: Width
  • f_length: Length
  • t_name: Name of the cut class

'cutEolAbove | 'cutEolBelow

The cutEolSpace spacing is applied only if the metal end-of-line edge touches a shape on a cut layer above or below the metal layer, depending on the parameter specified.

Type: Boolean

'enclosureEndWidth f_enclosureEndWidth

The constraint applies only if the width of the end-of-line edge touching a via cut is less than this value.

'enclosureEndWithin f_enclosureEndWithin

The end-of-line edge intersecting a via cut is extended on both sides by this value, instead of eolWithin, to define the exclusion region.

'widthRanges (g_ranges)

(Virtuoso Advanced Node for Layout Standard) The constraint applies only if the end-of-line width is in the specified range.

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

'extendBy f_extendBy

(Virtuoso Advanced Node for Layout Standard) An extension equal to this value is applied to an end-of-line edge in the projection direction before the constraint is applied. The extension is applied to both shapes, and not just to the end-of-line shape.

'sizeBy f_sizeBy

(Virtuoso Advanced Node for Layout Standard) An end-of-line edge is extended on both sides by this value before the constraint is applied.

'sameMask | 'diffMask

  

(Virtuoso Advanced Node for Layout Standard) The mask type.

  • 'sameMask: The constraint applies only between shapes on the same mask.
  • 'diffMask: The constraint applies only between shapes on different masks.

Type: Boolean

'fillConcaveCorner f_fill

(Virtuoso Advanced Node for Layout Only) A concave corner that is in the neighborhood of an end-of-line edge is filled with a triangular shape whose sides measured along the concave edges are equal to this value before the spacing between the concave corner and the end-of-line edge is measured.

'exactEolWidth

(Virtuoso Advanced Node for Layout Standard) The constraint applies only if the end-of-line width is equal to this value.

Type: Boolean

'exceptExactEolWidth (f_exactWidth f_otherWidth)

(Virtuoso Advanced Node for Layout Only) The constraint does not apply if the end-of-line width is equal to exactWidth and the width of the neighboring edge is less than or equal to otherWidth.

'wrongDirSpace f_wrongDirSpace

(Virtuoso Advanced Node for Layout Standard) The edge-to-edge spacing measured in the wrong direction (non-preferred routing direction) must be greater than or equal to this value.

'wrongDirWithin f_wrongDirWithin

An end-of-line edge of a shape in the non-preferred routing direction is extended on both sides by this value, instead of eolWithin, to form the exclusion region. When this parameter is specified, the eolWithin value applies only to the end-of-line edges of shapes in the preferred routing direction.

'endtoEndSpace f_endToEndSpace

  

The spacing between two end-of-line edges that face each other and have parallel run length greater than zero must be greater than or equal to this value.

'otherEndWidth f_otherEndWidth

The constraint applies only if a shape facing an end-of-line edge has width less than this value. This parameter can be specified with or without endtoEndSpace parameter. If it is specified with endtoEndSpace parameter with the value greater than minEndOfLineSpacing constraint value, the DRD checker checks the width of other end of the shapes in the region created between minEndOfLineSpacing and endToEndSpace. If the endToEndSpace parameter is not specified, otherEndWidth is checked verifying the region created for minEndOfLineSpacing constraint.

'oneCutSpace f_oneCutSpace

The spacing between two end-of-line edges, one of which touches a via cut, must be greater than or equal to this value.

'twoCutSpace f_twoCutSpace

The spacing between two end-of-line edges, both of which touch a via cut each, must be greater than or equal to this value.

'extension {f_extension | (f_extension f_wrongDirExtension)}

  • f_extension: The extension applied to both ends of an end-of-line edge of a shape routed in the preferred direction. For example, if the preferred routing direction is vertical, an end-of-line shape that is routed vertically has a horizontal end-of-line edge and horizontal extensions (right-direction extensions).
  • f_wrongDirExtension: The extension applied to both ends of an end-of-line edge of a shape routed in the non-preferred direction. For example, if the preferred routing direction is vertical, an end-of-line shape that is routed horizontally has a vertical end-of-line edge and vertical extensions (wrong-direction extensions).

'maxLength f_maxLength

The constraint does not apply if both sides of the end-of-line shape are greater than this value in length.

'minLength f_minLength

The constraint does not apply if both sides of the end-of-line shape are less than this value in length.

'twoSides

The constraint applies only if both sides of the end-of-line shape are greater than or equal to minLength.

Type: Boolean

'bothWires

(Virtuoso Advanced Node for Layout Standard) The spacing between two end-of-line edges must be greater than or equal to endToEndSpace if the length of both the shapes is greater than or equal to minLength or less than or equal to maxLength, depending on which of the two parameters, 'minLength or 'maxLength, is specified.

Type: Boolean

'equalRectWidth

The constraint applies only if the length of the end-of-line edge is equal to the width of the shape. If multiple minEndOfLineSpacing constraints are defined on a layer and 'equalRectWidth is specified with even one of them, then 'equalRectWidth must be specified with all of them.

Type: Boolean

'encloseDistance f_encloseDistance

  

The constraint applies only if there is a via cut above or below the metal layer and the distance between the via-cut edge and the end-of-line edge is less than this value.

'cutToMetalSpace f_cutToMetalSpace

The constraint applies only if the distance between the via-cut edge and the edge facing the end-of-line edge is less than this value.

'above | 'below

The constraint applies to a shape on a cut layer either above or below the metal layer. If this parameter is not specified, the constraint applies to shapes on cut layers both above and below the metal layer.

Type: Boolean

'allCuts

The constraint applies to all cuts that connect a same-metal shape, both above and below the metal layer. Otherwise, only one such via cut needs to satisfy the constraint.

Type: Boolean

'exceptExactAligned

(Virtuoso Advanced Node for Layout Standard) The constraint applies only if the shapes are not exactly aligned.

Type: Boolean

'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)

Examples

Example 1: minEndOfLineSpacing with widthRanges and exactEolWidth

The end-of-line spacing between Metal1 wires must be at least 0.09 if the end-of-line width is greater than or equal to 0.05 and less than 0.1, and at least 0.07 if the end-of-width is equal to 0.1.

Example 2: minEndOfLineSpacing with oppWidth and minLength

The end-of-line spacing between Metal1 wires must be at least 0.12 when the minimum length of an end-of-line side is less than 0.06 and the width of the wire perpendicular to the end-of-line edge is 0.08. The lateral verification distance for the spacing check is 0.05.

Example 3: minEndOfLineSpacing with paraEdgeWithin, paraEdgeSpace, and subtractWidth

The end-of-line spacing between Metal1 wires must be at least 0.15 if the following conditions are met:

Example 4: minEndOfLineSpacing with endToEndSpace, minLength, and twoSides

The end-of-line spacing between Metal1 wires must be at least 0.1 and the end-to-end spacing must be at least 0.12 if the length of both end-of-line sides is greater than or equal to is 0.11.

Example 5: minEndOfLineSpacing with widthRanges, extendBy, and sizeBy

The end-of-line spacing must be at least 0.3 when measured in the vertical direction if the end-of-line edge has width less than or equal to 0.3 or equal to 0.6 or to 0.8. The spacing is measured after applying an extension of 0.2 to the end-of-line edge in the projection direction (extendBy) and 0.1 on both sides of the end-of-line edge (sizeBy).

Example 6: minEndOfLineSpacing with widthRanges, extendBy, sizeBy, and endToEndSpace

The end-of-line spacing must be less than 0.3 and end-to-end spacing must be equal to 0.3 if the end-of-line edge has width less than or equal to 0.3 or equal to 0.6 or to 0.8. The spacing is measured after applying an extension of 0.2 to the end-of-line edge in the projection direction (extendBy) and 0.1 on both sides of the end-of-line edge (sizeBy).

Example 7: minEndOfLineSpacing with paraEdgeWithin, paraEdgeSpace, and sameMetal

The end-of-line spacing between Metal1 wires must be at least 0.13 if a parallel edge present inside the search window is part of a contiguous same-metal shape. The search window is defined by eolWithin = 0.05, parWithin = 0.07, and parSpace = 0.12.

Example 8: minEndOfLineSpacing with diffMask, endToEndSpace, and exceptExactAligned

The end-of-line spacing must be at least 0.11 and end-to-end spacing must be at least 0.13 between non-exactly-aligned wires on different masks if the end-of-line edge has width less than 0.08. The lateral verification distance for the spacing check is 0.02.

Example 9: minEndOfLineSpacing with fillConcaveCorner

A concave corner present in the neighborhood of an end-of-line edge must be filled by a triangle whose sides along the concave edges are equal to 0.04 before end-of-line spacing of 0.06 is applied. The end-of-line width of the wire must be less than 0.1.

Example 10: minEndOfLineSpacing with exceptExactEolWidth

The end-of-line spacing between Metal1 wires must be at least 0.06 except if the end-of-line width of one shape is equal to 0.07 and the end-of-line width of the other shape is less than 0.05.

Example 11: minEndOfLineSpacing with paraEdgeWithin, paraEdgeSpace, and nonEolCornerOnly

The end-of-line spacing between Metal1 wires must be at least 0.13 if the following conditions are met:

Example 12: minEndOfLineSpacing with equalRectWidth

The end-of-line spacing between Metal1 wires must be at least 0.15 if the end-of-line width is equal to the width of the wire. The end-of-line width must be less than 0.25 and the lateral verification distance for the spacing check is 0.10.

Example 13: minEndOfLineSpacing with cutEolSpace, wrongDirWithin, and endToEndSpace

Example 14: minEndOfLineSpacing with horizontal

The end-of-line spacing between Metal1 wires must be at least 0.05 when measured in the horizontal direction if the following conditions are met:

Example 15: minEndOfLineSpacing with paraEdgeWithin, paraEdgeSpace, paraMinLength, encloseDistance, and cutToMetalSpace

The end-of-line spacing between Metal1 wires must be at least 0.15 if the following conditions are met:

Example 16: minEndOfLineSpacing with width, eolWithin, parWithin, parSpace, and edgeCount

The end-of-line spacing, or eolSpace, between Metal1 wires must be at least 0.43 if:

spacings(     ( minEndOfLineSpacing "Metal1"      (0.11 0.12 0.13 0.14 15 0.43 )
) ;spacings

Example 17: minEndOfLineSpacing with distance and negativePRL

The end-of-line spacing must be at least 0.023 with other parameters as indicated. The constraint applies only if the parallel run length measured in the routing direction is negative.


Return to top
 ⠀
X