oaheader.gif
topics.gif classes.gif classes.gif exceptions.gif progguide.gif infomodel.gif index.gif help.gif
 
 
 

Scan Chains

 [SCANCHAINS numScanChains ;

      [- chainName
          [+ PARTITION partitionName [ MAXBITS maxBits ]]
          [+ COMMONSCANPINS [( IN pin )] [( OUT pin )]]
          + START {fixedInComp | PIN} [outPin]
          [+ FLOATING {floatingComp [(IN pin)] [(OUT pin)] [( BITS numBits )]} ...]
          [+ ORDERED {fixedComp [( IN pin )] [( OUT pin )] [( BITS numBits )]} ...] ...
          + STOP {fixedOutComp | PIN} [inPin]
      ;] ...

 END SCANCHAINS]

Defines scan chains in the design.

numScanChains

This information corresponds to the number of oaScanChain objects in the design.

You iterate over all oaScanChain objects in the design to get the information for each scanChain:

   oaIter<oaScanChain>::oaIter<oaScanChain>(const oaBaseCollection &coll)
   oaScanChain *oaIter<oaScanChain>::getNext()

chainName

chainName is the name of the oaScanChain and is obtained using:

     void oaScanChain::getName(oaString &name) const

PARTITION partitionName [ MAXBITS maxBits ]

partitionName corresponds to the partition name attribute of an oaScanChain object. maxBits corresponds to the maximum number of bits that can be stored on the oaScanChain object. The informations is retrieved using the following API:

   void oaScanChain::getPartitionName(oaString &name) const
   oaUInt4 oaScanChain::getMaxBits() const

COMMONSCANPINS [( IN pin )] [( OUT pin )]

This information is not stored in the OpenAccess database. Instead, unspecified pin names are resolved in the translator.

START {fixedInComp | PIN} [outPin]

This information corresponds to the starting object in the scanChain, which can be a terminal or an instTerm object. In the case of a terminal, outPin is the terminal name. When the starting object is an oaInstTerm, fixedInComp is the instance name and outPin is the terminal name for the oaInstTerm. Use the following API to obtain this information:

   oaDBObject *oaScanChain::getStartObject() const

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

   oaInst *oaInstTerm::getInst()
   void oaInst::getName(const oaNameSpace &ns,
                        oaString &name) const
   void oaInstTerm::getTermName(const oaNameSpace &ns,
                                oaString &name) const

FLOATING {floatingComp [(IN pin)] [(OUT pin)] [( BITS numBits )]} ...

This information corresponds to the unordered oaScanChainSet objects that are associated with the oaScanChain. The oaScanChainSet objects contain oaScanChainInst objects, and each oaScanChainInst is associated with an instance, an input oaInstTerm, an output oaInstTerm, and has a sequential bit length attribute. You use the following API to get the values:

     oaCollection oaScanChain::getScanChainSets(oaUInt4 flag =
     oacOrderedScanChainSetType ) const

     oaIter<oaScanChainSet>::oaIter<oaScanChainSet>(const oaBaseCollection
     &coll)

     oaScanChainSet *oaIter<oaScanChainSet>::getNext()
     oaCollection oaScanChainSet::getInstances() const
     oaIter<oaScanChainInst>::oaIter<oaScanChainInst>(const oaBaseCollection
     &coll)
     oaScanChainInst *oaIter<oaScanChainInst>::getNext()

     oaInst *oaScanChainInst::getInstance() const
     void oaInst::getName(const oaNameSpace &ns, oaString &name) const

     oaInstTerm *oaScanChainInst::getInInstTerm() const
     oaInstTerm *oaScanChainInst::getOutInstTerm() const
     void oaInstTerm::getTermName(const oaNameSpace &ns,
                                  oaString &name ) const

     oaUInt4 oaScanChainInst::getSeqBitLength() const

ORDERED {fixedComp [( IN pin )] [( OUT pin )] [( BITS numBits )]} ...

This information corresponds to the ordered oaScanChainSet objects associated with the oaScanChain. The oaScanChainSet objects contain oaScanChainInst objects, and each scanChainInst is associated with an instance, an input instTerm, an output instTerm, and has a sequential bit length attribute. You use the same API you use to get the FLOATING construct information:

     oaCollection oaScanChain::getScanChainSets(oaUInt4 flag = oacOrderedScanChainSetType ) const

     oaIter<oaScanChainSet>::oaIter<oaScanChainSet>(const oaBaseCollection &coll)

     oaScanChainSet *oaIter<oaScanChainSet>::getNext()
     oaCollection oaScanChainSet::getInstances() const
     oaIter<oaScanChainInst>::oaIter<oaScanChainInst>(const oaBaseCollection &coll)
     oaScanChainInst *oaIter<oaScanChainInst>::getNext()

     oaInst *oaScanChainInst::getInstance() const
     void oaInst::getName(const oaNameSpace &ns, oaString &name) const

     oaInstTerm *oaScanChainInst::getInInstTerm() const
     oaInstTerm *oaScanChainInst::getOutInstTerm() const
     void oaInstTerm::getTermName(const oaNameSpace &ns,
                                  oaString &name ) const

     oaUInt4 oaScanChainInst::getSeqBitLength() const

STOP {fixedOutComp | PIN} [inPin]

This information corresponds to the stopping object in the oaScanChain, which can be a oaTerm or an oaInstTerm object. In the case of a terminal object, inPin is the terminal name. If the stopping object is an oaInstTerm, fixedOutComp is the instance name and inPin is the terminal name associated with the oaInstTerm. You use the following API to get this information:

     void *oaScanChain::getStopObject(oaDesignObject *object)

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

     oaInst *oaInstTerm::getInst()
     void oaInst::getName(const oaNameSpace &ns, oaString &name) const
     void oaInstTerm::getTermName(const oaNameSpace &ns,
                                  oaString &name ) const