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.
- Devices
- Layer Definitions
- Via Definitions
- Physical Rules
- Voltage Dependent and Layer-Purpose-Based Rules
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:
-
Use the
absAttachTechLibcommand after setting a library. You can do this only innoguiorreplaymodes. - You have permission to write in the design library, specifically the prop.xx file, which contains property information regarding the attached technology library.
- The design library exists and that it is not locked.
- 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.
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:
-
Ensure that the layer is defined in the
techLayersandtechLayerPurposePrioritiessections of the technology file. -
Ensure that it is listed in the
LEFDefaultRouteSpecand that it has layer functionmetalin thelayerfunctionssection.
Use the Technology File Manager to ensure that the layer has been defined in all the sections listed below.
-
layerRuleslayerRules( functions( ;( layer function [maskNumber]) ;( ----- -------- ------------) ( metal1 "metal" 1 ) ( metal2 "metal" 2 ) );functions );layerRules
-
LEFDefaultRouteSpecconstraintGroups( ( "LEFDefaultRouteSpec" ; layer constraints interconnect( ( validLayers ( METAL1 METAL2 METAL3 ) ) ) ;interconnect ) ;LEFDefaultRouteSpec ) ;constraintGroups
-
techLayerslayerDefinitions( techLayers( ;( LayerName Layer# Abbreviation ) ;( --------- ------ ------------ ) ;User-Defined Layers: ( metal1 23 metal1 ) ( metal2 27 metal2 ) ) ;techLayers ) ;layerDefinitions
-
techLayerPurposePriorities
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.
-
Define the missing layer property in the
techLayerPurposePrioritiessection 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 purposespin,drawing, andnetdefined for it in the technology file. -
You can use the Technology File Manager to define the missing layer property in the
techLayerPurposePrioritiessection 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:
-
techLayers,techLayerPurposePriorities, andtechDisplays -
functionssubclass in thelayerRulessection -
interconnectconstraint category in theLefDefaultRouteSpecconstraint group -
spacingsconstraint category in thefoundryconstraint group section
A layer is regarded as not fully defined if it is not defined in any of these sections.
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.
-
The manufacturing grid is set in the controls section. The width and spacing values are set in the
spacingsconstraint category of thefoundryconstraint group; for example,controls( mfgGridResolution( ( 0.005000 ) ) ;mfgGridResolution ) ;controlsconstraintGroups( ( "foundry" ;physical constraints spacings( ;( constraint layer1 layer2 value ) ;( ---------- ------ ------ ----- ) ( minWidth “metal1” 0.5 ) ( minSpacing “metal1” 0.5 ) ( minWidth “metal2” 0.5 ) ( minSpacing “metal2” 0.5 ) ) ;spacings ) ;foundry ) ;constraintGroups -
The routing pitch and routing offset values are set in the
routingGridsconstraint categoryLEFDefaultRouteSpecconstraint group; for example,constraintGroups( ( "LEFDefaultRouteSpec" ; physical constraints routingGrids( ( rightDiagPitch METAL5 0.01 ) ( rightDiagOffset METAL5 0.05 ) ( leftDiagPitch METAL5 0.2 ) ( leftDiagOffset METAL5 0.4 ) ) ;routingGrids ) ;LEFDefaultRouteSpec ) ;constraintGroups
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:
-
Ensure that the layer is listed correctly in the
standardViaDefssection; 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
-
Ensure that all the layers listed are defined in the
techLayerssection; 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:
-
Specify the layer-purpose pair information in the
techPurposesconstruct in thelayerDefinitionssection during the abstract generation process.
If missing, you can append this information to the technology file. - 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.
- Change the permission setting of the technology file or contact the person responsible for updating the technology file.
- 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 viaDefs — standardViaDefs 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.
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(
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.
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
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:
-
Define the via in the
customViaDefssection of the technology file; for example,viaDefs( customViaDefs( ;(viaDefName libName cellName viewName ; layer1 layer2 resistancePerCut) ( M2_M1 lib M2_M1 via metal1 metal2 4.0 ) ) ;customViaDefs ) ;viaDefs
The cellview used in the definition must exist in the technology library. Symbolic and layout cellviews usually correspond to a device defined in thedevicessection. If the cellview does not exist, you can generate one by adding a device to thedevicessection. If you want to use a via cellview, you need to create it manually or uselef2oa, which will create it automatically.
-
Ensure that the via is listed in the
LEFDefaultRouteSpec; for example,constraintGroups( ( "LEFDefaultRouteSpec" ; layer constraints interconnect( ( validVias ( M1_M2 M2_M1 ) ) ) ;interconnect ) ;LEFDefaultRouteSpec ) ;constraintGroups
-
List the via layer in the
functionssubclass of thelayerRulessection and ensure that it has functioncut; for example,layerRules functions( ;( layer function [maskNumber]) ;( ----- -------- ------------) ( v1 "cut" 5 ) ) ;layerFunctions ) ;layerRules
Related Topics
Return to top