75 sprintf(buf,
"property: safe<%d>\nbug-free-depth: %d\n", prop_no, depth);
83 #define SAIG_TER_NON 0
84 #define SAIG_TER_ZER 1
85 #define SAIG_TER_ONE 2
86 #define SAIG_TER_UND 3
212 unsigned * pInfo = NULL;
213 int i, TerPrev =
ABC_INFINITY, TerCur, CountIncrease = 0;
215 for ( i = 0; i < 1000 && CountIncrease < 5 && TerPrev > 0; i++ )
218 if ( TerCur >= TerPrev )
283 int i, * pCounters =
ABC_CALLOC(
int, iFrame + 1 );
284 unsigned * pInfo = (
unsigned *)
Vec_PtrEntry(vInfos, iFrame);
287 for ( i = 0; i <= iFrame; i++ )
288 Abc_Print( 1,
"%d=%d ", i, pCounters[i] );
316 unsigned * pInfo = NULL;
329 Abc_Print( 1,
"Detected terminary PO in frame %d.\n", i );
584 char * pSopSizes, ** pSops;
587 int i, k, b, iFan, iTruth, * pData;
588 pFile = fopen( pFileName,
"w" );
591 Abc_Print( 1,
"Cannot open file %s\n", pFileName );
594 fprintf( pFile,
".model test\n" );
595 fprintf( pFile,
".inputs" );
597 fprintf( pFile,
" n%d",
Aig_ObjId(pObj) );
598 fprintf( pFile,
"\n" );
599 fprintf( pFile,
".outputs" );
601 fprintf( pFile,
" n%d",
Aig_ObjId(pObj) );
602 fprintf( pFile,
"\n" );
603 fprintf( pFile,
".names" );
605 fprintf( pFile,
" 1\n" );
613 fprintf( pFile,
".names" );
614 for ( iFan = 0; iFan < 4; iFan++ )
615 if ( pData[iFan+1] >= 0 )
616 fprintf( pFile,
" n%d", pData[iFan+1] );
619 fprintf( pFile,
" n%d\n", i );
621 iTruth = pData[0] & 0xffff;
622 for ( k = 0; k < pSopSizes[iTruth]; k++ )
624 int Lit = pSops[iTruth][k];
625 for ( b = 3; b >= 0; b-- )
629 else if ( Lit % 3 == 1 )
635 for ( b = 0; b < iFan; b++ )
636 fprintf( pFile,
"%c", Vals[b] );
637 fprintf( pFile,
" 1\n" );
646 fprintf( pFile,
".names" );
648 fprintf( pFile,
" n%d\n",
Aig_ObjId(pObj) );
651 fprintf( pFile,
".end\n" );
690 int i, iFan, * pData;
699 for ( iFan = 0; iFan < 4; iFan++ )
700 if ( pData[iFan+1] >= 0 )
760 p->pTime4Outs[i] = nTimeOutOne * CLOCKS_PER_SEC / 1000 + 1;
778 if ( p->pPars->fVerbose )
781 Abc_Print( 1,
"LStart(P) = %d LDelta(Q) = %d LRatio(R) = %d ReduceDB = %d Vars = %d Used = %d (%.2f %%)\n",
782 p->pSat->nLearntStart, p->pSat->nLearntDelta, p->pSat->nLearntRatio,
783 p->pSat->nDBreduces, p->pSat->size, nUsedVars, 100.0*nUsedVars/p->pSat->size );
784 Abc_Print( 1,
"Buffs = %d. Dups = %d. Hash hits = %d. Hash misses = %d. UniProps = %d.\n",
785 p->nBufNum, p->nDupNum, p->nHashHit, p->nHashMiss, p->nUniProps );
790 assert( p->pAig->vSeqModelVec == NULL );
791 p->pAig->vSeqModelVec = p->vCexes;
897 static int s_Truth[4] = { 0xAAAA, 0xCCCC, 0xF0F0, 0xFF00 };
898 return 0xffff & ((t & ~s_Truth[v]) | ((t & ~s_Truth[v]) << (1<<v)));
902 static int s_Truth[4] = { 0xAAAA, 0xCCCC, 0xF0F0, 0xFF00 };
903 return 0xffff & ((t & s_Truth[v]) | ((t & s_Truth[v]) >> (1<<v)));
907 assert( v >= 0 && v <= 3 );
909 return ((t & 0xAAAA) >> 1) == (t & 0x5555);
911 return ((t & 0xCCCC) >> 2) == (t & 0x3333);
913 return ((t & 0xF0F0) >> 4) == (t & 0x0F0F);
915 return ((t & 0xFF00) >> 8) == (t & 0x00FF);
933 for ( v = 0; v < 4; v++ )
939 else if ( Lits[v] == 1 )
944 for ( v = 0; v < 4; v++ )
965 int i, k, b, CutLit, nClaLits, ClaLits[5];
966 assert( uTruth > 0 && uTruth < 0xffff );
968 for ( i = 0; i < 2; i++ )
971 uTruth = 0xffff & ~uTruth;
973 for ( k = 0; k < p->pSopSizes[uTruth]; k++ )
976 ClaLits[nClaLits++] = i ?
lit_neg(iLitOut) : iLitOut;
977 CutLit = p->pSops[uTruth][k];
978 for ( b = 3; b >= 0; b-- )
980 if ( CutLit % 3 == 0 )
983 ClaLits[nClaLits++] = Lits[b];
985 else if ( CutLit % 3 == 1 )
988 ClaLits[nClaLits++] =
lit_neg(Lits[b]);
1012 int * pMapping, i, iLit, Lits[5], uTruth;
1020 iLit =
toLit( p->nSatVars++ );
1034 for ( i = 0; i < 4; i++ )
1035 if ( pMapping[i+1] == -1 )
1039 uTruth = 0xffff & (unsigned)pMapping[0];
1042 if ( uTruth == 0 || uTruth == 0xffff )
1044 iLit = (uTruth == 0xffff);
1049 assert( uTruth != 0 && uTruth != 0xffff );
1050 if ( uTruth == 0xAAAA || uTruth == 0x5555 )
1058 int fCompl = (uTruth & 1);
1059 Lits[4] = (uTruth & 1) ? 0xffff & ~uTruth : uTruth;
1062 for ( i = 0; i < 5; i++ )
1065 if ( iRes == iEntry )
1067 iLit =
toLit( p->nSatVars++ );
1119 for ( i = 0; i < 4; i++ )
1120 if ( pMapping[i+1] != -1 )
1138 unsigned * pInfo = (
unsigned *)
Vec_PtrEntry( p->vTerInfo, iFrame );
1225 for ( f = iFrame; f >= 0; f-- )
1323 if ( nTimeToStopNG && nTimeToStopGap )
1324 nTimeToStop = nTimeToStopNG < nTimeToStopGap ? nTimeToStopNG : nTimeToStopGap;
1325 else if ( nTimeToStopNG )
1326 nTimeToStop = nTimeToStopNG;
1327 else if ( nTimeToStopGap )
1328 nTimeToStop = nTimeToStopGap;
1376 return sat_solver_solve( p->pSat, &Lit, &Lit + 1, (ABC_INT64_T)p->pPars->nConfLimit, (ABC_INT64_T)0, (ABC_INT64_T)0, (ABC_INT64_T)0 );
1395 FILE * pLogFile = NULL;
1397 int RetValue = -1, fFirst = 1, nJumpFrame = 0, fUnfinished = 0;
1399 int i, f, k, Lit, status;
1401 abctime nTimeUnsat = 0, nTimeSat = 0, nTimeUndec = 0, clkOne = 0;
1402 abctime nTimeToStopNG, nTimeToStop;
1415 p->pSat->nLearntDelta = p->pPars->nLearnedDelta;
1416 p->pSat->nLearntRatio = p->pPars->nLearnedPerce;
1417 p->pSat->nLearntMax = p->pSat->nLearntStart;
1418 if ( pPars->
fSolveAll && p->vCexes == NULL )
1422 Abc_Print( 1,
"Running \"bmc3\". PI/PO/Reg = %d/%d/%d. And =%7d. Lev =%6d. ObjNums =%6d.\n",
1425 Abc_Print( 1,
"Params: FramesMax = %d. Start = %d. ConfLimit = %d. TimeOut = %d. SolveAll = %d.\n",
1441 if ( p->pPars->fUseBridge )
1443 if ( !(p->vCexes &&
Vec_PtrEntry(p->vCexes, i)) && !(p->pTime4Outs && p->pTime4Outs[i] == 0) )
1451 Abc_Print( 1,
"Stopping BMC because all targets are disproved or timed out.\n" );
1456 if ( (RetValue == -1 || pPars->
fSolveAll) && pPars->
nStart == 0 && !nJumpFrame )
1484 if ( (pPars->
nStart && f < pPars->nStart) || (nJumpFrame && f < nJumpFrame) )
1499 if ( nTimeToStop &&
Abc_Clock() > nTimeToStop )
1509 if ( p->pTime4Outs && p->pTime4Outs[i] == 0 )
1529 if ( nTimeToStop &&
Abc_Clock() > nTimeToStop )
1539 if ( p->pTime4Outs && p->pTime4Outs[i] == 0 )
1548 if ( p->pTime4Outs )
1550 assert( p->pTime4Outs[i] > 0 );
1558 fprintf( pLogFile,
"Frame %5d Output %5d Time(ms) %8d %8d\n", f, i,
1559 Lit < 2 ? 0 : (
int)(clkSatRun * 1000 / CLOCKS_PER_SEC),
1561 if ( p->pTime4Outs )
1564 assert( p->pTime4Outs[i] > 0 );
1565 p->pTime4Outs[i] = (p->pTime4Outs[i] > timeSince) ? p->pTime4Outs[i] - timeSince : 0;
1566 if ( p->pTime4Outs[i] == 0 && status !=
l_True )
1571 nTimeUnsat += clkSatRun;
1579 for ( k = 0; k <
veci_size(&p->pSat->unit_lits); k++ )
1589 if ( p->pPars->fUseBridge )
1592 else if ( status ==
l_True )
1594 nTimeSat += clkSatRun;
1601 Abc_Print( 1,
"%4d %s : ", f, fUnfinished ?
"-" :
"+" );
1602 Abc_Print( 1,
"Var =%8.0f. ", (
double)p->nSatVars );
1603 Abc_Print( 1,
"Cla =%9.0f. ", (
double)p->pSat->stats.clauses );
1604 Abc_Print( 1,
"Conf =%7.0f. ", (
double)p->pSat->stats.conflicts );
1608 Abc_Print( 1,
"%4.0f MB", 4.25*(f+1)*p->nObjNums /(1<<20) );
1610 Abc_Print( 1,
"%9.2f sec ", (
float)(
Abc_Clock() - clkTotal)/(
float)(CLOCKS_PER_SEC) );
1625 Abc_Print( 1,
"Output %*d was asserted in frame %2d (solved %*d out of %*d outputs).\n",
1627 if ( p->vCexes == NULL )
1631 if ( p->pPars->fUseBridge )
1642 Abc_Print( 1,
"Quitting due to callback on fail.\n" );
1666 Abc_Print( 1,
"Output %*d was asserted in frame %2d (solved %*d out of %*d outputs).\n",
1669 if ( p->pPars->fUseBridge )
1683 nTimeUndec += clkSatRun;
1692 if ( p->pTime4Outs == NULL )
1698 if ( fFirst == 1 && f > 0 && p->pSat->stats.conflicts > 1 )
1703 Abc_Print( 1,
"%4d %s : ", f, fUnfinished ?
"-" :
"+" );
1704 Abc_Print( 1,
"Var =%8.0f. ", (
double)p->nSatVars );
1706 Abc_Print( 1,
"Cla =%9.0f. ", (
double)p->pSat->stats.clauses );
1707 Abc_Print( 1,
"Conf =%7.0f. ",(
double)p->pSat->stats.conflicts );
1716 Abc_Print( 1,
"%4.0f MB", 4.0*(f+1)*p->nObjNums /(1<<20) );
1730 if ( nJumpFrame && pPars->
nStart == 0 )
1732 else if ( RetValue == -1 && pPars->
nStart == 0 )
1739 Abc_Print( 1,
"CNF = %.1f sec (%.1f %%) ", 1.0*clkOther/CLOCKS_PER_SEC, 100.0*clkOther/(
Abc_Clock() - clkTotal) );
1740 Abc_Print( 1,
"UNSAT = %.1f sec (%.1f %%) ", 1.0*nTimeUnsat/CLOCKS_PER_SEC, 100.0*nTimeUnsat/(
Abc_Clock() - clkTotal) );
1741 Abc_Print( 1,
"SAT = %.1f sec (%.1f %%) ", 1.0*nTimeSat/CLOCKS_PER_SEC, 100.0*nTimeSat/(
Abc_Clock() - clkTotal) );
1742 Abc_Print( 1,
"UNDEC = %.1f sec (%.1f %%)", 1.0*nTimeUndec/CLOCKS_PER_SEC, 100.0*nTimeUndec/(
Abc_Clock() - clkTotal) );
static abctime sat_solver_set_runtime_limit(sat_solver *s, abctime Limit)
#define Vec_VecForEachLevel(vGlob, vVec, i)
MACRO DEFINITIONS ///.
static Vec_Ptr_t * Vec_PtrStart(int nSize)
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
static int Saig_ManBmcSimInfoClear(unsigned *pInfo, Aig_Obj_t *pObj)
#define SAIG_TER_NON
FUNCTION DEFINITIONS ///.
static Vec_Wec_t * Vec_WecAlloc(int nCap)
FUNCTION DEFINITIONS ///.
int Aig_NodeCompareRefsIncrease(Aig_Obj_t **pp1, Aig_Obj_t **pp2)
typedefABC_NAMESPACE_HEADER_START struct Vec_Wec_t_ Vec_Wec_t
INCLUDES ///.
int Saig_ManCallSolver(Gia_ManBmc_t *p, int Lit)
static int Aig_ObjFaninId0(Aig_Obj_t *pObj)
static int * Saig_ManBmcMapping(Gia_ManBmc_t *p, Aig_Obj_t *pObj)
typedefABC_NAMESPACE_HEADER_START struct Vec_Vec_t_ Vec_Vec_t
INCLUDES ///.
static int Saig_ManPoNum(Aig_Man_t *p)
static int Saig_ObjIsLo(Aig_Man_t *p, Aig_Obj_t *pObj)
Abc_Cex_t * Saig_ManGenerateCex(Gia_ManBmc_t *p, int f, int i)
#define Aig_ManForEachObjVec(vIds, p, pObj, i)
typedefABC_NAMESPACE_HEADER_START struct Aig_Man_t_ Aig_Man_t
INCLUDES ///.
static Aig_Obj_t * Aig_ObjChild0(Aig_Obj_t *pObj)
int sat_solver_addclause(sat_solver *s, lit *begin, lit *end)
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
int Saig_ManBmcCountRefed(Aig_Man_t *p, Vec_Ptr_t *vSuper)
static int Vec_PtrPushUnique(Vec_Ptr_t *p, void *Entry)
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)
int sat_solver_solve(sat_solver *s, lit *begin, lit *end, ABC_INT64_T nConfLimit, ABC_INT64_T nInsLimit, ABC_INT64_T nConfLimitGlobal, ABC_INT64_T nInsLimitGlobal)
static void sat_solver_compress(sat_solver *s)
static int lit_var(lit l)
static void Vec_WecFree(Vec_Wec_t *p)
void sat_solver_delete(sat_solver *s)
static Aig_Obj_t * Aig_ObjFanin0(Aig_Obj_t *pObj)
static void Vec_PtrFreeFree(Vec_Ptr_t *p)
static Vec_Int_t * Vec_WecPushLevel(Vec_Wec_t *p)
static int Aig_IsComplement(Aig_Obj_t *p)
int Saig_ManBmcScalable(Aig_Man_t *pAig, Saig_ParBmc_t *pPars)
#define Aig_ManForEachCi(p, pObj, i)
ITERATORS ///.
static Aig_Obj_t * Aig_Regular(Aig_Obj_t *p)
int Saig_ManBmcTerSimCount01(Aig_Man_t *p, unsigned *pInfo)
static void Vec_PtrPush(Vec_Ptr_t *p, void *Entry)
#define Aig_ManForEachCo(p, pObj, i)
#define ABC_ALLOC(type, num)
static Aig_Obj_t * Aig_ManObj(Aig_Man_t *p, int i)
unsigned Aig_ManRandom(int fReset)
int(* pFuncOnFail)(int, Abc_Cex_t *)
static void veci_resize(veci *v, int k)
Vec_Ptr_t * Saig_ManBmcTerSim(Aig_Man_t *p)
static abctime Abc_Clock()
static int Abc_MaxInt(int a, int b)
static Aig_Obj_t * Aig_ObjFanin1(Aig_Obj_t *pObj)
void Saig_ManBmcCreateCnf_iter(Gia_ManBmc_t *p, Aig_Obj_t *pObj, int iFrame, Vec_Int_t *vVisit)
static int Vec_PtrSize(Vec_Ptr_t *p)
static void Vec_VecFree(Vec_Vec_t *p)
static int Saig_ManBmcLiteral(Gia_ManBmc_t *p, Aig_Obj_t *pObj, int iFrame)
double sat_solver_memory(sat_solver *s)
static Vec_Int_t * Vec_IntStartFull(int nSize)
int Saig_ManBmcCountNonternary_rec(Aig_Man_t *p, Aig_Obj_t *pObj, Vec_Ptr_t *vInfos, unsigned *pInfo, int f, int *pCounter)
static void Aig_ObjSetTravIdCurrent(Aig_Man_t *p, Aig_Obj_t *pObj)
int sat_solver_count_assigned(sat_solver *s)
static int Abc_LitNotCond(int Lit, int c)
int Saig_ManBmcRunTerSim_rec(Gia_ManBmc_t *p, Aig_Obj_t *pObj, int iFrame)
static int Aig_ManNodeNum(Aig_Man_t *p)
static int Saig_ManBmcCof1(int t, int v)
static int Vec_WecSize(Vec_Wec_t *p)
static int sat_solver_var_value(sat_solver *s, int v)
static int Saig_ManBmcSimInfoGet(unsigned *pInfo, Aig_Obj_t *pObj)
static int Saig_ManBmcCofEqual(int t, int v)
static int Saig_ObjIsLi(Aig_Man_t *p, Aig_Obj_t *pObj)
void Saig_ManBmcWriteBlif(Aig_Man_t *p, Vec_Int_t *vMapping, char *pFileName)
Abc_Cex_t * Abc_CexMakeTriv(int nRegs, int nTruePis, int nTruePos, int iFrameOut)
void Aig_ManIncrementTravId(Aig_Man_t *p)
DECLARATIONS ///.
static lit lit_neg(lit l)
Vec_Int_t * Cnf_DeriveMappingArray(Aig_Man_t *pAig)
FUNCTION DECLARATIONS ///.
static void Vec_WecClear(Vec_Wec_t *p)
static int Aig_ObjIsNode(Aig_Obj_t *pObj)
static void Vec_IntWriteEntry(Vec_Int_t *p, int i, int Entry)
static int Abc_MinInt(int a, int b)
void Saig_ParBmcSetDefaultParams(Saig_ParBmc_t *p)
unsigned * Saig_ManBmcTerSimOne(Aig_Man_t *p, unsigned *pPrev)
static Vec_Int_t * Vec_IntStart(int nSize)
static int Abc_LitIsCompl(int Lit)
static int Saig_ManBmcSimInfoAnd(int Value0, int Value1)
static void Saig_ManBmcSimInfoSet(unsigned *pInfo, Aig_Obj_t *pObj, int Value)
void Cnf_ReadMsops(char **ppSopSizes, char ***ppSops)
FUNCTION DEFINITIONS ///.
static int Saig_ManBmcSimInfoNot(int Value)
#define Aig_ManForEachNode(p, pObj, i)
Gia_ManBmc_t * Saig_Bmc3ManStart(Aig_Man_t *pAig, int nTimeOutOne)
unsigned Dar_CutSortVars(unsigned uTruth, int *pVars)
static Vec_Int_t * Vec_IntAlloc(int nCap)
FUNCTION DEFINITIONS ///.
void Saig_Bmc3ManStop(Gia_ManBmc_t *p)
#define Saig_ManForEachLi(p, pObj, i)
int Saig_ManBmcCreateCnf_rec(Gia_ManBmc_t *p, Aig_Obj_t *pObj, int iFrame)
static void Vec_IntAddToEntry(Vec_Int_t *p, int i, int Addition)
static int Saig_ManBmcSetLiteral(Gia_ManBmc_t *p, Aig_Obj_t *pObj, int iFrame, int iLit)
void Saig_ManBmcSupergate_rec(Aig_Obj_t *pObj, Vec_Ptr_t *vSuper)
static void Saig_ManBmcAddClauses(Gia_ManBmc_t *p, int uTruth, int Lits[], int iLitOut)
typedefABC_NAMESPACE_IMPL_START struct Gia_ManBmc_t_ Gia_ManBmc_t
DECLARATIONS ///.
void sat_solver_setnvars(sat_solver *s, int n)
static int Vec_IntEntry(Vec_Int_t *p, int i)
static int Abc_Base10Log(unsigned n)
void Abc_CexFreeP(Abc_Cex_t **p)
int sat_solver_nvars(sat_solver *s)
#define ABC_NAMESPACE_IMPL_END
static Aig_Obj_t * Aig_ObjChild1(Aig_Obj_t *pObj)
static int Aig_ObjIsConst1(Aig_Obj_t *pObj)
static int Saig_ManBmcReduceTruth(int uTruth, int Lits[])
static void Vec_IntPush(Vec_Int_t *p, int Entry)
int Saig_ManBmcTerSimCount01Po(Aig_Man_t *p, unsigned *pInfo)
#define Saig_ManForEachLo(p, pObj, i)
static void Hsh_IntManStop(Hsh_IntMan_t *p)
Vec_Int_t * Saig_ManBmcComputeMappingRefs(Aig_Man_t *p, Vec_Int_t *vMap)
static void Abc_Print(int level, const char *format,...)
static int Aig_ObjFaninC0(Aig_Obj_t *pObj)
static int Saig_ManRegNum(Aig_Man_t *p)
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)
void Saig_ManBmcDfs_rec(Aig_Man_t *p, Aig_Obj_t *pObj, Vec_Ptr_t *vNodes)
void Saig_ManBmcCountNonternary(Aig_Man_t *p, Vec_Ptr_t *vInfos, int iFrame)
#define ABC_NAMESPACE_IMPL_START
Vec_Vec_t * Saig_ManBmcSections(Aig_Man_t *p)
static Vec_Int_t * Vec_WecEntry(Vec_Wec_t *p, int i)
static int Hsh_IntManAdd(Hsh_IntMan_t *p, int iData)
static void * Vec_PtrEntry(Vec_Ptr_t *p, int i)
static void Abc_InfoSetBit(unsigned *p, int i)
static Aig_Obj_t * Aig_ManCo(Aig_Man_t *p, int i)
int Aig_ManLevelNum(Aig_Man_t *p)
void Saig_ManBmcSectionsTest(Aig_Man_t *p)
static int Aig_ManRegNum(Aig_Man_t *p)
abctime Saig_ManBmcTimeToStop(Saig_ParBmc_t *pPars, abctime nTimeToStopNG)
sat_solver * sat_solver_new(void)
static int Vec_IntSize(Vec_Int_t *p)
static int sat_solver_count_usedvars(sat_solver *s)
static Vec_Ptr_t * Vec_PtrAlloc(int nCap)
FUNCTION DEFINITIONS ///.
int Gia_ManToBridgeProgress(FILE *pFile, int Size, unsigned char *pBuffer)
static int Saig_ManPiNum(Aig_Man_t *p)
MACRO DEFINITIONS ///.
static void Vec_IntShrink(Vec_Int_t *p, int nSizeNew)
Abc_Cex_t * Abc_CexDup(Abc_Cex_t *p, int nRegsNew)
#define ABC_CALLOC(type, num)
static int Aig_ObjFaninC1(Aig_Obj_t *pObj)
#define Vec_WecForEachLevelReverse(vGlob, vVec, i)
Vec_Ptr_t * Saig_ManBmcDfsNodes(Aig_Man_t *p, Vec_Ptr_t *vRoots)
#define ABC_INFINITY
MACRO DEFINITIONS ///.
static int Saig_ManBmcCof0(int t, int v)
static int Abc_BitWordNum(int nBits)
#define Saig_ManForEachPo(p, pObj, i)
static int Aig_ObjId(Aig_Obj_t *pObj)
void Saig_ManBmcMappingTest(Aig_Man_t *p)
static void Vec_PtrClear(Vec_Ptr_t *p)
static int * Vec_IntEntryP(Vec_Int_t *p, int i)
typedefABC_NAMESPACE_HEADER_START struct Abc_Cex_t_ Abc_Cex_t
INCLUDES ///.
static int Aig_ObjRefs(Aig_Obj_t *pObj)
int Saig_ManBmcCreateCnf(Gia_ManBmc_t *p, Aig_Obj_t *pObj, int iFrame)
static void Vec_IntFree(Vec_Int_t *p)
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.
void Gia_ManReportProgress(FILE *pFile, int prop_no, int depth)
static Hsh_IntMan_t * Hsh_IntManStart(Vec_Int_t *vData, int nSize, int nEntries)
FUNCTION DEFINITIONS ///.
void Abc_CexFree(Abc_Cex_t *p)
static int Aig_ObjIsCi(Aig_Obj_t *pObj)
static int * veci_begin(veci *v)
Vec_Ptr_t * Saig_ManBmcSupergate(Aig_Man_t *p, int iPo)
static int Saig_ObjIsPi(Aig_Man_t *p, Aig_Obj_t *pObj)
static int Aig_ObjIsCo(Aig_Obj_t *pObj)
static int veci_size(veci *v)
int Gia_ManToBridgeResult(FILE *pFile, int Result, Abc_Cex_t *pCex, int iPoProved)
DECLARATIONS ///.
void Saig_ManBmcSupergateTest(Aig_Man_t *p)
static void Vec_PtrFree(Vec_Ptr_t *p)
void Saig_ManBmcTerSimTestPo(Aig_Man_t *p)
#define Saig_ManForEachPi(p, pObj, i)
void Saig_ManBmcTerSimTest(Aig_Man_t *p)
Vec_Ptr_t * Saig_ManBmcTerSimPo(Aig_Man_t *p)