63 if ( pObj->
Value == 0 )
65 pObj->
Value = Vec_IntSize(
p->vSat2Id );
66 Vec_IntPush(
p->vSat2Id, Id );
74 int Lits[3], iVar = Abc_Lit2Var(iLit);
75 Gia_Obj_t * pObj = Gia_ManObj(
p->pGia, Vec_IntEntry(
p->vSat2Id, iVar) );
77 if ( Gia_ObjIsCi(pObj) || Gia_ObjIsConst0(pObj) )
79 assert( Gia_ObjIsAnd(pObj) );
80 if ( (Abc_LitIsCompl(iLit) ? pObj->
fMark1 : pObj->
fMark0) )
82 Lits[0] = Abc_LitNot(iLit);
83 if ( Abc_LitIsCompl(iLit) )
85 Lits[1] = Abc_Var2Lit(
Bmc_LoadGetSatVar(
p, Gia_ObjFaninId0p(
p->pGia, pObj)), !Gia_ObjFaninC0(pObj) );
86 Lits[2] = Abc_Var2Lit(
Bmc_LoadGetSatVar(
p, Gia_ObjFaninId1p(
p->pGia, pObj)), !Gia_ObjFaninC1(pObj) );
92 Lits[1] = Abc_Var2Lit(
Bmc_LoadGetSatVar(
p, Gia_ObjFaninId0p(
p->pGia, pObj)), Gia_ObjFaninC0(pObj) );
94 Lits[1] = Abc_Var2Lit(
Bmc_LoadGetSatVar(
p, Gia_ObjFaninId1p(
p->pGia, pObj)), Gia_ObjFaninC1(pObj) );
105 if ( Gia_ObjIsAnd(pObj) && !(pObj->
fMark0 && pObj->
fMark1) )
136 p->vSat2Id = Vec_IntAlloc( 1000 );
137 Vec_IntPush(
p->vSat2Id, 0 );
145 Vec_IntFree(
p->vSat2Id );
173 p->pSat->pCnfMan =
p;
180 Lit = Abc_Var2Lit(
Bmc_LoadGetSatVar(
p, Gia_ObjFaninId0p(pGia, pObj)), Gia_ObjFaninC0(pObj) );
182 Lit = Abc_Var2Lit(
Bmc_LoadAddCnf_rec(
p, Gia_ObjFaninId0p(pGia, pObj)), Gia_ObjFaninC0(pObj) );
185 printf(
"Frame%4d : ", i );
186 printf(
"Vars = %6d ", Vec_IntSize(
p->vSat2Id) );
189 status =
sat_solver_solve(
p->pSat, &Lit, &Lit + 1, (ABC_INT64_T)nConfLimit, (ABC_INT64_T)0, (ABC_INT64_T)0, (ABC_INT64_T)0 );
195 else if ( status ==
l_True )
199 Abc_PrintTime( 1,
"Time", Abc_Clock() - clk );
202 printf(
"Callbacks = %d. Loadings = %d.\n",
p->nCallBacks1,
p->nCallBacks2 );
#define ABC_CALLOC(type, num)
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
Bmc_Load_t * Bmc_LoadStart(Gia_Man_t *pGia)
int Bmc_LoadAddCnf(void *pMan, int iLit)
void Bmc_LoadStop(Bmc_Load_t *p)
int Bmc_LoadAddCnf_rec(Bmc_Load_t *p, int Id)
void Bmc_LoadTest(Gia_Man_t *pGia, int fLoadCnf, int fVerbose)
int Bmc_LoadGetSatVar(Bmc_Load_t *p, int Id)
FUNCTION DEFINITIONS ///.
typedefABC_NAMESPACE_IMPL_START struct Bmc_Load_t_ Bmc_Load_t
DECLARATIONS ///.
struct Bmc_AndPar_t_ Bmc_AndPar_t
#define sat_solver_addclause
#define Gia_ManForEachPo(p, pObj, i)
struct Gia_Obj_t_ Gia_Obj_t
struct Gia_Man_t_ Gia_Man_t
void Gia_ManCleanValue(Gia_Man_t *p)
void Gia_ManCreateRefs(Gia_Man_t *p)
void Gia_ManSetPhase(Gia_Man_t *p)
sat_solver * sat_solver_new(void)
int sat_solver_nconflicts(sat_solver *s)
int sat_solver_nclauses(sat_solver *s)
void sat_solver_setnvars(sat_solver *s, int n)
int sat_solver_clause_new(sat_solver *s, lit *begin, lit *end, int learnt)
void sat_solver_delete(sat_solver *s)