Contents
Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Licensing in OACDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Related Documents for OACDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Installation, Environment, and Infrastructure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Technology Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Typographic and Syntax Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1
Overview of the OpenAccess to CDB Translator . . . . . . . . . . . . . 11
DFII on OpenAccess and Standard OpenAccess . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Database Versions Supported . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Running the Translator in 64-bit Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Use Model of the OpenAccess to CDB Translator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Technology Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
OpenAccess to CDB Translator Engine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Command Line Validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Library Scan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Library Conversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Log File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
The Translator in the Cadence DFII Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Environment Variables Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Name Spaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2
How DFII on OpenAccess Data is Converted . . . . . . . . . . . . . . . . . 21
Application Infrastructure Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
The Library Definitions File: cds.lib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
The System Information File: cdsinfo.tag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Technology Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3
Using the OpenAccess to CDB Translator from the Command
Line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Getting Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Converting a Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Updating an Existing CDB Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Index. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Preface
The OpenAccess to CDB translator, oa2cdb, allows you to translate designs and reference
data from OpenAccess to CDB format, provided the CDB technology is already available.
This user guide describes the OpenAccess to CDB database translator, oa2cdb. It is aimed
at designers who are working in a mixed design environment with IC6.1 and IC5.1.41 parallel
design flows and processes and are developing IP or modifying designs on IC6.1, which need
to be transferred back to IC5.1.41. It assumes that you are familiar with:
■ The Virtuoso design environment and application infrastructure mechanisms designed
to support consistent operations between all Cadence tools.
■ The applications used to design and develop integrated circuits in the Virtuoso design
environment.
■ The design and conversion of technology data as well as other types of pcell and IP
libraries.
■ Virtuoso technology data.
■ Component description format (CDF).
■ The conversion process for blocks and designs.
Licensing in OACDB
The oacdb translator requires the 111 license for the tool to run. If the 111 license is not
available, then the translator will not run and an error message is displayed.
Technology Information
■ For information on technology files and libraries, see the Virtuoso Technology Data:
ASCII Files Reference Manual and the Virtuoso Technology Data User Guide.
■ For information on migrating CDB data from previous releases, see the Compatibility
Guide shipped with IC 5.1 releases on CDB.
variables Indicates text you must replace with text appropriate to your
system. An example is: cd your_install_dir/tools/
dfII/samples/local
{ } Used with vertical bars, they denote a list of choices from which
you must choose one.
1
Overview of the OpenAccess to CDB
Translator
CDBA is the application programming interface (API) and CDB the reference database used
by Virtuoso design environment tools. OpenAccess is a high performance, open-source API
and reference database used by the new generation of Virtuoso design environment tools.
With the exception of the Virtuoso Chip Editor, all of the Virtuoso design environment
applications that have been ported to OpenAccess continue to generate and consume these
shape-based representations. Such databases are also known as “DFII-as-is” or “DFII on
OpenAccess”.
Standard OpenAccess defines a number of non-shape object types for this data. The next
generation of IC tools (for example, Cadence Encounter) do not use shape-based data, but
instead use the standard OpenAccess objects. There are also differences in the way in which
pin connectivity and routing and gcell grids are represented in DFII on OpenAccess and
standard OpenAccess. The table below provides some examples.
The diagram below illustrates the relationship between the oa2cdb translator and the DFII
on CDB, DFII on OpenAccess and standard OpenAccess database formats.
Applications Applications
DFII on
CDB cdb2oa OpenAccess
oa2cdb
Important
The oa2cdb translator converts DFII on OpenAccess representations of place
and route data. It does not handle standard OpenAccess place and route
objects.
Important
You cannot use the ICOA 5.1.41 version of the oa2cdb translator to translate
OpenAccess 2.2 data. Use the IC 6.1.1 version of the oa2cdb translator to translate
OpenAccess 2.2 data.
If your design contains large cellviews (typically over 800Mb in size) and the translator aborts
unexpectedly or fails with an internal error while translating one of these cellviews, use the
UNIX commands ps or top to monitor virtual memory usage during the translation. If virtual
memory usage approaches 4 Gb, you need to use the 64-bit version.
To check whether you are using the 64-bit version of the translator,
1. Type the following in a shell window.
oa2cdb -W
If the sub-version contains the string 64b, you are using the 64-bit version. If it does not,
you are using the 32-bit version.
Important
Running in 64-bit mode adversely affects the performance of the translator.
For more information on running applications in 64-bit mode, see “Running 64-Bit Versions of
Applications” in the Virtuoso Software Licensing and Configuration Guide.
The oa2cdb translator is designed to let design groups using the different formats to continue
to share and leverage each other’s work. You can use it to
■ Translate an entire library.
■ Translate a specified cellview.
Technology Information
The translator use model assumes that all the OpenAccess data to be converted originated
in CDB. This means that all the required technology information exists already in CDB.
Because of this, the translator does not convert technology information.
However, it does perform some operations that are required in order to associate a library with
the correct technology information. For more information, see “Technology Information” on
page 22.
For information on the command line arguments, type oa2cdb -help in the terminal window
or see Chapter 3, “Using the OpenAccess to CDB Translator from the Command Line.”
Library Scan
After validating the command line, the translator prepares the library for conversion in the
sequence outlined below.
1. Examines the contents of the source library and determines the data to be translated
based on the command line arguments.
Library Conversion
The translator converts data from the library level down through the cells to the individual
views. Data that exists already in the CDB version of the library is overwritten unless you
specify the -nooverwrite argument.
Note: Technology information associated with an existing library and library property bags
are never changed, regardless of whether the -nooverwrite argument is specified.
Log File
All the errors and warnings issued during a translation run are recorded in a log file. By
default, the log file is saved to the following path: $HOME/oa2cdb.log.
The translator also respects the Cadence global environment variables CDS_LOG_VERSION
and CDS_LOG_PATH.
■ CDS_LOG_VERSION lets you specify a naming convention for your log files. It accepts the
following values:
❑ sequential, which appends a sequential number to the name of the log file; for
example, oa2cdb.log.1, oa2cdb.log.2, and so on
❑ pid, which appends the UNIX process number to the name of the log file; for
example, oa2cdb.log.1719, oa2cdb.log.2250, and so on
■ CDS_LOG_PATH lets you specify a colon-separated list of directories in which to save the
log file.
Structure
The translator’s log file is divided into three sections:
■ Start
■ Messages
■ Summary
Start Section
The Start section provides information on the version of the translator being used and the
options that you set for the translation run.
Example:
********************************************************************************
Program: @(#)$CDS: oa2cdb.exe version 5.0.2 04/17/2004 00:47 (cds125840) $
sub-version 5.12.41.145
Started at: Apr 20 16:29:56 2004
Hierarchy: /cds/5.12.41/red
User Name: user
Host Name: host1
Options: -lib overview -cdslibpath ../oa/cds.lib
Directory: /user/cdbnew
Log File: stderr
Copyright (C) 2001 Cadence Design Systems, Inc. All Rights Reserved
********************************************************************************
Messages Section
Summary Section
The Summary section provides information on the numbers of cells and views that were
translated.
■ A cell is classed as any directory under the library directory.
■ A view is any directory under a cell directory.
The summary also lists the messages that were generated by the translator and the number
of times each message occurred. Each message provides information on what happened, the
likely cause, and hints on how to recover from specific errors.
Example:
********************************************************************************
Finished at: Apr 20 16:31:02 2004
41 cells and 103 cellviews were translated from library “libName“ in 66.0s.
Message Summary:
Generated 21 times.
WARNING (OACDB-445): Cannot determine the master file for OpenAccess cellview
‘<lib> <cell > <view>’. No cellview database file is
translated. Check your OpenAccess data.
Generated 11 times.
********************************************************************************
Important
Do not use the .cdsinit file to load SKILL code required for parameterized cells
or other design features.
Name Spaces
DFII tools on both OpenAccess and CDB use the CDB name space. When a DFII application
writes an object to disk, the CDB names are mapped to the LibraryUnix name space, which
is used by Cadence tools for library names in cds.lib files and for library, cell, and view
directory names in libraries that are stored on UNIX file systems.
The CDB name space includes certain characters that are reserved for special purposes.
When a DFII application encounters a name containing one of these characters, it substitutes
the escaped hexadecimal code for that character when converting it to LibraryUnix.
The table below lists the reserved characters in the CDBA name space, their purposes, and
their equivalents in LibraryUnix. If there is no LibraryUnix equivalent, the character is
regarded as illegal in the CDBA name space.
Additionally, several other characters commonly found in object names in the CDBA name
space, including the period ( . ) and the hyphen ( - ), are illegal in the LibraryUnix name
space. Again, DFII applications substitute the escaped hexadecimal equivalent when writing
these objects to disk.
When using the translator, specify all library, cell, and cellview names in the CDBA name
space. The translator maps the CDBA name to its LibraryUnix equivalent in order to locate
the object on disk and performs the translation correctly.
Note: The translator also recognizes object names that are correctly specified in the
LibraryUnix name space.
If any of the special characters listed above appears unencoded in the LibraryUnix name
space, the translator is unable to map the name to the CDBA name space and therefore
regards it as illegal. This is most likely to have been caused by a user changing the name of
a directory in the file system.
For an object to be translated it must have a name that is legal in the CDBA name space.
■ If you specify an illegal library name, the translator issues an error and stops the
translation. You must assign the library a legal name in the CDBA name space before
you can translate it.
■ If a cellview contains an object (for example, a net or a pin) with a name that is illegal in
the CDBA name space, the translator translates the cellview but not the illegally-named
object. Therefore, although the cellview appears to have been translated to CDB, it is
unlikely to be complete.
When printing messages to the log file, the translator prints object names as they occur in the
CDBA name space. However, when it is necessary for the translator to retrieve a path directly
from the file system, you will see messages containing escaped hexadecimal codes like the
ones listed above.
For more information on name mapping in DFII tools, see Chapter 7, “Name Mapping” in the
Cadence Application Infrastructure User Guide.
2
How DFII on OpenAccess Data is
Converted
This section tells you what the translator does with the different files and objects in a typical
DFII on OpenAccess database and highlights areas where the results in CDB might be other
than you expected.
For information on these files, see the Cadence Application Infrastructure User Guide.
Tip
To ensure that the correct cds.lib file is updated and that access to the CDB
version of the library is correctly maintained, always run the translator from the
directory that contains the CDB cds.lib file.
If you copy an OpenAccess cds.lib file to the CDB run directory, you must
■ Ensure that you have permission to write to the CDB version of the file so that the
translator can update it during the conversion.
■ Modify the library definitions so that they point to CDB data and not to OpenAccess data.
If the CDB cds.lib definition for the library being converted points to the OpenAccess
version of the library, the translator stops because this would place the CDB version of
the library in the same location as the OpenAccess version, which is not permitted.
If you use environment variables in your cds.lib files, ensure that these are set
appropriately for the database you are using. Library definitions in a CDB cds.lib file must
point only to CDB data and those in OpenAccess cds.lib files must point only to
OpenAccess data.
Technology Information
DFII technology information defines the parameters used in design sessions, including layer
and device definitions, design rules, and display parameters. There are three main sources
of technology information for an OpenAccess design library.
■ An OpenAccess technology file, tech.db, stored in the library directory
■ Separate technology libraries, attached to the design library using the techLibName
property in the library dd.db file
■ A display resource file, display.drf
For more information, see the Technology File and Display Resource File User Guide.
The translator use model assumes that data originated CDB and therefore that all the
required technology information is already available in CDB.
Important
The oa2cdb translator does not convert any technology information.
However, because of the differences in the way that technology information is handled in CDB
and DFII on OpenAccess, there are several operations that oa2cdb must perform in order to
associate the correct technology information with the target library in CDB. These operations
are summarized in the table below.
Note: Use the -tech argument only when you are creating a new CDB library and the
OpenAccess library contains a tech.db file.
Reserved Purposes
DFII on OpenAccess has several reserved purposes: drawing, fill, slot, OPCSerif,
OPCAntiSerif, annotation and gapFill. While drawing is likely always to exist in
CDB, the other purposes and their associated LPPs must be defined in the CDB technology
file if they are used in the OpenAccess library.
SKILL Code
Because the numbers assigned to reserved and user-defined layers and purposes might be
different in OpenAccess and CDB, all SKILL code attached to pcells must use layer and
purpose names to access the numbers, rather than using hard-coded numbers.
Units
In CDB, the values for user units (userUnits) and database units per user unit
(DBUPerUU) for each view type can be stored in various locations.
■ In the design library property bag (prop.xx)
■ In an associated technology file
■ In one of the Cadence environment variables (.cdsenv) files
■ As default values hardcoded in the system
In DFII on OpenAccess these values are stored only in the technology file.
If the values exist in the CDB technology file, oa2cdb checks that they are consistent with the
values stored in OpenAccess version. If the values are different, the translator issues an error
message and the translation stops. The translator cannot update these values in CDB
because to do so would render existing cellviews inconsistent with new units values.
The display resource file specifies how your layers appear on display devices. It defines
■ Display devices
■ Colors, stipple patterns, and line and fill styles
■ Display packets, which are collections of colors, stipples, and line styles associated with
particular display devices
If this file is located at the library level, it is copied to the CDB version of the library.
Cellviews
Cellview database files are translated from OpenAccess format to CDB format and the
filename extension is changed from oa to cdb.
The translator always translates as much of a cellview as possible. Errors encountered in the
translation of a cellview are reported in the log file but do not necessarily cause the translator
to stop. If the log file contains errors against a particular cellview, examine the CDB version
carefully to make sure it meets your needs. In some cases, you might need to fix the data in
OpenAccess and translate the cellview again.
If the translator encounters an illegal cell or view name, it copies the contents of that cell or
view to CDB but does not translate them. This means that you could end up with OpenAccess
data in the CDB version of your library.
If a cellview contains an object (for example, a net or a pin) with an illegal name, the translator
translates the cellview but not the illegally-named object. Therefore, although the cellview
appears to have been translated to CDB, it is unlikely to be complete.
For information on how the translator handles name spaces, see “Name Spaces” on page 18.
Directories in Cellviews
Neither CDB nor OpenAccess supports directories in cellviews. The translator does not
convert directories contained in cellviews.
If your library has directories in cellviews and if those directories contain data that needs to
be translated, move the directory and its contents up to the cell level in the hierarchy before
running the translator.
Because the PCDB API can get the same information directly from the OpenAccess version
of the cellview, the cdb2oa translator copies the pc.db file to OpenAccess only if there is no
CDB cellview database file to be translated. Otherwise it is skipped.
The oa2cdb translator behaves similarly: It copies a pc.db file to CDB only if there is no
OpenAccess cellview database file present. Otherwise the file is skipped with a message. If
the pc.db file is copied, its timestamp is preserved.
Cellview Attributes
The CDB attributes cellViewStatus and cellViewPurpose have no equivalents in
OpenAccess. They are set to unknown by oa2cdb.
The following attributes are not supported in CDB and are skipped by oa2cdb: cellType,
eeqMaster, siteDefName, and symmetry.
View Types
The translator converts the four OpenAccess view types to their CDB equivalents.
This section outlines how the translator converts OpenAccess counters to CDB timestamp
properties.
Verifying Connectivity
Tip
Cadence recommends that you always run Schematic Editor’s Design – Check
and Save command on the CDB cellviews in order to re-extract the connectivity
information before using translated schematic and symbol data in your flows.
To verify that the connectivity extracted for a particular cellview is current, OpenAccess
applications compare the value of the cellview counter against the value of the cellview’s
connectivityLastUpdated property. If the values are different, then the connectivity data
is out of date and needs to be re-extracted.
Verifying Geometry
The translator uses a similar policy to establish the status of cellview geometry. In this case,
the schGeometryLastUpdated property is compared with the cellview counter value to
determine if the geometry of the cellview is up to date in OpenAccess.
■ If it is current (i.e., the cellview counter value is the same as the
schGeometryLastUpdated property value), oa2cdb creates the CDB
schGeometryLastRecorded property with a value later than the
instancesLastChanged property value.
CDB applications comparing the values of the two properties find that the geometry was
updated after the instance was last modified, therefore the geometry is current.
■ If the geometry was not current in OpenAccess, the translator does not create the
schGeometryLastRecorded property in CDB.
CDB applications are able to determine that geometry needs to be updated for the
cellview.
In OpenAccess, when saving the cellview, the cellview counter from the master is stored as
an integer property under the name masterChangeCount in the instance header of the
parent cellview that contains the instance. When the cellview is reopened, the cellview
counter from the master is compared with the masterChangeCount counter from the
instance header. If the values are different, then the instance and its master are out of synch.
When translating paths with extensions, if the path style is not variable, the translator sets
beginExt and endExt to 0.
For information on differences in paths with extensions in CDB and OpenAccess, see “Paths
with Extensions” in Chapter 5 of the Virtuoso Design Environment Adoption Guide.
Labels
There are three types of label objects in CDB.
■ a normal label
■ an IL label
■ an NLP label
When converting an oaText object, there is a direct mapping for all OpenAccess attributes
except alignment, which is mapped to the justify attribute in CDB.
Each oaEvalText object is translated either to a CDB NLP label or an IL label depending
on whether the value of the name attribute of the oaDataCallback is _NLP_ or skill.
oaEvalText objects with no text callback or with a text callback with an unknown name are
skipped with a warning to the log file.
The visibility attributes are implemented differently in CDB and OpenAccess. The translator
maps the OpenAccess settings as indicated in the table below.
OpenAccess CDB
t oacNameValueTextDisplayFormat t t t
t oacNameTextDisplayFormat t t n
t oacValueTextDisplayFormat t n t
n oacValueTextDisplayFormat t n n
n oacNameValueTextDisplayFormat n t t
n oacNameTextDisplayFormat n t n
n oacValueTextDisplayFormat n n t
n oacValueTextDisplayFormat n n n
The difference is caused not by the translator but because of a difference in how OpenAccess
and CDB calculate bounding boxes: OpenAccess rounds the values to the nearest database
unit, whereas CDB truncates the values. Consequently, the width and height of a particular
label could differ by up to 1 (OpenAccess) database unit between OpenAccess and CDB
versions.
If the label or text display is at the edge of a cellview, the difference described above can
cause the bounding box of the cellview (and any instances of that cellview) to be different in
OpenAccess and CDB.
Parameterized Cellviews
A parameterized cell, or pcell, is a graphic, programmable cell that lets you create a
customized instance each time you place it. Pcells are created in the same way as any other
cell and combine the graphic layout of the cell and the parameters assigned to it. After you
compile the master, the associated code is stored in the database as a SKILL procedure.
The translator converts the pcell master cellview as a regular cellview. It then retrieves the
parameter values from the OpenAccess master parameters and the SKILL code attached to
the master, and uses this information to transform the CDB regular cellview into a
parameterized master cellview.
Note: All the pcells to be translated must comply with the recommendations set out in the
Virtuoso Parameterized Cell Reference, particularly those in section “Creating Pcells
Using SKILL” in Chapter 15. If your pcells deviate from the recommendations and, for
example, include SKILL functions that are not intended for use in pcells, the translator fails.
Magnification
CDB supports the magnification of instances but OpenAccess does not. To reproduce
magnified instances in OpenAccess, the cdb2oa translator creates special parameterized
cellviews containing flattened instances of the original cellview master with an additional mag
parameter, used to magnify instances of that master when required. The pcell cellviews are
named viewName_xform.
When the oa2cdb translator encounters a pcell master with the mag and rotation
parameters, it converts it to a regular CDB cellview. Instances of such masters are translated
as regular magnified instances.
Properties
The translator converts dd.db files to CDB prop.xx files (also known as property bags) by
mapping the OpenAccess properties to their CDB equivalents.
Note: OpenAccess dd.db files can store properties, groups, and extensions but CDB
prop.xx files store only properties. OpenAccess groups and extensions defined in dd.db
files are skipped.
The connStatus attribute is skipped because its semantics are different in CDB and
OpenAccess.
The following attributes are skipped because they have no equivalent in CDB: original,
routePattern, routeSpec, shieldNet1, shieldNet2, source, and voltage.
Terminals
When converting terminals, the translator converts all the OpenAccess termType values to
their CDB equivalents except tristate, which is set to unknown and a warning issued to
the log file.
Additionally, in CDB a net can be associated with at most one terminal, while OpenAccess
supports multiple terminals on each net. If the translator finds a terminal with the same net in
CDB, the terminal currently being translated is skipped with an error.
Pins
oa2cdb is able to convert only pins that are represented either by a shape or an instance
object. OpenAccess pins that are represented by routes are skipped with an error.
Regular Instances
Two of the values for the placementStatus attribute – cover and none – do not in exist in
CDB. The translator sets these to unknown.
The priority and source attributes are skipped because they have no equivalent in CDB.
Mosaics
A mosaic is a database object in CDB that represents an array of instances of one or more
masters. There are two kinds of mosaics: simple and complex. A simple mosaic is a special
kind of regular array that has only one master, and every cell in the array has the same
orientation. Any mosaic other than the simple mosaic is called a complex mosaic.
■ The cdb2oa translator maps a simple mosaic to an OpenAccess arrayed instance.
Complex mosaics are not supported in OpenAccess so cdb2oa breaks up complex
mosaics into the individual instances that make up the mosaic before conversion.
■ The oa2cdb translator maps an OpenAccess regular arrayed instance with no instance
terminals to a simple mosaic instance in CDB. If the OpenAccess regular arrayed
instance has instance terminals, it is converted into several CDB scalar instances.
■ OpenAccess parameterized arrayed instances are translated into several CDB
parameterized scalar instances.
■ Complex mosaics are not regenerated.
For information on the issues around mosaics in CDB and OpenAccess, see section
“Mosaics” in Chapter 3 of the Virtuoso Design Environment Adoption Guide.
Instance Terminals
The OpenAccess routeMethod attribute had no equivalent in CDB and is skipped by the
conversion.
Instance Pins
An instance pin (instPin) is a database object that represents a pin of a terminal in the
master of an instance. Because they are not used in DFII applications, cdb2oa does not
create any instance pins in the OpenAccess version of the cellview. Similarly, oa2cdb does
not support the conversion of instance pins to CDB.
3
Using the OpenAccess to CDB Translator
from the Command Line
This section lists the arguments and switches you can use with the oa2cdb UNIX command
and describes how to use these to accomplish the most common translation tasks. The
oa2cdb executable is available at the following location.
your_install_dir/tools/dfII/bin/oa2cdb
Getting Help
To get help on the translator syntax and usage, type the following command in a shell window.
oa2cdb -help
The software displays the same information if you enter oa2cdb without specifying any
arguments.
Syntax
oa2cdb
-lib t_libName
-cdslibpath t_libPath
[ -cdblibpath t_cdbLibPath ]
[ --cell t_cellName... ]
[ -view t_viewName... ]
[ -view t_viewName... ]
[ -tech t_cdbTechLibName ]
[ -nooverwrite ]
[ -incremental ]
[ -help ]
-lib t_libName
Specifies the name of the OpenAccess library to be translated.
Specify the name in the CDBA name space.
This will also be the name of the CDB version of the library.
You cannot use the translator to rename a library. If you need
your library to have a different name in CDB, rename the
OpenAccess version before translating it.
-cdslibpath t_libPath
Specifies the path to the OpenAccess cds.lib file, which
defines the library to be translated.
The translator accepts any file that uses standard Cadence
cds.lib file syntax and supports the use of the INCLUDE
keyword in these files.
-cdblibpath t_cdbLibPath
Specifies the directory in which the CDB library is created.
You can enter either a relative path or an absolute path. The
parent directory of the directory you specify must exist on your
system; the translator cannot create it automatically. The last
element of the path is the library directory into which the library
cells and other files are to be translated. The translator creates
this directory automatically.
Converting a Library
Important
The examples in this chapter use simple library structures to illustrate the use model
of the translator. The pictures do not show all the files typically found in an
OpenAccess library, only those required to illustrate the point being described.
This example uses an OpenAccess library called design containing a number of different
cells. This library was previously converted from CDB using the cdb2oa translator.
user
oa
cds.lib
design
cell_1/
cell_2/
cell_3/
...
cdb
cds.lib
design
cell_1/
cell_2/
cell_3/
...
To do this,
1. Move into the directory that contains the existing CDB cds.lib file.
user
oa
cds.lib
design
cell_1/
cell_2/
cell_3/
...
cdb Run the translator in this directory
cds.lib
design
cell_1/
cell_2/
cell_3/
...
2. Run the translator in the cdb directory using the following command line.
oa2cdb -cdslibpath ../oa/cds.lib -lib design
The translator
❑ Looks in the specified cds.lib file for the path to the OpenAccess library
❑ Establishes the existence and physical location of the CDB library from its definition
in the cds.lib file
❑ Translates the OpenAccess version of the library to CDB, overwriting the data in the
cdb/design directory.
user
oa
cds.lib
design
cell_1/
cell_2/
cell_3/
...
cdb
The -cdblibpath argument accepts either a relative or an absolute path. The parent
directory of the directory you specify must exist on your system; the translator cannot create
it automatically. The last element of the path is the library directory into which the library cells
and other files are to be translated. The translator creates this directory automatically.
If the library is already defined in the CDB cds.lib file, the translator stops. You can use this
option only when the CDB version of the library does not exist.
Important
Regardless of any -cdblibpath specification, the translator always creates or
updates the cds.lib file in the run directory. To ensure that the correct cds.lib
file is updated and that access to the CDB version of the library is correctly
maintained, Cadence recommends that you always run the translator from the top
level of the CDB library.
For an example of how to use -cdblibpath, see Converting Multiple Libraries on page 43.
user
oa
cds.lib
design
cell_1
cell_2
cell_3
...
cdb Start the translator in this directory
The software
❑ Looks in the specified cds.lib file for the path to the OpenAccess library
❑ Creates or updates the CDB cds.lib file in the current directory, cdb.
❑ Creates the cdbNew/design directory and translates the data into it.
user
oa
cds.lib
design
cell_1
cell_2
cell_3
...
cdb
cds.lib CDB version of the cds.lib file
updated in the current directory
cdbNew
design
cell_1 Cellviews translated into the new library.
cell_2
cell_3
...
Converting a Cellview
To translate a specific cellview to OpenAccess,
➤ Use the -cell and -view arguments on the command line.
oa2cdb -lib design -cdslibpath ../oa/cds.lib -cell cell_1 -view layout
The translator converts only the layout view for cell_1, ignoring any other views present
for cell_1 and any other cellviews referenced by it.
user
oa
cds.lib
design
devices
deviceLib1
deviceLib2
reflibs
refLib1
refLib2
Important
If your OpenAccess data originated in CDB, the correct directory structure exists
already in CDB and is represented in the existing cds.lib file. When converting
the libraries, oa2cdb will automatically translate them into the correct locations. The
-cdblibpath argument is not required.
If you are translating multiple libraries from OpenAccess to CDB for the first time, Cadence
recommends that you set up the directory structure for the CDB version of the database
before you start. Then use the -cdblibpath argument to direct the translated libraries to
the correct location.
Important
Regardless of any path specified using -cdblibpath, the translator always
creates or updates the cds.lib file in the current working directory.
user
oa
cdb Start the translator in this directory
design
devices
reflibs
1. Identify the top cellview in your design and open it in your Virtuoso design environment.
2. Type Shift-f to display all the levels in the design.
3. Click Design – Hierarchy – Tree, select Current to Bottom, and click OK.
The layout editor opens the Tree window showing the entire hierarchy of instances inside
the current cellview.
Design Hierarchy
****************************************************************************
Library : design
Cell : top_cell
View : layout
Option : Current to bottom
****************************************************************************
The indentation shows the hierarchical relationships between the cellviews listed. The
numbers in parentheses tell you how many instances of each cellview are present. For
example, design top_cell layout contains 5 instances of cellview refLib1
cell_1 layout, 1 instance of refLib1 cell_2 layout, and so on.
4. Translate the libraries one at a time, working from the lowest level library up to the top
cellview.
oa2cdb -lib refLib2 -cdslibpath ../oa/cds.lib -cdblibpath reflibs/refLib2
oa2cdb -lib deviceLib2 -cdslibpath ../oa/cds.lib -cdblibpath devices/
deviceLib2
pa2cdb -lib deviceLib1 -cdslibpath ../oa/cds.lib -cdblibpath devices/
deviceLib1
oa2cdb -lib refLib1 -cdslibpath ../oa/cds.lib -cdblibpath reflibs/refLib1
oa2cdb -lib design -cdslibpath ../oa/cds.lib -cdblibpath design
To resolve this situation, work from the lowest level in the hierarchy back up to the top cellview,
translating individual cellviews as required so that the dependencies are satisfied.
For example:
refLib1/cell_4/layout
refLib2/cell_1/layout
refLib1/cell_6/layout
refLib1/cell_6/layout
The layout editor’s Tree window shows the relationships like this.
Design Hierarchy
****************************************************************************
Library : design
Cell : top_cell
View : layout
Option : Current to bottom
****************************************************************************
.
.
.
refLib1 cell_4 layout (1)
refLib2 cell_1 layout (1)
refLib1 cell_6 layout (2)
.
.
.
(truncated)
3. Translate the rest of library refLib1, using the -nooverwrite option to prevent the
cellview translated previously from being translated again.
oa2cdb -lib refLib1 -cdslibpath ../oa/cds.lib -nooverwrite
Note: Because refLib1 exists already, you do not need to use -cdblibpath. The
library is updated automatically in the correct location.
Index
A D
application infrastructure files display resource file, display.drf 25
cds.lib 21
cdsinfo.tag 22
E
B empty cellviews 26
O verifying geometry 28
verifying the currency of a placed
oa2cdb instance and its master 29
getting help 35 translating
location of executable 35 from the command line 35
overview of the translator multiple libraries 43
engine 14 to 16 determining the sequence of
syntax 35 translation 44
OpenAccess resolving circular dependencies 45
DFII on OpenAccess 11 single libraries
illegal names in 20 into a target directory 43
introduced 11 troubleshooting
standard OpenAccess 11 log file 16
versions supported 12
U
P usage
parameterized cells oa2cdb 35
introduced 31
SKILL functions in 32
parent-child database file, pc.db 26 V
pcells See parameterized cells
properties 25 versions
CDB and OpenAccess versions
supported 12
R visibility settings 30
for text display objects 30
related documents 7
S
syntax
command line validation 14
conventions 8
getting help with 35
oa2cdb 35
T
technology information
display.drf 25
text display objects
bounding boxes, differences in 31
visibility settings 30
timestamps
introduced 27
verifying connectivity 28