Inheritance diagram for oaDesign:
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.
|
This function calculates and returns the amount of virtual memory this design is currently using. |
|
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(). |
|
This function determines if this design contains a reference to the specified design. |
|
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:
Note that this process may result in a different grouping of instances to subMasters and a different number of subMasters.
|
|
This function attempts to remove the specified recover file from disk. It throws an exception if the file is not found.
|
|
This function removes the on-disk design data. The design must exist, and must not currently be open.
|
|
This function enables or disables timeStamp modification on this design. By default, timeStamp modification is enabled. |
|
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:
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.
|
|
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. |
|
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.
|
|
This function returns true if the specified oaSaveRecoverType file is found on disk.
|
|
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. |
|
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. |
|
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.
|
|
This function returns a collection of analysisPoints in this design. |
|
This function returns a collection of oaAppDefs in this design for the specified dataType and domain.
|
|
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. |
|
This function returns a collection of oaAppObjects in this design for the specified extension. |
|
This function returns the cellName using the specified nameSpace. |
|
This function returns the name of the cell associated with this design in the form of an oaScalarName. |
|
This function returns the cellType for this design. |
|
This function returns a collection of constraint group headers in this database. |
|
This function returns a collection of constraint groups in this design database that are associated with the specified constraintGroupDef.
|
|
This function returns a collection of constraint groups in this database. |
|
This function returns a collection of constraint parameters in this database. |
|
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.
|
|
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. |
|
This function returns the time at which this design was created. |
|
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. |
|
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. |
|
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.
|
|
These functions return collections of objects in or associated with this design.
|
|
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. |
|
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.
|
|
This function returns the time at which this design was last saved.
|
|
This function returns a pointer to the oaLib object associated with this database.
|
|
This function returns the library name using the specified nameSpace. |
|
This function returns the name of the library associated with this design in the form of an oaScalarName. |
|
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. |
|
This function returns a collection of oaModInstHeaders -- module domain instHeaders (of design master) objects in this design. |
|
This function returns a collection of modules contained in this design. |
|
This function returns the number of undo records on the most recent checkpoint saved for this design. |
|
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. |
|
This function returns a collection of open designs. |
|
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.
|
|
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.
|
|
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.
|
|
This function returns a pointer to an oaPcellDef in this superMaster design.
|
|
This function returns the name of the pcell evaluator associated with this superMaster design.
|
|
This function returns the time at which this design was read in from disk.
|
|
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.
|
|
This function returns the revision number of the internal format for the design format.
|
|
This function returns a collection of subMasters in this design. An oacInvalidSuperMaster exception is thrown if the design is not a superMaster.
|
|
This function returns a pointer to a pCell superMaster design.
|
|
This function returns the technology database associated with this design. |
|
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. |
|
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.
|
|
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. |
|
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. |
|
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. |
|
This function returns the undo model specified when undo is enabled. |
|
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. |
|
This function returns a collection of values in this database. |
|
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. |
|
This function returns the collection of oaViaVariantHeaders associated with this design.
|
|
This function returns the collection of oaViaVariants associated with this design.
|
|
This function returns the name of the view associated with this design using the specified nameSpace. |
|
This function returns the name of the view associated with this design in the form of an oaScalarName. |
|
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. |
|
This function returns a boolean indicating whether or not there is a default constraint group for this design. |
|
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.
|
|
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.
|
|
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. |
|
This function determines if this design is currently in undo or redo operation.
|
|
This function returns a boolean that indicates if this design has been modified but not saved.
|
|
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. |
|
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. |
|
This function returns true if this design represents a stdVia master. |
|
This function returns true if this design represents a pCell subMaster. |
|
This function returns true if this design represents a pCell superMaster. |
|
This function determines if undo is currently enabled for this design.
|
|
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. |
|
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.
|
|
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.
|
|
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.
|
|
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).
|
|
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: 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.
|
|
This function attempts to recursively open the design hierarchy numLevels deep, with this design as the root. |
|
This function attempts to recursively open the entire design hierarchy, with this design used as the root. |
|
|
|
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. |
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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(). |
|
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.
|
|
This function saves the design to disk. The design remains open and all of its in-memory data remains valid including its undo data.
|
|
|
|
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.
|
|
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. |
|
This function sets the cell type for this design.
|
|
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. |
|
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. |
|
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. |
|
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.
|
|
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.
|
|
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.)
|
|
|
|
|
Copyright © 2002 - 2010 Cadence Design Systems, Inc.
All Rights Reserved.