#include <boost/config.hpp>
#include <functional>
#include <numeric>
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <vector>
#include <set>
#include <deque>
#include <boost/static_assert.hpp>
#include <boost/type_traits.hpp>
#include <boost/lexical_cast.hpp>
#include <boost/tuple/tuple.hpp>
#include <boost/pending/queue.hpp>
#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/graph_utility.hpp>
#include <boost/graph/graph_traits.hpp>
#include <boost/graph/properties.hpp>
#include <boost/graph/depth_first_search.hpp>
#include <boost/graph/breadth_first_search.hpp>
#include <boost/graph/graphviz.hpp>
#include <boost/graph/reverse_graph.hpp>
#include "Debug.hpp"
#include "DFrontier.hpp"
#include "DLogic.hpp"
Include dependency graph for atpg.hpp:
This graph shows which files directly or indirectly include this file:
Go to the source code of this file.
Compounds | |
class | BacktraceVisitor |
class | GetSignalFunctor |
struct | isDTypeFunctor |
struct | isXTypeFunctor |
class | NodeHelper |
class | RunGraph |
class | SupportGraph |
class | VertexSignalPair |
class | XEdgeVisitor |
Typedefs | |
typedef tuple< bool, bool, bool > | tripleBool |
Functions | |
template<class VertexType, class VertexAttrMapType> void | dumpDFrontier (std::deque< VertexType > &dF, VertexAttrMapType &vMap) |
template<class VertexType, class VertexAttrMapType> void | dumpSetVS (std::set< VertexSignalPair< VertexType > > &sVS, VertexAttrMapType &vMap) |
template<class VertexType, class GraphType> void | putDescendantsInDFrontier (VertexType &v, GraphType &g, std::deque< VertexType > &dF) |
template<class VertexType, class GraphType> void | putDescendantsInPContainer (VertexType &v, GraphType &g, std::deque< VertexType > &cV) |
template<typename ContainerType> bool | DPassable (ContainerType &vDLogic, DLogic result) |
bool | OutputConsistent (DLogic sA, DLogic sB) |
template<class Vertex, class GraphType> DLogic | EvaluateOutputs (Vertex &v, GraphType &g) |
DLogic | EvaluateSingleInput (const string &func, const string &input) |
DLogic | EvaluateMultipleInputs (const string &func, vector< DLogic > &v) |
template<class VertexType, class GraphType> void | setOutputEdges (VertexType &v, GraphType &g, DLogic d) |
|
Further areas of investigation 1) Multiple faults With some changes, the algorithm can be used to simulate multiple faults. The backtrace algorithm remains unchanged since although the set of input vertices may be larger, the suggested signals for each input remains unchanged. In fact, it is possible for one input to cover more than one fault. The termination condition has to be changed because we currently finish after detecting one output. The only criteria to terminate would be an empty D Frontier. 2) Reconvergent signals As the book [5] indicates, the basic ATPG algorithm does not work in the case of reconvergent fanout. A modified algorithm called PODEM ( path-oriented decision making ) introduces a retry step that addresses this. Definition at line 135 of file atpg.hpp. Referenced by RunGraph< GraphType >::propagateChange(), and RunGraph< GraphType >::propagateVertex(). |
|
Definition at line 289 of file atpg.hpp. References DLogic::_D, and DLogic::D. Referenced by RunGraph< GraphType >::propagateChange(). |
|
Definition at line 210 of file atpg.hpp. References Debug::Dbg(). Referenced by putDescendantsInDFrontier(), RunGraph< GraphType >::seedDFrontier(), and RunGraph< GraphType >::updateDFrontier(). |
|
Definition at line 224 of file atpg.hpp. References Debug::Dbg(). Referenced by RunGraph< GraphType >::runATPG(). |
|
Definition at line 392 of file atpg.hpp. Referenced by RunGraph< GraphType >::propagateChange(). |
|
Definition at line 330 of file atpg.hpp. References Debug::Dbg(). Referenced by RunGraph< GraphType >::propagateChange(). |
|
Definition at line 378 of file atpg.hpp. Referenced by RunGraph< GraphType >::propagateChange(). |
|
Definition at line 314 of file atpg.hpp. Referenced by RunGraph< GraphType >::processOutput(). |
|
Definition at line 240 of file atpg.hpp. References dumpDFrontier(). Referenced by RunGraph< GraphType >::processOutput(). |
|
Definition at line 256 of file atpg.hpp. References Debug::Dbg(). Referenced by RunGraph< GraphType >::processOutput(). |
|
Definition at line 415 of file atpg.hpp. References DLogic::GetString(). Referenced by RunGraph< GraphType >::processOutput(), and RunGraph< GraphType >::propagateVertex(). |