oaTerm Class Reference

Inheritance diagram for oaTerm:

oaBlockObject oaDesignObject oaObject oaBitTerm oaBundleTerm oaBusTerm oaBusTermBit oaScalarTerm


Public Methods

void destroy ()
oaBoolean isImplicit () const
oaBoolean isInterface () const
oaNetgetNet (oaBoolean preferred=false) const
oaBitTermgetBit (oaUInt4 bitIndex) const
oaUInt4 getNumBits () const
oaTermType getTermType () const
oaUInt4 getPosition () const
void getName (oaName &name) const
void getName (const oaNameSpace &ns, oaString &name) const
void moveToNet (oaNet *net)
void setTermType (oaTermType termType)
void setIsInterface (oaBoolean isInterface)
void setPosition (oaUInt4 position)
void unsetPosition ()
void scalarize ()
oaOccTermgetOccTerm () const
oaCollection< oaPin, oaTerm > getPins () const
oaCollection< oaRoute, oaTerm > getConnRoutes () const
oaCollection< oaOccTerm, oaTerm > getOccTerms (const oaOccurrence *top) const

Static Public Methods

oaTerm * create (oaNet *net, const oaName &name, oaTermType termType=oacInputOutputTermType, oaBlockDomainVisibility view=oacInheritFromTopBlock)
oaTerm * find (const oaBlock *block, const oaName &name)
oaTerm * find (const oaBlock *block, oaUInt4 position)
oaBoolean isValidName (const oaNet *net, const oaName &name)
oaUInt4 getMaxPosition (const oaBlock *block)

Public Types

enum  { dtIndex = oacTermDataType }

Detailed Description

The oaTerm class is an abstract base class for all scalar and multi-bit terminals. Terminals represent the logical connection points for a block. The pins associated with terminals represent the physical connection points. The nets associated with the terminals are logically exported through the terminals to the next higher level in a design hierarchy.

All terminals are required to have a net even if there is nothing else attached to that net.

Multi-bit terminals represent a group of logical connections to import or export from the block. The terminals can consist of busTerms having a single root name with an index range, or they can include bundleTerms that are a more complex grouping of terminals. Multi-bit terminals can have overlapping names. For example, you can have the busTerms "addr<7:0>" and "addr<3:0>" as long as the overlapping bits are connected to the same nets.

All busTerms with the same root name are managed by a busTermDef. The busTermDef tracks the least significant and most significant bits of all the associated busTerms, all of the busTerms with the same base name, and all of the associated busTermBits.

BusTermBits are automatically created for each bit of a busTerm, if they do not already exist. BusTermBits are available for those applications performing scalarized connectivity traversal of the data.

BundleTerms can contain scalarTerms and busTerms. When a bundleTerm is created, the constituent scalarTerms and busTermBits are automatically created in addition to the bundleTerm itself. All automatically created terminal objects are considered implicit.

Names are associated with terminals. The various terminal objects take and return names through the general oaName object but also use the oaScalarName, oaVectorBitName, oaVectorName, and oaBundleName objects. These name objects manage the mapping of names from one nameSpace to another. For example, you can create a terminal using a name in the CDBA nameSpace. Another application can retrieve the terminal name in the Verilog nameSpace directly from the database.

oaTerm objects are always in the block domain. oaTerms may be physical-only terminals that are only in the block hierarchy, or they can be cross-domain terminals that directly correspond to an oaModTerm in the module domain and an oaOccTerm in the occurrence domain.

The oaTerm class can be observed by deriving from oaObserver<oaTerm>.


Member Function Documentation

oaTerm * oaTerm::create oaNet *    net,
const oaName &    name,
oaTermType    type = oacInputOutputTermType,
oaBlockDomainVisibility    view = oacInheritFromTopBlock
[static]
 

This function creates a terminal for the specified net. This function accepts a name object and creates the corresponding terminal. When creating a hidden term, the view argument must be set to oacExcludeFromModuleDomain.

Parameters:
net The net to connect to the terminal
name The name of the terminal to create
type The type of terminal to create
view Specifies whether this term is visible in the module domain
Returns:
A pointer to an oaTerm
Exceptions:
oacTermExists 
oacScalarTermNameMatchesBusBaseName 
oacBusTermBaseNameMatchesScalarName 
oacNetTermWidthMismatch 
oacTermMemberExists 
oacCannotCreateTermWithImplicitNet 
oacImplicitModuleTermExists 
oacInvalidHierTermName 
oacInvalidTermName 
oacTermNetMustBeInUniqueOccHier 
oacOverridingTermAlreadyExist 
oacPhysOnlyTermNetMustBeInSameOcc 
oacCannotBlockOverrideNetSignalType 

void oaTerm::destroy  
 

This function destroys this terminal, removing it from the database. Calling this function on a term that is not explicit throws an exception.

Exceptions:
oacCannotDestroyImplicitTerm 

oaTerm * oaTerm::find const oaBlock *    block,
oaUInt4    position
[static]
 

This function searches the specified block for a terminal assigned to the specified position. The terminal is returned if found. Otherwise, NULL is returned. This function never returns a terminal that is hidden.

Parameters:
block The block to search for the terminal
position The position of the terminal to match
Returns:
A pointer to an oaTerm

oaTerm * oaTerm::find const oaBlock *    block,
const oaName &    name
[static]
 

This function searches the specified block for a terminal with the specified name. The terminal is returned if found. Otherwise, NULL is returned. This function never returns a terminal that is hidden.

Parameters:
block The block to search for the terminal
name The name of the terminal to match
Returns:
A pointer to an oaTerm

oaBitTerm * oaTerm::getBit oaUInt4    bitIndex const
 

