51 FILE * pFile = fopen( pName,
"r" );
52 while ( fscanf( pFile,
"%d", &Num ) == 1 )
69 printf(
"Cannot find object with Id %d in the given AIG.\n", iVar );
120 int f, i, iObj, nNodesOld;
124 assert( iFrame >= 0 && iOut >= 0 );
132 for ( f = iFrame; f >= 0; f-- )
198 clock_t clk = clock();
221 RetValue =
sat_solver_solve( pSat, NULL, NULL, (ABC_INT64_T)0, (ABC_INT64_T)0, (ABC_INT64_T)0, (ABC_INT64_T)0 );
226 printf(
"Timeout of conflict limit is reached.\n" );
233 printf(
"The BMC problem is SAT.\n" );
238 printf(
"SAT solver returned UNSAT after %7d conflicts. ", (
int)pSat->
stats.
conflicts );
258 if ( pFile != stdout )
static abctime sat_solver_set_runtime_limit(sat_solver *s, abctime Limit)
static int * Vec_IntArray(Vec_Int_t *p)
void * Intp_ManUnsatCore(Intp_Man_t *p, Sto_Man_t *pCnf, int fLearned, int fVerbose)
void Bmc_ManBCoreCollect_rec(Gia_Man_t *p, int Id, int f, Vec_Int_t *vNodes, Vec_Int_t *vRootsNew)
static int Gia_ObjFaninC1(Gia_Obj_t *pObj)
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
static Gia_Obj_t * Gia_ManPo(Gia_Man_t *p, int v)
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)
void sat_solver_delete(sat_solver *s)
static void sat_solver_set_pivot_variables(sat_solver *s, int *pPivots, int nPivots)
Vec_Int_t * Bmc_ManBCoreCollectPivots(Gia_Man_t *p, char *pName, Vec_Int_t *vVarMap)
int sat_solver_nconflicts(sat_solver *s)
void * sat_solver_store_release(sat_solver *s)
static int Gia_ObjFaninId1p(Gia_Man_t *p, Gia_Obj_t *pObj)
static abctime Abc_Clock()
static void Vec_IntSort(Vec_Int_t *p, int fReverse)
static Gia_Obj_t * Gia_ManObj(Gia_Man_t *p, int v)
#define ABC_SWAP(Type, a, b)
static int sat_solver_add_buffer(sat_solver *pSat, int iVarA, int iVarB, int fCompl)
Vec_Int_t * Bmc_ManBCoreCollect(Gia_Man_t *p, int iFrame, int iOut, sat_solver *pSat)
static int sat_solver_add_constraint(sat_solver *pSat, int iVar, int iVar2, int fCompl)
Intp_Man_t * Intp_ManAlloc()
FUNCTION DEFINITIONS ///.
static int sat_solver_add_const(sat_solver *pSat, int iVar, int fCompl)
static void Abc_PrintTime(int level, const char *pStr, abctime time)
void Intp_ManFree(Intp_Man_t *p)
static Gia_Obj_t * Gia_ObjFanin0(Gia_Obj_t *pObj)
static Vec_Int_t * Vec_IntAlloc(int nCap)
FUNCTION DEFINITIONS ///.
static int Gia_ObjIsRo(Gia_Man_t *p, Gia_Obj_t *pObj)
void sat_solver_store_alloc(sat_solver *s)
static Gia_Obj_t * Gia_ObjRoToRi(Gia_Man_t *p, Gia_Obj_t *pObj)
void sat_solver_setnvars(sat_solver *s, int n)
static void Gia_ObjSetTravIdCurrent(Gia_Man_t *p, Gia_Obj_t *pObj)
#define ABC_NAMESPACE_IMPL_END
static void Vec_IntPush(Vec_Int_t *p, int Entry)
static int Gia_ObjId(Gia_Man_t *p, Gia_Obj_t *pObj)
#define Vec_IntForEachEntryStart(vVec, Entry, i, Start)
#define Vec_IntForEachEntryDouble(vVec, Entry1, Entry2, i)
static int Gia_ObjIsTravIdCurrentId(Gia_Man_t *p, int Id)
#define Gia_ManForEachObjVec(vVec, p, pObj, i)
#define ABC_NAMESPACE_IMPL_START
void sat_solver_store_mark_roots(sat_solver *s)
sat_solver * sat_solver_new(void)
static int Vec_IntSize(Vec_Int_t *p)
void Sto_ManFree(Sto_Man_t *p)
static Gia_Obj_t * Gia_ObjRiToRo(Gia_Man_t *p, Gia_Obj_t *pObj)
static int Gia_ObjIsAnd(Gia_Obj_t *pObj)
#define Gia_ManForEachObj(p, pObj, i)
MACRO DEFINITIONS ///.
static Gia_Obj_t * Gia_ManConst0(Gia_Man_t *p)
static int Abc_Lit2Var(int Lit)
static int Gia_ObjFaninId0p(Gia_Man_t *p, Gia_Obj_t *pObj)
static Gia_Obj_t * Gia_ObjFanin1(Gia_Obj_t *pObj)
void Bmc_ManBCorePerform(Gia_Man_t *p, Bmc_BCorePar_t *pPars)
MACRO DEFINITIONS ///.
ABC_NAMESPACE_IMPL_START Vec_Int_t * Bmc_ManBCoreReadPivots(char *pName)
DECLARATIONS ///.
void Gia_ManIncrementTravId(Gia_Man_t *p)
static void Bmc_ManBCoreAssignVar(Gia_Man_t *p, Gia_Obj_t *pObj, int f, Vec_Int_t *vNodes)
static int Gia_ObjFaninC0(Gia_Obj_t *pObj)
void Intp_ManUnsatCorePrintForBmc(FILE *pFile, Sto_Man_t *pCnf, void *vCore0, void *vVarMap0)
static void Vec_IntFree(Vec_Int_t *p)
static void Vec_IntClear(Vec_Int_t *p)
static int Gia_ObjIsCi(Gia_Obj_t *pObj)
static void Gia_ObjSetTravIdCurrentId(Gia_Man_t *p, int Id)
#define Vec_IntForEachEntry(vVec, Entry, i)
MACRO DEFINITIONS ///.
static int Gia_ManObjNum(Gia_Man_t *p)
static int Gia_ObjIsPi(Gia_Man_t *p, Gia_Obj_t *pObj)
static int sat_solver_add_and(sat_solver *pSat, int iVar, int iVar0, int iVar1, int fCompl0, int fCompl1, int fCompl)