50 if ( pAig->nConstrs > 0 )
52 printf(
"The AIG manager should have no constraints.\n" );
57 pAigNew->pName = Abc_UtilStrsav( pAig->pName );
58 pAigNew->nConstrs = pAig->nConstrs;
60 Aig_ManConst1(pAig)->pData = Aig_ManConst1( pAigNew );
66 pObj->
pData =
Aig_And( pAigNew, Aig_ObjChild0Copy(pObj), Aig_ObjChild1Copy(pObj) );
68 pMiter = Aig_ManConst0( pAigNew );
70 pMiter =
Aig_Or( pAigNew, pMiter, Aig_ObjChild0Copy(pObj) );
96 if ( pAig->nConstrs > 0 )
98 printf(
"The AIG manager should have no constraints.\n" );
103 pAigNew->pName = Abc_UtilStrsav( pAig->pName );
104 pAigNew->nConstrs = pAig->nConstrs;
106 Aig_ManConst1(pAig)->pData = Aig_ManConst1( pAigNew );
112 pObj->
pData =
Aig_And( pAigNew, Aig_ObjChild0Copy(pObj), Aig_ObjChild1Copy(pObj) );
114 assert( Vec_IntSize(vPairs) % 2 == 0 );
117 pObj2 = Aig_ManObj( pAig, Vec_IntEntry(vPairs, ++i) );
119 pMiter = Aig_NotCond( pMiter, pObj->
fPhase ^ pObj2->
fPhase );
147 int i, fAllPisHaveNoRefs;
149 fAllPisHaveNoRefs = 1;
152 fAllPisHaveNoRefs = 0;
155 pNew->pName = Abc_UtilStrsav(
p->pName );
156 pNew->nConstrs =
p->nConstrs;
158 pNew->vCiNumsOrig = Vec_IntAlloc( Aig_ManCiNum(
p) );
161 Aig_ManConst1(
p)->pData = Aig_ManConst1(pNew);
163 if ( fAllPisHaveNoRefs || pObj->
nRefs || Saig_ObjIsLo(
p, pObj) )
166 Vec_IntPush( pNew->vCiNumsOrig, Vec_IntEntry(
p->vCiNumsOrig, i) );
169 pObj->
pData =
Aig_And( pNew, Aig_ObjChild0Copy(pObj), Aig_ObjChild1Copy(pObj) );
193 return (
Aig_Obj_t *)(pObj->
pData =
Aig_And( pNew, Aig_ObjChild0Copy(pObj), Aig_ObjChild1Copy(pObj) ));
215 pNew->pName = Abc_UtilStrsav(
p->pName );
217 Aig_ManConst1(
p)->pData = Aig_ManConst1( pNew );
221 pObjLi = Saig_ManLi(
p, Entry );
224 pObjLo = Saig_ManLo(
p, Entry );
229 assert(
p->vCiNumsOrig == NULL );
230 pNew->vCiNumsOrig = Vec_IntAlloc( Aig_ManCiNum(
p) );
235 Vec_IntPush( pNew->vCiNumsOrig, i );
243 Vec_IntPush( pNew->vCiNumsOrig, i );
284 int RetValue, i, k, iBit = 0;
286 Aig_ManConst1(pAig)->fMarkB = 1;
288 pObj->
fMarkB = Abc_InfoHasBit(
p->pData, iBit++);
289 for ( i = 0; i <=
p->iFrame; i++ )
292 pObj->
fMarkB = Abc_InfoHasBit(
p->pData, iBit++);
294 pObj->
fMarkB = (Aig_ObjFanin0(pObj)->fMarkB ^ Aig_ObjFaninC0(pObj)) &
295 (Aig_ObjFanin1(pObj)->fMarkB ^ Aig_ObjFaninC1(pObj));
297 pObj->
fMarkB = Aig_ObjFanin0(pObj)->fMarkB ^ Aig_ObjFaninC0(pObj);
298 if ( i ==
p->iFrame )
304 RetValue = Aig_ManCo(pAig,
p->iPo)->fMarkB;
323 int RetValue, i, k, iBit = 0;
325 Aig_ManConst1(pAig)->fMarkB = 1;
327 pObj->
fMarkB = Abc_InfoHasBit(
p->pData, iBit++);
328 for ( i = 0; i <=
p->iFrame; i++ )
331 pObj->
fMarkB = Abc_InfoHasBit(
p->pData, iBit++);
333 pObj->
fMarkB = (Aig_ObjFanin0(pObj)->fMarkB ^ Aig_ObjFaninC0(pObj)) &
334 (Aig_ObjFanin1(pObj)->fMarkB ^ Aig_ObjFaninC1(pObj));
336 pObj->
fMarkB = Aig_ObjFanin0(pObj)->fMarkB ^ Aig_ObjFaninC0(pObj);
337 if ( i ==
p->iFrame )
343 RetValue = Aig_ManCo(pAig,
p->iPo)->fMarkB;
355 printf(
"CEX does fail the given sequential miter.\n" );
358 vState = Vec_IntAlloc( Aig_ManRegNum(pAig) );
362 Vec_IntPush( vState, pObj->
fMarkB );
367 Vec_IntPush( vState, pObj->
fMarkB );
388 int RetValue, i, k, iBit = 0;
392 pNew->iFrame =
p->iFrame;
395 Aig_ManConst1(pAig)->fMarkB = 1;
397 pObj->
fMarkB = Abc_InfoHasBit(
p->pData, iBit++);
398 for ( i = 0; i <=
p->iFrame; i++ )
401 pObj->
fMarkB = Abc_InfoHasBit(
p->pData, iBit++);
405 Abc_InfoSetBit(pNew->pData, Aig_ManCiNum(pAig)*i + k);
408 pObj->
fMarkB = (Aig_ObjFanin0(pObj)->fMarkB ^ Aig_ObjFaninC0(pObj)) &
409 (Aig_ObjFanin1(pObj)->fMarkB ^ Aig_ObjFaninC1(pObj));
411 pObj->
fMarkB = Aig_ObjFanin0(pObj)->fMarkB ^ Aig_ObjFaninC0(pObj);
412 if ( i ==
p->iFrame )
418 RetValue = Aig_ManCo(pAig,
p->iPo)->fMarkB;
421 printf(
"Saig_ManExtendCex(): The counter-example is invalid!!!\n" );
439 int RetValue, i, k, iBit = 0;
441 Aig_ManConst1(pAig)->fMarkB = 1;
443 pObj->
fMarkB = Abc_InfoHasBit(
p->pData, iBit++);
444 for ( i = 0; i <=
p->iFrame; i++ )
447 pObj->
fMarkB = Abc_InfoHasBit(
p->pData, iBit++);
449 pObj->
fMarkB = (Aig_ObjFanin0(pObj)->fMarkB ^ Aig_ObjFaninC0(pObj)) &
450 (Aig_ObjFanin1(pObj)->fMarkB ^ Aig_ObjFaninC1(pObj));
452 pObj->
fMarkB = Aig_ObjFanin0(pObj)->fMarkB ^ Aig_ObjFaninC0(pObj);
453 if ( i ==
p->iFrame )
487 assert( Aig_ManRegNum(pAig) <= Vec_IntSize(vInit) );
490 pAigNew->pName = Abc_UtilStrsav( pAig->pName );
491 pAigNew->nConstrs = pAig->nConstrs;
493 Aig_ManConst1(pAig)->pData = Aig_ManConst1( pAigNew );
502 pObj->
pData =
Aig_And( pAigNew, Aig_ObjChild0Copy(pObj), Aig_ObjChild1Copy(pObj) );
508 Aig_ObjCreateCo( pAigNew, Aig_NotCond(Aig_ObjChild0Copy(pObj), Vec_IntEntry(vInit, i)) );
528 if ( Aig_ObjIsTravIdCurrent(
p, pObj) )
530 Aig_ObjSetTravIdCurrent(
p, pObj);
531 if ( Aig_ObjIsNode(pObj) )
535 Vec_PtrPush( vNodes, pObj );
537 else if ( Aig_ObjIsCo(pObj) )
539 else if ( Saig_ObjIsLo(
p, pObj) )
540 Vec_PtrPush( vRoots, Saig_ObjLoToLi(
p, pObj) );
541 else if ( Saig_ObjIsPi(
p, pObj) )
542 Vec_PtrPush( vLeaves, pObj );
553 vLeaves = Vec_PtrAlloc( 100 );
554 vNodes = Vec_PtrAlloc( 100 );
555 vRoots = Vec_PtrAlloc( 100 );
556 for ( i = 0; i < nPos; i++ )
557 Vec_PtrPush( vRoots, Aig_ManCo(pAig, pPos[i]) );
561 Aig_ObjSetTravIdCurrent( pAig, Aig_ManConst1(pAig) );
567 pAigNew->pName = Abc_UtilStrsav( pAig->pName );
569 Aig_ManConst1(pAig)->pData = Aig_ManConst1( pAigNew );
578 pObj->
pData =
Aig_And( pAigNew, Aig_ObjChild0Copy(pObj), Aig_ObjChild1Copy(pObj) );
584 Vec_PtrFree( vLeaves );
585 Vec_PtrFree( vNodes );
586 Vec_PtrFree( vRoots );
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
void Aig_ManCleanMarkB(Aig_Man_t *p)
int Aig_ManSeqCleanup(Aig_Man_t *p)
void Aig_ManSetRegNum(Aig_Man_t *p, int nRegs)
void Aig_ManIncrementTravId(Aig_Man_t *p)
DECLARATIONS ///.
#define Aig_ManForEachCi(p, pObj, i)
ITERATORS ///.
Aig_Obj_t * Aig_And(Aig_Man_t *p, Aig_Obj_t *p0, Aig_Obj_t *p1)
Aig_Obj_t * Aig_ObjCreateCo(Aig_Man_t *p, Aig_Obj_t *pDriver)
struct Aig_Obj_t_ Aig_Obj_t
Aig_Obj_t * Aig_Exor(Aig_Man_t *p, Aig_Obj_t *p0, Aig_Obj_t *p1)
Aig_Man_t * Aig_ManStart(int nNodesMax)
DECLARATIONS ///.
#define Aig_ManForEachNode(p, pObj, i)
typedefABC_NAMESPACE_HEADER_START struct Aig_Man_t_ Aig_Man_t
INCLUDES ///.
int Aig_ManCleanup(Aig_Man_t *p)
#define Aig_ManForEachCo(p, pObj, i)
Aig_Obj_t * Aig_ObjCreateCi(Aig_Man_t *p)
DECLARATIONS ///.
#define Aig_ManForEachObjVec(vIds, p, pObj, i)
void Aig_ManCleanData(Aig_Man_t *p)
Aig_Obj_t * Aig_Or(Aig_Man_t *p, Aig_Obj_t *p0, Aig_Obj_t *p1)
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
Aig_Man_t * Saig_ManDupWithPhase(Aig_Man_t *pAig, Vec_Int_t *vInit)
Aig_Obj_t * Saig_ManAbstractionDfs_rec(Aig_Man_t *pNew, Aig_Obj_t *pObj)
Aig_Man_t * Saig_ManDupAbstraction(Aig_Man_t *p, Vec_Int_t *vFlops)
int Saig_ManVerifyCexNoClear(Aig_Man_t *pAig, Abc_Cex_t *p)
void Saig_ManDupCones_rec(Aig_Man_t *p, Aig_Obj_t *pObj, Vec_Ptr_t *vLeaves, Vec_Ptr_t *vNodes, Vec_Ptr_t *vRoots)
ABC_NAMESPACE_IMPL_START Aig_Man_t * Saig_ManDupOrpos(Aig_Man_t *pAig)
DECLARATIONS ///.
Aig_Man_t * Saig_ManTrimPis(Aig_Man_t *p)
Vec_Int_t * Saig_ManReturnFailingState(Aig_Man_t *pAig, Abc_Cex_t *p, int fNextOne)
void Bbr_ManSetDefaultParams(Saig_ParBbr_t *p)
Abc_Cex_t * Saig_ManExtendCex(Aig_Man_t *pAig, Abc_Cex_t *p)
int Aig_ManVerifyUsingBdds(Aig_Man_t *pInit, Saig_ParBbr_t *pPars)
int Saig_ManFindFailedPoCex(Aig_Man_t *pAig, Abc_Cex_t *p)
Aig_Man_t * Saig_ManDupCones(Aig_Man_t *pAig, int *pPos, int nPos)
Aig_Man_t * Saig_ManCreateEquivMiter(Aig_Man_t *pAig, Vec_Int_t *vPairs, int fAddOuts)
int Saig_ManVerifyCex(Aig_Man_t *pAig, Abc_Cex_t *p)
struct Saig_ParBbr_t_ Saig_ParBbr_t
#define Saig_ManForEachLiLo(p, pObjLi, pObjLo, i)
#define Saig_ManForEachLi(p, pObj, i)
#define Saig_ManForEachPo(p, pObj, i)
#define Saig_ManForEachLo(p, pObj, i)
#define Saig_ManForEachPi(p, pObj, i)
ABC_NAMESPACE_IMPL_START Abc_Cex_t * Abc_CexAlloc(int nRegs, int nRealPis, int nFrames)
DECLARATIONS ///.
typedefABC_NAMESPACE_HEADER_START struct Abc_Cex_t_ Abc_Cex_t
INCLUDES ///.
#define Vec_IntForEachEntry(vVec, Entry, i)
MACRO DEFINITIONS ///.
#define Vec_PtrForEachEntryStart(Type, vVec, pEntry, i, Start)
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.