Product Documentation
Virtuoso Abstract Generator User Guide
Product Version IC23.1, November 2023

Technology File Requirements for Virtuoso Abstract Generator

This section describes the technology information required for Abstract Generator to run in the Virtuoso Studio design environment.

In addition to the shape, Abstract Generator respects the minArea and minRectArea technology file constraints while creating pins. The minArea constraint defines the minimum area for all pins; whereas the minRectArea constraint defines the minimum area for only rectangular-shaped pins.

When both constraints are defined, then the minRectArea constraint applies to all rectangular pins, whereas the minArea constraint applies to all non-rectangular pins.

If the minRectArea constraint is not defined, then the minArea constraint applies to both, rectangular as well as non-rectangular pins.

If Abstract Generator fails to attach the '%s' technology library to the '%s' name library. Ensure the following:

  1. Use the absAttachTechLib command after setting a library. You can do this only in nogui or replay modes.
  2. You have permission to write in the design library, specifically the prop.xx file, which contains property information regarding the attached technology library.
  3. The design library exists and that it is not locked.
  4. The technology library you are trying to attach exists.

Devices

The device definitions in OpenAccess 2.2 are translated to via definitions.

Via Cellviews in OpenAccess

In OpenAccess, the lef2oa translator generates a via as a layout cellview with the view name via and includes it in the library; For example,

library/viaName/via/layout.oa

It also adds a corresponding customViaDef to the technology file, which refers to the via cellview.

Layer Definitions

The table below lists the required subsections from the layerDefinitions section.

Subsection Description Example

techLayers

Defines the layers to be used in your design.

This layer list must include two or more metal layers and one or more via layers. Each layer must have a name, a number, and an abbreviation for the layer name.


layerDefinitions(
 techLayers(

 ;( LayerName Layer# Abbreviation )
 ;( --------- ------ ------------ )
 ;  User-Defined Layers:
. .
( ndiff 1 ND )
( pdiff 2 PD )
( pwell 13 PW )
. .
) ;techLayers
) ;layerDefinitions

techLayerPurposePriorities

Defines the display priority order of layer purpose pairs (LPPs).

Lists the layer-purpose pairs (LPPs) in the order in which they are to be displayed; applications display an LPP on top of the one that precedes it in the list and underneath the one that follows it.

All routing layers must have the purposes net, pin, and drawing. Abstract Generator adds these automatically if required.


layerDefinitions(
techLayerPurposePriorities(
;layers are ordered from the lowest ;to the highest priority ;( LayerName   Purpose )
;( --------- -------- )
( nwell drawing )
( nwell pin )
( nwell net )
( nwell boundary )
) ;techLayerPurposePriorities
) ;layerDefinitions

layerRules

layerRules( 
 functions(
 
  ;( layer     function   [maskNumber])
  ;( -----     --------   ------------)
 
   ( metal1    "metal"      1          )
   ( metal2    "metal"      2          )
 
 ) ;functions 
) ;layerRules

LEFDefaultRouteSpec

constraintGroups(
 ( "LEFDefaultRouteSpec"
   ; layer constraints
   interconnect(
     ( validLayers ( METAL1 METAL2 METAL3 )   )
   ) ;interconnect
 ) ;LEFDefaultRouteSpec
) ;constraintGroups

Layer Names

You can encounter the following scenarios while defining layer names:

Scenario 1: If the layer name has not been defined in all the required technology file classes:

Use the Technology File Manager to ensure that the layer has been defined in all the sections listed below.

layerDefinitions(
techLayerPurposePriorities(
;layers are ordered from lowest to highest
;priority
;( LayerName Purpose )
;( --------- ------- )
( metal1 drawing )
( metal1 pin )
( metal1 net )
( metal1 boundary )
( metal1 label )
( metal2 drawing )
( metal2 pin )
( metal2 net )
( metal2 boundary )
( metal2 label )
);techLayerPurposePriorities
);layerDefinitions

Use the Technology File Manager to define all the required via layers in the standardViaDefs section. For any via layer, layer1 is always the routing layer below and layer2 is always the routing layer above; for example,

viaDefs(
standardViaDefs(
;(viaDefName layer1 layer2 (cutLayer cutWidth ;cutHeight [resistancePerCut])
;(cutRows cutCol (cutSpace))
;(layer1Enc) (layer2Enc) (layer1Offset)
;(layer2Offset) (origOffset)
;[implant1 (implant1Enc) [implant2
;(implant2Enc)]])
;( -------------------------------------------- ------------------------------)
  ( VIA12 METAL1 METAL2 ("VIA1" 0.2 0.2)
(1 1 (0.0 0.0))
(0.1 0.1) (0.2 0.2) (0.0 0.0) (0.0 0.0)
(0.0 0.0)
)
) ;standardViaDefs
) ;viaDefs

Additionally, you must list the via layer in the functions subclass of the layerRules section and ensure that it has the function cut; for example,

layerRules
functions(
;( layer function [maskNumber])
;( ----- -------- ------------)
   ( Via1 "cut" 5 )
) ;layerFunctions
) ;layerRules

