oaCustomViaDef Class Reference

Inheritance diagram for oaCustomViaDef:

oaViaDef oaTechObject oaObject


Public Methods

void getLibName (oaScalarName &libName) const
void getCellName (oaScalarName &cellName) const
void getViewName (oaScalarName &viewName) const
void getLibName (const oaNameSpace &ns, oaString &out) const
void getCellName (const oaNameSpace &ns, oaString &out) const
void getViewName (const oaNameSpace &ns, oaString &out) const
void setMaster (const oaScalarName &libName, const oaScalarName &cellName, const oaScalarName &viewName)

Static Public Methods

oaCustomViaDef * create (oaTech *tech, const oaString &name, const oaScalarName &libName, const oaScalarName &cellName, const oaScalarName &viewName, oaPhysicalLayer *layer1, oaPhysicalLayer *layer2)

Detailed Description

The oaCustomViaDef class implements an oaCustomViaDef object in a technology database. The oaCustomViaDef defines a via that has its geometry specified as the contents of a stored design.

An oaCustomViaDef object has an unique name and is associated with a master design and two layers. A custom via in a route must point to an oaCustomViaDef object in the technology database associated with the design where the route resides.

An oaCustomViaDef is used when an oaCustomVia is created that references it. It is possible for the design that the viaDef points at to be a pcell. In that case the oaCustomVia may have an oaParamArray that provides override values for that pcell.

Benefits and Restrictions Associated with OpenAccess oaCustomViaDefs

One of the benefits of OpenAccess is that it has a formal definition of a via that is distinct from a generic instance. By definition, a via encapsulates the physical geometry to connect exactly two layers. To allow applications to efficiently analyze routing that contains custom vias, OpenAccess places restrictions on the contents of custom via masters, as follows:

Note: Unlike its treatment of instances, OpenAccess always attempts to bind vias to their masters implicitly. It is not an error for via masters to be unbound (for example, due to missing data), but OpenAccess will continually attempt to bind the vias when possible. This is done because most applications are unable work with routing that contains unbound vias.


Member Function Documentation

oaCustomViaDef * oaCustomViaDef::create oaTech *    tech,
const oaString &    name,
const oaScalarName &    libName,
const oaScalarName &    cellName,
const oaScalarName &    viewName,
oaPhysicalLayer *    layer1,
oaPhysicalLayer *    layer2
[static]
 

This function creates an oaCustomViaDef object with the specified attributes. With this version of the create() function, you specify the master design by its library, cell, and view names.

This function throws an exception if a viaDef with the specified name already exists. An exception is also thrown if layer1 and layer2 are not included in the graph of technology databases rooted at the specified tech.

Note: The intended use is for layer1 to be the bottom layer, which should be the layer with the lower manufacturing layer number. Layer2 should be the top layer. The database does not enforce this because some tech databases do not have valid manufacturing layer numbers. Some applications require this layer ordering.

Parameters:
tech The technology database to use
name The custom viaDef object name
libName The libraryName of the master design
cellName The cellName of the master design
viewName The viewName of the master design
layer1 A pointer to the first physical layer for the viaDef
layer2 A pointer to the second physical layer for the viaDef
Exceptions:
oacLayerNotInReferencedTech 
oacConflictingLayerNamesInTech 
oacConflictingLayerNumbersInTech 
oacViaDefExists 

void oaCustomViaDef::getCellName const oaNameSpace &    ns,
oaString &    out
const
 

This function returns the cell name of the master design referenced by this oaViaDef object in the specified nameSpace.

void oaCustomViaDef::getCellName oaScalarName &    cellName const
 

This function returns the cell name of the master design referenced by this oaViaDef object.

void oaCustomViaDef::getLibName const oaNameSpace &    ns,
oaString &    out
const
 

This function returns the library name of the master design referenced by this oaViaDef object in the specified namespace.

void oaCustomViaDef::getLibName oaScalarName &    libName const
 

This function returns the library name of the master design referenced by this oaViaDef object.

void oaCustomViaDef::getViewName const oaNameSpace &    ns,
oaString &    out
const
 

This function returns the view name of the master design referenced by this oaViaDef object in the specified namespace.

void oaCustomViaDef::getViewName oaScalarName &    viewName const
 

This function returns the view name of the master design referenced by this oaViaDef object.

void oaCustomViaDef::setMaster const oaScalarName &    libName,
const oaScalarName &    cellName,
const oaScalarName &    viewName
 

This function is used to reset the libName, cellName, and viewName of the via master represented by this oaCustomViaDef. After these names are reset, oaCustomViaHeaders and oaCustomVias that refer to this oaCustomViaDef will be rebound to the new design specified by the specified lib, cell and view names.

Note: If the specified libName, cellName, and viewName are the same as the current via master names, remastering will not be performed. If remastering is performed, preModify and postModify observer notifications with a oaViaDefModTypeEnum of oacCustomViaDefSetMasterViaDefModType are triggered -- see OpenAccess Observer Table for more information.

Parameters:
libName via master library name to set
cellName via master cell name to set
viewName via master view name to set


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

Return to top of page