oaDesign Class Reference

Inheritance diagram for oaDesign:

oaDesignObject oaObject


Public Methods

void close ()
void purge ()
void save ()
void save (oaSaveRecoverType type)
void saveAs (const oaScalarName &libNameIn, const oaScalarName &cellNameIn, const oaScalarName &viewNameIn)
void saveAs (const oaScalarName &libNameIn, const oaScalarName &cellNameIn, const oaScalarName &viewNameIn, oaBoolean renameTopModule)
void reopen (oaChar mode)
void revert ()
void getLibName (oaScalarName &libName) const
void getCellName (oaScalarName &cellName) const
void getViewName (oaScalarName &viewName) const
void getLibName (const oaNameSpace &ns, oaString &libName) const
void getCellName (const oaNameSpace &ns, oaString &cellName) const
void getViewName (const oaNameSpace &ns, oaString &viewName) const
oaLibgetLib () const
oaBlockgetTopBlock () const
oaModulegetTopModule () const
oaOccurrencegetTopOccurrence () const
oaChar getMode () const
oaUInt4 getRefCount () const
oaTime getCreateTime () const
oaTime getReadInTime () const
oaTime getLastSavedTime () const
oaCellType getCellType () const
oaViewTypegetViewType () const
oaTimeStamp getTimeStamp (oaDesignDataType type) const
oaTimeStamp getTimeStamp (oaAppObjectDef *def) const
oaTechgetTech () const
oaBoolean isModified () const
oaBoolean isRecovered () const
void getParams (oaParamArray &params) const
void getParams (oaParamArray &params, oaBoolean includeDefaults) const
void getParams (oaViaParam &params) const
oaDesign * getSuperMaster () const
oaBoolean isSuperMaster () const
oaBoolean isSubMaster () const
oaBoolean isStdViaMaster () const
oaPcellDefgetPcellDef () const
void getPcellEvaluatorName (oaString &evalName) const
oaBoolean hasSymmetricConnectivity () const
void setCellType (oaCellType cellType)
void setTopModule (oaModule *module, oaBoolean visibleToBlock=true)
oaBoolean isScalarized () const
void scalarize ()
void openHier ()
void openHier (oaUInt4 numLevels)
oaBoolean contains (oaDesign *design)
oaBoolean hasRecursion () const
oaBoolean hasReference (const oaDesign *design) const
void defineSuperMaster (oaPcellDef *def, const oaParamArray &pa)
void evalSuperMaster ()
void undefineSuperMaster ()
oaBoolean findParam (const oaString &name, oaParam &param) const
void enableTimeStamps (oaBoolean value=true)
void preAllocate (oaDesignDataTypeEnum dataType, oaUInt4 numObjs)
void preAllocate (oaType type, oaUInt4 numObjs)
void enableUndo (oaBoolean value=true)
void enableUndo (oaBoolean value, oaUndoModelEnum undoModel)
void redo ()
void undo ()
oaBoolean isUndoEnabled () const
oaBoolean isInUndo () const
void setCp ()
void setCp (oaUInt4 checkPointID)
void unsetCp ()
oaUInt4 getNumUndoCpRecs () const
oaUInt4 getCpID () const
oaUInt4 getNumUndoRecsOnCp () const
oaUndoModelEnum getUndoModel () const
oaUndoModelEnum getEffectiveUndoModel () const
oaUInt8 calcVMSize () const
void minimizeVM ()
oaBoolean hasDefaultConstraintGroup () const
oaConstraintGroupgetDefaultConstraintGroup () const
void getFeatures (oaUInt4 &dataModelRev, oaFeatureArray &features)
oaCollection< oaAnalysisPoint, oaDesign > getAnalysisPoints () const
oaCollection< oaDesign, oaDesign > getSubMasters () const
oaCollection< oaModule, oaDesign > getModules () const
oaCollection< oaModInstHeader, oaDesign > getModInstHeaders () const
oaCollection< oaInstHeader, oaDesign > getUsedIn () const
oaCollection< oaViaHeader, oaDesign > getViaHeaderUsedIn () const
oaCollection< oaGroup, oaDesign > getGroups (oaUInt4 filterFlags=oacGroupIterNoDomain) const
oaCollection< oaGroup, oaDesign > getGroups (oaGroupDef *def, oaUInt4 filterFlags=oacGroupIterNoDomain) const
oaCollection< oaGroup, oaDesign > getGroupsByName (const oaString &name, oaUInt4 filterFlags=oacGroupIterNoDomain) const
oaCollection< oaAppDef, oaDesign > getAppDefsByDataType (oaDesignDataType dataType, oaDomain domain) const
oaCollection< oaAppObjectDef, oaDesign > getAppObjectDefs () const
oaCollection< oaAppObject, oaDesign > getAppObjects (const oaAppObjectDef *def) const
oaCollection< oaValue, oaDesign > getValues () const
oaCollection< oaConstraintGroup, oaDesign > getConstraintGroups () const
oaCollection< oaConstraintGroup, oaDesign > getConstraintGroups (const oaConstraintGroupDef *def) const
oaCollection< oaConstraint, oaDesign > getConstraints (const oaConstraintDef *def=NULL) const
oaCollection< oaConstraintParam, oaDesign > getConstraintParams () const
oaCollection< oaConstraintGroupHeader, oaDesign > getConstraintGroupHeaders () const
oaCollection< oaViaVariant, oaDesign > getViaVariants () const
oaCollection< oaViaVariantHeader, oaDesign > getViaVariantHeaders () const

Static Public Methods