Scenario 2: If you fail to initialize the technology file because the layer does not have the purpose defined.

  1. Define the missing layer property in the techLayerPurposePriorities section of the technology file and reattach the technology file.
    If you want Abstract Generator to extract through a particular layer, the layer in question must have purposes pin, drawing, and net defined for it in the technology file.
  2. You can use the Technology File Manager to define the missing layer property in the techLayerPurposePriorities section of the technology file; for example,

techLayerPurposePriorities(
;layers are ordered from lowest to highest priority
;( LayerName Purpose )
;( --------- ------- )
  ( metal1 drawing )
( metal1 pin )
( metal1 net )
( metal1 boundary )
) ;techLayerPurposePriorities

Scenario 3: The layer definition is missing from one or more of the sections in the technology file

If the layer is defined in the spacings section of the foundry constraint group, and its definition is missing from one or more of these sections in the technology file: techLayers, techLayerPurposePriorities, techDisplays; functions subsection in the layerRules section; or interconnect section of the LefDefaultRouteSpec constraint group. You can update the technology file and try again.

Use the Technology File Manager to define the layer in all the required sections in the technology file. Save and reload the file. A layer needs to be defined in all the following sections of the technology file:

If the layer is also defined in the techDerivedLayers section that is used for defining defined layers and is not defined in the functions subsection of the layerRules section, Abstract Generator issues the info message “Abstract Generator does not support derived layers and proceeds with further execution”. You should evaluate this info message carefully because Abstract Generator does not support derived layers. If such a layer is encountered, Abstract Generator will completely ignore the layer; existing shapes on this layer will not be processed and no shapes will be added on this layer.

Scenario 4: The layer name spacing value is not a multiple of the current manufacturing grid value,

The width, pitch, separation, and offset values of all metal layers must be a multiple of the current manufacturing grid value. Update the spacing value for this layer in the spacing section of the foundry constraint group and the routingGrid section of the LefDefaultRouteSpec constraint group in the technology file.

Use the Technology File Manager to correct the values.

Scenario 5: The '%s' layer does not have a minimum width. Define width in the spacings section of foundry constraint group of the technology file and then try again.

Use the Technology File Manager to define the minimum width for a layer in the spacings section of foundry constraint group; for example,

constraintGroups(
( "foundry"
;physical constraints
spacings(
   ;( constraint layer1 layer2 value )
;( ---------- ------ ------ ----- )
   ( minWidth “metal1” 0.5 )
) ;spacings
) ;foundry
) ;constraintGroups

Scenario 5: Unable to initialize Abstract Generator because either the name layer for the name via is not correctly defined.

(ABS-10048)The layer is either missing from standardViaDefs section or is not defined in the techLayers section. Information about via definitions is included in standardViaDefs in the viaDefs section.

