Product Documentation
Virtuoso Technology Data User Guide
Product Version IC23.1, June 2023

C


Data Handling for Incremental Technology Databases

Major Data Duplication Rules Summary

You can duplicate some technology data in more than one technology database if doing so accomplishes your design flow objectives. Duplicating most technology data, however, creates conflicts, which must be avoided.

The following paragraphs summarize the major rules of duplication to use to avoid creating conflicts; they delineate

This section does not deal with every possible data specification. For complete information, see the Data Handling Table, which provides complete information about how the software handles data in every situation, including how it detects and handles conflicts.

Multiple technology bases in a graph can contain duplicates of the following devices of the same name without conflict:

The following subsections can also be duplicated in multiple technology databases:

You cannot duplicate most other technology data, such as viaDefs or any constraint group with the same name other than a foundry or default constraint group.

Although you can specify the dbuPerUU value in every technology database, the value must be the same in all of them.

In certain cases, related data must be specified in the same technology database:

For information about conflict types and how they occur, see “Conflict Avoidance”.

Data Handling Table

The table in this appendix summarizes how the software checks for data conflicts in a graph and handles the data, conflict or not. The conflict checking and resultant behavior defined in this table apply whenever you introduce a new technology database or make any additions or changes to an existing technology database in a graph, whether compiling a technology file or setting or creating data with a SKILL function. When defining technology data, it is important to be cognizant of the incremental technology database graph and how the data you introduce works with or can conflict with the other data in the graph.

ASCII technology file section/subsection S/W checks graph for matching Allow duplicates in graph? Action taken when match is defined in: Refer-enced objects Action taken when referenced object is defined in:
No db local db refer-ence db No db local db refer-ence db

Controls

techParams

Parameter name

Disallowed. Issue warning

Create in local

Overwrite in local

Conflict

N/A

N/A

N/A

N/A

viewTypeUnits

View type name

Disallowed. Issue error

Create in local

Overwrite in local

Conflict

N/A

N/A

N/A

N/A

mfgGridResolu-tion

Construct name

Disallowed. Issue error

Create in local

Overwrite in local

Conflict

N/A

N/A

N/A

N/A

refTechLibs

Construct name

N/A2

Create in local

Overwrite in local

Create in local

N/A

N/A

N/A

N/A

layerDefinitions

techLayers

Layer number or name

Disallowed. Issue warning

Create in local

Warning or do nothing3

Conflict

N/A

N/A

N/A

N/A

techPurposes

Purpose number or name

Disallowed. Issue warning

Create in local

Warning or do nothing3

Conflict

N/A

N/A

N/A

N/A

techLayerPur-posePriorities

Layer name and purpose name

Allowed1

Create in local

Reorder in local

Create in local

Layer, purpose

Disallowed

Update in local

Update in local

techDisplays

LPP name

Allowed1

Create in local

Overwrite in local

Create in local

LPP

Disallowed

Update in local

Dis-allowed

techLayerProp-erties

Layer name and property name

Disallowed

Create in local

Overwrite in local

Error4

Layers

Disallowed

Update in local

Dis-allowed

techDerived-Layers

Derived layer number or name

Disallowed. Issue warning

Create in local

Warning or do nothing3

Conflict

Layers

Disallowed

Update in local

Update in local

layerRules

functions

Layer name

N/A5

Create in local

Overwrite in local

Error4

Layers

Disallowed

Update in local

Dis-allowed

mfgResolutions

Layer name

N/A5

Create in local

Overwrite in local

Error4

Layers

Disallowed

Update in local

Dis-allowed

routingDirec-tions

Layer name

N/A5

Create in local

Overwrite in local

Error4

Layers

Disallowed

Update in local

Dis-allowed

currentDensity/currentDensity-Tables

Layer name

N/A5

Create in local

Overwrite in local

Error4

Layers

Disallowed

Update in local

Dis-allowed

equivalent-Layers

Construct name

Allowed1

Create in local

Overwrite in local

Create in local

Layers

Disallowed

Update in local

Update in local

stampLabels

Construct name

Allowed1

Create in local

Overwrite in local

Create in local

Layers

Disallowed

Update in local

Update in local

labels

Construct name

Allowed1

Create in local

Overwrite in local

Create in local

Layers

Disallowed

Update in local

Update in local

constraintGroups

constraintGroup (foundry/default)

constraint-Group name

Allowed

Create in local

Overwrite in local

Create in local

N/A

N/A

N/A

N/A

constraintGroup (non-foundry/default)

constraint-Group name

Disallowed

Create in local

Overwrite in local

Conflict

N/A

N/A

N/A

N/A

constraints (native OA, in foundry/default constraint group)

CG name, constraint name, layer number or name, or viaDef name