oaDesign * open (const oaScalarName &libNameIn, const oaScalarName &cellNameIn, const oaScalarName &viewNameIn, const oaViewType *viewType, oaChar mode)
oaDesign * open (const oaScalarName &libNameIn, const oaScalarName &cellNameIn, const oaScalarName &viewNameIn, oaChar mode)
oaDesign * open (const oaScalarName &libNameIn, const oaScalarName &cellNameIn, const oaScalarName &viewNameIn, const oaParamArray &params)
oaDesign * open (oaStdViaDef *viaDef, oaViaParam *params=NULL)
oaDesign * open (oaCustomViaDef *viaDef, oaParamArray *params=NULL)
oaDesign * recover (const oaScalarName &libNameIn, const oaScalarName &cellNameIn, const oaScalarName &viewNameIn, oaSaveRecoverType type)
oaDesign * find (const oaScalarName &libNameIn, const oaScalarName &cellNameIn, const oaScalarName &viewNameIn)
oaBoolean exists (const oaScalarName &libNameIn, const oaScalarName &cellNameIn, const oaScalarName &viewNameIn)
oaBoolean exists (const oaScalarName &libNameIn, const oaScalarName &cellNameIn, const oaScalarName &viewNameIn, oaSaveRecoverType type)
void destroy (const oaScalarName &libNameIn, const oaScalarName &cellNameIn, const oaScalarName &viewNameIn)
void destroy (const oaScalarName &libNameIn, const oaScalarName &cellNameIn, const oaScalarName &viewNameIn, oaSaveRecoverType type)
oaUInt4 getRevNumber ()
oaCollection< oaDesign, oaDesign > getOpenDesigns ()

Public Types

enum  { dtIndex = oacDesignDataType }
enum  { domain = oacNoDomain }

Detailed Description

An oaDesign is a database that holds all the design data that describes a part of a design. All netlists, schematics, layouts and other design representations live as a set of oaDesigns in OpenAccess. It is a container for the connectivity, geometry, hierarchy, parasitics, and floorplanning information about a design.

Each oaDesign lives in a cellView in an OpenAccess library and is identified by the lib, cell, and view names for that oaCellView. It will be persistently represented as one or more files in that cellView. The information that the application needs is read from the database file when it is accessed through the OpenAccess API. A number of operations on each oaDesign, such as the first time it is opened, and when it is purged from memory, will trigger callbacks that may be registered with an oaObserver<oaDesign> object. See oaDesign Observer Notification, Binding, and Loading in the Programmers Guide for more information on using design observers.

An oaDesign is the container for all classes that derive from oaDesignObject. An application can open an oaDesign explicitly with the open() call or implicitly by traversing from an oaInst to its master. All design database objects can be reached by traversing from the oaDesign to its contents.

The design connectivity and hierarchy can be represented three distinct ways in an oaDesign. These are referred to as hierarchy domains, as follows:

1) Block Domain: The oaDesign may contain an oaBlock, which holds all the design geometry, its physical connectivity and instances of other oaDesigns that lead down a design hierarchy. This is the block or physical domain.

2) Module Domain: The oaDesign may contain a number of oaModule objects that define a logical hierarchy. Several levels of this module hierarchy may live in a single oaDesign. This is the module or logical domain.

3) Occurrence Domain: In this domain every net and instance in the hierarchy has a unique representation, even when multiple instances of a module or a block cause the connectivity object to be reused. See OpenAccess Hierarchy Domains in the Programmers Guide for more information on this topic.

All of these domains can be present in an oaDesign at the same time. The oaDesign also may contain parasitic data that provides an electrical model of the physical nets in the design.

The oaDesign class can be observed by deriving from oaObserver<oaDesign>. See oaDesign Observer Notification, Binding, and Loading in the Programmers Guide for more information on using design observers.

oaDesigns in the Context of pCell SuperMasters and SubMasters

oaDesigns also may be created as both SuperMasters and SubMasters of pcells. To create a pcell, you create an oaDesign and then you call oaDesign::defineSuperMaster on that oaDesign to turn it into a pcell superMaster. The superMaster has a set of parameters with their default values.

When an instance of a pcell superMaster is created, the call to create that instance may specify a param array that contains some or all of the parameters associated with the superMaster. The values in the paramArray specified for the instance are the “override” parameters that specify the non-default values for this particular instance.

SubMasters are usually created by creating an instance of the pcell and traversing to the master of that instance, which is the pcell subMaster. This traversal process is explained below. SubMasters also can be explicitly created by calling oaDesign::open and specifying a set of param values. SubMasters are not stored on disk, and only exist in memory.

When an application traverses to the master for the pcell instance, it will go to the subMaster oaDesign for that set of parameter values. The subMaster is created at run time by running the application’s evaluation routine the first time the master is traversed to for a given parameter set for a given pcell.

The caller must register a pcell evaluation routine by constructing an oaPcellObserver that has an override for the virtual function onPreEval() or onPostEval(). When OpenAccess needs to have a subMaster for a given parameterization of a superMaster, it calls the evaluator that has been registered for that superMaster.


Member Function Documentation

oaUInt8 oaDesign::calcVMSize   const
 

This function calculates and returns the amount of virtual memory this design is currently using.

void oaDesign::close  
 

This function is used to indicate that at least one portion of the application is finished with this oaDesign and no longer needs to use the pointers to it or the objects it contains.

Each oaDesign has a reference count that is the sum of the calls to open() on it, plus the number of other open oaDesigns that have an InstHeader that refers to it, minus the number of calls to close() on it. Each successful call to close decrements the reference count on a design.

When a close causes the reference count to decrement to 0, the design is purged or removed from memory. The pointer to it and the pointers to all the managed objects contained within the design become invalid. If this happens when the design has never been saved, then its cellView, cell and view are removed if they are otherwise empty. Use purge() to force this to happen even for a non-zero reference count.

Applications are not required to close designs. If a design is not closed. it remains in memory until the process ends. Applications that want to reclaim memory used by open designs may use close() calls to indicate that they are done with the design. In this use model, calls to close() will match calls to open(). There should never be more calls to close() for a given design than calls to open().

oaBoolean oaDesign::contains oaDesign *    design
 

This function determines if this design contains a reference to the specified design.

void oaDesign::defineSuperMaster oaPcellDef *    def,
const oaParamArray &    pa
 

This function creates or re-defines a superMaster design. The existing data in this design remains intact, and pCell parameters and new pcell evaluation interface information are bound to the design. It is a frequent practice for the superMaster to contain the implementation of the pCell with default parameter values.

If this superMaster design already has existing subMasters, then those subMasters will be reevaluated. If this call has a different set of parameters than previously existed, or if this design was not previously a supermaster, then all instances bound to this supermaster will be realigned with new submasters as follows:

  • if the instance has any parameters that no longer exist on the superMaster, those parameters are converted to properties on the instance

  • if new parameters are added to this superMaster, then the properties on the instance will checked for a property of the same name which will then be converted to a parameter

  • each instance will be assigned to a new subInstHeader reflecting its new parameterization

  • the new subInstHeaders will be bound to an appropriate new subMaster