Ensure that the layer is correctly specified in the standardViaDefs subsection of the ViaDefs section and in the techLayers subsection of the layerDefinitions section in the technology file and then try again. To do this:

  1. Ensure that the layer is listed correctly in the standardViaDefs section; for example,
    viaDefs(
     standardViaDefs(
     ;(viaDefName layer1 layer2 (cutLayer cutWidth  ;cutHeight [resistancePerCut])
     ;(cutRows cutCol (cutSpace))
     ;(layer1Enc) (layer2Enc) (layer1Offset)
     ;(layer2Offset) (origOffset)
     ;[implant1 (implant1Enc) [implant2
     ;(implant2Enc)]])
     ;( -------------------------------------------- ------------------------------)
    
      ( VIA12  METAL1  METAL2  ("VIA1" 0.2 0.2)
       (1 1 (0.0 0.0))
       (0.1 0.1) (0.2 0.2) (0.0 0.0) (0.0 0.0)
       (0.0 0.0)
      )
     ) ;standardViaDefs
    ) ;viaDefs

    For any via layer, layer1 is always the lower routing layer and layer2 is always the upper routing layer.
  2. Ensure that all the layers listed are defined in the techLayers section; for example,
    layerDefinitions(
     techLayers(
      ;( LayerName             Layer#     Abbreviation )
      ;( ---------             ------     ------------ )
      ;User-Defined Layers:
       ( metal1                23         metal1       )
       ( v1                    25         v1           )
       ( metal2                27         metal1      )
       ( v2                     32         v1          )   ( metal3                34         metal1       )
       ( v3                    35          v1           )   ( metal4                36         metal1       )
       ( v4                    52          v1           )   ( metal5                53         metal1       )
     ) ;techLayers
    ) ;layerDefinitions

Scenario 5: Failed to create the name, purpose layer-purpose pair in the technology file.

(ABS-10050) Ensure that you have permissions to write to the technology file and then try again. To do this:

  1. Specify the layer-purpose pair information in the techPurposes construct in the layerDefinitions section during the abstract generation process.
    If missing, you can append this information to the technology file.
  2. If write permissions exist on the technology file, Abstract Generator will automatically add the missing layer-purpose pair. However, you would not be able to update the technology file if you do not have the write permission on the file, which is when Abstract Generator issues this message.
  3. Change the permission setting of the technology file or contact the person responsible for updating the technology file.
  4. Use the Technology File Manager to add the missing layer-purpose definition to the technology file prior to invoking Abstract Generator.

Via Definitions

A via layer connects two conducting layers.

On OpenAccess 2.2, information about the via layers is determined from the viaDefs section of the technology file. There are two types of viaDefsstandardViaDefs and customViaDefs.

Standard Vias

The standardViaDefs has a unique name and is associated with two layers and a list of via parameters with default values.

Example

viaDefs(
standardViaDefs(
;(viaDefName layer1 layer2 (cutLayer cutWidth cutHeight [resistancePerCut]) ;(cutRows cutCol (cutSpace)) ;(layer1Enc) (layer2Enc) (layer1Offset) (layer2Offset) (origOffset) ;[implant1 (implant1Enc) [implant2 (implant2Enc)]]) ;(------------------------------------------------------------------------)   ( via1Array METAL1 METAL2 ("VIA12" 0.36 0.36)
(1 1 (0.36 0.36))
(0.0 0.0) (0.0 0.0) (0.0 0.0) (0.0 0.0) (0.0 0.0)
)
) ;standardViaDefs
) ;viaDefs

Custom Vias

The customViaDefs has a unique name and is associated with a master cellview and two layers. A customViaDef is a special purpose via. To specify a custom via, the cellview on which it is based must exist in the specified library. See viaDefs.

Example

viaDefs( 
customViaDefs(
;(viaDefName libName cellName viewName layer1 layer2 resistancePerCut)
;(---------- ------- -------- -------- ------ ------ ----------------)

( M2_M1_Via1 lib M2_M1 via METAL1 METAL2 4.0 )
( M1_Poly lib M1_Poly via POLY METAL1 4.0 )
) ;customViaDefs
) ;viaDefs

Use the Technology File Manager to define all the required via layers in the standardViaDefs section. For any via layer, layer1 is always the routing layer below and layer2 is always the routing layer above; for example,

viaDefs(
standardViaDefs(
;(viaDefName layer1 layer2 (cutLayer cutWidth ;cutHeight [resistancePerCut])
;(cutRows cutCol (cutSpace))
;(layer1Enc) (layer2Enc) (layer1Offset)
;(layer2Offset) (origOffset)
;[implant1 (implant1Enc) [implant2
;(implant2Enc)]])
;( -------------------------------------------- ------------------------------)
  ( VIA12 METAL1 METAL2 ("VIA1" 0.2 0.2)
(1 1 (0.0 0.0))
(0.1 0.1) (0.2 0.2) (0.0 0.0) (0.0 0.0)
(0.0 0.0)
)
) ;standardViaDefs
) ;viaDefs

Additionally, you must list the via layer in the functions subclass of the layerRules section and ensure that it has the function cut; for example,

layerRules
functions(
;( layer function [maskNumber])
;( ----- -------- ------------)
   ( Via1 "cut" 5 )
) ;layerFunctions
) ;layerRules