Allowed

Create in local

Overwrite in local

Create in local

Layers, viaDefs

Disallowed

Update in local

Update in local

constraints (native OA, in non-foundry/default constraint group)

CG name, constraint name, layer number or name, or viaDef name

Disallowed

Create in local

Overwrite in local

N/A6

Layers, viaDefs

Disallowed

Update in local

Update in local

LPP based / user defined rule (in foundry/default CG)

CG name, rule name, layer / LPP number or name

Disallowed

Create in local

Overwrite in local

Conflict

Layers, LPPs

Disallowed

Update in local

Update in local

LPP based / user defined rule (in non-foundry/default CG)

CG name, rule name, layer / LPP number or name

Disallowed

Create in local

Overwrite in local

N/A6

Layers, LPPs

Disallowed

Update in local

Update in local

siteDefs

scalarSiteDefs

siteDef name

Disallowed

Create in local

Overwrite in local

Conflict

N/A

N/A

N/A

N/A

arraySiteDefs

siteDef name

Disallowed

Create in local

Overwrite in local

Conflict

siteDefs

Disallowed

Update in local

Update in local

viaDefs

standardVia-Defs

viaDef name

Disallowed

Create in local

Overwrite in local

Conflict

Layers

Disallowed

Update in local

Update in local

customViaDefs

viaDef name

Disallowed

Create in local

Overwrite in local

Conflict

Layers

Disallowed

Update in local

Update in local

viaSpecs

viaSpecs

Layer pair names

Disallowed

Create in local

Overwrite in local

Conflict

Layers, viaDefs

Disallowed

Update in local

Update in local

Devices

cdsViaDevice

Mapped viaDefs name

Disallowed 7

Create in local

Overwrite in local

Conflict

Layers, LPPs

Disallowed

Update in local

Update in local

ruleContact-Device

Mapped viaDefs name

Disallowed 7

Create in local

Overwrite in local

Conflict

Layers, LPPs

Disallowed

Update in local

Update in local

multiplepart-PathTemplates

Device name

Allowed

Create in local

Overwrite in local

Create in local

Layers, LPPs

Disallowed

Update in local

Update in local

leRules

leLswLayers

Construct name

Allowed 1

Create in local

Overwrite in local

Create in local

LPPs

Disallowed

Update in local

Update in local

CDS_ALLOW_VIRTSYSLAY Environment Variable

A special allowance has been made to let you create, in a technology database, an OpenAccess layer that matches a Virtuoso reserved system layer using the environment variable CDS_ALLOW_VIRTSYSLAY.

Creating layers

With CDS_ALLOW_VIRTSYSLAY enabled, create user-defined reserved layers with the SKILL function techCreateLayer(). After the layer is created, Virtuoso adds (mark internally) the specified user-defined reserved layers to the techDB.

Only layer creation is affected by this environment variable, no other Virtuoso operations are affected. This process should be done as a one-time setup for the entire DFII session in order to keep consistency in creating (marking) user-defined reserved layers.

As set by CDS_ALLOW_VIRTSYSLAY, the internally marked user-defined reserved layer will be temporarily created before saving the techDB. After the save operation is complete, the newly-created reserved layer is deleted and remarked to its original state as before the save operation.

Deleting layers

The environment variable does not delete user-defined reserved layers rather techDeleteLayer() resets the marking of the layer, and the layer is not saved to disk.

Modifying layers

Modifying user-defined reserved layers is not supported. You cannot use functions such as the following in this situation: techSetLayerProp(), techSetLayerFunction(), techSetLayerMaskNumber(), techSetLayerName().

Loading an ASCII technology file

With the environment variable set, the specified user-defined reserved layers in the ASCII techfile

Without the environment variable set, the specified user-defined reserved layers in ASCII techfile

Enabling CDS_ALLOW_VIRTSYSLAY

This Boolean environment variable is set in a shell window (not in the CIW or through a DFII GUI nor is it listed in the sample .cdsenv file). And it should be used by experienced Virtuoso and techDB users only.

To enable the environment variable, type in a Shell window

setenv CDS_ALLOW_VIRTSYSLAY t

To disable, type

unsetenv CDS_ALLOW_VIRTSYSLAY

or

CDS_ALLOW_VIRTSYSLAY nil

Example:

setenv CDS_ALLOW_VIRTSYSLAY t
env | grep CDS_ALLOW_VIRTSYSLAY 
echo 'tfID = techOpenTechFile("tech_lib_name" "tech.db")' >> test1.au
echo 'layer = techCreateLayer(tfID 235 "prBoundary")' >> test1.au
virtuoso -log test1.log -test test1.au
unsetenv CDS_ALLOW_VIRTSYSLAY

Return to top
 ⠀
X