OpenAccess 2.2.2


Contents

Note: For an overview of the new features available in 2.2.0, refer to What's New.


Version 2.2.2

Release Status

Some parts of this release are still in development and are considered to be of Beta quality. They are subject to changes in their use and interface. This includes:

The oaPcellScript Plug-In is in development and is not ready for use at this time.

Compatibility with Earlier Releases

Changes and New Features

zlib is Statically Linked to Translators

Several translators support reading files in the gzip format by using the zlib open source library. The translator executables delivered with OpenAccess previously linked to zlib as a shared library, which forces end users to download and install zlib on their machines. Unlike some other third-party components such as Tcl, the functionality provided by the zlib library is not directly exposed to end users, and there is no need to have multiple tools use the same version of zlib. The translator executables that read files in gzip format now link to zlib as a static library.

Translators are Built as Static Libraries

Previously, translator components were delivered as shared libraries, and both the translator executables and other applications linked to them dynamically. Unlike the public OpenAccess API, the interfaces into these translators are subject to change. These changes can affect applications that derive from the translator base classes, as well as applications that simply use the translator components as-is.

When new OpenAccess kits ship (including the translator shared libraries) applications need to use the kits with existing applications. A change to the translator API would break existing applications even though the OpenAccess core remains drop-in compatible.

All translators are now built as static rather than shared libraries. This allows applications to link to a fixed version of the translator API while supporting drop-in compatibility for new OpenAccess kits. In some cases, a bug fix requires both a change to the translator API and a co-dependent change to the OpenAccess kits. In that case, applications that link statically to a translator must be rebuilt in order to pick up part of the fix, and existing executables will not work properly with the new kits. To avoid these problems, the overall architecture for how applications use the translators must change. This issue is currently under consideration by the OpenAccess development team.

oa, oaCommon, and oaUtil Restructured

To improve efficiency, avoid inconsistencies between different versions of the modules, and to minimize obscure compilation errors and test failures, oaCommon and oaUtil are now packages within the oa module. The following figure shows the new structure:

Header files from oaCommon are still installed in the top level include/oa directory. Header files from oaUtil were previously installed in include/oaUtil. These are now installed in include/oa for consistency. This should not affect applications that use the translator components because those applications already depend on include/oa. Shared libraries from oaCommon are still installed in the top level lib/<platform>/<mode> directory, and DLLs are still installed in the top level bin/<platform>/<mode> directory. As part of the change to statically link the translator component libraries, oaUtil now installs static instead of shared libraries in the top level directory.

Tcl Package Support

The Tcl binding of OpenAccess supports the Tcl package command, which is preferred over the Tcl load command. Refer to Package Support for more information.

Dependencies for Building Applications on OpenAccess on Windows

OpenAccess depends on the Winsock2 socket technology, and therefore must include Winsock2.h.

If your code files contain #include <Windows.h> statements, adhere to the following rules.

Note that most users do not specify #include <Windows.h> statements in their code files because OpenAccess code files already contain include statements for Windows.h.

Building the oa20to22 Translator

The following procedure explains how to build the oa20to22 translator.

  1. Download the following kits for the platform you want:

    cdsCommon executable kit
    cdsCommon development kit
    OpenAccess development kit
    OpenAccess source kit

  2. Expand these four kits in the same directory.

  3. Refer to OpenAccess 2.2 Installation and Configuration Notes for information about how to build OpenAccess.

  4. Set the environment variable OAHOME_2_0 to the directory that contains the expanded kits.

  5. Add the directory that contains the cdsCommon executables (typically tools.<platformName>/bin) to your executable search path.

oa20to22 Translator Change

oa20to22 will now convert 1-bit wide vector objects into the corresponding bit objects. This means that explicit single-bit busNets, busTerms, and vectorInsts are converted into explicit busNetBits, busTermBits, and vectorInstBits.

LEF/DEF Translators Take a List of Files

Both lef2oa and def2oa now take a list of files now and process each file in the specified order. For multiple DEF files, if one DEF refers to one of the other specified DEF files (as COMPONENT), the translator handles this reference in any order. You can use a set of hierarchical DEF files without concern about the order of processing for the files.