Note that this process may result in a different grouping of instances to subMasters and a different number of subMasters.

Exceptions:
oacCannotModifyReadModeDesign 
oacInvalidSuperMaster 
oacPcellObserverBindFailed 
oacPcellInvalidPcellDef 
oacCannotDefineSuperMasterWithParasitics 

void oaDesign::destroy const oaScalarName &    libName,
const oaScalarName &    cellName,
const oaScalarName &    viewName,
oaSaveRecoverType    type
[static]
 

This function attempts to remove the specified recover file from disk. It throws an exception if the file is not found.

Parameters:
libName The library in which the cell is located
cellName The name of the design for the specified recover file
viewName The name of the cellView for the design
type The type of recover file to remove
Exceptions:
oacLibNotFound 
oacDestroyCannotFindDesign 
oacSaveRecoverFileDoesNotExistOnDisk 

void oaDesign::destroy const oaScalarName &    libNameIn,
const oaScalarName &    cellNameIn,
const oaScalarName &    viewNameIn
[static]
 

This function removes the on-disk design data. The design must exist, and must not currently be open.

Exceptions:
oacDestroyCannotFindDesign 
oacDestroyDesignOpen 

void oaDesign::enableTimeStamps oaBoolean    value = true
 

This function enables or disables timeStamp modification on this design. By default, timeStamp modification is enabled.

void oaDesign::enableUndo oaBoolean    value,
oaUndoModelEnum    undoModel
 

This function enables or disables undo for this design. If enabled, all changes made to this design are logged so that undo() can restore the design to earlier states. If disabled, all undo information is discarded, and changes are not logged. This function requires the caller to specify a particular model for undo (undoModel).

OpenAccess supports two undo models:

  • postCheckpoint model, in which checkpoints are set after an action.
  • preCheckpoint model, in which checkpoints are set before an action.

If postCheckpoint is specified, a call to undo must immediately follow a checkpoint or an exception is thrown. See Undo and Redo Use Models in OpenAccess for more information.

Exceptions:
oacDesignInvalidUndoModel 

void oaDesign::enableUndo oaBoolean    value = true
 

This function enables or disables undo for this design. If enabled, all changes made to this design are logged so that undo() can restore the design to earlier states. If disabled, all undo information is discarded, and changes are not logged.

This function is deprecated. It is recommended that applications instead use the enableUndo function that allows specification of a model for undo operations.

void oaDesign::evalSuperMaster  
 

This function uses the default parameter values to populate the superMaster with the contents of the variant of this pCell that is built with those values. The resulting contents are added to any previous contents of the design.

The primary purpose is to create some contents of the superMaster that are meaningful and viewed in a graphical viewer. This evaluation has no effect on or relationship to instances of this pCell.

Exceptions:
oacCannotModifyReadModeDesign 
oacInvalidSuperMaster 
oacPcellInvalidPcellDef 

oaBoolean oaDesign::exists const oaScalarName &    libNameIn,
const oaScalarName &    cellNameIn,
const oaScalarName &    viewNameIn,
oaSaveRecoverType    type
[static]
 

This function returns true if the specified oaSaveRecoverType file is found on disk.

Parameters:
libNameIn The name of the library where the cell is located
cellNameIn The name of the design for which the recover type is checked
viewNameIn The name of the cellView
type The recover type of either oacAutoSaveType or oacCriticalSaveType
Exceptions:
oacDestroyCannotFindDesign 
oacInterfaceException 

oaBoolean oaDesign::exists const oaScalarName &    libNameIn,
const oaScalarName &    cellNameIn,
const oaScalarName &    viewNameIn
[static]
 

This function returns true if a design is currently open with the specified library, cell, and view names, or if the design is found on disk. If the design is found on disk, the design must have a non-zero size.

Note: This function is not limited to the viewTypes valid for design databases. Even if this function returns true, open() will throw an exception if the viewType of the cellView is not a valid design viewType. See open() for more information.

oaDesign * oaDesign::find const oaScalarName &    libNameIn,
const oaScalarName &    cellNameIn,
const oaScalarName &    viewNameIn
[static]
 

This function attempts to find a design with the specified library, cell, and view names. If the specified design is open, it is returned. Otherwise, NULL is returned. Calling find() does not increment the reference count for the design.

oaBoolean oaDesign::findParam const oaString &    name,
oaParam &    param
const
 

This function searches the parameter list of this design for a parameter with the specified name. If found, it fills out param with the appropriate attributes and returns true. Otherwise, the function returns false.

Exceptions:
oacInvalidPcellMaster 

oaCollection oaDesign::getAnalysisPoints   const
 

This function returns a collection of analysisPoints in this design.

oaCollection< oaAppDef, oaDesign > oaDesign::getAppDefsByDataType oaDesignDataType    dataType,
oaDomain    domain
const
 

This function returns a collection of oaAppDefs in this design for the specified dataType and domain.

Parameters:
dataType The data type on which to search for appDefs.
domain The domain on which to search for appDefs.

oaAppObjectDefCollection oaDesign::getAppObjectDefs   const
 

This returns a collection of the types of object extensions that are in use in this design. Object extensions are independent objects that are not tied to a built-in design object. See oaAppObjectDef for the usage of object extensions.

oaCollection oaDesign::getAppObjects const oaAppObjectDef *    def const
 

This function returns a collection of oaAppObjects in this design for the specified extension.

void oaDesign::getCellName const oaNameSpace &    ns,
oaString &    cellName
const
 

This function returns the cellName using the specified nameSpace.

void oaDesign::getCellName oaScalarName &    cellName const
 

This function returns the name of the cell associated with this design in the form of an oaScalarName.

oaCellType oaDesign::getCellType   const
 

This function returns the cellType for this design.

oaCollection< oaConstraintGroupHeader, oaDesign > oaDesign::getConstraintGroupHeaders   const
 

This function returns a collection of constraint group headers in this database.

oaCollection< oaConstraintGroup, oaDesign > oaDesign::getConstraintGroups const oaConstraintGroupDef *    def const
 

This function returns a collection of constraint groups in this design database that are associated with the specified constraintGroupDef.

Parameters:
def pointer to an oaConstraintGroupDef.

