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
- what can and cannot be duplicated in multiple technology databases in the same graph
- how the software handles specific conflicts between databases
- how the software handles situations when referenced objects are not where they need to be
-
special allowance for creating layers that match Virtuoso reserved system layers using the environment variable
CDS_ALLOW_VIRTSYSLAY Environment Variable.
This section does not deal with every possible data specification. For complete information, see the
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:
-
foundryconstraint groups and their contents, with the requirement that the objects referenced exist somewhere in the subgraph - default constraint groups and their contents, with the requirement that the objects referenced exist somewhere in the subgraph
- layer-purpose pairs and their drawing priority order
-
techLayerPurposePrioritiesfor the same named layers and purposes -
equivalentLayers -
stampLabels -
labels -
leLswLayers
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:
-
Any
cdsViaDeviceand itsviaDefmust be in the same technology database. -
For any
techDisplaysdefinition, the specified layer-purpose pair must be defined 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.

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
- are marked as created in the techDB
- can be saved to disk
-
can be dumped to another ASCII techfile
Only the specified user-defined reserved layers are dumped, not all reserved layers.
Without the environment variable set, the specified user-defined reserved layers in ASCII techfile
- are not marked as created in the techDB
- do not issue a warming message to be compatible with previous releases
- can not be saved to disk because layers are not marked
- can not be dumped to new ASCII techfile because layers are not marked
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
unsetenv CDS_ALLOW_VIRTSYSLAY
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