lef2oa Translator Change

The lef2oa translator no longer overwrites the oaDesign for existing custom vias.

def2oa Translator Changes

Calculation of Width for Diagonal Segments by Def Translators

The DEF translators have been modified to correctly calculate the width of diagonal segments.

Stream Translator Change

oa2strm now translates the following oaTextDisplay objects:

These textDisplays are translated as labels and are written out as Stream TEXT records. The translation is asymmetric, and these objects return as oaText objects in a round-trip translation.

Note that oaInstAttrDisplay and oaInstPropDisplay are not translated.

The new command line options are as follows.

Option Description
-noOuputTextDisplays Disables the translation of of textDisplays. The textDisplays are translated by default.
-text <namespace> Some text displays, such as oaAttrDisplay, either require or support namespace namemapping. This options specifies the namespace to use. The valid choices are: "native", "cdba", "lef", "def", "verilog", "vhdl", "spef", "spf", and "spice".

oa2spef

oa2spef suppresses grounded capacitors whose values are 0.0. If there are multiple values on the capacitor (from multiple analysis points), the capacitor is suppressed only if all the values are 0.0.

verilog2oa Translator

The verilog2oa translator has been updated to better handle expanding multi-bit connectivity. See Expanding Connectivity in the Verilog to OpenAccess Mapping document for details.

oaDefNS and oaSpefNS Namespace Changes

A name with a double vector notation (name[1][2]) now becomes a vectorBitName with the first bus notation escaped internally (name\[1\][2]).

A name with a bus notation in the middle of the name now becomes a scalarName with the bus notation escaped internally (name[1]a becomes name\[1\]a).

When getting the string from the name, the escaping is undone, so you get the original name back.

Default Parameters for Pcell References

The handling of default parameters for Pcell references (including instances and custom vias that are Pcells) has changed.

Previously, any parameter that had the same value as the default value in the superMaster was considered to be a default parameter. These were not stored on the instance and the value would change if the superMaster value changed. Now, a parameter is a default parameter only if it is not explicitly specified during creation or in subsequent calls to setParams(). If a parameter is specified in the reference, it is not a default parameter even if its value equals the default value.

This change impacts getParams() calls to the following:

getParams() will now return any parameter that is explicitly specified on the instance regardless of whether or not its value equals the default value.

LPP and layerHeaders in Pcell superMasters

Previously, the LPP and layerHeaders in the Pcell superMaster were filtered out from the parent design that contained instances of the superMaster. This filter has been removed, and the result is that additional LPP and layerHeaders might appear in the parent design if LPP or layerHeaders are in the superMaster, but not in its subMasters.

Behavior Change for oaFig::copy and oaFig::move for Pcells

The behavior of oaFig::copy() and oaFig::move() has changed with regards to copying or moving an unbound Pcell instance across designs. The copy and move functions will now more closely match Pcell instance creation. Accordingly, the copy and move functions will force the master to load to ensure that the instHeader created in the destination design is consistent with the source. The exceptions oacCannotCopyPcellInst and oacCannotMovePcellInst are thrown if the master cannot be found.

Implementing Pcells Through Tcl (Beta Version)

OpenAccess implements Pcells in Tcl using the oaPcellScript and oaTclEngine plug-ins. The oaPcellScript plug-in is a Pcell evaluator that uses a scripting engine to interpret a content generation procedure written in a scripting language that supports the OpenAccess binding. Provided the necessary scripting engine, the Pcell evaluator can work with different types of scripting languages. The oaTclEngine is a scripting engine included with OpenAccess that provides the OpenAccess binding through the oaTcl shared library. The oaTclEngine plug-in supports Tcl version 8.4.1 or later.

For more information, see Implementing Pcells Through Tcl.

oaPcellScript Plug-In (Development Version)

Note that the oaPcellScript Plug-in is included in this release, but it is not ready for use and is still under development.

Documentation Change for oaNameMem::getValue()

The documentation for this function has been updated to state that this function is only intended for use by nameSpaces.

Unbinding Occurrence Hierarchies Has More Consistent Behavior