oaCollection< oaConstraintGroup, oaDesign > oaDesign::getConstraintGroups   const
 

This function returns a collection of constraint groups in this database.

oaCollection< oaConstraintParam, oaDesign > oaDesign::getConstraintParams   const
 

This function returns a collection of constraint parameters in this database.

oaCollection< oaConstraint, oaDesign > oaDesign::getConstraints const oaConstraintDef *    def = NULL const
 

This function returns a collection of constraints in this design database with the definition specified. If no definition is specified, all of the constraints are returned.

Parameters:
def Optional Constraint definition to search for.

oaUInt4 oaDesign::getCpID   const
 

This function returns the ID of the last checkpoint set in this design. If the ID is not set on that checkpoint, this function returns UINT_MAX.

oaTime oaDesign::getCreateTime   const
 

This function returns the time at which this design was created.

oaConstraintGroup * oaDesign::getDefaultConstraintGroup   const
 

This function returns the default constraint group for this design. If no constraints have been set on the default constraint group a new constraint group is created and returned.

oaUndoModelEnum oaDesign::getEffectiveUndoModel   const
 

This function returns the undo model if it was explicitly set by the application. If the undo model was not explicitly set, this function returns the undo model "in effect" based on whether or not the last record on the undo stack is a checkpoint. If the last record is a checkpoint, the model is assumed to be oacUndoModelPostCheckpoint. If the last record is not a checkpoint, the model is effectively assumed to be oacUndoModelPreCheckpoint.

void oaDesign::getFeatures oaUInt4 &    dataModelRev,
oaFeatureArray &    features
 

This function returns the data model revision number for the database, as well as an array of the features currently in the database. The application can iterate through the array to get the ID for each feature present. Each feature ID corresponds to an oaFeatureIDEnum value.

Parameters:
dataModelRev returned data model revision
features returned feature array

oaCollection< oaGroup, oaDesign > oaDesign::getGroups oaGroupDef *    def,
oaUInt4    filterFlags = oacGroupIterNoDomain
const
 

These functions return collections of objects in or associated with this design.

Parameters:
def 
filterFlags 

oaCollection oaDesign::getGroups oaUInt4    filterFlags = oacGroupIterNoDomain const
 

This function returns the complete set of groups in the design database. The filter flags may be used to restrict the collection to groups in specific domains out of the module, block, occurrence domains, and the groups with no domain restriction on its members.

The default value of the filterFlags restricts the collection to the groups with no domain specific membership. Multiple domain flags can be combined and passed in to this function.

oaCollection oaDesign::getGroupsByName const oaString &    name,
oaUInt4    filterFlags = oacGroupIterNoDomain
const
 

This function returns a collection of groups in this design with the specified name. The filter flags may be used to restrict the search to groups in one specific domain out of the module, block, and occurrence domains, or the groups with no domain restriction on its members.

The default value of the filterFlags restricts the collection to the groups with no domain specific membership. Exception is thrown if multiple domain selection flags are enabled in the passed-in filter flags.

Exceptions:
oacInvalidGroupByNameIterFlags 

oaTime oaDesign::getLastSavedTime   const
 

This function returns the time at which this design was last saved.

Returns:
oaTime The time since 00:00:00 GMT, Jan. 1, 1970, measured in seconds

oaLib * oaDesign::getLib   const
 

This function returns a pointer to the oaLib object associated with this database.

Exceptions:
oacCannotFindObjectForViaMaster 

void oaDesign::getLibName const oaNameSpace &    ns,
oaString &    libName
const
 

This function returns the library name using the specified nameSpace.

void oaDesign::getLibName oaScalarName &    libName const
 

This function returns the name of the library associated with this design in the form of an oaScalarName.

oaChar oaDesign::getMode   const
 

This function returns the mode in which this design is currently opened.

When this function is called on an oaDesign that is a pCell submaster, it may return a value of 's', which corresponds to a mode used internally by OpenAccess.

oaCollection oaDesign::getModInstHeaders   const
 

This function returns a collection of oaModInstHeaders -- module domain instHeaders (of design master) objects in this design.

oaCollection oaDesign::getModules   const
 

This function returns a collection of modules contained in this design.

oaUInt4 oaDesign::getNumUndoCpRecs   const
 

This function returns the number of undo records on the most recent checkpoint saved for this design.

oaUInt4 oaDesign::getNumUndoRecsOnCp   const
 

This function returns the number of undo records that will be removed if an undo command is issued. The value returned depends on the undo model in use. If the undo model is oacUndoModelPostCheckpoint, the function returns the number of undo records before the last checkpoint. If the undo model is oacUndoModelPreCheckpoint, the function returns the number of undo records after the last checkpoint.

For more information about undo use models, refer to Undo and Redo Use Models in OpenAccess in the Programmers Guide.

oaCollection oaDesign::getOpenDesigns   [static]
 

This function returns a collection of open designs.

void oaDesign::getParams oaViaParam &    vParams const
 

This function fills out the vParams with the viaParams attached to this design.

If the oaDesign object is a standard via master, the vParams contains the parameters associated with the oaStdVia object used to create the via's master design.

An exception is thrown if this design is not an oaStdVia master.

Exceptions:
oacInvalidStdViaMaster 

void oaDesign::getParams oaParamArray &    pArray,
oaBoolean    includeDefaults
const
 

This function fills out pArray with the parameters attached to this design. If includeDefaults is true, pArray will contain all parameters whether or not they were explicitly specified during creation of a subMaster (either from an oaDesign::open() or pcell evaluation). If includeDefaults is false, only parameters that were specified during creation of the subMaster will returned in pArray. On a superMaster, an empty array will be returned in pArray if includeDefaults is false. An exception will be thrown if the design is not a superMaster or a subMaster.

Exceptions:
oacInvalidPcellMaster 

void oaDesign::getParams oaParamArray &    pArray const
 

This function fills out pArray with the parameters attached to this design. The pArray will include all parameters whether or not they were explicitly specified during creation of a subMaster (either from an oaDesign::open() or pcell evaluation). An exception will be thrown if the design is not a superMaster or a subMaster.

Exceptions:
oacInvalidPcellMaster 

oaPcellDef * oaDesign::getPcellDef   const
 

This function returns a pointer to an oaPcellDef in this superMaster design.

Exceptions:
oacInvalidSuperMaster 

