oaScanChain Class Reference

Inheritance diagram for oaScanChain:

oaBlockObject oaDesignObject oaObject


Public Methods

void destroy ()
void getName (oaString &name) const
void getPartitionName (oaString &name) const
oaUInt4 getMaxBits () const
oaDesignObjectgetStartObject () const
oaDesignObjectgetStopObject () const
void setName (const oaString &name)
void setPartitionName (const oaString &name)
void setStartObject (oaDesignObject *object)
void setStopObject (oaDesignObject *object)
void setMaxBits (oaUInt4 maxBits)
oaCollection< oaScanChainSet, oaScanChain > getScanChainSets (oaUInt4 flag=oacOrderedScanChainSetType) const

Static Public Methods

oaScanChain * create (oaBlock *block, const oaString &name, oaBlockObject *startObject=NULL, oaBlockObject *stopObject=NULL, oaString *partitionName=NULL, oaUInt4 maxBits=0)
oaScanChain * find (const oaBlock *block, const oaString &name)

Public Types

enum  { dtIndex = oacScanChainDataType }

Detailed Description

Scan chains are a common technique used to make designs testable. With scan chains, a series of registers, often called scan latches, are linked together as a shift register so that test patterns can be written into those registers by putting the design in test mode and shifting the desired values in. After a test is run the result values can be read out in the same manner. Designs may have more than one scan chain.

Scan chains often get special treatment by place and route tools which can take advantage of the fact that their detailed order and partitioning into individual scan chains can be done late in the design flow.

OpenAccess will model scan chains at several stages of their specification. It can indicate which cells are scan latches and which instTerms on those cells are the scan-in and scan-out connections. This is represented with the oaScanChainInst class.

OpenAccess will model sets of scan latches that will belong to a given scan chain with the oaScanChainSet class. These sets can specify either that the order of the scan latches in the set is fixed or that they are unordered and can be moved.

Finally, OpenAccess will model the grouping of scan sets into whole scan chains with the oaScanChain class. Where the design wants to limit the length of each scan chain and have multiple scan chains instead of one long one, the scan chains can have a partition name. The scan chain sets within such a scan chain may be swapped with other scan chains with the same partition name.

OpenAccess does not store the complete connectivity of the scan chain, just the scan latches and scan in and scan out terminals.

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


Member Function Documentation

oaScanChain * oaScanChain::create oaBlock *    block,
const oaString &    name,
oaBlockObject *    startObject = NULL,
oaBlockObject *    stopObject = NULL,
oaString *    partitionName = NULL,
oaUInt4    maxBits = 0
[static]
 

This function creates a scan chain. The scan chain can specify the primary scan-in and scan-out points for this chain.

Parameters:
block The block in which to create the scan chain
name The name of the scan chain to create
startObject The scan-in object for the scan chain: an oaBitTerm, oaInstTerm, or oaScanChainInst.
stopObject The scan-out object for the scan chain: an oaBitTerm, oaInstTerm, or oaScanChainInst..
partitionName The name of the scan chain partition
maxBits The maximum number of data bits that can be contained in the oaScanChainInsts that belong to the oaScanChainSets that get associated with this scan chain
Exceptions:
oacCannotSetMaxBits If maxBits is used on a scanChain without a partition name
oacInvalidScanChainName If the name is NULL
oacScanChainExists If the name is already in use
oacInvalidScanChainObject if the start or stop object is not an oaBitTerm, oaInstTerm, or oaScanChain

void oaScanChain::destroy  
 

This function destroys this scan chain, removing it from the database.

oaScanChain * oaScanChain::find const oaBlock *    block,
const oaString &    name
[static]
 

This function searches the specified block for a scan chain with the specified name. If the scan chain is found, it is returned. Otherwise, NULL is returned.

oaUInt4 oaScanChain::getMaxBits   const
 

This function returns the maximum number bits that can be stored in this scan chain. A value of zero is interpeted as an unlimited bit length value.

Exceptions:
oacCannotSetMaxBits If this is called on a scanChain without a partition name

void oaScanChain::getName oaString &    name const
 

This function fills out name with the name of this scan chain.

void oaScanChain::getPartitionName oaString &    name const
 

This function fills out name with the partition name of this scanChain.

oaCollection oaScanChain::getScanChainSets oaUInt4    flag = oacOrderedScanChainSetType const
 

This function returns a collection of scan chain sets in this scanChain.

oaDesignObject * oaScanChain::getStartObject   const
 

This function returns the starting object in the scan chain. The returned object can be an oaBitTerm, oaInstTerm, or oaScanChainInst.

oaDesignObject * oaScanChain::getStopObject   const
 

This function returns the stopping object in the scan chain. The returned object can be an an oaBitTerm, oaInstTerm, or oaScanChainInst.

void oaScanChain::setMaxBits oaUInt4    maxBits
 

This function changes the maximum number of bits allowed on this scan chain.

Exceptions:
oacCannotSetMaxBits If this is called on a scanChain without a partition name

void oaScanChain::setName const oaString &    name
 

This function changes the name of this scan chain to the specified name.

Exceptions:
oacScanChainExists If a scan chain with the specified name already exists.

void oaScanChain::setPartitionName const oaString &    name
 

This function changes the name of this scan chain partition to the specified name.

void oaScanChain::setStartObject oaDesignObject *    object
 

This function sets or changes the starting object in the scan chain. The specified object can be either an oaBitTerm, oaInstTerm, or oaScanChainInst.

Exceptions:
oacInvalidScanChainObject if the start object is not an oaBitTerm, oaInstTerm, or oaScanChain

void oaScanChain::setStopObject oaDesignObject *    object
 

This function sets or changes the stopping object in the scan chain. This specified object can be an oaBitTerm, oaInstTerm, or oaScanChainInst.

Exceptions:
oacInvalidScanChainObject if the stop object is not an oaBitTerm, oaInstTerm, or oaScanChain


Member Enumeration Documentation

anonymous enum
 

Enumeration values:
dtIndex 


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

Return to top of page