When an occurrence hierarchy or sub-hierarchy is unbound from the top occurrence hierarchy, OpenAccess now consistently removes the hierarchy from the occurrence domain. The public occObjects in the sub-hierarchy and the non-local occurrence hierarchies are destroyed, and the annotations in the occurrence domain are removed.

Uninstalling OpenAccess on UNIX Platforms

Uninstallers are no longer provided for UNIX platforms. Use the rm command instead:

% rm -r <install_dir> 

DM FileSys Plug-In

If DM FileSys cannot deterimine the viewType of a cellView, the cellView is ignored rather than throwing an exception.

New APIs

The following new APIs are available.

oaBoundary and Derived Classes

Due to code optimizations, the order in which points are returned for a rectangular boundary can differ from the order in which they were entered.

oaName Utility Classes

New operator== and operator!= methods are available on the oaName, oaBundleName, oaSimpleName, oaVectorName, oaVectorBitName, and oaScalarName utility classes. See the API documentation for more information.

oaTech Class

The following APIs have been added to the oaTech class:

Functions that Take a Database Argument

All API's that take an oaObject *database now throw a common oacInvalidDatabase exception. Most of these functions previously threw individual exceptions.

Affected APIs

APIs Current Exception Previous Exception
oaAppObjectDef::isUsedIn()
oaAppObjectDef::remove()
oaAppObjectDef::create()
oacInvalidDatabase None
oaAppDef::isUsedIn()
oaAppDef::remove()
oacInvalidDatabase oacInvalidObjectForAppDef
oa<any>Value::create() oacInvalidDatabase oacInvalidObjForValue or oacEmptyArrayValue
oaConstraintGroup::create() oaConstraintGroup::copyTo() oacInvalidDatabase oacInvalidObjForConstraintGroup
oaConstraintParam::create()
oaConstraintParam::copyTo()
oacInvalidDatabase oacInvalidObjForConstraintParam
oaGroup::create() oacInvalidDatabase oacInvalidObjForGroup

 

API Change Reports

View a summary  of the OpenAccess 2.2.2 update release changes with respect to 2.2.1.

Fixed Problems

