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

allowedCutClass

spacingTables(
( allowedCutClass tx_cutLayer
 (( "width" nil nil "width" nil nil )
 ['minVoltage f_minVoltage]
 ['maxVoltage f_maxVoltage]
  'cutClass {f_width | (f_width f_length) | t_name}
  ['lowerLayer tx_lowerLayer
  ['lowerMask1 |'lowerMask2 |'lowerMask3]]
  ['upperLayer tx_upperLayer
  ['upperMask1 |'upperMask2 |'upperMask3]]
  ['horizontalLowerDir | 'verticalLowerDir]
  ['horizontalUpperDir | 'verticalUpperDir]
  ['insideLayers (tx_layer1 tx_layer2tx_layerN)
   ['insidePurposes (t_purpose1 t_purpose2t_purposeN)]
  |
   'outsideLayers (tx_layer1 tx_layer2tx_layerN)
   ['outsidePurposes (t_purpose1 t_purpose2t_purposeN)]
  ]
  x_default
 )
 (g_table)
)
) ;spacingTables

(Virtuoso Advanced Node for Layout Standard) Specifies whether a cut class on the given cut layer is allowed between shapes of certain widths. If lowerLayer and upperLayer are not specified, the viaDefs for the cut layer are used to determine the lower and upper layers.

If all cut classes are allowed on all wire width combinations, the allowedCutClass constraint need not be defined.

Values

tx_cutLayer

The cut layer on which the constraint is applied.

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

"width" nil nil "width" nil nil

This identifies the index for table.

g_table

  

The format of a table row is as follows:

(f_width1 f_width2) x_value

where, f_width1 is the width of the shape on the lower layer and f_width2 is the width of the shape on the upper layer. x_value is 0 if the specified cut class is disallowed for the corresponding shape width combination, and 1 if allowed.

Type: A 2-D table specifying floating-point width values and a 0 or 1 to indicate whether a cut class is disallowed or allowed, respectively

Parameters

'minVoltage f_minVoltage

(Virtuoso Advanced Node for Layout Only) The constraint applies only if the voltage on the shape is greater than or equal to this value.

'maxVoltage f_maxVoltage

(Virtuoso Advanced Node for Layout Only) The constraint applies only if the voltage on the shape is less than 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

'lowerLayer tx_lowerLayer

The metal layer below the cut layer. If not specified, the default stack is used to determine the lower metal layer.

'lowerMask1 |'lowerMask2 |'lowerMask3

(Virtuoso Layout Suite EXL and higher tiers) The constraint applies only for the specified color mask shapes of the lower metal layer.

'upperLayer tx_upperLayer

The metal layer above the cut layer. If not specified, the default stack is used to determine the upper metal layer.

'upperMask1 |'upperMask2 |'upperMask3

(Virtuoso Layout Suite EXL and higher tiers) The constraint applies only for the specified color mask shapes of the upper metal layer.

'horizontalLowerDir | 'verticalLowerDir

The direction of the shape on the lower layer. The direction is determined by the wider dimension of the shape.

  • 'horizontalLowerDir: The constraint applies if the shape is horizontal.
  • 'verticalLowerDir: The constraint applies if the shape is vertical.

Type: Boolean

'horizontalUpperDir  | 'verticalUpperDir

The direction of the shape on the upper layer. The direction is determined by the wider dimension of the shape.

  • 'horizontalUpperDir: The constraint applies if the shape is horizontal.
  • 'verticalUpperDir: The constraint applies if the shape is vertical.

Type: Boolean

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

Determines whether 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)

x_default

This determines whether cuts are allowed (1) or disallowed (0) by default.

  • Set the default table value to 0 and specify the wire width combinations that are allowed with a table value of 1.
  • Set the default table value to 1 and specify the wire width combinations that are not allowed with a table value of 0.

Examples

Example 1: allowedCutClass with cutClass, lowerLayer, upperLayer, horizontalLowerDir, and horizontalUpperDir

A 0.2x0.4 cut class is allowed between Metal1 and Metal2 wires if the following conditions are met:

spacingTables(
    ( allowedCutClass "Via2"
     (( "width" nil nil "width" nil nil )
'cutClass (0.2 0.4)
'lowerLayer "Metal1"
'upperLayer "Metal2"
'horizontalLowerDir
'horizontalUpperDir
)
(
(0.0 0.0) 0
(0.1 0.1) 1
)
)
) ;spacingTables

Example 2: allowedCutClass with cutClass, lowerLayer, and upperLayer

Example 3: allowedCutClass with minVoltage and maxVoltage

When voltage is greater than or equal to 0.1 and less than 0.5, the first constraint applies. When voltage is greater than or equal to 0.5 and less than 0.9, the second constraint applies.

( "allowedCutClassCG"  nil    nil    'and
    spacingTables(
  (allowedCutClass "Via1" 
(("width" nil nil "width" nil nil)
'minVoltage 0.1
'maxVoltage 0.5
'cutClass (0.1 0.2)
'lowerLayer "Metal1"
'upperLayer "Metal2"
1 )
(
(0 0.1) 0 )
)
)
(allowedCutClass "Via1"
(("width" nil nil "width" nil nil)
'minVoltage 0.5
'maxVoltage 0.9
'cutClass (0.08 0.16)
'lowerLayer "Metal1"
'upperLayer "Metal2"
1 )
(
(0 0.1) 0 )
)
)
);spacingTables
)

Return to top
 ⠀
X