void oaDesign::getPcellEvaluatorName oaString &    evalName const
 

This function returns the name of the pcell evaluator associated with this superMaster design.

Parameters:
evalName The returned name of the pcell evaluator associated with this superMaster design.
Exceptions:
oacInvalidSuperMaster 

oaTime oaDesign::getReadInTime   const
 

This function returns the time at which this design was read in from disk.

Returns:
oaTime The time since 00:00:00 GMT, Jan. 1, 1970, measured in seconds.

oaUInt4 oaDesign::getRefCount   const
 

This function returns the number of times this design is opened without being closed. This number is incremented for each oaDesign::open that refers to this oaDesign. It is decremented for each oaDesign::close called on it. It is also incremented for each open oaDesign (not including this design) that has an InstHeader that refers to this design. See oaDesign::close for more details.

Returns:
oaUInt4

oaUInt4 oaDesign::getRevNumber   [static]
 

This function returns the revision number of the internal format for the design format.

Returns:
oaUInt4

oaCollection oaDesign::getSubMasters   const
 

This function returns a collection of subMasters in this design. An oacInvalidSuperMaster exception is thrown if the design is not a superMaster.

Exceptions:
oacInvalidSuperMaster 

oaDesign * oaDesign::getSuperMaster   const
 

This function returns a pointer to a pCell superMaster design.

Exceptions:
oacInvalidSubMaster 

oaTech * oaDesign::getTech   const
 

This function returns the technology database associated with this design.

oaTimeStamp oaDesign::getTimeStamp oaAppObjectDef *    def const
 

This function returns the timeStamp value for the application object in this design of the specified application object definition. If there's no such object in this database, the default value timeStamp will be returned.

oaTimeStamp oaDesign::getTimeStamp oaDesignDataType    type const
 

This function returns the timeStamp value for the objects of the specified datatype in this design.

If there are no objects of the given type in this design, a default value timeStamp will be returned.

Timestamps are not available for the following types of design objects and it is an error if the given datatype is one of these values.

  • oacDesignParamDataType
  • oacOccNetDataType
  • oacOccBusNetDefDataType
  • oacOccTermDataType
  • oacBusTermDefDataType
  • oacOccInstHeaderDataType
  • oacOccModuleInstHeaderDataType
  • oacOccInstDataType
  • oacOccVectorInstDefDataType
  • oacOccInstTermDataType
  • oacOccConnectDefDataType
  • oacOccAssignmentDataType
  • oacOccOccurrenceDataType

Exceptions:
oacInvalidDataTypeForTimeStamp 

oaBlock * oaDesign::getTopBlock   const
 

This function returns the block in this design. It will return null if there is no block in this design.

Note that the name of this call reflects the future possibility of having an embedded block hierarchy in a single design. At this time there can

only be one block in a design.

oaModule * oaDesign::getTopModule   const
 

This function returns the top module of the module hierarchy in this design. It will return null if there are no modules in this design, or if none of the existing modules have been set to be the top.

oaOccurrence * oaDesign::getTopOccurrence   const
 

This function returns the top of the occurrence hierarchy that is rooted in this design. It will return null only if there is no top module and no block in this design.

This is the occurrence that corresponds to this design's block if that exists, and to this design's top module if that exists.

oaUndoModelEnum oaDesign::getUndoModel   const
 

This function returns the undo model specified when undo is enabled.

oaCollection oaDesign::getUsedIn   const
 

This function returns a collection of instHeaders in other open designs that refer to this design as the master. It does not open any designs or return any information from designs that are only on disk. This function can be used to traverse "up" a design hierarchy that has been read in to memory.

oaCollection< oaValue, oaDesign > oaDesign::getValues   const
 

This function returns a collection of values in this database.

oaCollection oaDesign::getViaHeaderUsedIn   const
 

This function returns a collection of viaHeaders in other opened designs that refer to this design as the master. It does not open any designs or return any information from designs that are only on disk. This function can be used to traverse "up" a design hierarchy that has been read in to memory.

oaCollection< oaViaVariantHeader, oaDesign > oaDesign::getViaVariantHeaders   const
 

This function returns the collection of oaViaVariantHeaders associated with this design.

oaCollection< oaViaVariant, oaDesign > oaDesign::getViaVariants   const
 

This function returns the collection of oaViaVariants associated with this design.

void oaDesign::getViewName const oaNameSpace &    ns,
oaString &    viewName
const
 

This function returns the name of the view associated with this design using the specified nameSpace.

void oaDesign::getViewName oaScalarName &    viewName const
 

This function returns the name of the view associated with this design in the form of an oaScalarName.

oaViewType * oaDesign::getViewType   const
 

This function returns the viewType represented by this design. If the design is created as a follower in a cellView, the viewType will differ from that of the primary file in the cellView.

oaBoolean oaDesign::hasDefaultConstraintGroup   const
 

This function returns a boolean indicating whether or not there is a default constraint group for this design.

oaBoolean oaDesign::hasRecursion   const
 

This function returns a boolean indicating whether the design hierarchy starting at this design has recursive loops in it. When a loop is detected, an on-detect recursion observer notification is issued. This notification can be observered using an observer derived from oaRecursionObserver.

Returns:
true If the design contains a recursive loop in its hierarchy.

oaBoolean oaDesign::hasReference const oaDesign *    master const
 

This function returns a boolean indicating whether the design hierarchy starting at this design has recursive reference to the specified master. When such a reference is detected, an on-detect recursion observer notification is issued. This notification can be observered using an observer derived from oaRecursionObserver.

Parameters:
master This function looks for a reference to this master design in the hierarchy.
Returns:
true If a reference to the master is found.

oaBoolean oaDesign::hasSymmetricConnectivity   const
 

This function returns true if this design contains exactly one module, which is a top module, and one block. If true is returned, it is an indication that the design's connectivity in both the block and module domains is the same, with possible exceptions for block-only objects and hidden block objects.

oaBoolean oaDesign::isInUndo   const
 

This function determines if this design is currently in undo or redo operation.

Returns:
true If this design is currently in an undo or redo operation; false If undo is not currently in an undo or redo operation.

oaBoolean oaDesign::isModified   const
 

This function returns a boolean that indicates if this design has been modified but not saved.

Returns:
true If the design is modified but not saved
false If the design has not been modified

