96 int i, k, iVar0, iVar1, iVarOut;
134 for ( i = 0; i < pCnf->
nClauses; i++ )
139 for ( k = 0; k < nFramesMax; k++ )
147 VarShift += pCnf->
nVars;
175 for ( i = 0; i < pCnf->
nClauses; i++ )
204 int nLitsUsed, nLits, * pLits;
210 printf(
"Solving M-inductiveness for design %s with %d AND nodes and %d flip-flops:\n",
246 printf(
"Timeout reached after %d seconds.\n", nTimeOut );
251 printf(
"The problem is satisfiable (the current set is not M-inductive).\n" );
259 for ( i = 0; i < nLits; i++ )
277 printf(
"M =%4d : AIG =%8d. SAT vars =%8d. SAT conf =%8d. S =%6d. (%6.2f %%) ",
285 if ( !fChanges || fEmpty )
315 int nLitsUsed, RetValue = 0;
346 printf(
"I = %4d : ", nFramesMax );
347 printf(
"Problem is satisfiable.\n" );
355 printf(
"ICheck: Timeout reached after %d seconds. \n", nTimeOut );
377 printf(
"ICheck: Timeout reached after %d seconds. \n", nTimeOut );
390 printf(
"I = %4d : AIG =%8d. SAT vars =%8d. SAT conf =%8d. S =%6d. (%6.2f %%) ",
402 printf(
"M = %4d : AIG =%8d. SAT vars =%8d. SAT conf =%8d. S =%6d. (%6.2f %%) ",
422 printf(
"Solving M-inductiveness for design %s with %d AND nodes and %d flip-flops:\n",
431 for ( f = 1; f <= nFramesMax; f++ )
445 printf(
"The set contains %d (out of %d) next-state functions with 0-based numbers:\n", nLitsUsed,
Gia_ManRegNum(p) );
static abctime sat_solver_set_runtime_limit(sat_solver *s, abctime Limit)
static int * Vec_IntArray(Vec_Int_t *p)
Gia_Man_t * Gia_ManDup(Gia_Man_t *p)
void Gia_ManStop(Gia_Man_t *p)
Aig_Man_t * Gia_ManToAigSimple(Gia_Man_t *p)
#define Gia_ManForEachCo(p, pObj, i)
static int Gia_ManPoNum(Gia_Man_t *p)
Cnf_Dat_t * Cnf_Derive(Aig_Man_t *pAig, int nOutputs)
typedefABC_NAMESPACE_HEADER_START struct Aig_Man_t_ Aig_Man_t
INCLUDES ///.
int sat_solver_addclause(sat_solver *s, lit *begin, lit *end)
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
static ABC_NAMESPACE_IMPL_START Cnf_Dat_t * Cnf_DeriveGiaRemapped(Gia_Man_t *p)
DECLARATIONS ///.
void Aig_ManStop(Aig_Man_t *p)
static char * Gia_ManName(Gia_Man_t *p)
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)
static int sat_solver_add_xor_and(sat_solver *pSat, int iVarF, int iVarA, int iVarB, int iVarC)
void sat_solver_delete(sat_solver *s)
static int Abc_Var2Lit(int Var, int fCompl)
int sat_solver_nconflicts(sat_solver *s)
static int sat_solver_add_xor(sat_solver *pSat, int iVarA, int iVarB, int iVarC, int fCompl)
int Bmc_PerformISearchOne(Gia_Man_t *p, int nFramesMax, int nTimeOut, int fReverse, int fVerbose, Vec_Int_t *vLits)
Gia_Man_t * Jf_ManDeriveCnf(Gia_Man_t *p, int fCnfObjIds)
static abctime Abc_Clock()
static int sat_solver_add_buffer(sat_solver *pSat, int iVarA, int iVarB, int fCompl)
static int sat_solver_final(sat_solver *s, int **ppArray)
sat_solver * Bmc_DeriveSolver(Gia_Man_t *p, Gia_Man_t *pMiter, Cnf_Dat_t *pCnf, int nFramesMax, int nTimeOut, int fVerbose)
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 Gia_ManAndNum(Gia_Man_t *p)
static int Aig_ManCoNum(Aig_Man_t *p)
static int Abc_LitIsCompl(int Lit)
Vec_Int_t * Bmc_PerformISearch(Gia_Man_t *p, int nFramesMax, int nTimeOut, int fReverse, int fDump, int fVerbose)
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)
static void Cnf_DataLiftGia(Cnf_Dat_t *p, Gia_Man_t *pGia, int nVarsPlus)
static void Vec_IntPush(Vec_Int_t *p, int Entry)
static int Gia_ObjId(Gia_Man_t *p, Gia_Obj_t *pObj)
void Bmc_PerformICheck(Gia_Man_t *p, int nFramesMax, int nTimeOut, int fEmpty, int fVerbose)
#define ABC_NAMESPACE_IMPL_START
static int Abc_LitNot(int Lit)
sat_solver * sat_solver_new(void)
static int Vec_IntSize(Vec_Int_t *p)
#define Gia_ManForEachObj(p, pObj, i)
MACRO DEFINITIONS ///.
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)
static int sat_solver_add_buffer_enable(sat_solver *pSat, int iVarA, int iVarB, int iVarEn, int fCompl)
static void Vec_IntFree(Vec_Int_t *p)
static void Vec_IntClear(Vec_Int_t *p)
#define Gia_ManForEachPo(p, pObj, i)
#define Vec_IntForEachEntry(vVec, Entry, i)
MACRO DEFINITIONS ///.
Gia_Man_t * Gia_ManMiter(Gia_Man_t *pAig0, Gia_Man_t *pAig1, int nInsDup, int fDualOut, int fSeq, int fImplic, int fVerbose)
static Gia_Obj_t * Gia_ManRi(Gia_Man_t *p, int v)
static int Gia_ManCoNum(Gia_Man_t *p)
static int Gia_ManRegNum(Gia_Man_t *p)