69 p->nFrameMax = nFrameMax;
70 p->nConfMax = nConfMax;
71 p->nTimeMax = nTimeMax;
222 int ObjPrev = 0, ConfPrev = 0;
223 int Count = 0, LitOut, RetValue;
226 RetValue =
sat_solver_solve( p->pSat, &Lit, &Lit + 1, p->nConfMax, 0, 0, 0 );
230 while ( RetValue ==
l_True )
239 RetValue =
sat_solver_solve( p->pSat, &Lit, &Lit + 1, p->nConfMax, 0, 0, 0 );
243 printf(
"%3d : AIG =%7d Conf =%7d. ", Count++,
271 int f, i, Lit, RetValue = -1, fFailed = 0;
277 p =
Ccf_ManStart( pGia, nFrameMax, nConfMax, nTimeMax, fVerbose );
284 for ( f = 0; f < nFrameMax; f++ )
287 printf(
"ITER %3d :\n", f );
304 printf(
"Property failed in frame %d.\n", f );
313 if ( nTimeToStop &&
Abc_Clock() > nTimeToStop )
314 printf(
"Runtime limit (%d sec) is reached after %d frames. ", nTimeMax, f );
315 else if ( f == nFrameMax )
316 printf(
"Completed %d frames without converging. ", f );
317 else if ( RetValue == 1 )
318 printf(
"Backward reachability converged after %d iterations. ", f-1 );
319 else if ( RetValue == -1 )
320 printf(
"Conflict limit or timeout is reached after %d frames. ", f-1 );
323 if ( !fFailed && RetValue == 1 )
324 printf(
"Property holds.\n" );
326 printf(
"Property is undecided.\n" );
330 pNew = p->pFrames; p->pFrames = NULL;
static abctime sat_solver_set_runtime_limit(sat_solver *s, abctime Limit)
Gia_Man_t * Gia_ManCofTest(Gia_Man_t *pGia, int nFrameMax, int nConfMax, int nTimeMax, int fVerbose)
void Gia_ManStop(Gia_Man_t *p)
static int Gia_ManPoNum(Gia_Man_t *p)
static int Gia_ObjFaninC1(Gia_Obj_t *pObj)
static int Gia_ManAppendCo(Gia_Man_t *p, int iLit0)
int sat_solver_addclause(sat_solver *s, lit *begin, lit *end)
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
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 int Abc_Var2Lit(int Var, int fCompl)
int sat_solver_nconflicts(sat_solver *s)
static int Gia_ObjFaninId1p(Gia_Man_t *p, Gia_Obj_t *pObj)
static int Gia_Obj1Copy(Vec_Int_t *vCopies, int Fan1, int fCompl1)
void * Gia_ManUnrollAdd(void *pMan, int fMax)
void Ccf_ManStop(Ccf_Man_t *p)
static abctime Abc_Clock()
static Gia_Obj_t * Gia_ManObj(Gia_Man_t *p, int v)
static int Abc_LitNotCond(int Lit, int c)
static int sat_solver_var_value(sat_solver *s, int v)
void Gia_ManStopP(Gia_Man_t **p)
typedefABC_NAMESPACE_IMPL_START struct Ccf_Man_t_ Ccf_Man_t
DECLARATIONS ///.
static void Abc_PrintTime(int level, const char *pStr, abctime time)
static void Vec_IntWriteEntry(Vec_Int_t *p, int i, int Entry)
static int Abc_LitIsCompl(int Lit)
static Vec_Int_t * Vec_IntAlloc(int nCap)
FUNCTION DEFINITIONS ///.
void sat_solver_setnvars(sat_solver *s, int n)
static int Vec_IntEntry(Vec_Int_t *p, int i)
int sat_solver_nvars(sat_solver *s)
#define ABC_NAMESPACE_IMPL_END
static void Vec_IntFill(Vec_Int_t *p, int nSize, int Fill)
Ccf_Man_t * Ccf_ManStart(Gia_Man_t *pGia, int nFrameMax, int nConfMax, int nTimeMax, int fVerbose)
FUNCTION DEFINITIONS ///.
#define ABC_NAMESPACE_IMPL_START
static int Abc_LitNot(int Lit)
void Gia_ManCofOneDerive_rec(Ccf_Man_t *p, int Id)
sat_solver * sat_solver_new(void)
static int Gia_ObjIsAnd(Gia_Obj_t *pObj)
int Gia_ManUnrollLastLit(void *pMan)
void Gia_ManUnrollStop(void *pMan)
static int Abc_Lit2Var(int Lit)
#define ABC_CALLOC(type, num)
static int Gia_ObjFaninId0p(Gia_Man_t *p, Gia_Obj_t *pObj)
void Gia_ManSetPhase(Gia_Man_t *p)
void * Gia_ManUnrollStart(Gia_Man_t *pAig, Gia_ParFra_t *pPars)
static int Gia_ObjFaninC0(Gia_Obj_t *pObj)
static void Vec_IntFree(Vec_Int_t *p)
int Gia_ManCofGetReachable(Ccf_Man_t *p, int Lit)
static int Gia_ObjIsCi(Gia_Obj_t *pObj)
Gia_Man_t * Gia_ManCleanup(Gia_Man_t *p)
#define Gia_ManForEachPo(p, pObj, i)
static int Gia_ObjFaninId1(Gia_Obj_t *pObj, int ObjId)
static int Gia_Obj0Copy(Vec_Int_t *vCopies, int Fan0, int fCompl0)
void Gia_ManCofExtendSolver(Ccf_Man_t *p)
int Gia_ManHashAnd(Gia_Man_t *p, int iLit0, int iLit1)
int Gia_ManCofOneDerive(Ccf_Man_t *p, int LitProp)
static int Gia_ObjCioId(Gia_Obj_t *pObj)
static int Gia_ManObjNum(Gia_Man_t *p)
void Gia_ManHashStop(Gia_Man_t *p)
static int Gia_ObjFaninId0(Gia_Obj_t *pObj, int ObjId)
static int sat_solver_add_and(sat_solver *pSat, int iVar, int iVar0, int iVar1, int fCompl0, int fCompl1, int fCompl)
static int Gia_ManRegNum(Gia_Man_t *p)