53 pFrames =
Aig_ManStart( Aig_ManObjNumMax(pAig) * nFrames );
54 pFrames->pName = Abc_UtilStrsav( pAig->pName );
57 pObj->
pData = Aig_ManConst0(pFrames);
59 for ( f = 0; f < nFrames; f++ )
61 Aig_ManConst1(pAig)->pData = Aig_ManConst1(pFrames);
65 pObj->
pData =
Aig_And( pFrames, Aig_ObjChild0Copy(pObj), Aig_ObjChild1Copy(pObj) );
67 pObj->
pData = Aig_ObjChild0Copy(pObj);
95 if ( pAig->nConstrs > 0 )
97 printf(
"The AIG manager should have no constraints.\n" );
102 assert( Aig_ManCoNum(pFrames) == Aig_ManRegNum(pAig) );
107 pAigNew->pName = Abc_UtilStrsav( pAig->pName );
109 Aig_ManConst1(pAig)->pData = Aig_ManConst1( pAigNew );
114 Aig_ManConst1(pFrames)->pData = Aig_ManConst1( pAigNew );
118 pObj->
pData =
Aig_And( pAigNew, Aig_ObjChild0Copy(pObj), Aig_ObjChild1Copy(pObj) );
120 pObj->
pData = Aig_ObjChild0Copy(pObj);
132 pObj->
pData =
Aig_And( pAigNew, Aig_ObjChild0Copy(pObj), Aig_ObjChild1Copy(pObj) );
191 int RetValue, nFramesFinished = -1;
198 Vec_IntFreeP( &vTransSigs );
199 printf(
"The leading sequence has length 0. Temporal decomposition is not performed.\n" );
204 Vec_IntFreeP( &vTransSigs );
205 printf(
"The leading sequence has length 1. Temporal decomposition is not performed.\n" );
210 int Entry, i, iLast = -1;
212 iLast = Entry ? i :iLast;
213 if ( iLast > 0 && iLast < nFrames )
215 Abc_Print( 1,
"Reducing frame count from %d to %d to fit the last transient.\n", nFrames, iLast );
219 Abc_Print( 1,
"Using computed frame number (%d).\n", nFrames );
222 Abc_Print( 1,
"Using user-given frame number (%d).\n", nFrames );
226 RetValue =
Saig_BmcPerform( pAig, 0, nFrames, 2000, TimeOut, nConfLimit, 0, fVerbose, 0, &nFramesFinished, 0, 0 );
229 Vec_IntFreeP( &vTransSigs );
230 printf(
"A cex found in the first %d frames.\n", nFrames );
233 if ( nFramesFinished + 1 < nFrames )
236 if ( iLastBefore < 1 || !fUseTransSigs )
238 Vec_IntFreeP( &vTransSigs );
239 printf(
"BMC for %d frames could not be completed. A cex may exist!\n", nFrames );
242 assert( iLastBefore < nFramesFinished );
243 printf(
"BMC succeeded to frame %d. Adjusting frame count to be (%d) based on the last transient signal.\n", nFramesFinished, iLastBefore );
244 nFrames = iLastBefore;
247 Vec_IntFreeP( &vTransSigs );
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
void Aig_ManSetRegNum(Aig_Man_t *p, int nRegs)
void Aig_ManStop(Aig_Man_t *p)
#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)
Aig_Obj_t * Aig_Mux(Aig_Man_t *p, Aig_Obj_t *pC, Aig_Obj_t *p1, Aig_Obj_t *p0)
struct Aig_Obj_t_ Aig_Obj_t
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 ///.
void Aig_ManCleanData(Aig_Man_t *p)
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
int Saig_BmcPerform(Aig_Man_t *pAig, int nStart, int nFramesMax, int nNodesMax, int nTimeOut, int nConfMaxOne, int nConfMaxAll, int fVerbose, int fVerbOverwrite, int *piFrames, int fSilent, int fUseSatoko)
int Saig_ManPhasePrefixLength(Aig_Man_t *p, int fVerbose, int fVeryVerbose, Vec_Int_t **pvTrans)
int Vec_IntLastNonZeroBeforeLimit(Vec_Int_t *vTemp, int Limit)
Aig_Man_t * Saig_ManTemporDecompose(Aig_Man_t *pAig, int nFrames)
ABC_NAMESPACE_IMPL_START Aig_Man_t * Saig_ManTemporFrames(Aig_Man_t *pAig, int nFrames)
DECLARATIONS ///.
Aig_Man_t * Saig_ManTempor(Aig_Man_t *pAig, int nFrames, int TimeOut, int nConfLimit, int fUseBmc, int fUseTransSigs, int fVerbose, int fVeryVerbose)
#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)
#define Vec_IntForEachEntry(vVec, Entry, i)
MACRO DEFINITIONS ///.
#define Vec_IntForEachEntryReverse(vVec, pEntry, i)