Product Documentation
Virtuoso Technology Data ASCII Files Reference
Product Version IC23.1, June 2023

5


Technology File Layer Attributes

The layerRules section of the technology file specifies attributes for user-defined layers.

Do not redefine system-reserved layers or purposes. The software discards any such customization.

This chapter contains the following topics:

layerRules

layerRules(
tx_recognitionLayer
) ;layerRules

Description

Contains layer rules. All subsections specifying layer rules must be enclosed within the parentheses of this section.

Layer attributes must be assigned only to user-defined layers. Layer attributes if applied to system-reserved layers are ignored.

The layerOrder values should be specified in the order of the process stack, and not in the order in which layers are manufactured. For example, even if a cut layer is manufactured after its top metal layer (for example, if the process uses self-aligned vias), the layerOrder number of the cut layer should be less than that of the metal layer.

Arguments

tx_recognitonLayer

The layers that are not physical. This could be a layer that indicates the active region of a device to accurately compute the value of a drawn capacitor or resistor.
Valid values: Layer name or layer number

Related Topics

analysisAttributeLocks

layerRules(
analysisAttributeLocks(
 [lockAddLayers t/nil]
 [lockValuesChange t/nil]
 ……
 ;analysisAttributeLocks
) ;layerRules

Description

Specifies analysis attribute locks on layers.

Arguments

lockAddLayers t/nil

The default value of this boolean attribute is nil. The dumper dumps this attribute only if it is set to t.

lockValuesChange t/nil

The default value of this boolean attribute is nil. The dumper dumps this attribute only if it is set to t.

Example

Related Topics

equivalentLayers

layerRules(
equivalentLayers(
 ( lt_layer … )
 …
) ;equivalentLayers
) ;layerRules

Description

Specifies layers that are physically and electrically equivalent or that represent the same type of material. It can be used to define layers that connect by overlap rather than through a via.

Arguments

lt_layer

A list of layers.
Valid values: The layer name or a list specifying the layer name and purpose

Example

equivalentLayers(
    ( "metal1_supply" "metal1" )
)

Related Topics

incompatibleLayers

layerRules(
incompatibleLayers(
 ( lt_layer ( lt_layer1 lt_layer2 … ) … )
 …
) ;incompatibleLayers
) ;layerRules

Description

Lists layers, both physical and derived, incompatible with the specified physical layer. This allows exclusion of layers that do not belong to the technology graph of a technology file. By specifying a list of layer names from other incompatible versions of the process layer stack, a warning is displayed as soon as any of these layers is detected in a technology graph.

Arguments

lt_layer

A physical layer that is incompatible with the layers specified in the list that follows. The layer must be defined in the techLayers subsection.
Valid values: The layer name or the layer number

lt_layer1 lt_layer2

The derived or physical layers that are incompatible with the specified layer, and, therefore, must be excluded from the specified technology database.

Example

incompatibleLayers(
( "metal1" ( "metal1_mid" "metal1_top") )
) ;incompatibleLayers

Specifies that metal1 is incompatible with layers metal1_mid and metal1_top. As a result, these layers are not allowed in a technology graph that contains the technology database in which the incompatibleLayers statement is specified. This allows you to model two versions of the process stack by using two technology graphs. Any accidental mixing of these two technology graphs is detected by the software.

Related Topics

functions

layerRules(
functions(
 ( t_layer | x_number t_function [ x_layerOrder ] 
  ['trims ( (t_physicalLayer t_derivedLayer) … )]
 )
 …
) ;functions
) ;layerRules

Description

Defines layer functions (materials) and optionally assigns to layers a number that signifies the layer order. Layers assigned the function other or unknown and a layer order cannot appear in any other section of the technology file.

other and unknown are two different ASCII technology filenames for the same material.

Multiple layers can be assigned the same layer order. Layers without an explicitly assigned layer order take the default value 0xffffffffu. The specified order is used as a proxy for the process stack by some applications such as lefout. Therefore, layers in a technology file should be ordered by the given order number, from bottom to top.

The layerRules section in the technology file for Virtuoso Space-based Router is slightly more constrained. For example, it defines a unique layer order for each layer function. For more information, see the Virtuoso Space-based Router User Guide.

Related Topics

Arguments

t_layer

The layer name.
Valid values: The layer name

x_number

The layer number.
Valid values: The layer number

t_function

The layer function.
Valid values: buriedN, buriedP, cut, deepNimplant, deepNwell, deepPimplant, deepPwell, diff, li, drill, diestack, metal, mimcap, ndiff, nimplant, nplus, nwell, other, padmetal, passivationCut, pdiff, pimplant, pipcap, poly, pplus, pseudoCut, pseudoMetal, pseudoTrim, pwell, recognition, specialCut, stackedMimcap, trim, trimpoly, tsv, tsvMetal, waveguide, wirebond.

pplus and pimplant are two different ASCII technology filenames for the same material. Similarly, nplus and nimplant are also two different ASCII technology filenames for the same material.
You need the Virtuoso_Photonics_Option license to use the waveguide functionality. For information about obtaining the required license, contact your local Cadence representative.

x_layerOrder

The order/sequence number for the layer.
Valid values: Any integer

t_physicalLayer

The physical layer that is being trimmed by a trim layer.

t_derivedLayer

The derived layer that represents the effective layer after the trim is performed.

Example 1

functions(
    ( NWELL      "nwell"   1  )
    ( PWELL      "pwell"   2  )
    ( NDIFF      "ndiff"   3  )
    ( NPLUS      "nplus"   4  )
    ( PPLUS      "pplus"   5  )
    ( capMetal   "mimcap"  20 )
    ( throughSi  "tsv"     40 )
) ;functions

Defines layer functions and assigns a layer order to the layers.

Example 2

layerDefinitions( 
    techLayers(
     ;( LayerName  Layer#  Abbreviation )
;( --------- ------ ------------ )
( Poly 20 PO )
( CutPoly 21 CP )
) ;techLayers
 techDerivedLayers(
;( DerivedLayerName # composition )
;( ---------------- ------ ------------ )
( Gate 1000 ( Poly 'and Active ) )
( PolyInterConn 1002 ( Poly 'not CutPoly ) )
) ;techDerivedLayers
) ;layerDefinitions
layerRules(
    functions(
     ;( layer     function [maskNumber])
;( ----- -------- ------------)
( Poly "poly" 20 )
( CutPoly "trim" 21 'trims ( (Poly PolyInterConn) ) )
) ;functions
) ;layerRules

Defines the CutPoly layer by using the trim material type. The CutPoly layer removes material from the Poly layer. The resulting derived layer is called PolyInterConn. This is the effective Poly layer.

Example 3

techDerivedLayers(
    ( m1mask2Locked  1011  ( Metal1         'color  "mask2Color" ) 'locked )
    ( m1mask2Cut     1031  ( m1mask2Locked  'not    TM ) )
) ;techDerivedLayers
functions(
    ( Metal1  "metal"  100 )
    ( TM      "trim"   101  'trims ( (Metal1  m1mask2Cut) ) )
) ;functions

Defines an uncolored trim layer, TM, that cuts only the locked maskColor2 shapes on Metal1.

Example 4

techDerivedLayers(
    ( m1mask1        1011     ( Metal1   'color  mask1Color) )
    ( m1mask2        1012     ( Metal1   'color  mask2Color) )
    ( TMmask1        1021     ( TM       'color  mask1Color) )
    ( TMmask2        1022     ( TM       'color  mask2Color) )
    ( m1mask1Cut     1031     ( m1mask1  'not    TMmask1   ) )
    ( m1mask2Cut     1032     ( m1mask2  'not    TMmask2   ) )
) ;techDerivedLayers
functions(
    ( Metal1  "metal"  100 )
    ( TM      "trim"   101  'trims ( (Metal1 m1mask1Cut) (Metal1 m1mask2Cut) ) )
) ;functions

Defines a colored trim layer, TM. Trim shapes on TM with mask1Color cut mask1Color shapes on Metal1 and trim shapes on TM with mask2Color cut mask2Color shapes on Metal1.

Related Topics

backsideLayers

layerRules(
backsideLayers(
 tx_layer …
) ;backsideLayers
) ;layerRules

Description

Specifies the layers that are used on the backside of a wafer. These layers are used to form the bottom layer of through-silicon-vias (TSV).

Arguments

tx_layer

The layers that are used on the backside of a wafer.
Valid values: The layer name or the layer number

Example

layerRules(
    backsideLayers(
     MB
) ;backsideLayers
) ;layerRules

Defines layer MB as a backside metal layer.

Related Topics

analysisAttributes

layerRules(
analysisAttributes(
 ( tx_layer 
  ['materialName t_materialName]
  ['thickness f_thickness]
  ['conductivity f_conductivity]
  ['permittivity f_permittivity]
  ['lossTangent f_lossTangent]
 )
) ;analysisAttributes
) ;layerRules

Description

Specifies the names and related attributes of the materials used to manufacture a layer.

Arguments

tx_layer

The layer for which the attributes are specified.
Valid values: The layer name or the layer number

t_materialName

The name of the material.

'thickness f_thickness

The thickness of the layer in microns.

'conductivity f_conductivity

The conductivity of the layer in siemens/meter.

'permittivity f_permittivity

The dielectric constant of the layer.

'lossTangent f_lossTangent

The loss tangent of the layer.

Example

layerRules(
    analysisAttributes(
     ( M1  'materialName      "MX"      
'thickness 23
)
( M2 'materialName "MX"
'conductivity 6e7
'thickness 23
)
) ;analysisAttributes
) ;layerRules

Defines material attributes for two layers:

Related Topics

mfgResolutions

layerRules(
mfgResolutions(
 ( tx_layer g_value )
 …
) ;mfgResolutions

) ;layerRules

Description

Specifies that grid snapping for the specified layer must be a multiple of the specified value.

This constraint (layer manufacturing grid resolution) can be applied to any layer. If it is not specified for a layer, the overall mfgGridResolution constraint applies.

Arguments

tx_layer

The layer on which the constraint is applied.
Valid values: The layer name or the layer number

g_value

The manufacturing grid resolution for the layer.
Note: We recommend that the layer manufacturing resolution be equal to or greater than the manufacturing grid resolution.

Example

mfgResolution(("metal1" 0.001000)("poly1" 0.000500))

Sets the layer manufacturing grid resolution to 0.001000 for layer metal1 and to 0.00500 for layer poly1.

Related Topics

routingDirections

layerRules(
routingDirections(
 ( tx_layer g_direction )
 …
) ;routingDirections
) ;layerRules

Description

Sets the preferred routing direction for each specified layer.

The direction specified by this layer attribute is the preferred routing direction for the layer. The possible routing directions are illustrated in the figure below:

Arguments

tx_layer

The layer on which the attribute is to be applied.
Valid values: The layer name or the layer number

g_direction

The routing direction for the layer.
Valid values: vertical, horizontal, leftDiag, rightDiag, none, notApplicable

Notes:

Specify none for routing layers to which you do not want to assign a preferred routing direction or for diffusion and poly layers.

Specify notApplicable to non-routing layers such as cut layers.

Example

layerRules(
    routingDirections(
     ( "metal1" "horizontal")
( "metal2" "vertical")
( "diff" "none")
( "via1" "notApplicable")
)
) ;layerRules

Sets the routing direction for metal1 to horizontal, for metal2 to vertical, for diff to none, and for via1 to notApplicable.

Related Topics

snapPatternDefs

layerRules(
snapPatternDefs(
 (t_name (tx_layer tx_purpose)
  'step g_step
  'stepDirection {"horizontal" | "vertical"}
  ['type {"local" | "global"} ] 
  ['offset g_offset]
  ['snappingLayers (
   ('layer tx_snapLayer …
   'enclosures f_enclosure …
   ['purposes tx_snapPurpose …] 
   ['snappingMode {"multiTrackCenter" | "singleTrackCenter"}]
   ['exceptOverlap l_overlapLPPs]
   ) … )
  ['trackWidth g_trackWidth]
  ['trackGroups ( ('count n_trackCount
       'space x_groupSpace
      ) … )
  ]
 )
) ;snapPatternDefs
) ;layerRules

Description

(Virtuoso Advanced Node for Layout Standard) Specifies the grid information stored in the technology database for a specific layer-purpose pair (LPP). Each snap pattern definition must have a unique name and be associated with a unique LPP. Snap pattern definitions can be local or global.

For a quick overview of snap pattern definitions, see Snap Pattern Definition in the TechFile.

A shape drawn on an LPP with a snap pattern definition is referred to as a snap pattern shape.

The following figures illustrate the various attributes of a snap pattern:

Activating a Global Snap Pattern Definition

A global snap pattern definition applies to the entire cellview. It can be activated through a:

Snap Pattern Shape

A global snap pattern definition is activated when a snap pattern shape is drawn on an LPP with a global snap pattern definition. In the figure below, the snap pattern shape is shown in orange. The grid offset, indicated by the arrow, is relative to the bottom edge (for vertical direction) or the left edge (for horizontal direction) of the snap pattern shape.

Global snapPatternDef

When the snap pattern definition is enabled through the snapGridHorizontal or snapGridVertical constraint, the snap pattern shape is not necessarily required. If a snap boundary exists and no shape is drawn on a global grid LPP, the grid is anchored to the snap boundary. The offset is relative to the lower-left edge of the snap boundary. The grid extends into infinity on all sides. If the snap boundary does not exist and no shape is drawn on a global grid LPP, the grid is anchored to the PRBoundary, shown in purple in the following figure.

For more information about how to control the anchoring of global snap pattern definitions, see Working with the Track Pattern Assistant in Virtuoso® Width Spacing Patterns User Guide.

If neither a snap boundary nor a PRBoundary exists and no shape is drawn on a global grid LPP, the grid is anchored to the origin axis (X-axis for the vertical direction, Y-axis for the horizontal direction), as shown in the following figure:

Track Groups

(Virtuoso Advanced Node for Layout Only) This feature lets you create track groups with variable spacing. Additionally, each track group in the snap pattern definition can contain a different number of tracks. For example, in the figure below, the bottom track group has three tracks and the top track group has four tracks. The track enclosure is set to half the track width, resulting in snap pattern shapes (in green) that enclose the track width.

This example also shows how track groups are positioned. The distance from the reference edge to the centerline of the first track is equal to the snap pattern definition offset, and each group has its own spacing that specifies the distance between the last track in the current group and the first track in the next group.

Within each group, the 'step attribute defines track-to-track spacing, and the 'trackWidth attribute defines the width of each track. Snap pattern shapes enclose tracks by using the 'enclosures attribute.

Track groups defined in a snap pattern definition are repeated to fill snap pattern shapes of arbitrary sizes. The period in this case is defined as the total height of one repetition of the full snap pattern definition and is calculated as follows:

Track group height, GT = groupSpace + (trackCount - 1) * step

Period = Sum of all GT

For example, in the figure below, you can see two repetitions of a snap pattern with two track groups. The spacing of the last track group is used when a snap pattern is tall enough to accommodate a repetition of the pattern, that is, the spacing of the last track group is the distance from the last track in the last track group to the first track in the first track group.

Arguments

t_name

The name of the snap pattern definition. The snap pattern definition must have a unique name.

tx_layer

The layer to which the snap pattern definition applies.

Valid values: The layer name or the layer number

tx_purpose

The purpose to which this snap pattern definition applies. The parent purpose of tx_purpose must be annotation.

Valid values: The purpose name or the purpose number

'step

The spacing between snap pattern tracks. This value must be greater than zero.

'stepDirection

The direction in which snap pattern tracks are created. When the direction is vertical, track spacing is applied from bottom to top. When the direction is horizontal, track spacing is applied from left to right.

'type

The snap pattern definition type.

  • local: A local snap pattern definition is active only if a corresponding snap pattern shape is drawn in the layout.
  • global: It applies to the entire cellview and can be activated in two different ways:
    • By drawing a corresponding snap pattern shape
    • By enabling it through a constraint

When snapping a shape to a snap pattern grid, snap pattern shapes whose snap pattern definition is of type local have higher priority than those of type global. The default is local.

'offset

The distance of the first snap pattern track from the bottom (for the vertical direction) or the left (for horizontal direction) edge of the bbox shape. The offset must be greater than or equal to zero.

'snappingLayers

A list of layers, purposes, and enclosures that determine the shapes that snap to the snap pattern.

'layer

A list of layers. Shapes on these layers snap to the tracks of this snap pattern.

The list is specified in this format:

'layer ( tx_snapLayer … )

'enclosures

A list of enclosures of a snapping shape beyond a grid line in the snap pattern direction. If vias and top-level shapes are present on the snapping layer (and snapping purpose, if used), they are snapped to the snap pattern grid by using the 'enclosures value.

The list is specified in this format:

'enclosures ( f_enclosure … )

'purposes

A list of purposes. Shapes on 'snappingLayers with a specific purpose snap to a snap pattern. 'layer applies to all purposes if 'purposes is not specified.

The list is specified in this format:

’purposes ( tx_snapPurpose … )

'snappingMode

The snapping mode. The following values are supported:

  • multiTrackCenter: Default value used when the attribute is not specified. It indicates if a shape can be centered on any number of tracks in a way that when one of the 'enclosure values is met on both sides, it is snapped to the grid. When a shape is created, it is assumed that all edges will be on the grid and the first and second points always snap to the grid.
If the combined snapping layer BBox inside an instance can be centered in a way that the 'enclosure value is met on both sides, then the instance snaps to the grid using that snapping layer. If no snapping layer BBox inside an instance snaps to the grid, then the instance is not snapped.
  • singleTrackCenter: Indicates if a shape can be centered on a single track in a way that when the 'enclosure value is met on both sides, it is snapped to the grid. When a shape is created, it is not assumed that all edges will be on the grid. Only a shape with dimension that is twice the 'enclosure value would snap to the grid.
In this case, the combined snapping layer BBox is not considered. If the device contains any shape meeting the dimension rule, the shape is snapped even if the combined layer BBox does not meet the enclosure on both sides.

'exceptOverlap l_overlapLPPs

A list of layer-purpose name pairs. Applicable only when 'type is global. Snapping does not happen if a shape is completely inside the shape with one of the LPPs specified using 'exceptOverlap. If the shapes overlap partially, snapping does take place.

The list is specified in this format:

((t_layerName t_purposeName)…)

'trackWidth

The width of the physical shape that each track represents. This value is used only for display and illustration purposes. The default value is zero.

'trackGroups

(Virtuoso Advanced Node for Layout Only) Groups of tracks with variable spacing. When 'trackGroups is used, at least one count-space pair must be specified.

'count

(Virtuoso Advanced Node for Layout Only) The number of tracks in each track group.

'space

(Virtuoso Advanced Node for Layout Only) The spacing to the next track group.

Example

layerDefinitions(
     techPurposes(
(fb 1001 fb 'parent annotation)
(fbdummy 1002 fbd 'parent annotation)
) ;techPurposes
) ;layerDefinitions
layerRules(
     snapPatternDefs(
(finfet ("FF" "fb")
'offset 0.007
'type "local"
'step 0.048
'stepDirection "vertical"
'snappingLayers (
('layer "Active" 'enclosures (0.007)
'snappingMode "singleTrackCenter"
'exceptOverlap ("GG" "Purp1")
)
)
'trackWidth 0.014
)
(finfetDummy ("FF" "fbdummy")
'offset 0.007
'type "local"
'step 0.048
'stepDirection "vertical"
'snappingLayers (
('layer "Active"
'enclosures (0.007)
'purposes ("dummy" "dummy1")
)
)
'trackWidth 0.014
)
) ;snapPatterns
) ;layerRules

Related Topics

relatedSnapPatterns

layerRules(
relatedSnapPatterns(
 ( t_name
  'snapPatternDefs (
   (t_snapPatternDefName
    ['patterns       (l_patternNames)]
    ['patternGroups  (l_patternNames)]
   ) …)
 ['extraLPP (tx_layer tx_purpose)]
 ['regionSnapPitchHorizontal f_snapH]
 ['regionSnapPitchVertical f_snapV]
 )
) ;relatedSnapPatterns
) ;layerRules

Description

(Virtuoso Advanced Node for Layout Only) Specifies predefined groupings of snapPatternDefs and widthSpacingSnapPatternDefs used to create groups of regions in the layout. The allowed patterns and pattern groups on each region in the group are initialized to the values specified by the 'patterns and 'patternGroups attributes. The active pattern of the region is set to the first pattern in the 'patterns attribute list.

Patterns and groups are specified only for widthSpacingSnapPatternDefs. These attributes are not used for snapPatternDefs.

Arguments

t_name

The name of the relatedSnapPattern definition.

'snapPatternDefs

The snap pattern definition.

t_snapPatternDefName

The name of the snap pattern definition. This name can refer to either a snapPatternDef or a widthSpacingSnapPatternDef.

'patterns (l_patternNames)

A list of allowed width spacing pattern names for widthSpacingSnapPatternDefs. This is used as the initial set of allowed patterns on regions created using this relatedSnapPattern definition.

'patternsGroups (l_patternNames)

A list of allowed width spacing pattern group names for widthSpacingSnapPatternDefs. This is used as the initial set of allowed pattern groups on regions created using this relatedSnapPattern definition.

'extraLPP (tx_layer tx_purpose)

An additional layer-purpose pair. A shape on the LPP is created automatically when an instance of the related snap pattern is placed in the layout.

'regionSnapPitchHorizontal f_snapH

  

The pitch at which horizontal region edges snap in the vertical direction. This value overrides the X snapping grid values.

The default value is 0.

'regionSnapPitchVertical f_snapV

  

The pitch at which vertical region edges snap in the horizontal direction. This value overrides the Y snapping grid values.

The default value is 0.

Example

relatedSnapPatterns(
    ("1XGroup"
     'snapPatternDefs (
("fb1")
("m1_grid" 'patterns ("1X" "1X-4X"))
("m2_grid" 'patterns ("1X"))
("m3_grid" 'patterns ("1X-3X" "1X-4X"))
)
'extraLPP ("Active" "drawing")
'regionSnapPitchHorizontal 0.1
'regionSnapPitchVertical 0.2
)
) ;relatedSnapPatterns

Specifies a relatedSnapPatterns definition named 1XGroup. It contains entries for four grids: the fin grid, fb1, and the routing grid for m1, m2, and m3. When a region group is created using this definition, it would contain four shapes—one for each grid. The allowed patterns on the m1_grid region would be set to 1X and 1X - 4X. An additional LPP is specified along with related pitch values.

Related Topics

widthSpacingPatterns

layerRules(
widthSpacingPatterns(
  (t_name 
    ['offset g_offset ['repeatOffset]]
    ['startingColor g_maskColors | 'shiftColor]
    ['allowedRepeatMode {"any" | "none" | "steppedOnly" | "flippedOnly"}
      ['defaultRepeatMode 
        {"stepped" | "flippedStartsWithOdd" | "flippedStartsWithEven"}
      ]
    ]
    'pattern(
      (['repeat g_repeat]
       ['wireTypes (l_wireTypes)] 
       ['colors (g_colors …)]
       ['displayPackets (l_packets)]
       'spec(('width g_width 
            'space g_space 
            ['wireType t_wireType]
            ['color g_maskColors] 
            ['displayPacket t_packet] 
           ) …
       ) ;spec
      ) …
    ) ;pattern
  )
) ;widthSpacingPatterns
) ;layerRules

where,

g_colors := "mask1Color" | "mask2Color" | "mask3Color" | "grayColor"
g_maskColors := "mask1Color" | "mask2Color" | "mask3Color" 

Description

(Virtuoso Advanced Node for Layout Only) Defines the tracks on which shapes can be placed. It also defines the width of shapes on those tracks. Each pattern may span one or multiple periods. A widthSpacingPattern (WSP) by itself has no layer and no direction. It defines the width, spacing, and, optionally, the color and the wire type for a set of tracks. The pattern is then applied to a routing layer in a particular direction by specifying it as the active pattern in a widthSpacingSnapPatternDef.

Each track can have an optional wire type, which is a string label that can be used to refer to tracks by a name. During layout editing, tracks can be enabled or disabled through wire type filtering.

There are two ways to specify the color of each track in a pattern. In most cases, tracks have alternating colors and no adjacent pair of tracks has the same color. This can be specified by using the 'startingColor attribute. This attribute specifies the color of the first track; all other tracks are colored automatically with alternating colors.

In certain situations, not all tracks are colored or adjacent tracks need to be assigned the same color. This can be done by using the 'color attribute of each individual track or by using the 'colors attribute to specify a list of colors for a set of tracks. In addition, the 'shiftColor attribute can be used to specify whether all track colors are shifted when the pattern repeats, or whether each repetition of the pattern has the same color assignment.

As shown in the figure below, each widthSpacingPattern is a sequence of width-space pairs. The offset indicates the location of the first track from the period grid.

A collative view of the widthSpacingSnapPatternDef offset and the widthSpacingPattern offset is illustrated in the figure below:

The red dotted lines indicate the global period grid in each stripe of the period grid. This grid is anchored to the PRBoundary by using the offset of the widthSpacingSnapPatternDef.

The green dotted lines indicate the first track in each period. Outside pattern regions, the active global default pattern is applied and its offset specifies the distance from the period grid line to the first wiring track.

Finally, a region shape is used to apply a non-default active pattern in an area of the cellview. The active pattern specified on the region overrides the default active pattern and its offset specifies the location of the first track.

Repeat Modes and Pattern Flipping

Repeat modes determine how a pattern is interpreted for use in adjacent periods. The allowed and default repeat modes are specified on a widthSpacingPattern; the repeat mode can be specified in the layout on global grids and pattern regions.

The 'allowedRepeatMode attribute indicates how a pattern is allowed to repeat when a region stretches across more than one period, and the 'defaultRepeatMode attribute is used to initialize the repeat mode on regions and global grids when they are first created.

The following are valid combinations for allowed repeat mode ('allowedRepeatMode) and default repeat mode ('defaultRepeatMode) attributes:

Allowed repeat mode Default repeat mode

any

stepped

flippedStartsWithOdd

flippedStartsWithEven

steppedOnly

stepped

flippedOnly

flippedStartsWithOdd

flippedStartsWithEven

In a layout:

A repeat mode is not inherited and does not have a look-up precedence. As a result, when the repeat mode of the global grid changes, the regions on that global grid are not affected. However, when a region with a pattern for which the repeat mode is set is copied, the repeat mode is also copied to the newly created region.

The following example illustrates how a pattern in a region appears when "even" and "odd" flipped repeat modes are applied to the pattern:

When a starting color is assigned to the pattern, the starting color always applies to the bottommost track in the pattern, regardless of whether the pattern is flipped or not. This ensures tracks with alternating colors across the cellview.

Patterns with Zero Offset

When a pattern has zero offset, the centerline of the first track is located on the period line or the bottom edge of the region. In a legal pattern, the height of the pattern needs to be compatible with the period and the height of the region. Therefore, a track at offset zero is also present on the top period line or the top region boundary. When a pattern with zero offset is flipped, the top and bottom tracks overlap and are merged into one single track.

The following example illustrates how a pattern with zero offset appears when "even" and "odd" flipped repeat modes are applied to the pattern in a region:

Arguments

t_name

The name of the width spacing pattern.

'offset g_offset

The distance of the center line of first track from the period track.

'repeatOffset

A flag to indicate whether the offset is applied when a pattern is repeated.

'startingColor g_maskColors

The color—mask1, mask2, or mask3—of the first track. When the pattern is repeated and the number of tracks is odd, track colors are shifted automatically on repeat. When this attribute is used, all tracks are automatically colored with alternating colors.

This attribute is optional, the default value is gray (uncolored).

'shiftColor

A flag to indicate whether track colors are shifted when a pattern is repeated. This attribute cannot be used when 'startingColor is used.

'allowedRepeatMode

This indicates how a pattern repeats when it stretches across more than one period.

Valid values:

  • any (default): No restrictions on how the pattern repeats. The pattern can be stepped and flipped.
  • none: The pattern is not allowed to repeat; only a single period can be used.
  • steppedOnly: The pattern must be stepped.
  • flippedOnly: The pattern must be flipped in alternate periods; the pattern cannot be stepped.

'defaultRepeatMode

This is used by applications to initialize the repeat mode on regions and global grids when they are first created. Valid values include:

  • stepped: This can be specified only when 'allowedRepeatMode is set to any or steppedOnly.
  • flippedStartsWithOdd: This can be specified only when 'allowedRepeatMode is set to any or flippedOnly.
  • flippedStartsWithEven: This can be specified only when 'allowedRepeatMode is set to any or flippedOnly.

'repeat g_repeat

The number of repeats for the track group. This attribute should be greater than 1.

'wireTypes (l_wireTypes)

A list of wire types for the track group (only if d_repeat is specified).

An empty string in the list can be used if you do not want to specify a wire type for a track.

'colors (g_colors)

A list of track colors for the track group (only if d_repeat is specified).

The grayColor entry can be used to not specify a color for a track.

This attribute would not be allowed if a starting color is specified.

'displayPackets (l_packets)

A list of display packets for the track group (only if d_repeat is specified).

An empty string in the list can be used if you do not want to specify a display packet for a track.

'width g_width

The width of shapes on this track.

'space g_space

The center-line distance of the next track from the current track, in the period direction.

'wireType t_wireType

A string that represents the wire type. To be specified only if 'colors and 'wireTypes are not used.

'color g_maskColors

The color—mask1Color, mask2Color, or mask3Color—of the specified track. To be specified only if 'colors and 'wireTypes are not used.

'displayPacket t_packet

A string that represents the display packet name. To be specified only if 'colors, 'wireTypes, and 'displayPackets are not used.

Example 1

layerRules(
widthSpacingPatterns(
 ("2-1x-1-2x" 
  'offset 0.05 
  'repeatOffset
  'startingColor "mask1Color" 
  'pattern(
   (
    'repeat 2 
    'spec (('width 0.04   'space 0.1)) 
   )
   (
    'spec (('width 0.08   'space 0.1)) 
   )
  )
 )
) ;widthSpacingPatterns
) ;layerRules

Specifies that the tracks are alternately colored and are shifted on repeat because the number of tracks in the pattern is odd.

Example 2

layerRules(
    widthSpacingPatterns(
     ("1-1x-1-2x" 
'offset 0.05
'repeatOffset
'startingColor "mask1Color"
'pattern (
(
'repeat 2
'spec (
('width 0.04 'space 0.2)
('width 0.08 'space 0.1)
)
)
)
)
)
) ;layerRules

Specifies that the tracks are alternately colored, but are not shifted on repeat because the number of tracks in the pattern is even.

Example 3

layerRules(
    widthSpacingPatterns(
     ("2-1x-1-2x" 
'shiftColor
'offset 0.05
'repeatOffset
'pattern (
(
'repeat 2
'colors ("mask1Color" "mask1Color")
'spec (('width 0.04 'space 0.1))
)
(
'spec (('width 0.08 'space 0.1 'color "mask2Color"))
)
)
)
)
) ;layerRules

Specifies that the tracks are colored individually and some adjacent tracks have the same color. When the pattern is repeated, the colors are shifted because the 'shiftColor attribute is used.

Example 4

layerRules(
    widthSpacingPatterns(
     ("2-1x-1-2x" 
'shiftColor
'offset 0.05
'pattern (
(
'repeat 2
'colors ("mask1Color" "mask1Color")
'spec (('width 0.04 'space 0.1))
)
(
'spec (('width 0.08 'space 0.15 'color "mask2Color"))
)
)
)
)
) ;layerRules

Specifies that the offset is applied only once because 'repeatOffset is not given. The spacing specified for the last track in the pattern goes to the next track, as shown.

Related Topics

widthSpacingPatternGroups

layerRules(
widthSpacingPatternGroups(
 (t_name
  'members (l_patternNames)
 ) …
) ;widthSpacingPatternGroups
) ;layerRules

Description

(Virtuoso Advanced Node for Layout Only) Defines groups of widthSpacingPatterns specified in the technology file. Such a group is a convenient way to refer to a set of patterns by name. Groups can be used in a set of allowed patterns on a widthSpacingSnapPatternDef and region shapes.

Arguments

t_name

The name of the widthSpacingPatternGroup.

'members (l_patternNames)

The list of width spacing patterns names that are members of this group.

Example

layerRules(
    widthSpacingPatternGroups(
     ( "basic"
'members ( "minWidth" "2XWidth")
)
( "multiWSP"
'members ( "WSP1" "WSP2" )
)
)
) ;layerRules

Defines pattern groups basic and multiWSP. Each group has two patterns as members.

Related Topics

widthSpacingSnapPatternDefs

layerRules(
widthSpacingSnapPatternDefs(
 (t_name (tx_layer tx_purpose) | tx_layer
  'period g_period
  'direction "vertical" | "horizontal"
  ['offset g_offset]
  ['snappingLayers(  
   ('layer tx_snapLayer  ['purposes l_purposes]) 
   …
   ) 
  ]
  {['patterns (l_patternNames)] 
     ['patternGroups (l_patternGroupNames)] 
  }
  'defaultActive t_defaultActivePatternName
  ['orthogonalGrid g_gridType
   ['orthogonalGridColor "mask1Color" "mask2Color" "mask3Color"
    "mask4Color"]
 )
) ;widthSpacingSnapPatternDefs
) ;layerRules

Description

(Virtuoso Advanced Node for Layout Only) Defines a coarse-grain grid called the period grid in a cellview. The available wiring tracks are specified between the period grid lines using width spacing patterns. By default, the default active pattern applies in every period stripe. Rectangles and polygons on the widthSpacingSnapPatternDef's LPP can be used to customize the width spacing patterns in a particular area of the cellview. Such rectangles and polygons are referred to as "regions".

widthSpacingSnapPatternDefs also define a set of allowed patterns and pattern groups. All shapes on the snapping layers must conform to one of these allowed patterns. Regions can be used to override the default set of allowed patterns and pattern groups in certain areas of the cellview.

The snapping layers are the layers to which the widthSpacingSnapPatternDef applies. Typically, one widthSpacingSnapPatternDef is used per routing layer.

The direction of a widthSpacingSnapPatternDef is the direction in which the spacing between period grid lines is measured, that is, a vertical widthSpacingSnapPatternDef would have horizontal period lines.

The global period grid defined by a widthSpacingSnapPatternDef is anchored to the lower edge, along with an optional offset, of the SnapBoundary or PRBoundary. If a SnapBoundary or PRBoundary does not exist, the global grid is anchored to the origin axis. This behavior can be disabled using the dbSetGlobalGridOffsetReferenceType function.

A widthSpacingSnapPatternDef applies to a cellview only if it is enabled through a snapGridVertical or snapGridHorizontal constraint. This constraint can be specified library-wide in the foundry constraint group or in a cellview's default constraint group.

The following figure illustrates the coarse-grain period grid with vertical direction, anchored to the origin axis.

Arguments

t_name

The name of the widthSpacingSnapPatternDef. The name must be unique.

(tx_layer tx_purpose) | tx_layer

  

The LPP on which pattern regions are drawn. The LPP cannot be used with a snapPatternDef.

If only tx_layer is specified, the track purpose is used.

'period g_period

The spacing between coarse-grain period tracks.

'direction "vertical" | "horizontal"

  

The direction in which the period spacing is applied.

'offset g_offset

The distance of the nearest period track to the anchor reference (either the lower edge of the SnapBoundary, PRBoundary, or the origin axis).

The default offset is zero.

'snappingLayers ('layer tx_snapLayer ['purposes l_purposes])

  

A list of layers, and optionally purposes, to which this widthSpacingSnapPatternDef applies.

If a list of purposes is not specified, then the snappingLayer applies to all purposes.

'patterns l_patternNames

The default list of allowed patterns. This can be customized in the local areas of the cellview by creating region shapes.

'patternGroups l_patternGroupNames

A list of allowed pattern groups. The union of all of these groups, as well as the patterns specified by the 'patterns attribute, is the default set of all legal patterns.

'defaultActive t_defaultActivePatternName

The default pattern shown in the layout in areas where no region is drawn.

'orthogonalGrid g_gridType

The WSP grid to use for line-ends. The following values are valid:

  • upperLower: Applies to both ends of the wires.
  • lower: Applies to the lower line-ends of vertical wires and the left line-ends of horizontal wires.
  • upper: Applies to the upper line-ends of vertical wires and the right line-ends of horizontal wires.
  • nil: The default value, which is used when this argument is not specified. In this case, the line-end grid is not configured for the widthSpacingSnapPatternDef object.

'orthogonalGridColor "mask1Color" "mask2Color" "mask3Color" "mask4Color"

The mask color to which the line-end WSP grid applies.

Example

widthSpacingSnapPatternDefs(
    ( M2WSP 
     ("Metal2"       "localWSP")
'period 0.768
'direction "vertical"
'offset 0
'snappingLayers ( ('layer Metal2) )
'patterns ("stdCell")
'patternGroups ("basic" "multiWSP")
'defaultActive "minWidth"
)
)

Defines a widthSpacingSnapPatternDef named M2WSP that specifies a vertical period grid in which each stripe is 0.768 high. The first period grid line falls on the lower edge of the PRBoundary, or the origin axis, because the offset is zero.

This widthSpacingSnapPatternDef applies to the Metal2 routing layer. By default, the minWidth pattern is shown in each stripe. The default set of allowed patterns includes all patterns in the basic and multiWSP groups, as well as the stdCell pattern. The active and allowed patterns can be customized by creating region shapes on the Metal2/localWSP LPP.

Related Topics

Current Density and Current Density Tables

Current density tables allow conditional evaluation and application of a layer attribute value by means of lookup tables. When specifying current density tables, you must follow the syntax indicated. Current density tables always apply to one layer and can be one- or two-dimensional, with the attribute value being determined by one or two other design values. All currentDensityTable attributes must be specified as indicated in their syntax statements.

The table specification (l_table) always takes the following syntax:

For a 1-D table

( g_index g_value … )

For a 2-D table

( g_index1 g_index2 g_value … )

where, an index is a value for the design value being used to determine the attribute value.

Current density tables do not support expressions for indexes; you cannot parameterize an index by specifying it as a techParams value (techParam(paramName)).

peakACCurrentDensity

layerRules(
currentDensity(
 ( peakACCurrentDensity tx_layer f_value )
 …
) ;currentDensity

currentDensityTables(
 ( peakACCurrentDensity tx_layer
  (( "frequency" nil nil ["width" | "cutArea" nil nil] ) 
   [f_default] 
  )
  (g_table)
 )
 …
) ;currentDensityTables
) ;layerRules

Description

Sets the peak AC current density for the specified layer, absolutely or conditionally, as a function of the frequency (1-D table) or frequency and width of the object (2-D table) on the layer. The value specified by this rule is the maximum (peak) AC current that an object on the layer can handle.

Arguments

tx_layer

The layer on which the rule is applied.
Valid values: The layer name or the layer number

f_value

The maximum AC current density, in milliamps per square micron.

f_default

The current density value to be used when no table entry applies.

g_table

The format of a row in the current density table is as follows:

( f_frequency f_width | f_cutArea f_value )

where,

  • f_frequency is the frequency, in megahertz.
  • f_width is the width of a metal layer.
  • f_cutArea is the cut area for a cut layer.
  • f_value is the maximum AC current density, in milliamps per square micron.

Related Topics

avgACCurrentDensity

layerRules(
currentDensity(
 ( avgACCurrentDensity tx_layer f_value )
 …
) ;currentDensity

currentDensityTables(
 ( avgACCurrentDensity tx_layer
  (( "frequency" nil nil ["width" | "cutArea" nil nil] ) 
   [f_default] 
  )
  (g_table)
 )
 …
) ;currentDensityTables
) ;layerRules

Description

Sets the average AC current density for the specified layer, absolutely or conditionally, as a function of the frequency (1-D table) or frequency and width of the object (2-D table) on the layer. The value specified by this rule is the average AC current that an object on the layer can handle.

Arguments

tx_layer

The layer on which the rule is applied.
Valid values: The layer name or the layer number

f_value

The average AC current density, in milliamps per square micron.

f_default

The current density value to use when no table entry applies.

g_table

The format of a row in the current density table is as follows:

( f_frequency f_width | f_cutArea f_value )

where,

  • f_frequency is the frequency, in megahertz.
  • f_width is the width of a metal layer.
  • f_cutArea is the cut area for a cut layer.
  • f_value is the average AC current density, in milliamps per square micron.

Related Topics

rmsACCurrentDensity

layerRules(
currentDensity(
 ( rmsACCurrentDensity tx_layer f_value )
 …
) ;currentDensity

currentDensityTables(
 ( rmsACCurrentDensity tx_layer
  (( "frequency" nil nil ["width" | "cutArea" nil nil] ) 
   [f_default] 
  )
  (g_table)
 …
 )
) ;currentDensityTables
) ;layerRules

Description

Sets the root mean square (RMS) AC current density for the specified layer, absolutely or conditionally, as a function of the frequency (1-D table) or frequency and width of the object (2-D table) on the layer. The value specified by this rule is the maximum RMS AC current that an object on the layer can handle.

Arguments

tx_layer

The layer on which the rule is applied.
Valid values: The layer name or the layer number

f_value

The maximum RMS AC current density, in milliamps per square micron.

f_default

The current density value to use when no table entry applies.

g_table

The format of a row in the current density table is as follows:

( f_frequency f_width | f_cutArea f_value )

where,

  • f_frequency is the frequency, in megahertz.
  • f_width is the width of a metal layer.
  • f_cutArea is the cut area for a cut layer.
  • f_value is the maximum RMS AC current density, in milliamps per square micron.

Related Topics

avgDCCurrentDensity

layerRules(
currentDensity( 
 ( avgDCCurrentDensity tx_layer f_value   )
 …
 ) ;currentDensity

currentDensityTables( 
 ( avgDCCurrentDensity tx_metalLayer 
  (( "width" nil nil )
   [f_default]
  ) 
  (g_table) 
 ) 
 ( avgDCCurrentDensity tx_cutLayer 
  (( "cutArea" nil nil )
   [f_default]
  ) 
  (g_table) 
 ) 
) ;currentDensityTables 
) ;layerRules

Description

Sets the average DC current density for the specified layer, absolutely or conditionally, as a function of the width or the area of the object. The value specified by this rule is the average DC current that an object on the layer can handle.

Arguments

tx_layer

The layer on which the rule is applied.
Valid values: The layer name or the layer number

f_value

The maximum average DC current density, in milliamps per square micron.

tx_metallayer

The metal layer on which to apply the rule.
Valid values: The layer name or the layer number

tx_cutlayer

The cut layer on which to apply the rule.
Valid values: The layer name or the layer number

f_default

The current density value to use when no table entry applies.

g_table

The format of a row in the current density table is as follows:

( f_width f_value ) or ( f_cutArea f_value )

where,

  • f_width is the width.
  • f_cutArea is the area.
  • f_value is the average DC current density, in milliamps per square micron.

Related Topics

stampLabelLayers

layerRules(
stampLabelLayers(
 ( textLayer layers)
 …
) ;stampLabelLayers
) ;layerRules

Description

Defines a rule for creating a label on a particular layer-purpose pair. It specifies text (label) layers and the corresponding layer-purpose pair (LPP) entries of connected type associated with them.

The text name is considered as the name of the electrical node when the text origin is on or inside a shape on one of the listed layers. A label with an origin that is positioned over multiple conducting layers is applied to the first layer or LPP in the layer list; that is, the first layer or LPP specified in the list takes the highest precedence and the last one takes the lowest precedence.

Arguments

textLayer

The layer associated with the subsequently specified layers of connected type.
Valid values: The layer name or the layer number

layers

A layer or LPP of connected type.

Example

stampLabelLayers(
    ( Metal1 (Metal1 fill) )
    ((Metal2 pin) Metal2)
    ( Text (Metal2 pin) Metal2 (Metal1 pin) Metal1)
) ;stampLabelLayers

The first layer-purpose pair entry of a rule indicates the layer-purpose pair on which the label is created for a shape that exists on layer-purpose pairs defined by the remaining entries of the rule.

If a purpose is not specified in the first entry, the valid list of purposes for the specified layer is considered for creating the label.

Related Topics

labelLayers

layerRules(
labelLayers(
 ( tx_lableLayer1 tx_conLayer1 [ tx_conLayer2 … ] )
 ( tx_labelLayer2 tx_conLayer … )
 …
) ;labelLayers
) ;layerRules

Description

Specifies how text on label layers and the layers of any type associated with them should be handled.

The text name is not considered for naming electrical nodes. The label is associated with the first layer that has a shape that touches or overlaps the text. This specification provides a systematic means for establishing parent (shape)/child (text) relationships that are more general than a standard database parent/child relationship; with the labels relationship, the parent could be lower in the hierarchy and can be one of many layers.

Arguments

tx_labelLayer

The layer associated with the subsequently specified layers.
Valid values: The layer name or the layer number

tx_conLayer

A layer of any type to be associated with the label layer.

Example

labelLayers(
    ( text Metal17 Metal16 Metal15 Poly Oxide )
) ;labelLayers

Related Topics

cutClasses

layerRules(
cutClasses( [t_name]
 ( tx_cutLayer 
  ( t_cutClassName 
   ['numCuts x_numCuts] 
   ['minWidth] 
   ['minLength]
   ['fixedOrientation]
   ['cutClassGroups l_groups]
   { f_width | (f_width f_length) }
  ) ;t_cutClassName
  …
 ) ;tx_cutLayer
 …
 ) 
 …
) ;cutClasses
) ;layerRules

Defines a cut class by specifying the exact width and length the members of that cut class can have on a layer. Each cut class on a layer is assigned a unique name by which it can be referenced. If length for a cut class is not specified, cut shapes belonging to that cut class are squares with both dimensions equal to the specified width.

The value numCuts defines the equivalent number of via cuts required to satisfy the minNumCut constraint and to calculate the resistance. If the equivalent number of via cuts is x and minNumCut requires n via cuts, minNumCut is satisfied if n/x rounded up to the nearest integer is greater than or equal to n. For example, if the equivalent number of cuts is 2 and minNumCut requires 2 via cuts, then 1 via cut would be sufficient to satisfy minNumCut.

Cut class constraints can be defined only in a technology database.

A technology file can include multiple cutClass sections, each within a uniquely named constraint group. A cutClass section can be used without a name to indicate that the cutClass definitions in it be used to resolve cutClass references in constraints in the foundry constraint group. If all cutClass sections are named, the cutClass definitions in the last cutClass section are used to resolve such references.

Naming cutClass sections can be useful when defining a set of cut classes to be used in an alternate foundry constraint group. The named cutClass constraint group can be added as a member constraint group in another constraint group, which in turn, can be used as an alternate foundry constraint group.

Cut class constraints are referenced by other constraints to restrict these other constraints to apply only to cut shapes of the specified size on the specified cut layer. For example, in some processes, different allowed spacings are required for via cuts on a layer depending on the sizes of the via cuts.

All cut class constraints for cut layers defined in a single technology database must be added in one OR constraint group, which, in turn, must be a member of the foundry constraint group in the same technology database. The technology file loader creates a constraint for each cut class defined in the technology database and adds all of these constraints to a constraint group with the name cutClass_<libName>, which is the name used when t_name is not specified. If cut classes are defined in different technology databases contained in an ITDB, all cut classes are considered to be part of the same effective OR constraint group.

If multiple cut classes with the same dimensions exist in the technology database, the cut class names in the minCutClassSpacing (One layer) and minCutClassSpacing (Two layers) constraints in the dumped technology file are not the same as in the input technology file. The technology dumper randomly picks any one name.

Values

f_width | (f_width f_length)

The width and length of cut shapes belonging to the cut class must be equal to these values.

Parameters

t_name

The name of the cut class constraint group.

tx_cutLayer

The cut layer on which the constraint is applied. You can specify more than one cut layers, each enclosed in double quotes and separated by a space.

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

t_cutClassName

The cut class name that must be unique for a given layer.

'numCuts g_numCuts

  

The number of equivalent cuts for the cut class.

'minwidth

The width of the cut shape must be greater than or equal to width. Otherwise, the width of the cut shape must be equal to width.

'minLength

The length of the cut shape must be greater than or equal to length. Otherwise, the length of the cut shape must be equal to length.

'fixedOrientation

(Virtuoso Advanced Node for Layout Standard) Of the two constraint values, the first is always interpreted as the x-span of the cut class and the second is always interpreted as the y-span of the cut class.

'cutClassGroups l_groups

  

The cut class belongs to the cut class groups in this list. The groups are listed by name. Applications that look at via cuts across layers would pick one member on each layer represented in the group; applications that look at only one layer, would ignore group members on other layers.

Examples

Example 1: cutClasses with numCuts, minWidth, and minLength

You can define all cut classes for a given layer together, as shown below. Four cut classes, namely, VA, VB, VC, and VD, are created in this example.

layerRules(
 cutClasses( 
  ;( layerName )
  ;( (cutClassName (width length)) )
  ;( -------------------------------------------------------------- )
  ( Via1
( VA (0.3 0.4) )
( VB 'numCuts 2 (0.4 0.6) )
( VC 'minWidth 'minLength (0.8 0.7) )
( VD (0.3 0.3) )
)
  ( Via3
( VA (0.4 0.3) )
( VB 'numCuts 2 (0.5 0.6) )
( VC 'minWidth 'minLength (0.8 0.7) )
( VD (0.4 0.4) )
)
 ) ;cutClasses
) ;layerRules

Example 2: cutClasses with cutClassGroups

You can define constraint groups as shown below. Two cut class groups, named g1 and g2, are defined in this example.

A viaStack application would pick one member on each layer. For g1, it can pick V0A, V1A, V2A or V0A, V1B, V2A. Whereas, for g2, it would pick V0A, V1C, V2B. If a constraint is specified on layer Via1, group g1 would refer to V1A and V1B.

cutClasses(
     ( V0
(V0A 'numCuts 1 'cutClassGroups ("g1" "g2") (0.034 0.034))
)
( Via1
(V1A 'numCuts 1 'cutClassGroups ("g1") (0.034 0.034))
(V1B 'numCuts 2 'cutClassGroups ("g1") (0.07 0.034))
(V1C 'numCuts 2 'cutClassGroups ("g2") (0.07 0.034))
)
( Via2
(V2A 'numCuts 1 'cutClassGroups ("g1") (0.05 0.05))
(V2B 'numCuts 2 'cutClassGroups ("g2") (0.1 0.05))
)
) ;cutClasses
For more information, see Create Via Options Form in Virtuoso® Layout Suite L User Guide.

Accessing Cut Class Information Using SKILL

You can access information about cut classes from the technology file using SKILL. To do this, you need to perform the following steps:

  1. Obtain techID from an open cellview; for example:
    cv = geGetEditCellView()
    tf = techGetTechFile(cv)
    Or, obtain techID by specifying the technology library name; for example:
    tf=techGetTechFile(ddGetObj("gpdk045"))
  2. Use cst to obtain the foundry constraint group; for example:
    foundry_cg = cstFindConstraintGroupIn(tf "foundry")
    The sub-constraint group that contains the cut classes is the first element of the foundry constraint group.
    cutClass_cg = car( setof( cg foundry_cg~>objects cg~>defName == "cutClass"))
  3. In CIW, type cutClass_cg~>??, which returns:
    (cst:0xf082b294 tech db:0xf082b612 cellView nil
     objType "constraintGroup" name "cutClass_gpdk090" defName
     "cutClass" operator or owner nil
     objects
     (cst:0xf082a492 cst:0xf082a493 cst:0xf082a494 cst:0xf082a495
      cst:0xf082a496 cst:0xf082a497 cst:0xf082a498 cst:0xf082a499 
      cst:0xf082a49a cst:0xf082a49b cst:0xf082a49c cst:0xf082a49d 
      cst:0xf082a49e
     )
    )
  4. In CIW, type cutClass_cg ~>objects~>??, which returns all the cut classes defined in the technology library; for example:
    (cst:0xf082a492 tech db:0xf082b612 cellView nil
     objType "layerConstraint" name "C__0" defName
     "cutClass" layers
     ("Via1") value
     (0.14 0.14)
     params
     (className("Small")
      (numCuts 1)
     ) hard t ID
     nil description nil
    )
    (cst:0xf082a493 tech db:0xf082b612 cellView nil
     objType "layerConstraint" name "C__1" defName
     "cutClass" layers
     ("Via1") value
     (0.14 0.28)
     params
     (className("Bar")
      (numCuts 2)
     ) hard t ID
     nil description nil
    )
    (cst:0xf082a494 tech db:0xf082b612 cellView nil
     objType "layerConstraint" name "C__2" defName
     "cutClass" layers
     ("Via1") value
     (0.14 0.28)
     params
     (className("Bar1")
      (numCuts 2)
     ) hard t ID
     nil description nil
    )
  5. Run cutClass_cg~>objects, to obtain a list of cut class IDs; for example:
    (cst:0xf082a492 cst:0xf082a493 cst:0xf082a494 cst:0xf082a495 cst:0xf082a496
     cst:0xf082a497 cst:0xf082a498 cst:0xf082a499 cst:0xf082a49a cst:0xf082a49b
     cst:0xf082a49c cst:0xf082a49d cst:0xf082a49e
    )

Related Topics


Return to top
 ⠀
X