oaBoolean oaDesign::isRecovered   const
 

This function returns a boolean that indicates whether this design was recovered from a critical save or an auto save database file. For information about how to use a recover type database to restore a design, see the Programmers Guide article OpenAccess Libraries and Design Management.

oaBoolean oaDesign::isScalarized   const
 

This function returns a boolean indicating whether all the explicit, multi-bit connectivity in any domain of this design are scalarized. Explicit, multi-bit connectivity is represented by busNets, bundleNets, busTerms, bundleTerms, and vectorInsts that were explicitly created by applications.

Explicit, multi-bit connectivity should be scalarized to insure that any of the corresponding bitNets, bitTerms, and bitInsts are promoted to the explicit state and are available for supporting implementation data. The corresponding multi-bit connectivity is demoted to the implicit state so that implementation can no longer be associated with them and to restrict explicit modifications that would cause inconsistencies with the single-bit connectivity.

oaBoolean oaDesign::isStdViaMaster   const
 

This function returns true if this design represents a stdVia master.

oaBoolean oaDesign::isSubMaster   const
 

This function returns true if this design represents a pCell subMaster.

oaBoolean oaDesign::isSuperMaster   const
 

This function returns true if this design represents a pCell superMaster.

oaBoolean oaDesign::isUndoEnabled   const
 

This function determines if undo is currently enabled for this design.

Returns:
true If undo is enabled for this design; false If undo is not enabled for this design

void oaDesign::minimizeVM  
 

This function minimizes the amount of virtual memory this design is currently using. It releases dynamically allocated data structures that can be rebuilt as needed.

Applications can call this function after creating an oaDesign or making significant edits to an existing oaDesign, before starting a phase of processing that interacts with the design in different ways.

This function should be called sparingly, as it can have a substantial impact on the performance of subsequent operations.

oaDesign * oaDesign::open oaCustomViaDef *    viaDef,
oaParamArray *    params = NULL
[static]
 

This function attempts to open the design associated with the specified oaCustomViaDef. If the parameter array is specified, the subMaster is returned. An exception is thrown if the parameter array is specified and the design is not a parameterized cell. An exception is thrown if no design exists.

Parameters:
viaDef The custom viaDef.
params The parameter array.
Exceptions:
oacCannotFindLibrary 
oacCannotFindDesign 

oaDesign * oaDesign::open oaStdViaDef *    viaDef,
oaViaParam *    params = NULL
[static]
 

This function attempts to return the viaMaster associated with the specified oaStdViaDef object. If the viaMaster does not exist, one will be generated and returned. If the via parameter array is not specified, the default parameter associated with the given viaDef is used.

Parameters:
viaDef The standard viaDef.
params The via parameter array.

oaDesign * oaDesign::open const oaScalarName &    libNameIn,
const oaScalarName &    cellNameIn,
const oaScalarName &    viewNameIn,
const oaParamArray &    params
[static]
 

This function will find or create a submaster for the given supermaster oaDesign. If the submaster has already been created it will return it and increment its reference count (see oaDesign::close for a further discussion of reference counts).

If the supermaster is in memory, but not the appropriate submaster, the submaster will be created. If the supermaster is not yet open it will search the given library location for an oaDesign of any viewType and open it in ‘r’ead mode. Then it will create the appropriate submaster.

Exceptions:
oacCannotFindLibrary 
oacCannotFindDesign 
oacInvalidSuperMaster 
oacInvalidDatabaseFile 
oacCorruptedDatabase 
oacCannotRepairCorruptedAppData 
oacCorruptedSteinerConnRoutes 
oacCorruptedMustJoinTerms 
oacCorruptedSupplySensitivityTerms 
oacCorruptedGroundSensitivityTerms 

oaDesign * oaDesign::open const oaScalarName &    libNameIn,
const oaScalarName &    cellNameIn,
const oaScalarName &    viewNameIn,
oaChar    mode
[static]
 

This function attempts to open the design with the specified library, cell, and view name with the specified access mode. If successful, the design is returned. This version looks for a design with any viewType.

This version can be used to open existing designs for reading or modifying. An exception is thrown if this open function is called to create (write) a new design since each design requires the specification of a viewType when it is created.

When you open a library for 'w'rite, 'a'ppend, or 'A'ppend with this function, the library container is temporarily locked. If another user attempts to use oaDesign::open to 'w'rite, 'a'ppend, or 'A'ppend to the library, an oacDesignCannotGetWriteAccess exception is thrown. This behavior protects against another process opening the same library for write or append access. Note that having a design open for write access does not interfere with another process reading the database.

When you open a database in 'w'rite mode and then save the database, the mode changes to 'a'ppend. When you open a database in 'A'ppend mode and then save that database, the mode changes to 'a'ppend.

After opening the library for 'w'rite, 'a'ppend, or 'A'ppend, OpenAccess creates a database file and a lock file for you. After this point, the access to the library container is once again opened for 'w'rite, 'a'ppend, or 'A'ppend mode to other users. However, anyone attempting to access the locked database file will get an oacCannotLockDatabase exception.

Each open() increments the reference count on this design (see oaDesign::close for a further discussion).

Parameters:
libNameIn The name of an existing library.
cellNameIn The name of an existing cell.
viewNameIn The name of an existing design.
mode The mode in which to open the existing design:
Note: The design must already exist, even when opening for write.

Returns:
A pointer to an open design or throws an exception
Exceptions:
oacCannotFindLibrary If the lib name doesn't exist, or in read mode if the cell or view doesn't exist
oacOpenOnDesignBeingPurged 
oacOpenUndefinedModeDesign The mode character is illegal
oacInvalidDatabaseFile 
oacFileNotWritable 
oacCannotFindDesign 
oacDataNotCompatibleOnOpen The design contains new features that are not understood by this version of OpenAccess and cannot be opened
oacDataNotCompatibleOnOpenInAppendMode The design contains new features that are not understood by this version of OpenAccess and cannot be opened in append mode
oacDesignPrimaryFileDoesNotExist 
oacDesignFollowerFileDoesNotExist 
oacDesignCannotGetReadAccess 
oacLibAccessCannotUpgrade 
oacDesignHasReadNeedWriteAccess 
oacDesignCannotGetWriteAccess 
oacCorruptedDatabase 
oacCannotRepairCorruptedAppData 
oacCorruptedSteinerConnRoutes 
oacCorruptedMustJoinTerms 
oacCorruptedSupplySensitivityTerms 
oacCorruptedGroundSensitivityTerms 