Issue Si2 ITS
oaModule::getInsts() incorrectly includes physical-only instances when called on the top module of the oaDesign, and oaModScalarInst::find() and oaModVectorInst::find() incorrectly return physical-only instances in the top module when given the right name.  
Call to oaDesign::open crashes, or oaDesign::exists incorrectly returns False in the oaDMFileSys plug in.  
Region Query ignores the initially specified transform.  
If an incorrect name is supplied with the -DMSystem option, strm2oa fails to display error information to stdout, although the log file contains the error information.  
If the -lib <design_library> and -refLibs <reference_library> are the same, verilog2oa creates an extra abstract view of zero bytes.  
When a terminal that defines the ground or supply sensitivity for another terminal is deleted, querying the ground/supply sensitivity term returns a term pointer that is invalid.  
Functionality for adding or removing Def objects in the block domain is missing or incomplete.  
Correct the performance issues (compared to 2.0) when creating and deleting busNets. In particular, the version 2.2 performance for deleting busNets is significantly degraded.  
Deleting instTerms in a particular order from two instances of the same master, or deleting instTerms from two instances connected by a common net, causes a crash.  
oaGetLibPath does not return the appropriate library path. It should return the RH EL 2.1 path not the RH 7.2 path.  
The OpenAccess Tcl command oa::getType of a name fails with the error "Error: Mismatched argument", although the name can be printed.  
There is no good way to obtain a printable name for non-scalar objects using oa Tcl because the binding does not properly resolve the arguments to oa::getName.  
oaLayerConstraintDef::get is missing from the Tcl binding. ITS528
OpenAccess dumps core when invalid pointers are passed via the Tcl API.  
OpenAccess consumes excessive memory.  
The 2.2 documentation includes information on how to build other translators but doesn't talk about how to build oa20to22. ITS527
Invalid refHeader during undo  
oa2lef creates bad PITCH definitions if the PITCH value in OpenAccess is unset or 0.  
oa2lef should not output objects with non-LEF layers.  
When the OVERLAPLAYER property in a CDB database is an oaAppProp instead of an oaStringProp, the lef2oa translator fails and returns an Invalid Property error.  
Improve the performance of oa2lef and def2oa that is degraded when the -DMSystem oaDMFileSys option is used.  
Cell rotations produced by oa2strm are wrong when angles are larger then 360 degrees or smaller then 0 degrees. ITS622
The oaSpiceNS namepace should throw an exception when extracting a string from a vector name.  
Region Query ignores the initial transform specified.  
Overlapping of arrayInst is not handled correctly for the case where the region lies directly on the boundary of array elements.  
Uniquifying one occurrence of a module, detaching the original module, and then embedding it back, causes a crash.  
The oa2lef translator should output default values for all attributes that have explicit default values.  
oaAreaHalo does not work with oaArrayInst.  
def2oa should handle multiple hierarchical DEF files.  
The halo blockage points are not recomputed when the bBox of an inst is changed.  
The def2oa translator should have a switch to prevent the geometries (routes) from being read from DEF.  
SYSNAME script update for RHEL 3.0 for Itanium needed.  
"Make clean" command gives an error regarding ./lang.  
The defragmentation of pin data corrupt the contents of the database in unpredictable ways.  
Multiple oaModule::embed calls cause a crash.  
IsGlobal returns true for non global net.  
Merging nets mismatches instTerms on explicit bits.  
If you try to scalarize an oaModModuleVectorInst, you get an incorrect error such as: ERROR: Input name (or member): inst4[0:1] has improper bus syntax.  
Need to add plug-in library path to support third-party plug ins.  
oaFSLockD crashes on HPUX 32-bit platform.  
The following code causes a SEGV: oa::oaString junk("12345678123456781234567812345678"); junk += junk;  
Installers crash for RHEL 3.0 32-bit.  
Need to remove UNIX uninstallers.  
oaViaSpec::destroy() crashes when the viaDef array contains NULL values.  
oa20to22 translation should not create zero value constraints.  
lef2oa complains if you have a read-only tech library with a macro-only input LEF file.  
lef2oa ACCURRENTDENSITY mapping reports the incorrect index.  
def2oa -masterViews option does not work correctly.  
A core dump occurs if you try to delete a constraint that is a member of a previously deleted constraintGroup.  
Cannot set layer attribute values to NULL.  
oaPath::create returns incorrect boundary paths.  
Stream translator should accept zero-path width. ITS611
Translators should clean up appDefs after translating.  
Default lib.defs conflicts with -libDefFile option.  
The Verilog translator mishandles the terminal name of a forward referenced bus terminal if the actual bus terminal is not zero indexed.  
oaVerilogNS does not handle names that start with non-alphanumeric characters.  
If an oaGroundedNode has zero for its cap value, oa2spef writes a zero-valued cap in the spef file. (These should be suppressed as they add no useful information and increase the file size.)  
verilog2oa should print a list of unbound masters.  
A missing master.tag file causes OpenAccess to core dump.  
OpenAccess throws an exception from the FileSys DM system when a cell has a dot (.) in its name.  
oaString::operator+=() does not work correctly when both arguments are the same object.  
oaPath::genBoundary creates an incorrect boundary for non-rectilinear paths.  
LEF and DEF translators to support multi-dimensional vector names  
Need to throw an exception in FileSys if a file cannot be created due to path name length. ITS503
Cannot create a connectDef for an implicit bitNet.  
If you detach a module and create a new design database, all of the data from the module and the module hierarchy underneath it are copied to the new design. During the copy, issues with autoNamed nets causes a crash. Also, after the data is copied to the new design, it is deleted from the source design. This causes a crash in some situations due to an attempt to reference bounding box information for an instance that was not in the block domain. ITS596
oaBaseCollection.h does not compile with MFC on a non-Microsoft compiler.  
Scalazing a modInstTerm should make its occInstTerm implicit.  
oa20to22 does not preserve the preferred routing direction.  
If you create a via in designA with a regular master (not a superMaster) designB, save and close designA, then modify designB to be a superMaster while designA is closed, an incorrect viaHeader binding is created in designA when it is opened later.  
oa20to22 should use the default value specified in OpenAccess when an oaAppDef is created.  
inst->getMaster is incorrectly flagging the top design as modified.  
oa20to22 does not preserve ANTENNAPARTIALCUTAREA.  
lef2oa translator crashes if the LEF file defines the "non-width based" via rules before the "width based" via rules.  
oa2lef should output non-cut layer rules for the inter-layer spacing section.  
oa2lef output contains a custom via without the via definition.  
oaAppDef functions are slow.  
Creation of specific paths results in objects with overly large bounding boxes.  
setParam() does not find an existing subHeader.  
oaProp::find performance issue.
 
