66 if ( Status.iOut == -1 )
73 if ( Status.iOut == -1 )
80 if ( Status.iOut == -1 )
135 else if ( Oper == 1 )
190 else if ( Oper == 1 )
268 pMiter =
Aig_And( pNew, pMiter,
308 printf(
"Aig_ManDupSimple(): The check has failed.\n" );
341 for ( f = 0; f < nFrames; f++ )
350 if ( f == nFrames - 1 )
494 Aig_Obj_t * pObj, * pFanin, * pObj0, * pObj1;
505 printf(
"The output number %d of the miter is constant 1.\n", i );
511 printf(
"The miter cannot be demitered.\n" );
591 Aig_Obj_t * pFanin, * pObj0, * pObj1, * pObjR0, * pObjR1;
768 Aig_Obj_t * pObj, * pFanin, * pObj0, * pObj1;
779 printf(
"The output number %d of the miter is constant 1.\n", i );
791 printf(
"The output number %d cannot be demitered.\n", i );
906 Aig_Obj_t * pObj, * pObj0, * pObj1, * pFlop0, * pFlop1;
949 printf(
"Ouput pair %4d: Difficult case...\n", i/2 );
979 printf(
"The miters contains %d flops reachable from both AIGs.\n", Counter );
1016 Aig_Man_t * pFrames0, * pFrames1, * pMiter;
1041 int i, RetValue = -1;
1045 pObj->
fMarkA = pModel[i];
1054 if ( RetValue == -1 )
1107 RetValue =
Fra_FraigCec( &pMiterCec, 100000, fVerbose );
1112 if ( RetValue == 1 )
1114 printf(
"Networks are equivalent. " );
1117 else if ( RetValue == 0 )
1119 printf(
"Networks are NOT EQUIVALENT. " );
1121 if ( pMiterCec->pData == NULL )
1122 printf(
"Counter-example is not available.\n" );
1127 printf(
"Counter-example verification has failed.\n" );
1131 printf(
"Primary output %d has failed in frame %d.\n",
1134 printf(
"Flop input %d has failed in the last frame.\n",
1136 printf(
"The counter-example detected %d incorrect POs or flop inputs.\n", nOuts );
1142 printf(
"Networks are UNDECIDED. " );
1166 printf(
"Performing sequential verification using combinational A/B miter.\n" );
1177 printf(
"Demitering has failed.\n" );
1184 printf(
"After demitering AIGs have different number of flops. Quitting.\n" );
1233 Aig_Obj_t * pObj, * pTemp, * pFan0, * pFan1;
1238 if ( pMan->nConstrs && i >=
Saig_ManPoNum(pMan) - pMan->nConstrs )
1240 printf(
"Output %3d : ", i );
1244 printf(
"Const1\n" );
1246 printf(
"Const0\n" );
1251 printf(
"Terminal\n" );
1267 printf(
"OR with %d inputs ",
Vec_PtrSize(vSuper) );
Aig_Obj_t * Aig_ObjCreateCo(Aig_Man_t *p, Aig_Obj_t *pDriver)
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
ABC_DLL int Aig_ManCheck(Aig_Man_t *p)
FUNCTION DECLARATIONS ///.
int Aig_ObjCollectSuper(Aig_Obj_t *pObj, Vec_Ptr_t *vSuper)
static int Saig_ManPoNum(Aig_Man_t *p)
int Saig_ManDemiterSimpleDiff(Aig_Man_t *p, Aig_Man_t **ppAig0, Aig_Man_t **ppAig1)
static int Saig_ObjIsLo(Aig_Man_t *p, Aig_Obj_t *pObj)
typedefABC_NAMESPACE_HEADER_START struct Aig_Man_t_ Aig_Man_t
INCLUDES ///.
static Aig_Obj_t * Aig_ObjChild0(Aig_Obj_t *pObj)
void Aig_ManStop(Aig_Man_t *p)
int Aig_ManSeqCleanup(Aig_Man_t *p)
static int Aig_ObjIsTravIdCurrent(Aig_Man_t *p, Aig_Obj_t *pObj)
#define Saig_ManForEachLiLo(p, pObjLi, pObjLo, i)
static Aig_Obj_t * Saig_ObjLoToLi(Aig_Man_t *p, Aig_Obj_t *pObj)
static Aig_Obj_t * Saig_ManLo(Aig_Man_t *p, int i)
Aig_Obj_t * Aig_Exor(Aig_Man_t *p, Aig_Obj_t *p0, Aig_Obj_t *p1)
ABC_NAMESPACE_IMPL_START Sec_MtrStatus_t Sec_MiterStatus(Aig_Man_t *p)
DECLARATIONS ///.
static Aig_Obj_t * Aig_ObjFanin0(Aig_Obj_t *pObj)
void Saig_ManDemiterLabel_rec(Aig_Man_t *p, Aig_Obj_t *pObj, int Value)
Aig_Man_t * Aig_ManStart(int nNodesMax)
DECLARATIONS ///.
void Aig_ManPrintStats(Aig_Man_t *p)
static int Aig_IsComplement(Aig_Obj_t *p)
#define Aig_ManForEachCi(p, pObj, i)
ITERATORS ///.
static Aig_Obj_t * Aig_Regular(Aig_Obj_t *p)
Aig_Obj_t * Aig_ObjCreateCi(Aig_Man_t *p)
DECLARATIONS ///.
static void Vec_PtrPush(Vec_Ptr_t *p, void *Entry)
static Aig_Obj_t * Aig_ManConst0(Aig_Man_t *p)
#define Aig_ManForEachCo(p, pObj, i)
static Aig_Obj_t * Aig_Not(Aig_Obj_t *p)
Aig_Man_t * Aig_ManDupNodesHalf(Aig_Man_t *p, Vec_Ptr_t *vSet, int iPart)
int Saig_ManDemiterCheckPo(Aig_Man_t *p, Aig_Obj_t *pObj, Aig_Obj_t **ppPo0, Aig_Obj_t **ppPo1)
static abctime Abc_Clock()
static int Abc_MaxInt(int a, int b)
static Aig_Obj_t * Aig_ObjFanin1(Aig_Obj_t *pObj)
static int Vec_PtrSize(Vec_Ptr_t *p)
static void Aig_ObjSetTravIdCurrent(Aig_Man_t *p, Aig_Obj_t *pObj)
static int Aig_ManNodeNum(Aig_Man_t *p)
Aig_Obj_t * Aig_And(Aig_Man_t *p, Aig_Obj_t *p0, Aig_Obj_t *p1)
int Saig_ManDemiterNew(Aig_Man_t *pMan)
void Aig_ManFanoutStop(Aig_Man_t *p)
void Aig_ManIncrementTravId(Aig_Man_t *p)
DECLARATIONS ///.
Aig_Obj_t * Saig_ManGetLabeledRegister_rec(Aig_Man_t *p, Aig_Obj_t *pObj)
static int Aig_ObjIsNode(Aig_Obj_t *pObj)
static int Aig_ManCoNum(Aig_Man_t *p)
void Aig_ObjDeletePo(Aig_Man_t *p, Aig_Obj_t *pObj)
Aig_Man_t * Saig_ManCreateMiterTwo(Aig_Man_t *pOld, Aig_Man_t *pNew, int nFrames)
#define Aig_ManForEachNode(p, pObj, i)
Vec_Ptr_t * Aig_Support(Aig_Man_t *p, Aig_Obj_t *pObj)
int Saig_ManDemiterSimple(Aig_Man_t *p, Aig_Man_t **ppAig0, Aig_Man_t **ppAig1)
void Aig_ManSetRegNum(Aig_Man_t *p, int nRegs)
#define Saig_ManForEachLi(p, pObj, i)
Aig_Man_t * Saig_ManDualRail(Aig_Man_t *p, int fMiter)
static Aig_Obj_t * Aig_ManCi(Aig_Man_t *p, int i)
static int Aig_ManCiNum(Aig_Man_t *p)
static int Saig_ObjIsPo(Aig_Man_t *p, Aig_Obj_t *pObj)
#define ABC_NAMESPACE_IMPL_END
static int Aig_ObjIsConst1(Aig_Obj_t *pObj)
static Aig_Obj_t * Aig_ObjChild1Copy(Aig_Obj_t *pObj)
Aig_Obj_t * Aig_Or(Aig_Man_t *p, Aig_Obj_t *p0, Aig_Obj_t *p1)
int Aig_ObjRecognizeExor(Aig_Obj_t *pObj, Aig_Obj_t **ppFan0, Aig_Obj_t **ppFan1)
void Saig_ManDemiterMarkPos(Aig_Man_t *p)
#define Saig_ManForEachLo(p, pObj, i)
static Aig_Obj_t * Aig_ObjChild0Copy(Aig_Obj_t *pObj)
void Aig_ManSetCioIds(Aig_Man_t *p)
Aig_Man_t * Aig_ManDupSimpleDfs(Aig_Man_t *p)
static int Aig_ObjFaninC0(Aig_Obj_t *pObj)
int Ssw_SecCexResimulate(Aig_Man_t *p, int *pModel, int *pnOutputs)
static int Saig_ManRegNum(Aig_Man_t *p)
Aig_Man_t * Aig_ManDupNodesAll(Aig_Man_t *p, Vec_Ptr_t *vSet)
static void Vec_PtrWriteEntry(Vec_Ptr_t *p, int i, void *Entry)
static int Aig_ManObjNumMax(Aig_Man_t *p)
static Aig_Obj_t * Aig_ManConst1(Aig_Man_t *p)
#define ABC_NAMESPACE_IMPL_START
static void * Vec_PtrEntry(Vec_Ptr_t *p, int i)
static Aig_Obj_t * Aig_ManCo(Aig_Man_t *p, int i)
static int Aig_ManRegNum(Aig_Man_t *p)
Aig_Man_t * Saig_ManUnrollTwo(Aig_Man_t *pBot, Aig_Man_t *pTop, int nFrames)
int Saig_ManDemiter(Aig_Man_t *p, Aig_Man_t **ppAig0, Aig_Man_t **ppAig1)
static Vec_Ptr_t * Vec_PtrAlloc(int nCap)
FUNCTION DEFINITIONS ///.
static int Saig_ManPiNum(Aig_Man_t *p)
MACRO DEFINITIONS ///.
void Aig_ManCleanMarkAB(Aig_Man_t *p)
void Aig_ManCleanMarkA(Aig_Man_t *p)
Aig_Man_t * Saig_ManCreateMiter(Aig_Man_t *p0, Aig_Man_t *p1, int Oper)
static int Aig_ObjFaninC1(Aig_Obj_t *pObj)
Aig_Man_t * Saig_ManCreateMiterComb(Aig_Man_t *p0, Aig_Man_t *p1, int Oper)
int Ssw_SecSpecialMiter(Aig_Man_t *p0, Aig_Man_t *p1, int nFrames, int fVerbose)
int Fra_FraigCec(Aig_Man_t **ppAig, int nConfLimit, int fVerbose)
typedefABC_NAMESPACE_HEADER_START struct Sec_MtrStatus_t_ Sec_MtrStatus_t
INCLUDES ///.
#define Saig_ManForEachPo(p, pObj, i)
int Saig_ManDemiterDual(Aig_Man_t *p, Aig_Man_t **ppAig0, Aig_Man_t **ppAig1)
void Aig_ManCleanNext(Aig_Man_t *p)
void Saig_AndDualRail(Aig_Man_t *pNew, Aig_Obj_t *pObj, Aig_Obj_t **ppData, Aig_Obj_t **ppNext)
static Aig_Obj_t * Aig_NotCond(Aig_Obj_t *p, int c)
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.
static void Vec_PtrShrink(Vec_Ptr_t *p, int nSizeNew)
char * Abc_UtilStrsav(char *s)
void Aig_ManCleanData(Aig_Man_t *p)
static int Saig_ObjIsPi(Aig_Man_t *p, Aig_Obj_t *pObj)
int Aig_ManCleanup(Aig_Man_t *p)
int Saig_ManDemiterSimpleDiff_old(Aig_Man_t *p, Aig_Man_t **ppAig0, Aig_Man_t **ppAig1)
Aig_Man_t * Aig_ManDupSimple(Aig_Man_t *p)
DECLARATIONS ///.
int Ssw_SecSpecial(Aig_Man_t *pPart0, Aig_Man_t *pPart1, int nFrames, int fVerbose)
static int Aig_ObjCioId(Aig_Obj_t *pObj)
static void Vec_PtrFree(Vec_Ptr_t *p)
#define Saig_ManForEachPi(p, pObj, i)