This function returns a pointer to the terminal that corresponds to the specified bitIndex bit of this terminal. For single-bit terminals, this function returns this terminal. For multi-bit terminals, a busTermBit is returned if this terminal is a busTerm, or a single-bit terminal is returned if this terminal is a bundleTerm. This function returns a pointer to the oaOccBitTerm that corresponds to the domain in which the multibit occTerm has a reflection.

Exceptions:
oacInvalidTermIndex 

oaCollection oaTerm::getConnRoutes   const
 

This function returns a collection of routes that are connected to this terminal. Each route in the collection has this terminal as either its startConn, endConn, or both.

oaUInt4 oaTerm::getMaxPosition const oaBlock *    block [static]
 

This function returns the highest position occupied by a terminal in the specified block. If there are no terminals in the block or no position has been assigned a terminal, the value oacNullIndex is returned.

Parameters:
block The block to report the highest assigned terminal position from

void oaTerm::getName const oaNameSpace &    ns,
oaString &    name
const
 

This function fills in name with the name of this terminal mapped to the specified nameSpace.

void oaTerm::getName oaName &    name const
 

This function fills out name with the name of this terminal.

oaNet * oaTerm::getNet oaBoolean    preferred = false const
 

This function returns the net to which this terminal is attached. If preferred is true, the preferred equivalent net associated with the net will be returned instead.

Parameters:
preferred indicates whether to return the preferred equivalent
Returns:
A pointer to an oaNet

oaUInt4 oaTerm::getNumBits   const
 

This function returns the number of bits in this terminal.

oaOccTerm oaTerm::getOccTerm   const
 

This function returns the occurrence term that is the reflection of this block term in the context of the top occurrence of the design that contains the term.

oaCollection< oaOccTerm, oaTerm > oaTerm::getOccTerms const oaOccurrence *    top const
 

This function returns a collection of occTerms on this term in the given top occurrence.

Parameters:
top The top occurrence

oaCollection oaTerm::getPins   const
 

This function returns the collection of pins associated with this terminal.

oaUInt4 oaTerm::getPosition   const
 

This function returns the position that this terminal is assigned to. The value oacNullIndex is returned if this terminal has not been assigned to a position.

oaTermType oaTerm::getTermType   const
 

This function returns the terminal type of this terminal.

oaBoolean oaTerm::isImplicit   const
 

This function returns a boolean value that indicates if this terminal is implicit. An implicit terminal is automatically created by the database as part of the explicit creation of a multi-bit terminal.

oaBoolean oaTerm::isInterface   const
 

This function returns a boolean indicating whether this terminal is an interface terminal. An interface terminal is one that was explicitly created by an application calling one of the create functions on the objects derived from oaTerm. Explicitly created terminals define the interface to the block that contains them.

Note that an interface terminal that is scalarized is still considered an interface terminal. Implementation data may be added to the resulting bitTerms after scalarization, but the interface terminal remains as a reference to how the interface was originally defined. Further edits to the block may delete the interface terminal, indicating that the interface to the block has indeed changed.

oaBoolean oaTerm::isValidName const oaNet *    net,
const oaName &    name
[static]
 

This function returns a boolean value that indicates if the specified name, associated with the specified net, is valid for a new oaTerm object. This function also returns true if the name corresponds to a term that was hidden but not overridden.

void oaTerm::moveToNet oaNet *    net
 

This function moves this terminal to the specified net.

Exceptions:
oacCannotModifyImplicitTerm 
oacCannotMoveToImplicitNet 
oacCannotMoveToBlockOnlyNet 
oacCannotTransferNetWithTerm 
oacMoveToNetNotInSameBlock 
oacTermNetMustBeInUniqueOccHier 
oacTermMustJoinSameNet 

void oaTerm::scalarize  
 

This function insures that the bitTerms associated with this terminal have been promoted to the explicit state so that they can support implementation data such as pins and routes.

If this terminal is a multibit terminal, this function insures that all constituent bitTerms are promoted to the explicit state. The multibit terminal is then demoted to the implicit state so that no implementation data can be associated with it. When a terminal is demoted to the implicit state, associated implementation data is removed from it.

The demotion of a multi-bit terminal has no affect on whether the terminal is an interface terminal (a terminal that was explicitly created defines the original interface for its corresponding block).

Exceptions:
oacCannotScalarizeImplicitTerm 

void oaTerm::setIsInterface oaBoolean    isInterface
 

This function changes the isInterface value for this terminal. For more information, see oaTerm::isInterface.

Parameters:
isInterface true or false to set un unset isInterface value
Exceptions:
oacCannotSetIsInterfaceOfImplicitTerm 

void oaTerm::setPosition oaUInt4    position
 

This function assigns or changes the position of this terminal to the specified position. It is an error to assign a position to an implicit terminal or to a terminal that is visible only to the block domain. It is also an error to specify a position that is assigned to another terminal.

Parameters:
position The position to assign the terminal to.
Exceptions:
oacCannotSetPositionOfImplicitTerm 
oacCannotSetPositionOfBlockOnlyTerm 
oacTermPositionAlreadyTaken 

void oaTerm::setTermType oaTermType    termType
 

This function changes the terminal type for this terminal.

Exceptions:
oacCannotSetBusTermBitTermType 

void oaTerm::unsetPosition  
 

This function clears the position this terminal is assigned to, freeing the position so that another terminal can be assigned to it. Nothing is done if this terminal is not currently assigned a position.

Exceptions:
oacCannotSetPositionOfImplicitTerm 
oacCannotSetPositionOfBlockOnlyTerm 


Member Enumeration Documentation

anonymous enum
 

Enumeration values:
dtIndex 


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

Return to top of page