Change FileSys to throw oaExceptions.  
The InstTerm of a term that uses the autoName syntax is unbound.  
Performance issues when creating and deleting busNets.  
Undoing the delete of a net span should restore the canonNets of the occNet.  
If you scalarize data, then edit a bitNet and delete its scalarized owner, if the owning net has a multi-bit terminal that was also scalarized, it should also be deleted.  
uniquify fails when there are scalar instances and vector instances for a module.  
Cannot install OpenAccess in the previously used directory.  
oaNames should have equal and not equal operators.  
Generating a Tcl Pcell subMaster fails when the Tcl binding (oaTcl) is loaded explicitly.  
Some OpenAccess Tcl APIs do not have documentation in oa::help.  
The Tcl examples do not conform to Tcl standards.  
Some oa::Exception objects are not useful in Tcl.  
Connections are lost when you scalarize vector insts.  
Problems occur if you reuse an occurrence after the original instance bound to it is destroyed.  
Parasitics are lost after the design is saved. ITS620
A crash occurs if you undefine a superMaster without parameters.  
The parameter handling mechanism for stdVias is incomplete.  
Error message is not used in the OpenAccess code.  
lef2oa overwrites via designs in update mode.  
def2oa should split non-rectangular PLACEMENT blockages into rectangles.  
def2oa crashes if an instance references its own design.  
In update mode, def2oa should handle instTerms that are connected by position.  
In update mode, def2oa should update the cellType of a design.  
Incorrect chamfering of path boundaries occurs for some non-acute angles when very large coordinate values are specified.  
setTransform produces incorrect results.  
After scalarization, the busNetBits in an instance lose their visibility to the module domain.  
Verilog translator errors out with: "Net width does not match instance/terminal width."  
oaDMFileSys throws an exception when the master cannot be determined.  
The instHeader bBox is not updated properly.  
Embedding a detached module with multiBit objects causes a crash.  
Nonexistent Tcl API specified in the documentation.  
Attempting to create an object with a bundle name of the form “a,a<0:1>” can cause a crash.  
Too much information is deleted when a net is deleted via the module domain.  
Connections are lost when calling vectorInst->setBaseName or setRange.  
Please clarify the categories of classes in the OpenAccess documentation.  
oa_Init aborts when invoked from a statically linked Tcl shell.  
Problem with baseName procedure in /oa/TCL/oa.tcl example.  
processInstance procedure does not work correctly in /oa/TCL/inst.tcl example.  
Getting the master from an unbound Pcell instance that was created without optional default parameters causes a crash.  
oa20to22 creates implicit busTermBit terminals for terminals that were not implicit in the OpenAccess 2.0 data.  
The PREFERREDENCLOSURE statement should be mapped to a soft constraint in the FoundryRules constraint group instead of a hard constraint in the LEFDefaultRouteSpec constraint group.  
oaAppObject methods should not accept invalid objects. ITS613
def2oa creates an incorrect EMH in the OpenAccess database.  
Infinite loop occurs when a directory in an OpenAccess library is removed.  
Tcl oa::DesignOpen crashes on invalid parameters.  
Tcl oa::LibDefCreate command crashes.  
Path boundaries should not have coincident/collinear points.
 
oaModBusTermDef has empty collections.  
oaName operator== case sensitive/insensitive comparison fails.  
If a cell has the view name 'layout' a view type other than oacMaskLayout, oa2strm should not try to open that cell.  

Version 2.2.1

Compatibility with Earlier Releases

New Features

Translators

The lib, cell, and view names that you supply to the translators on the command line are now in the OpenAccess Native name space.