Physical Rules

The spacingRules subclass included in the physicalRules class in the OpenAccess 2.0 technology file is mapped to the spacings subsection in the foundry constraint group in the OpenAccess 2.2 technology file.

In addition to the spacings section, Abstract Generator refers to the spacingTables section, also in the foundry constraint group.

Constraint Category Description Example

spacings

Specifies the spacing rules, defining the amount of enclosure required when two layers overlap.

All routing layers must have minWidth and minSpacing values specified.

The minWidth constraint specifies the minimum width for any shape on the layer. The minSpacing constraint specifies the minimum spacing between objects on a single layer.


constraintGroups(
 ( "foundry"
   ;physical constraints
spacings(
   ;( constraint layer1 layer2 value )
;( ---------- ------ ------ ----- )
   ( minWidth “Metal1” 0.3 )
( minSpacing “Metal1” 0.3 )
) ;spacings
) ;foundry
) ;constraintGroups

spacingTables

Defines the lookup table(s) for the voltage-based rules, layer-purpose rules, and layer-spacing rules. Abstract Generator looks up the spacingTables section for these rules to determine the maximum spacing value to be used for cover blockages and for pin cutouts.


constraintGroups(
 ( "foundry"
   spacingTables(
  ;( constraint layer1 [layer2]
;((index1Definitions
;[index2Defintions])
;[defaultValue])
;(table) )

  ( minSpacing  METAL1
(( "width" nil nil ))
(
0.5 0.333
0.78 0.99
)
) ;spacingTables
) ;foundry
) ;constraintGroups

controls

Sets the manufacturing grid value in the controls section if no manufacturing grid value is specified in the technology file.

Choose File – Import – LEF to import additional information into your existing technology file. You can use the default value to define the manufacturing grid value in the physicalRules section of the technology file. If you do not specify a default manufacturing grid value in the technology file, Abstract Generator uses a default value of 0.005.

controls(
  mfgGridResolution(
  ( 0.005000 )
  ) ;mfgGridResolution
) ;controls

Abstract Generator does not recognize spacing rules that are defined using LEF58 constructs. For example the following is an incorrect definition:

PROPERTY LEF58_SPACING "
    SPACING 0.077 NOTCHLENGTH 0.140 
CONCAVEENDS 0.037 ;" ;

The following definition is correct and is recognized by Abstract Generator:

LAYER M1
    TYPE ROUTING ;
    DIRECTION VERTICAL ;
    PITCH 0.090000 0.064000 ;
    OFFSET 0.045000 0.000000 ;
    MINWIDTH 0.032 ;
    MAXWIDTH 2 ;
    WIDTH 0.032 ;
SPACING 0.077 NOTCHLENGTH 0.140 ;
END M1

Voltage Dependent and Layer-Purpose-Based Rules

In addition to the layer rules, such as minSpacing and minWidth, Abstract Generator now supports the voltage dependent and the layer-purpose-based spacing rules, such as minVoltageSpacing (voltage dependent rule) and minSpacing (layer-purpose-based). These spacing rules are defined in the spacings and spacingTables section of the technology file. While loading a library, Abstract Generator reads the rules defined in the technology file and use the read rules for generating abstracts.

The option that enables Abstract Generator to read the voltage-based and layer-purpose- based rules is ReadVoltageAndPurposeRules. To enable reading of rules, this option should be set to TRUE. By default, this option is set to FALSE.

absSetOption(”ReadVoltageAndPurposeRules” “TRUE/FALSE”)

Abstract generator conforms to the voltage and layer-purpose-based spacing rules while it calculates the spacing value for cover blockage and pin cutouts. The spacing value used for cover blockage is the maximum value that is available from the voltage dependent, layer-purpose-based, and layer-based spacing rules. The same maximum value is used to cut the spacing around pins.

An example of a voltage dependent and layer-purpose-based spacing rule is given as follows.

spacingTables(
 ;(constraint layer1 layer2
 ; ((index1Definitions [index2Definitions) [defaultValue])
 ; (table))
 ;(---------------------------------------)
  (minVoltageSpacing         "Metal1"    
   (("voltage"     nil      nil))
   (
    2.0    3.0
    5.0    3.5
  )
 )
  (minVoltageSpacing         "Metal2"    
   (("voltage"     nil      nil))
   (
    2.0    4.0
    5.0    4.5
   )
  )
 );spacingTables
spacings(
         ;(minSpacing               ("Metal1" "drawing")    3.2)
          (minSpacing               ("Metal1" "pin")         3.4)
       (minSpacing               ("Metal2" "drawing")    3.6)
          (minSpacing               ("Metal2" "pin")         3.8)
     );spacings

In the above example, the maximum value of the minVoltageSpacing rule for Metal1 layer is 3.5. The minSpacing value of Metal1 layer for purpose drawing and pin is 3.2 and 3.4, respectively. Therefore, the values that are considered to calculate the minSpacing value are 3.2, 3.4, and 3.5. Because 3.5 is the maximum value that is available from the voltage dependent and layer-purpose-based spacing rules for the Metal1 layer, the minSpacing value used for cover blockage and pin cutout is 3.5.

If the entries for minSpacing table are either non-applicable or the default value is not given. Define appropriately in the spacings section of foundry constraint group of the technology file and then try again. Abstract Generator stops because the minSpacing value set for the given layer is 0.

Use the Technology File Manager to set a valid minSpacing value for the layer; for example,

constraintGroups(
 ( "foundry"
   ;physical constraints
   spacings(
   ;( constraint layer1 layer2 value )
   ;( ---------- ------ ------ ----- )
    ( minWidth   “metal1”      0.5 )
   ) ;spacings
 ) ;foundry
) ;constraintGroups

Abstract Generator uses this value for the minimum spacing for both metal and via layers.

Related Topics

Technology File Structure

Defining a Default Via in the OpenAccess Technology File

Ensure that the technology file includes a fully defined via layer for the layer.

To correctly define a default via in the OpenAccess technology file:

The cellview used in the definition must exist in the technology library. Symbolic and layout cellviews usually correspond to a device defined in the devices section. If the cellview does not exist, you can generate one by adding a device to the devices section. If you want to use a via cellview, you need to create it manually or use lef2oa, which will create it automatically.

Related Topics

ABS-10030


Return to top
 ⠀
X