#include <atpg.hpp>
Collaboration diagram for RunGraph< GraphType >:
Public Types | |
typedef boost::property_map< GraphType, boost::vertex_attribute_t >::type | VertexAttrMapType |
typedef boost::property_map< GraphType, boost::edge_attribute_t >::type | EdgeAttrMapType |
typedef boost::graph_traits< GraphType >::vertex_descriptor | VertexType |
typedef boost::graph_traits< GraphType >::vertex_iterator | VertexIteratorType |
typedef boost::graph_traits< GraphType >::edge_iterator | EdgeIteratorType |
typedef boost::graph_traits< GraphType >::in_edge_iterator | InEdgeIteratorType |
typedef boost::graph_traits< GraphType >::out_edge_iterator | OutEdgeIteratorType |
typedef std::deque< VertexType > | DFrontierType |
typedef std::deque< VertexType > | PropagateContainerType |
typedef set< VertexSignalPair< VertexType > > | SetVertexSignalPairType |
Public Methods | |
BOOST_STATIC_ASSERT ((boost::is_same< GraphType, GraphvizGraph >::value||boost::is_same< GraphType, GraphvizDigraph >::value)) | |
RunGraph (const string &path) | |
~RunGraph () | |
void | setDebug (const string &dString) |
void | initializeGraph () |
void | backtraceVertex (const VertexType &v) |
bool | processOutput (VertexType v, GraphType &g, PropagateContainerType &cv, DLogic outS, DLogic currentS) |
tripleBool | propagateChange (VertexType v, GraphType &g, PropagateContainerType &cv) |
tripleBool | propagateVertex (VertexType v, DLogic driveSignal) |
void | runATPG () |
void | test (const string &startLabel) |
VertexType | endVertex () |
VertexType | findVertexWithLabel (const string &label) |
void | writeGraph (const string &path) |
void | seedDFrontier (DFrontierType &dF) |
void | updateDFrontier (DFrontierType &dF) |
void | printFinishStats (bool DFrontierEmpty, bool FirstOutputFound, bool FirstNonDPassable, bool FirstInconsistentOutput) |
const char * | getVersion () |
Static Public Attributes | |
char * | _Version = "$Id$" |
|
|
|
|
|
Definition at line 611 of file atpg.hpp. Referenced by RunGraph< GraphType >::seedDFrontier(). |
|
Definition at line 612 of file atpg.hpp. Referenced by RunGraph< GraphType >::propagateChange(), and RunGraph< GraphType >::updateDFrontier(). |
|
|
|
|
|
|
|
|
|
Definition at line 610 of file atpg.hpp. Referenced by RunGraph< GraphType >::findVertexWithLabel(). |
|
Definition at line 609 of file atpg.hpp. Referenced by RunGraph< GraphType >::endVertex(), RunGraph< GraphType >::propagateVertex(), RunGraph< GraphType >::runATPG(), RunGraph< GraphType >::seedDFrontier(), and RunGraph< GraphType >::updateDFrontier(). |
|
|
|
|
|
Definition at line 751 of file atpg.hpp. References Debug::Dbg(). Referenced by RunGraph< GraphType >::runATPG(). |
|
|
|
Definition at line 632 of file atpg.hpp. References RunGraph< GraphType >::VertexType. |
|
Definition at line 673 of file atpg.hpp. References RunGraph< GraphType >::VertexIteratorType. |
|
Definition at line 638 of file atpg.hpp. References RunGraph< GraphType >::_Version. |
|
Definition at line 744 of file atpg.hpp. Referenced by RunGraph< GraphType >::runATPG(). |
|
Definition at line 727 of file atpg.hpp. Referenced by RunGraph< GraphType >::runATPG(). |
|
Definition at line 785 of file atpg.hpp. References DLogic::_D, DLogic::D, Debug::Dbg(), OutputConsistent(), putDescendantsInDFrontier(), putDescendantsInPContainer(), setOutputEdges(), and DLogic::X. Referenced by RunGraph< GraphType >::propagateChange(). |
|
Definition at line 801 of file atpg.hpp. References Debug::Dbg(), DPassable(), EvaluateMultipleInputs(), EvaluateOutputs(), EvaluateSingleInput(), NodeHelper::getFunc(), DLogic::GetString(), RunGraph< GraphType >::InEdgeIteratorType, RunGraph< GraphType >::processOutput(), tripleBool, and DLogic::X. Referenced by RunGraph< GraphType >::propagateVertex(). |
|
Definition at line 762 of file atpg.hpp. References Debug::Dbg(), RunGraph< GraphType >::propagateChange(), setOutputEdges(), tripleBool, and RunGraph< GraphType >::VertexType. Referenced by RunGraph< GraphType >::runATPG(). |
|
Termination conditions While the book [5] does not describe this in detail, there are two situations in which the algorithm will terminate. 1) It is possible that a fault in the circuit is not observable. The algorithm terminates when the D Frontier is empty. A circuit may be non observable structurally, ie there are no output nodes traceable from the fault. This means we will never reach an output node. A circuit may also be non observable because the specific fault cannot be propagated. This means that before we reach an output node, the fault propagation is blocked because of a controlling input somewhere along the path. An example is the sample input 2.dot, which differs from the demo circuit Not2.dot only in the seed fault is _D instead of D. 2) If a fault is observable, we should be able to see the path of D propagation to the output node. As part of my investigation, the conditions for termination are kept tracked of. These are :
The first 3 are the tripleBool returned from propagateChange, while an empty D Frontier can be queried from the DFrontier data structure. These states are printed out at the end of the run, in printFinishStats so that better understand of the current algorithm and its behavior on different circuits can be studied. Definition at line 950 of file atpg.hpp. References RunGraph< GraphType >::backtraceVertex(), dumpSetVS(), RunGraph< GraphType >::initializeGraph(), RunGraph< GraphType >::printFinishStats(), RunGraph< GraphType >::propagateVertex(), RunGraph< GraphType >::seedDFrontier(), RunGraph< GraphType >::updateDFrontier(), and RunGraph< GraphType >::VertexType. |
|
Definition at line 683 of file atpg.hpp. References dumpDFrontier(), RunGraph< GraphType >::EdgeIteratorType, and RunGraph< GraphType >::VertexType. Referenced by RunGraph< GraphType >::runATPG(). |
|
Definition at line 740 of file atpg.hpp. References Debug::specify(). |
|
|
|
Definition at line 706 of file atpg.hpp. References Debug::Dbg(), dumpDFrontier(), RunGraph< GraphType >::InEdgeIteratorType, and RunGraph< GraphType >::VertexType. Referenced by RunGraph< GraphType >::runATPG(). |
|
|
|
Definition at line 652 of file atpg.hpp. Referenced by RunGraph< GraphType >::getVersion(). |