oaDesign * oaDesign::open const oaScalarName &    libNameIn,
const oaScalarName &    cellNameIn,
const oaScalarName &    viewNameIn,
const oaViewType *    viewType,
oaChar    mode
[static]
 

This function attempts to open the design with the specified library, cell, and view name with the specified access mode. If successful, the design is returned. This version opens the design using the viewType attribute of the oaViewType object pointed to by viewType.

This version can be used to write a new design since it can assign a viewType to that design. When used to read or modify a design, it only succeeds if that design was previously created with the specified viewType. Typically, the design to be opened must be the primary file in the cellView. However, if the cellView has a non-design viewType, this function can be used to open a non-primary database. See OpenAccess Libraries and Design Management for more information about primary files.

When you open a library for 'w'rite, 'a'ppend, or 'A'ppend with this function, the library container is temporarily locked. If another user attempts to use oaDesign::open to 'w'rite, 'a'ppend, or 'A'ppend to the library, an oacDesignCannotGetWriteAccess exception is thrown. This behavior protects against another process opening the same library for write or append access. Note that having a design open for write access does not interfere with another process reading the database.

When you open a database in 'w'rite mode and then save the database, the mode changes to 'a'ppend. When you open a database in 'A'ppend mode and then save that database, the mode changes to 'a'ppend.

After opening the library for 'w'rite, 'a'ppend, or 'A'ppend, OpenAccess creates a database file and a lock file for you. After this point, the access to the library container is once again opened for 'w'rite, 'a'ppend, or 'A'ppend mode to other users. However, anyone attempting to access the locked database file will get an oacCannotLockDatabase exception.

Each open() increments the reference count on this design (see oaDesign::close for a further discussion).

Note: Although users can construct their own oaViewTypes, when opening a design with this function, valid viewTypes are restricted to a subset of oaReservedViewTypes, namely, an oaReservedViewType object constructed with one of the following enumerated constants: oacMaskLayout, oacSchematic, oacSchematicSymbol, oacNetlist, or oacHierDesign. An exception is thrown if viewType is not one of these reserved design viewTypes.

Standard practice is to call oaViewType::get(oaReservedViewType) to construct a oaViewType object using one of the valid reserved design viewType enumerated constants, then pass a pointer to the constructed oaViewType object to oaDesign::open() via the viewType parameter.

Parameters:
libNameIn The name of an existing library.
cellNameIn The name of a cell.
viewNameIn The name of a view.
viewType A pointer to the viewType.
mode The mode in which to open the design:
Exceptions:
oacCannotFindLibrary If the lib name doesn't exist, or in read mode if the cell or view doesn't exist
oacOpenOnDesignBeingPurged 
oacOpenUndefinedModeDesign 
oacMismatchViewTypeForOpen 
oacCannotFindDesign 
oacDataNotCompatibleOnOpen The design contains new features that are not understood by this version of OpenAccess and cannot be opened
oacDataNotCompatibleOnOpenInAppendMode The design contains new features that are not understood by this version of OpenAccess and cannot be opened in append mode
oacDesignPrimaryFileDoesNotExist 
oacDesignFollowerFileDoesNotExist 
oacInvalidDatabaseFile 
oacFileNotWritable 
oacInvalidDesignViewType 
oacDesignCannotGetReadAccess 
oacLibAccessCannotUpgrade 
oacDesignHasReadNeedWriteAccess 
oacDesignCannotGetWriteAccess 
oacCorruptedDatabase 
oacCannotRepairCorruptedAppData 
oacCorruptedSteinerConnRoutes 
oacCorruptedMustJoinTerms 
oacCorruptedSupplySensitivityTerms 
oacCorruptedGroundSensitivityTerms 

void oaDesign::openHier oaUInt4    numLevels
 

This function attempts to recursively open the design hierarchy numLevels deep, with this design as the root.

void oaDesign::openHier  
 

This function attempts to recursively open the entire design hierarchy, with this design used as the root.

void oaDesign::preAllocate oaType    type,
oaUInt4    numObjs
 

void oaDesign::preAllocate oaDesignDataTypeEnum    dataType,
oaUInt4    numObjs
 

This function pre-allocates a specified number of objects of the specified dataType. This is useful for applications that know in advance approximately how many objects of a certain type need creating.

void oaDesign::purge  
 

This function closes and removes the design from memory, regardless of its reference count. All references to objects stored in this design become invalid.

If the purged design is a pcell supermaster, all submasters will be purged as well.

Exceptions:
oacPurgeOnDesignBeingPurged 

oaDesign * oaDesign::recover const oaScalarName &    libNameIn,
const oaScalarName &    cellNameIn,
const oaScalarName &    viewNameIn,
oaSaveRecoverType    type
[static]
 

This function attempts to recover the design using the specified oaSaveRecoverType type of database for the specified library, cell, and view. If the recover type exists for the design, the design is opened in read-only mode and read into memory. If this function is called with the oaSaveRecoverType of oacCriticalSaveType, and the critical save type file does not exist, an exception is thrown.

Parameters:
libNameIn The name of the library in which the cell is located
cellNameIn The name of the design to recover
viewNameIn The name of the cellView for the design to recover
type The recover file type
Exceptions:
oacCannotFindLibrary 
oacRecoverFileDoesNotExist 
oacRecoverFileAlreadyOpened 
oacCannotFindDesign 
oacInterfaceException 

void oaDesign::redo  
 

This function restores the state of the in-memory image of the design database to its state before the last undo. The records are stored using either a pre-checkpoint or post-checkpoint model. This call reverses the changes only if undo is enabled, undo() was called for this design, and no changes occurred since the last undo(). The redo operation starts from the most recent record and restores the one transaction defined by both the checkpoint and the undo model. Refer to the Undo and Redo Use Models article for additional information.

If there is an enabled observer on the action that is completed as a result of the redo operation, that observer is called. In addition, there are observers for the redo operation itself. Refer to oaDesignUndoObserver for more information.

See also:
undo()

void oaDesign::reopen oaChar    mode
 

