121 int iLitPart0, iLitPart1, iRes;
144 int i, iLit, iLitPart;
179 Vec_Int_t * vLits0, * vLits1, * vMiters, * vSatMap, * vPartMap, * vCopies;
184 int iVar0, iVar1, iLit, iLit0, iLit1;
185 int i, f, status, nChanges, nMiters, RetValue = 1;
210 for ( f = 0; f < nFrames; f++ )
219 if ( (iLit0 >= 2 || iLit1 >= 2) && iLit0 != iLit1 )
227 printf(
"Reached a fixed point after %d frames. \n", f+1 );
231 pPart =
Bmc_BmciPart( pNew, vSatMap, vMiters, vPartMap, vCopies );
234 nSatVars += pCnf->
nVars;
236 for ( i = 0; i < pCnf->
nClauses; i++ )
265 status =
sat_solver_solve( pSat, &iLit, &iLit + 1, (ABC_INT64_T)0, (ABC_INT64_T)0, (ABC_INT64_T)0, (ABC_INT64_T)0 );
273 printf(
"Timeout reached after %d seconds. \n", nTimeOut );
280 assert( (iLit0 >= 2 || iLit1 >= 2) && iLit0 != iLit1 );
291 printf(
"Frame %4d : ", f+1 );
292 printf(
"Vars =%7d ", nSatVars );
296 printf(
"Miters =%5d ", nMiters );
297 printf(
"SAT =%5d ", nChanges );
302 printf(
"Reached a fixed point after %d frames. \n", f+1 );
333 Bmc_BmciPerform( p, vInit, vInit0, nFrames, nWords, nTimeOut, fVerbose );
static abctime sat_solver_set_runtime_limit(sat_solver *s, abctime Limit)
static int Gia_ObjToLit(Gia_Man_t *p, Gia_Obj_t *pObj)
Gia_Man_t * Bmc_BmciPart(Gia_Man_t *pNew, Vec_Int_t *vSatMap, Vec_Int_t *vMiters, Vec_Int_t *vPartMap, Vec_Int_t *vCopies)
static int * Vec_IntArray(Vec_Int_t *p)
int Gia_ManBmciTest(Gia_Man_t *p, Vec_Int_t *vInit, int nFrames, int nWords, int nTimeOut, int fSim, int fVerbose)
static int Gia_ManAppendAnd(Gia_Man_t *p, int iLit0, int iLit1)
int Bmc_BmciPerform(Gia_Man_t *p, Vec_Int_t *vInit0, Vec_Int_t *vInit1, int nFrames, int nWords, int nTimeOut, int fVerbose)
static int Abc_Lit2LitV(int *pMap, int Lit)
void Gia_ManStop(Gia_Man_t *p)
Aig_Man_t * Gia_ManToAigSimple(Gia_Man_t *p)
static int Gia_ManPoNum(Gia_Man_t *p)
static int Gia_ObjFaninC1(Gia_Obj_t *pObj)
Cnf_Dat_t * Cnf_Derive(Aig_Man_t *pAig, int nOutputs)
typedefABC_NAMESPACE_HEADER_START struct Aig_Man_t_ Aig_Man_t
INCLUDES ///.
static int Gia_ManAppendCo(Gia_Man_t *p, int iLit0)
int sat_solver_addclause(sat_solver *s, lit *begin, lit *end)
int Gia_ManHashXor(Gia_Man_t *p, int iLit0, int iLit1)
static void Vec_IntFillExtra(Vec_Int_t *p, int nSize, int Fill)
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
void Aig_ManStop(Aig_Man_t *p)
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 int Gia_ManAppendCi(Gia_Man_t *p)
void sat_solver_delete(sat_solver *s)
int sat_solver_nconflicts(sat_solver *s)
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_add_buffer(sat_solver *pSat, int iVarA, int iVarB, int fCompl)
void Gia_ManStopP(Gia_Man_t **p)
static void Abc_PrintTime(int level, const char *pStr, abctime time)
void Bmc_BmciUnfold(Gia_Man_t *pNew, Gia_Man_t *p, Vec_Int_t *vFFLits, int fPiReuse)
static void Vec_IntWriteEntry(Vec_Int_t *p, int i, int Entry)
static int Gia_ManAndNum(Gia_Man_t *p)
static int Aig_ManCoNum(Aig_Man_t *p)
static Vec_Int_t * Vec_IntStart(int nSize)
static int Abc_LitIsCompl(int Lit)
static Gia_Obj_t * Gia_ManPi(Gia_Man_t *p, int v)
static Vec_Int_t * Vec_IntAlloc(int nCap)
FUNCTION DEFINITIONS ///.
static int Gia_ObjFanin1Copy(Gia_Obj_t *pObj)
void sat_solver_setnvars(sat_solver *s, int n)
static int Vec_IntEntry(Vec_Int_t *p, int i)
#define ABC_NAMESPACE_IMPL_END
static void Vec_IntFill(Vec_Int_t *p, int nSize, int Fill)
Gia_Man_t * Gia_ManStart(int nObjsMax)
DECLARATIONS ///.
#define Vec_IntForEachEntryTwo(vVec1, vVec2, Entry1, Entry2, i)
#define Gia_ManForEachAnd(p, pObj, i)
static void Vec_IntPush(Vec_Int_t *p, int Entry)
static int Gia_ObjId(Gia_Man_t *p, Gia_Obj_t *pObj)
static ABC_NAMESPACE_IMPL_START Cnf_Dat_t * Cnf_DeriveGiaRemapped(Gia_Man_t *p)
DECLARATIONS ///.
#define Gia_ManForEachPi(p, pObj, i)
int Bmc_BmciPart_rec(Gia_Man_t *pNew, Vec_Int_t *vSatMap, int iIdNew, Gia_Man_t *pPart, Vec_Int_t *vPartMap, Vec_Int_t *vCopies)
static int Gia_ObjFanin0Copy(Gia_Obj_t *pObj)
#define Gia_ManForEachCand(p, pObj, i)
int sat_solver_nclauses(sat_solver *s)
#define ABC_NAMESPACE_IMPL_START
sat_solver * sat_solver_new(void)
static int Vec_IntSize(Vec_Int_t *p)
static int Vec_IntSum(Vec_Int_t *p)
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)
void Cnf_DataFree(Cnf_Dat_t *p)
#define Gia_ManForEachRo(p, pObj, i)
#define Gia_ManForEachRi(p, pObj, i)
void Gia_ManHashAlloc(Gia_Man_t *p)
static int Gia_ObjFaninC0(Gia_Obj_t *pObj)
static void Cnf_DataLiftGia(Cnf_Dat_t *p, Gia_Man_t *pGia, int nVarsPlus)
static void Vec_IntFree(Vec_Int_t *p)
static int Gia_ManPiNum(Gia_Man_t *p)
static void Vec_IntClear(Vec_Int_t *p)
static int Gia_ObjIsCi(Gia_Obj_t *pObj)
char * Abc_UtilStrsav(char *s)
#define Vec_IntForEachEntry(vVec, Entry, i)
MACRO DEFINITIONS ///.
static int Gia_ObjFaninId1(Gia_Obj_t *pObj, int ObjId)
int Gia_ManHashAnd(Gia_Man_t *p, int iLit0, int iLit1)
static int Gia_ManObjNum(Gia_Man_t *p)
static int Gia_ObjFaninId0(Gia_Obj_t *pObj, int ObjId)
static int Gia_ManRegNum(Gia_Man_t *p)