ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
saig.h
Go to the documentation of this file.
1
20
21#ifndef ABC__aig__saig__saig_h
22#define ABC__aig__saig__saig_h
23
24
28
29#include "aig/aig/aig.h"
30
32
36
40
43{
44 int nInputs; // the total number of inputs
45 int nNodes; // the total number of nodes
46 int nOutputs; // the total number of outputs
47 int nUnsat; // the number of UNSAT outputs
48 int nSat; // the number of SAT outputs
49 int nUndec; // the number of undecided outputs
50 int iOut; // the satisfied output
51};
52
55{
64 int fSkipOutCheck;// skip output checking
65 int iFrame; // explored up to this frame
66};
67
68
72
73static inline int Saig_ManPiNum( Aig_Man_t * p ) { return p->nTruePis; }
74static inline int Saig_ManPoNum( Aig_Man_t * p ) { return p->nTruePos; }
75static inline int Saig_ManCiNum( Aig_Man_t * p ) { return p->nTruePis + p->nRegs; }
76static inline int Saig_ManCoNum( Aig_Man_t * p ) { return p->nTruePos + p->nRegs; }
77static inline int Saig_ManRegNum( Aig_Man_t * p ) { return p->nRegs; }
78static inline int Saig_ManConstrNum( Aig_Man_t * p ) { return p->nConstrs; }
79static inline Aig_Obj_t * Saig_ManLo( Aig_Man_t * p, int i ) { return (Aig_Obj_t *)Vec_PtrEntry(p->vCis, Saig_ManPiNum(p)+i); }
80static inline Aig_Obj_t * Saig_ManLi( Aig_Man_t * p, int i ) { return (Aig_Obj_t *)Vec_PtrEntry(p->vCos, Saig_ManPoNum(p)+i); }
81
82static inline int Saig_ObjIsPi( Aig_Man_t * p, Aig_Obj_t * pObj ) { return Aig_ObjIsCi(pObj) && Aig_ObjCioId(pObj) < Saig_ManPiNum(p); }
83static inline int Saig_ObjIsPo( Aig_Man_t * p, Aig_Obj_t * pObj ) { return Aig_ObjIsCo(pObj) && Aig_ObjCioId(pObj) < Saig_ManPoNum(p); }
84static inline int Saig_ObjIsLo( Aig_Man_t * p, Aig_Obj_t * pObj ) { return Aig_ObjIsCi(pObj) && Aig_ObjCioId(pObj) >= Saig_ManPiNum(p); }
85static inline int Saig_ObjIsLi( Aig_Man_t * p, Aig_Obj_t * pObj ) { return Aig_ObjIsCo(pObj) && Aig_ObjCioId(pObj) >= Saig_ManPoNum(p); }
86static inline Aig_Obj_t * Saig_ObjLoToLi( Aig_Man_t * p, Aig_Obj_t * pObj ) { assert(Saig_ObjIsLo(p, pObj)); return (Aig_Obj_t *)Vec_PtrEntry(p->vCos, Saig_ManPoNum(p)+Aig_ObjCioId(pObj)-Saig_ManPiNum(p)); }
87static inline Aig_Obj_t * Saig_ObjLiToLo( Aig_Man_t * p, Aig_Obj_t * pObj ) { assert(Saig_ObjIsLi(p, pObj)); return (Aig_Obj_t *)Vec_PtrEntry(p->vCis, Saig_ManPiNum(p)+Aig_ObjCioId(pObj)-Saig_ManPoNum(p)); }
88static inline int Saig_ObjRegId( Aig_Man_t * p, Aig_Obj_t * pObj ) { if ( Saig_ObjIsLo(p, pObj) ) return Aig_ObjCioId(pObj)-Saig_ManPiNum(p); if ( Saig_ObjIsLi(p, pObj) ) return Aig_ObjCioId(pObj)-Saig_ManPoNum(p); else assert(0); return -1; }
89
90// iterator over the primary inputs/outputs
91#define Saig_ManForEachPi( p, pObj, i ) \
92 Vec_PtrForEachEntryStop( Aig_Obj_t *, p->vCis, pObj, i, Saig_ManPiNum(p) )
93#define Saig_ManForEachPo( p, pObj, i ) \
94 Vec_PtrForEachEntryStop( Aig_Obj_t *, p->vCos, pObj, i, Saig_ManPoNum(p) )
95// iterator over the latch inputs/outputs
96#define Saig_ManForEachLo( p, pObj, i ) \
97 for ( i = 0; (i < Saig_ManRegNum(p)) && (((pObj) = (Aig_Obj_t *)Vec_PtrEntry(p->vCis, i+Saig_ManPiNum(p))), 1); i++ )
98#define Saig_ManForEachLi( p, pObj, i ) \
99 for ( i = 0; (i < Saig_ManRegNum(p)) && (((pObj) = (Aig_Obj_t *)Vec_PtrEntry(p->vCos, i+Saig_ManPoNum(p))), 1); i++ )
100// iterator over the latch input and outputs
101#define Saig_ManForEachLiLo( p, pObjLi, pObjLo, i ) \
102 for ( i = 0; (i < Saig_ManRegNum(p)) && (((pObjLi) = Saig_ManLi(p, i)), 1) \
103 && (((pObjLo)=Saig_ManLo(p, i)), 1); i++ )
104
108
109/*=== saigCone.c ==========================================================*/
110extern void Saig_ManPrintCones( Aig_Man_t * p );
111/*=== saigConstr.c ==========================================================*/
113extern Aig_Man_t * Saig_ManDupFoldConstrs( Aig_Man_t * pAig, Vec_Int_t * vConstrs );
114extern int Saig_ManDetectConstrTest( Aig_Man_t * p );
115extern void Saig_ManDetectConstrFuncTest( Aig_Man_t * p, int nFrames, int nConfs, int nProps, int fOldAlgo, int fVerbose );
116/*=== saigConstr2.c ==========================================================*/
117extern Aig_Man_t * Saig_ManDupFoldConstrsFunc( Aig_Man_t * pAig, int fCompl, int fVerbose, int fSeqCleanup );
118extern Aig_Man_t * Saig_ManDupUnfoldConstrsFunc( Aig_Man_t * pAig, int nFrames, int nConfs, int nProps, int fOldAlgo, int fVerbose );
119// -- jlong -- begin
120extern Aig_Man_t * Saig_ManDupFoldConstrsFunc2( Aig_Man_t * pAig, int fCompl, int fVerbose, int typeII_cnt );
121extern Aig_Man_t * Saig_ManDupUnfoldConstrsFunc2( Aig_Man_t * pAig, int nFrames, int nConfs, int nProps, int fOldAlgo, int fVerbose , int * typeII_cnt);
122// --jlong -- end
123
124/*=== saigDual.c ==========================================================*/
125extern Aig_Man_t * Saig_ManDupDual( Aig_Man_t * pAig, Vec_Int_t * vDcFlops, int nDualPis, int fDualFfs, int fMiterFfs, int fComplPo, int fCheckZero, int fCheckOne );
126extern void Saig_ManBlockPo( Aig_Man_t * pAig, int nCycles );
127/*=== saigDup.c ==========================================================*/
129extern Aig_Man_t * Saig_ManCreateEquivMiter( Aig_Man_t * pAig, Vec_Int_t * vPairs, int fAddOuts );
130extern Aig_Man_t * Saig_ManDupAbstraction( Aig_Man_t * pAig, Vec_Int_t * vFlops );
131extern int Saig_ManVerifyCex( Aig_Man_t * pAig, Abc_Cex_t * p );
132extern Abc_Cex_t * Saig_ManExtendCex( Aig_Man_t * pAig, Abc_Cex_t * p );
133extern int Saig_ManFindFailedPoCex( Aig_Man_t * pAig, Abc_Cex_t * p );
134extern Aig_Man_t * Saig_ManDupWithPhase( Aig_Man_t * pAig, Vec_Int_t * vInit );
135extern Aig_Man_t * Saig_ManDupCones( Aig_Man_t * pAig, int * pPos, int nPos );
136/*=== saigHaig.c ==========================================================*/
137extern Aig_Man_t * Saig_ManHaigRecord( Aig_Man_t * p, int nIters, int nSteps, int fRetimingOnly, int fAddBugs, int fUseCnf, int fVerbose );
138/*=== saigInd.c ==========================================================*/
139extern int Saig_ManInduction( Aig_Man_t * p, int nTimeOut, int nFramesMax, int nConfMax, int fUnique, int fUniqueAll, int fGetCex, int fVerbose, int fVeryVerbose );
140/*=== saigIoa.c ==========================================================*/
141extern void Saig_ManDumpBlif( Aig_Man_t * p, char * pFileName );
142extern Aig_Man_t * Saig_ManReadBlif( char * pFileName );
143/*=== saigIso.c ==========================================================*/
144extern Vec_Int_t * Saig_ManFindIsoPerm( Aig_Man_t * pAig, int fVerbose );
145extern Aig_Man_t * Saig_ManDupIsoCanonical( Aig_Man_t * pAig, int fVerbose );
146extern Aig_Man_t * Saig_ManIsoReduce( Aig_Man_t * pAig, Vec_Ptr_t ** pvCosEquivs, int fVerbose );
147/*=== saigIsoFast.c ==========================================================*/
148extern Vec_Vec_t * Saig_IsoDetectFast( Aig_Man_t * pAig );
149/*=== saigMiter.c ==========================================================*/
151extern Aig_Man_t * Saig_ManCreateMiter( Aig_Man_t * p1, Aig_Man_t * p2, int Oper );
152extern Aig_Man_t * Saig_ManCreateMiterComb( Aig_Man_t * p1, Aig_Man_t * p2, int Oper );
153extern Aig_Man_t * Saig_ManDualRail( Aig_Man_t * p, int fMiter );
154extern Aig_Man_t * Saig_ManCreateMiterTwo( Aig_Man_t * pOld, Aig_Man_t * pNew, int nFrames );
155extern int Saig_ManDemiterSimple( Aig_Man_t * p, Aig_Man_t ** ppAig0, Aig_Man_t ** ppAig1 );
156extern int Saig_ManDemiterSimpleDiff( Aig_Man_t * p, Aig_Man_t ** ppAig0, Aig_Man_t ** ppAig1 );
157extern int Saig_ManDemiterDual( Aig_Man_t * p, Aig_Man_t ** ppAig0, Aig_Man_t ** ppAig1 );
158extern int Ssw_SecSpecialMiter( Aig_Man_t * p0, Aig_Man_t * p1, int nFrames, int fVerbose );
159extern int Saig_ManDemiterNew( Aig_Man_t * pMan );
160/*=== saigOutdec.c ==========================================================*/
161extern Aig_Man_t * Saig_ManDecPropertyOutput( Aig_Man_t * pAig, int nLits, int fVerbose );
162/*=== saigPhase.c ==========================================================*/
163extern Aig_Man_t * Saig_ManPhaseAbstract( Aig_Man_t * p, Vec_Int_t * vInits, int nFrames, int nPref, int fIgnore, int fPrint, int fVerbose );
164/*=== saigRetFwd.c ==========================================================*/
165extern void Saig_ManMarkAutonomous( Aig_Man_t * p );
166extern Aig_Man_t * Saig_ManRetimeForward( Aig_Man_t * p, int nMaxIters, int fVerbose );
167/*=== saigRetMin.c ==========================================================*/
169extern Aig_Man_t * Saig_ManRetimeMinArea( Aig_Man_t * p, int nMaxIters, int fForwardOnly, int fBackwardOnly, int fInitial, int fVerbose );
170/*=== saigRetStep.c ==========================================================*/
171extern int Saig_ManRetimeSteps( Aig_Man_t * p, int nSteps, int fForward, int fAddBugs );
172/*=== saigScl.c ==========================================================*/
173extern void Saig_ManReportUselessRegisters( Aig_Man_t * pAig );
174/*=== saigSimMv.c ==========================================================*/
175extern Vec_Ptr_t * Saig_MvManSimulate( Aig_Man_t * pAig, int nFramesSymb, int nFramesSatur, int fVerbose, int fVeryVerbose );
176/*=== saigStrSim.c ==========================================================*/
177extern Vec_Int_t * Saig_StrSimPerformMatching( Aig_Man_t * p0, Aig_Man_t * p1, int nDist, int fVerbose, Aig_Man_t ** ppMiter );
178/*=== saigSwitch.c ==========================================================*/
179extern Vec_Int_t * Saig_ManComputeSwitchProb2s( Aig_Man_t * p, int nFrames, int nPref, int fProbOne );
180/*=== saigSynch.c ==========================================================*/
182/*=== saigTrans.c ==========================================================*/
183extern Aig_Man_t * Saig_ManTimeframeSimplify( Aig_Man_t * pAig, int nFrames, int nFramesMax, int fInit, int fVerbose );
184/*=== saigWnd.c ==========================================================*/
185extern Aig_Man_t * Saig_ManWindowExtract( Aig_Man_t * p, Aig_Obj_t * pObj, int nDist );
186extern Aig_Man_t * Saig_ManWindowInsert( Aig_Man_t * p, Aig_Obj_t * pObj, int nDist, Aig_Man_t * pWnd );
188
189
190
192
193
194
195#endif
196
200
#define ABC_NAMESPACE_HEADER_END
#define ABC_NAMESPACE_HEADER_START
NAMESPACES ///.
struct Aig_Obj_t_ Aig_Obj_t
Definition aig.h:51
typedefABC_NAMESPACE_HEADER_START struct Aig_Man_t_ Aig_Man_t
INCLUDES ///.
Definition aig.h:50
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
Definition bblif.c:37
Cube * p
Definition exorList.c:222
int Saig_ManDemiterDual(Aig_Man_t *p, Aig_Man_t **ppAig0, Aig_Man_t **ppAig1)
Definition saigMiter.c:708
void Saig_ManReportUselessRegisters(Aig_Man_t *pAig)
DECLARATIONS ///.
Definition saigScl.c:45
struct Saig_ParBbr_t_ Saig_ParBbr_t
Definition saig.h:53
Aig_Man_t * Saig_ManDupWithPhase(Aig_Man_t *pAig, Vec_Int_t *vInit)
Definition saigDup.c:482
Aig_Obj_t * Saig_ManFindPivot(Aig_Man_t *p)
Definition saigWnd.c:427
Aig_Man_t * Saig_ManDupUnfoldConstrsFunc(Aig_Man_t *pAig, int nFrames, int nConfs, int nProps, int fOldAlgo, int fVerbose)
Aig_Man_t * Saig_ManRetimeMinArea(Aig_Man_t *p, int nMaxIters, int fForwardOnly, int fBackwardOnly, int fInitial, int fVerbose)
Definition saigRetMin.c:623
Aig_Man_t * Saig_ManTimeframeSimplify(Aig_Man_t *pAig, int nFrames, int nFramesMax, int fInit, int fVerbose)
Definition saigTrans.c:378
Aig_Man_t * Saig_ManDupUnfoldConstrs(Aig_Man_t *pAig)
Definition saigConstr.c:282
int Saig_ManDemiterNew(Aig_Man_t *pMan)
Definition saigMiter.c:1230
Aig_Man_t * Saig_ManDupFoldConstrsFunc2(Aig_Man_t *pAig, int fCompl, int fVerbose, int typeII_cnt)
Aig_Man_t * Saig_ManDupFoldConstrsFunc(Aig_Man_t *pAig, int fCompl, int fVerbose, int fSeqCleanup)
Aig_Man_t * Saig_ManWindowExtract(Aig_Man_t *p, Aig_Obj_t *pObj, int nDist)
Definition saigWnd.c:465
Aig_Man_t * Saig_ManCreateMiterTwo(Aig_Man_t *pOld, Aig_Man_t *pNew, int nFrames)
Definition saigMiter.c:1014
Vec_Int_t * Saig_StrSimPerformMatching(Aig_Man_t *p0, Aig_Man_t *p1, int nDist, int fVerbose, Aig_Man_t **ppMiter)
Definition saigStrSim.c:873
Aig_Man_t * Saig_ManDupAbstraction(Aig_Man_t *pAig, Vec_Int_t *vFlops)
Definition saigDup.c:207
Aig_Man_t * Saig_ManHaigRecord(Aig_Man_t *p, int nIters, int nSteps, int fRetimingOnly, int fAddBugs, int fUseCnf, int fVerbose)
Vec_Int_t * Saig_ManFindIsoPerm(Aig_Man_t *pAig, int fVerbose)
Aig_Man_t * Saig_ManPhaseAbstract(Aig_Man_t *p, Vec_Int_t *vInits, int nFrames, int nPref, int fIgnore, int fPrint, int fVerbose)
Definition saigPhase.c:911
Aig_Man_t * Saig_ManDupInitZero(Aig_Man_t *p)
Definition saigSynch.c:468
int Ssw_SecSpecialMiter(Aig_Man_t *p0, Aig_Man_t *p1, int nFrames, int fVerbose)
Definition saigMiter.c:1161
Aig_Man_t * Saig_ManDecPropertyOutput(Aig_Man_t *pAig, int nLits, int fVerbose)
Definition saigOutDec.c:150
int Saig_ManDetectConstrTest(Aig_Man_t *p)
Definition saigConstr.c:469
Aig_Man_t * Saig_ManWindowInsert(Aig_Man_t *p, Aig_Obj_t *pObj, int nDist, Aig_Man_t *pWnd)
Definition saigWnd.c:488
int Saig_ManDemiterSimpleDiff(Aig_Man_t *p, Aig_Man_t **ppAig0, Aig_Man_t **ppAig1)
Definition saigMiter.c:660
Vec_Vec_t * Saig_IsoDetectFast(Aig_Man_t *pAig)
Abc_Cex_t * Saig_ManExtendCex(Aig_Man_t *pAig, Abc_Cex_t *p)
Definition saigDup.c:384
Vec_Int_t * Saig_ManComputeSwitchProb2s(Aig_Man_t *p, int nFrames, int nPref, int fProbOne)
Aig_Man_t * Saig_ManDupIsoCanonical(Aig_Man_t *pAig, int fVerbose)
Definition saigIso.c:128
Aig_Man_t * Saig_ManReadBlif(char *pFileName)
Definition saigIoa.c:246
Aig_Man_t * Saig_ManDupDual(Aig_Man_t *pAig, Vec_Int_t *vDcFlops, int nDualPis, int fDualFfs, int fMiterFfs, int fComplPo, int fCheckZero, int fCheckOne)
FUNCTION DEFINITIONS ///.
Definition saigDual.c:81
Aig_Man_t * Saig_ManRetimeDupForward(Aig_Man_t *p, Vec_Ptr_t *vCut)
Definition saigRetMin.c:281
int Saig_ManInduction(Aig_Man_t *p, int nTimeOut, int nFramesMax, int nConfMax, int fUnique, int fUniqueAll, int fGetCex, int fVerbose, int fVeryVerbose)
Definition saigInd.c:149
int Saig_ManDemiterSimple(Aig_Man_t *p, Aig_Man_t **ppAig0, Aig_Man_t **ppAig1)
Definition saigMiter.c:491
Sec_MtrStatus_t Sec_MiterStatus(Aig_Man_t *p)
DECLARATIONS ///.
Definition saigMiter.c:46
void Saig_ManMarkAutonomous(Aig_Man_t *p)
Definition saigRetFwd.c:111
void Saig_ManDumpBlif(Aig_Man_t *p, char *pFileName)
Definition saigIoa.c:75
void Saig_ManPrintCones(Aig_Man_t *p)
FUNCTION DECLARATIONS ///.
Definition saigCone.c:159
Aig_Man_t * Saig_ManDupFoldConstrs(Aig_Man_t *pAig, Vec_Int_t *vConstrs)
Definition saigConstr.c:379
int Saig_ManFindFailedPoCex(Aig_Man_t *pAig, Abc_Cex_t *p)
Definition saigDup.c:436
Vec_Ptr_t * Saig_MvManSimulate(Aig_Man_t *pAig, int nFramesSymb, int nFramesSatur, int fVerbose, int fVeryVerbose)
Definition saigSimMv.c:879
Aig_Man_t * Saig_ManRetimeForward(Aig_Man_t *p, int nMaxIters, int fVerbose)
Definition saigRetFwd.c:213
Aig_Man_t * Saig_ManDualRail(Aig_Man_t *p, int fMiter)
Definition saigMiter.c:240
Aig_Man_t * Saig_ManDupOrpos(Aig_Man_t *p)
DECLARATIONS ///.
Definition saigDup.c:45
Aig_Man_t * Saig_ManCreateMiterComb(Aig_Man_t *p1, Aig_Man_t *p2, int Oper)
Definition saigMiter.c:163
int Saig_ManRetimeSteps(Aig_Man_t *p, int nSteps, int fForward, int fAddBugs)
void Saig_ManDetectConstrFuncTest(Aig_Man_t *p, int nFrames, int nConfs, int nProps, int fOldAlgo, int fVerbose)
void Saig_ManBlockPo(Aig_Man_t *pAig, int nCycles)
Definition saigDual.c:209
Aig_Man_t * Saig_ManCreateMiter(Aig_Man_t *p1, Aig_Man_t *p2, int Oper)
Definition saigMiter.c:100
typedefABC_NAMESPACE_HEADER_START struct Sec_MtrStatus_t_ Sec_MtrStatus_t
INCLUDES ///.
Definition saig.h:41
Aig_Man_t * Saig_ManIsoReduce(Aig_Man_t *pAig, Vec_Ptr_t **pvCosEquivs, int fVerbose)
Definition saigIso.c:561
Aig_Man_t * Saig_ManDupCones(Aig_Man_t *pAig, int *pPos, int nPos)
Definition saigDup.c:545
Aig_Man_t * Saig_ManCreateEquivMiter(Aig_Man_t *pAig, Vec_Int_t *vPairs, int fAddOuts)
Definition saigDup.c:91
Aig_Man_t * Saig_ManDupUnfoldConstrsFunc2(Aig_Man_t *pAig, int nFrames, int nConfs, int nProps, int fOldAlgo, int fVerbose, int *typeII_cnt)
int Saig_ManVerifyCex(Aig_Man_t *pAig, Abc_Cex_t *p)
Definition saigDup.c:281
int iFrame
Definition saig.h:65
int nBddMax
Definition saig.h:57
int fReorder
Definition saig.h:60
int fPartition
Definition saig.h:59
int fSilent
Definition saig.h:63
int fReorderImage
Definition saig.h:61
int fSkipOutCheck
Definition saig.h:64
int TimeLimit
Definition saig.h:56
int fVerbose
Definition saig.h:62
int nIterMax
Definition saig.h:58
typedefABC_NAMESPACE_HEADER_START struct Abc_Cex_t_ Abc_Cex_t
INCLUDES ///.
Definition utilCex.h:39
#define assert(ex)
Definition util_old.h:213
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
Definition vecPtr.h:42
typedefABC_NAMESPACE_HEADER_START struct Vec_Vec_t_ Vec_Vec_t
INCLUDES ///.
Definition vecVec.h:42