This function attempts to reopen this design using the specified access mode. The contents of the design can be reset or truncated depending upon the new access mode. This function changes the open mode of this design to mode.

The refCount of the design is not affected.

Parameters:
mode The mode in which to open the design:
Note that scratch mode is used internally to create submasters for pcells and standard via masters.

Exceptions:
oacCannotDowngradeDatabase The database was opened in ‘A’ mode and cannot be reopened in 'a' mode
oacCannotSetModeToScratch 
oacCannotChangeFromScratchMode 
oacDataNotCompatibleOnOpenInAppendMode The design contains new features that are not understood by this version of OpenAccess and cannot be opened in append mode
oacDataNotCompatibleOnOpenInEditableMode The design contains new features that are not understood by this version of OpenAccess and cannot be opened in 'a'ppend or 'A'ppend mode
oacInvalidOperationOnDesignBeingPurged 
oacCannotUpgradeOverwrittenDatabase 
See also:
open()

void oaDesign::revert  
 

This function returns the design to the state it was in when it was first opened. If it is open in read or append mode, the contents of the design are reloaded from disk. If the design is open in write mode, it is truncated so that it contains no data. The access mode of the design is not affected.

If revert is called on a design in read or append mode, then the current copy on the disk is read. If this or a different process has changed it since the original open then the newer version will be present after the revert call.

Note: All references to objects stored in this design become invalid.

The revert call can throw any exception thrown by oaDesign::open().

void oaDesign::save oaSaveRecoverType    type
 

This function saves the design to disk as the specified recover type of database. The critical-save and recover-save types of databases are used to recover lost data. The original database file is not updated, the flag indicating whether a design is modified is not updated, and the undo stack is preserved. No observers are fired by this save transaction.

Parameters:
type A value that specifies either oacAutoSaveType or oacCriticalSaveType
Exceptions:
oacSaveReadOnlyDesign 
oacSaveScratchModeDesign 

void oaDesign::save  
 

This function saves the design to disk. The design remains open and all of its in-memory data remains valid including its undo data.

Exceptions:
oacSaveReadOnlyDesign 
oacSaveScratchModeDesign Cannot save a submaster
oacDataNotCompatibleOnSave Design contains incompatible data and cannot be saved

void oaDesign::saveAs const oaScalarName &    libNameIn,
const oaScalarName &    cellNameIn,
const oaScalarName &    viewNameIn,
oaBoolean    renameTopModule
 

void oaDesign::saveAs const oaScalarName &    libNameIn,
const oaScalarName &    cellNameIn,
const oaScalarName &    viewNameIn
 

This function saves this design to disk using the specified library, cell, and view names. The design remains open and all of its in-memory data remains valid including its undo data.

Exceptions:
oacCannotFindLibrary 
oacCannotSaveUnboundSuperMaster 
oacDesignCannotGetWriteAccess 
oacDataNotCompatibleOnSave 
oacMismatchViewTypeForSaveAs 

void oaDesign::scalarize  
 

This function promotes single-bit connectivity to the explicit state and demotes multi-bit connectivity to the implicit state. This function should be used to insure that all single-bit connectivity is available for supporting implementation data and to restrict explicit editing the multi-bit connectivity, which could lead to inconsistencies with the constituent bits.

Single-bit connectivity is represented by bit Nets (scalarNets and busNetBits), bitTerms (scalarTerms and busTermBits), bitInsts (scalarInsts and vectorInstBits), and single-bit connections.

void oaDesign::setCellType oaCellType    cellType
 

This function sets the cell type for this design.

Exceptions:
oacInvalidMaster 

void oaDesign::setCp oaUInt4    cpID
 

This function sets an undo checkpoint for this design. A checkpoint marks the current state of this design. Each call to undo() restores the contents of the design to a previous state when undo is enabled. The checkpoint has a user-specified ID to assist in keeping track of checkpoints in this design and across multiple designs.

void oaDesign::setCp  
 

This function sets an undo checkpoint for this design. A checkpoint marks the current state of this design. Each call to undo() restores the contents of the design to a previous state when undo is enabled.

void oaDesign::setTopModule oaModule *    module,
oaBoolean    visibleToBlock = true
 

This function sets or resets the top module for this design. If a valid module is passed in, it will be set as the top module of this design, and a top block will be implicitly created if the visibleToBlock flag is true. Exceptions will be thrown if the module is invalid (for example, if it belongs to a different design), or if this design already has a top module or is block only. If a NULL pointer is passed in, the current top module will be unset, and the top module will be deleted if it exists.

void oaDesign::undefineSuperMaster  
 

This function converts a pCell superMaster into a regular (non-pCell) design. The oaPcellDef is discarded and the parameters are converted to oaDesign properties.

All submasters of this supermaster are destroyed, and all instances of those submasters become bound to the former superMaster (which is now neither a subMaster nor a superMaster) instance parameters are converted to properties. Other contents of the design are not affected.

Exceptions:
oacCannotModifyReadModeDesign 
oacInvalidSuperMaster 

void oaDesign::undo  
 

This function reverts the changes made to the in-memory image of this design database. Undo records are stored using either a pre-checkpoint or post-checkpoint model. This function steps back one checkpoint to the most recent checkpoint and reverses the changes saved in the undo records. The undo operation starts from the most recent record and reverses the one transaction defined by both the checkpoint and the undo model. Refer to the Undo and Redo Use Models article for additional information.

If there is an enabled observer on the action that is completed as a result of the undo operation, that observer is called. In addition, there are observers for the undo operation itself. Refer to oaDesignUndoObserver for more information.

Note that only changes to managed objects in the oaDesign are undone. Utility objects that contain pointers to a managed object such as an oaRouteObjectArray are not affected.

See also:
redo()

void oaDesign::unsetCp  
 

This function removes the last checkpoint in this design assuming that there are no actions after the last checkpoint. In other words, there are no undo records after the last checkpoint. Otherwise, an exception is thrown. (Refer to oaDesign::getNumUndoCpRecs() to get the number of undo records after the checkpoint.)

Exceptions:
oacUndoNotEnabled 
oacCannotUnsetNonEmptyCp 


Member Enumeration Documentation

anonymous enum
 

Enumeration values:
dtIndex 

anonymous enum
 

Enumeration values:
domain 


The documentation for this class was generated from the following files:

Return to top of page