Spef Translators

The zlib library, which is required by the Spef translators, is no longer shipped with OpenAccess. For information about acquiring and setting up zlib, see the Installation Instructions.

Also, spef2oa now includes a -tolerate command-line option, which tolerates connectivity mismatches between the SPEF input and the target OpenAccess database. Usually, connectivity mismatches result in an error and processing stops. The –tolerate option reduces these errors to warnings, but some coupling capacitance may be dropped from the parasitic network. If the network cannot be properly connected due to connectivity problems with series devices (such as resistors), the entire network is ignored but processing continues. Note that the SPEF translator does not perform exhaustive node to node checking of the network connectivity. It is possible to construct networks that contain electrical opens regardless of whether this option is used.

Stream Translators

The Stream translators include a new -viaMap option to support inputting and outputting custom via mappings.

-viaMap file

For oa2strm, produces a via mapping file that lists all of the structures output that are masters for CustomViaDefs.

For strm2oa, specifies an input file that defines which structures to recognize as CustomViaDef masters.

Custom Via Mapping File Syntax
# Comment
# Blank lines will be ignored
<Structure Name> <oaCustomViaDef Name> <Layer1 Name/Number> <Layer2 Name/Number> 

Example:

# Custom Via Master List for mydesign
via1 m1m2via m1 10 m2 20
via2 m2m3via m2 20 m3 30

oa2lef Translator

The PITCH, DIAGPITCH, and OFFSET constructs have been moved to the LEFDefaultRouteSpec constraint group. Previously generated tech databases are incompatible because oa2lef will no longer find these constructs in the foundry rules group.

LEF/DEF Mapping Changes

Wafer API Changes

Two new wafer functions have been added:

oaTimeStamp             getTimeStamp(oaWaferDataType    type) const;

oaTimeStamp             getTimeStamp(oaAppObjectDef     *def) const;

New Overload for oaCellView::setView

void oaCellView::setView(const oaView *view); // Already exists
void oaCellView::setView(const oaView *view, oaBoolean mustExist); // New overload 

These functions modify the cellView that is associated with the specified view.

oaCellView::setView(const oaView *view) accomplishes this by renaming the existing primary data in the cellView to be of the appropriate type. An exception is thrown if the non-primary data already exists in the cellView of the specified type.

oaCellView::setView(const oaView *view, oaBoolean mustExist) assumes the cellView already contains the appropriate type of data, but that it is not currently marked as the primary data for the cellView. This function makes this data primary. The original data is left in the cellView as non-primary data. The argument mustExist should be set to TRUE. If mustExist is set to FALSE, this function operates identically to the first version.

Note: To maintain drop-in compatibility, these functions are implemented separately, but will be merged together at a later date.

New Turbo DM System Attribute

maxFilesPerDataDir Specifies how many files are created before the Turbo DM system starts creating subdirectories to store the files. This number is also used as the maximum number of files to include in the subdirectories.

See Turbo DM System in the Libraries and Design Management section of the Programmers Guide for more information.

FileSys File Locking Use Model

The file locking functionality for the FileSys DM system is fully documented. The lock recovery daemon is now called oaFSLockD.

See File Locking in the Libraries and Design Management section of the Programmers Guide for more information.

Constraints

The distance parameter has been added to the oacMinWireExtension constraint.

Default Compiler Environment

There has been a change to the default compiler environment path settings supplied with OpenAccess. See Default Compiler Environment for details.

Removal of Fatal Exceptions

The following fatal exception classes have been removed:

OpenAccess does not throw exceptions using any of these objects, so they have been eliminated. The expectation is that clients are not using these class types to catch OpenAccess exceptions because OpenAccess does not throw these exception objects.

Almost all clients use the base oaException type in the catch block to get a copy or a reference of the thrown object. There should be no drop-in compatibility issues for these clients, and eliminating these classes now will prevent unnecessary confusion in the future.

Clients that have catch blocks to specially handle these fatal exception types should remove them.

API Changes

View a summary  of the OpenAccess 2.2.1 changes with respect to 2.2.0.

Fixed Problems

