OpenAccess 2.2.1 Release Notes


Contents

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


Version 2.2.1

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.


Compatibility with Earlier Releases


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