Issue Si2 ITS
OpenAccess should not purge a master design as a side-effect of undoing an operation that explicitly opened the master.  
The oaNet::getSingleBitMembers() and the oaNet::getMemberNets() collections and iterators should return the corresponding canonical net associated with the underlying net object. ITS580
Threading causes the net of an InstTerm to be invalid.  
Deleting a net that represents a span in the block domain causes a crash.  
oaInstTerm::addToNet throws an invalid exception.  
oa2strm causes a segmentation fault.  
Tcl (oaLang) incorrectly uses varargs in C++. ITS540
There is a superfluous dependency on libtcl8.4.so in the runtime oaTcl library.  
Purify error on oaDMFileSys::FileLocking::save.  
A segmentation fault occurs on oaInst::setMaster.  
def2oa crashes if there are no pins in the DEF file and the -noModHier flag is not specified.  
Segmentation fault due to a null pointer access in oaIter<oaGroup>::oaIter.  
A segmentation fault occurs on oaSimpleConstraint::find.  
Cannot have a techlib with a dot (.) in its name.  
oaTech::getUserUnits returns the incorrect value. ITS584
oaModDesignInst::destroy crashes if there is no top module.  
Via query performance issues.  
A crash occurs when trying to close data.  
Unexplained memory growth occurs during oaParasiticNetwork creation.  
Defragmentation of oaModVectorInstDefs causes a crash.  
isClone and isVariant are wrong after using uniquify().  
Documentation for header files contain misleading #include statements.  
oaTextDisplayIter crashes when there are no shapes in the design.  
Change translators to read lib, cell, and view names in the Native name space.  
A segmentation fault occurs in oaStringAppDef< oaDesign >:set(). ITS579
MAXIMUMDENSITY should not depend on MINIMUMDENSITY in the LEF file.  
oaDesign->getTimeStamp(oacBusNetDefDataType) causes a crash.  
Stream translators output a duplicate elapsed time message.  
oa2verilog incorrectly omits a comma when constructing bundle names that consist of both real net names and numerical values.  
oa2spef should write a name map only for objects that will be referenced later.  
The distribution of zlib is inconsistent with the Spef translators.  
Using oaDesign::scalarize on an oaModModuleVectorInst throws an unknown exception.  
If you create a cellView using oaCellView::find(lib, cellName, viewName), then manually delete the cellView during the same session, a subsequent call to oaCellView::find for that cellView incorrectly returns a valid cellView. ITS533
Tcl oa::getShapes should return real object types. ITS577
When an argument is incorrect in a Tcl call, you should get a more helpful error message than "mismatched argument." ITS538
The enums for oaPlugInDMTypes are not available from Tcl. ITS531
The cellView is not updated after redefining the Pcell master.  
Problem with oa2lef for pitch constraint.  
A crash occurs when you move an instance from design1 to design2 if you just opened design2 and didn't get the topBlock of design2.  
If you specify a variable endStyle different than half-width, the width at the end is twice the extension.  
Memory issues occur when pushing levels for an oaHierPath object beyond its size and when assigning an oaHierPath object to another object of smaller size.  
Incorrect oaPointArray::getArea() documentation.  
All translators should print command summary and run time information.  
If you open a techfile in 'r' mode, then open it in 'a' mode (or reopen it in 'a' mode), you get an exception.  
Wrong exception for cross-partition device  
The oa20to22 translator crashes when converting a library containing a techDB, but referring to an external techDB.  
Overly restrictive uniquify check prior to scalarization.  
Assignments are not properly destroyed when an inst is deleted.  
HashTableIter does not support HashTable::remove.  
Pcell instance master has the wrong viewType.  
oa2lef searches only one level of the constraint group.  
The DEF translators cannot handle names with a dot (.) in them.  
oa2lef core dumps on lef2oa data.  
oa2lef should default to the current LEF version.  
oaPointArray::contains() does not return true for certain polygon configurations for specific points inside that polygon (which causes some region queries to produce incorrect results).  
oaHierProps are deleted, but do not completely disappear. ITS552
oaIter copy constructor does not reset (documentation issue) ITS576
Cannot get the defaultAntennaRule.  
Crash occurs in techFindConstraintGroupByName.  
Verilog translators should handle constants with more than 32 bits.  
oa2verilog should preserve ASSIGN statement semantic direction.  
oa2verilog should traverse through design instances when producing recursive output.  
Allow spef2oa to ignore coupling caps to nets that do not exist with a -tolerate command-line option.  
verilog2oa errors on module redefinition.  
oa2lef searches only one level of the constraint group.  
Nets do not have POWER and GROUND sigTypes.  
lef2oa translates the wrong number of default database units.  
The pitch and offset values are reversed in lef2oa and oa2lef.  
oa2strm crashes on a design with C++ Pcells.  
Cannot open a cellView in 'w' or 'a' mode within the oaObserver::onFirstOpen observer when the tech is opened in 'r' mode.  
A crash occurs during the call to getOccShape.  
Cannot open a database with minFillPatternSpacing rules.  
Uniquifying an occurrence of an instance causes a crash.  
The Tcl oa::DesignOpen command with custom via fails. ITS529
Reading in an older 2.2 database should throw an exception.  
OpenAccess 2.0 geometric routes are not translated correctly.  
oa20to22 changes the route status of wires.  
def2oa should exclude physical-only cells from the occurrence hierarchy.  
lef2oa output has errors when a VIA and a VIARULE GENERATE share the same name. ITS516
lef2oa spacing rule should set the 1D table default value. ITS530
oaObserver<oaProp> fails to catch a preModify or postModify event when an oaProp is moved.  
Opening a design with a large number of pin figs, which had been shuffled, exits with a bus error.  
Tcl docs need corrections. ITS525
Running strm2oa with -refLibList fails.  
oa2strm does not translate independent PathSegs and Vias.  
Should throw an exception if there isn't any top block when trying to create an oaLayerConstraint, oaLayerPairConstraint, or oaLayerValue in an oaDesign.  
oa2spef writes bad *N statements.  
oaShapeQuery does not work after an undo operation.  
The use of the oa name space for lib name in lib.defs is problematic.  
Cannot find occBundleTerm.  
oa20to22 does not allow -log option.  
oa2lef creates a corrupt LEF file.  
If you run oa2def and oa2verilog on an existing OpenAccess database, you get different connectivity for the same net.  
oaFSLockD hanging.  
ModModuleInstHeaders are incorrect after using uniquify().  
oaNet::merge(oaNet* net) throws an incorrect exception.  
oaNet::getPins() produces incorrect results for a term without pins.  
DM Turbo should handle relocated libraries automatically.  
When re-loading a design database after expanding a large number of occDesignInsts (10000), you get a core dump. ITS563
OpenAccess crashes after an oaViaDef is destroyed in a techDB.  
You get an invalid instHeader after undefining, then redefining a Pcell master.  
design->open() in 'w' mode crashes after redefining a Pcell superMaster.  
The lef2oa translator does not correctly process overlap shapes.  
You get an invalid viaDef warning when using lef2oa with an existing techLib.  
The mapping of oacMin[Concave,Convex]EdgeLength is incorrect.  
You get a compilation error for libTech->getAppDefsByDataType().  
lef2oa complains if there is a read-only techLib with a macro-only input LEF file.  
oa2lef dumps property values incorrectly.  
lef2oa does not store USEMINSPACING OBS OFF into the techfile.  

After iterating through areaBoundaries, markers, or blockages, the areaBoundary iterator is being reset, which causes the areaBoundaries to be counted too many times.

 
oaMapFileWindow::readSwapCheck() throws an exception without any arguments, which causes a crash.  
term->getNet()->getBit(index) returns an invalid object. ITS571
Invalid oaCellView object in DM library  
Confusing DM error messages.  
oaGetLibPath returns the wrong value on sunOS 5.9.  
A zero length lib.defs file causes onLoadWarnings.
 
Compile failure on UNIX/Linux systems using MFC APIs because OpenAccess was including Windows.h instead of windows.h.  
verilog2oa exits with error - "InstTerm already defined"  
OpenAccess should prevent rebinding a refHeader when its design is being purged, otherwise, a crash results.  

 

 

Return to top of page