52 int pLits[4], LitF, LitI, LitT, LitE, RetValue;
130 int i, RetValue, Lit, LitNode, pLits[2];
268 assert( p->pSat == NULL && p->vId2Var == NULL );
272 p->nSatVarsPivot = p->nSatVars = pDat->
nVars;
285 for ( i = 0; i < pDat->
nClauses; i++ )
326 int status =
sat_solver_solve( p->pSat, NULL, NULL, p->pPars->nBTLimit, 0, 0, 0 );
350 int pLitsSat[2], RetValue;
372 RetValue =
sat_solver_solve( p->pSat, pLitsSat, pLitsSat + 2, (ABC_INT64_T)p->pPars->nBTLimit, (ABC_INT64_T)0, (ABC_INT64_T)0, (ABC_INT64_T)0 );
381 else if ( RetValue ==
l_True )
400 RetValue =
sat_solver_solve( p->pSat, pLitsSat, pLitsSat + 2, (ABC_INT64_T)p->pPars->nBTLimit, (ABC_INT64_T)0, (ABC_INT64_T)0, (ABC_INT64_T)0 );
409 else if ( RetValue ==
l_True )
static int * Vec_IntArray(Vec_Int_t *p)
static ABC_NAMESPACE_IMPL_START int Ssc_ObjSatLit(Ssc_Man_t *p, int Lit)
DECLARATIONS ///.
static Gia_Obj_t * Gia_ObjChild0(Gia_Obj_t *pObj)
static int Ssc_ObjSatVar(Ssc_Man_t *p, int iObj)
MACRO DEFINITIONS ///.
Aig_Man_t * Gia_ManToAigSimple(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 ///.
static void Gia_ManAddClausesMux(Ssc_Man_t *p, Gia_Obj_t *pNode)
FUNCTION DEFINITIONS ///.
int sat_solver_addclause(sat_solver *s, lit *begin, lit *end)
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
void Aig_ManStop(Aig_Man_t *p)
typedefABC_NAMESPACE_HEADER_START struct Ssc_Man_t_ Ssc_Man_t
INCLUDES ///.
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 void sat_solver_compress(sat_solver *s)
void Ssc_ManCollectSatPattern(Ssc_Man_t *p, Vec_Int_t *vPattern)
void sat_solver_delete(sat_solver *s)
static int Abc_Var2Lit(int Var, int fCompl)
static int Gia_ObjFaninId1p(Gia_Man_t *p, Gia_Obj_t *pObj)
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)
static void Ssc_ManCollectSuper(Gia_Man_t *p, Gia_Obj_t *pObj, Vec_Int_t *vSuper)
static Gia_Obj_t * Gia_ObjChild1(Gia_Obj_t *pObj)
#define Gia_ManForEachCi(p, pObj, i)
static void Vec_IntWriteEntry(Vec_Int_t *p, int i, int Entry)
static Vec_Int_t * Vec_IntStart(int nSize)
static int Abc_LitIsCompl(int Lit)
static Gia_Obj_t * Gia_ObjFanin0(Gia_Obj_t *pObj)
static void Ssc_ManCnfNodeAddToSolver(Ssc_Man_t *p, int NodeId)
static Vec_Int_t * Vec_IntAlloc(int nCap)
FUNCTION DEFINITIONS ///.
static void Gia_ManAddClausesSuper(Ssc_Man_t *p, Gia_Obj_t *pNode, Vec_Int_t *vSuper)
void sat_solver_setnvars(sat_solver *s, int n)
#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)
static void Ssc_ObjSetSatVar(Ssc_Man_t *p, int iObj, int Num)
static int Gia_ManCandNum(Gia_Man_t *p)
static int Aig_ManObjNumMax(Aig_Man_t *p)
#define Gia_ManForEachObjVec(vVec, p, pObj, i)
#define ABC_NAMESPACE_IMPL_START
int Gia_ObjIsMuxType(Gia_Obj_t *pNode)
static int Gia_ManCiNum(Gia_Man_t *p)
Vec_Int_t * Ssc_ManFindPivotSat(Ssc_Man_t *p)
static int Abc_LitNot(int Lit)
int sat_solver_simplify(sat_solver *s)
sat_solver * sat_solver_new(void)
static int Vec_IntSize(Vec_Int_t *p)
static int Gia_IsComplement(Gia_Obj_t *p)
void Ssc_ManStartSolver(Ssc_Man_t *p)
static void Ssc_ManCnfAddToFrontier(Ssc_Man_t *p, int Id, Vec_Int_t *vFront)
Gia_Obj_t * Gia_ObjRecognizeMux(Gia_Obj_t *pNode, Gia_Obj_t **ppNodeT, Gia_Obj_t **ppNodeE)
static int Gia_ObjIsAnd(Gia_Obj_t *pObj)
static int Abc_Lit2Var(int Lit)
static int Gia_ObjFaninId0p(Gia_Man_t *p, Gia_Obj_t *pObj)
void Cnf_DataFree(Cnf_Dat_t *p)
static Gia_Obj_t * Gia_ObjFanin1(Gia_Obj_t *pObj)
static int Vec_IntPushUnique(Vec_Int_t *p, int Entry)
static void Vec_IntClear(Vec_Int_t *p)
static int Gia_ObjIsCi(Gia_Obj_t *pObj)
#define Vec_IntForEachEntry(vVec, Entry, i)
MACRO DEFINITIONS ///.
int Ssc_ManCheckEquivalence(Ssc_Man_t *p, int iRepr, int iNode, int fCompl)
static int Gia_Obj2Lit(Gia_Man_t *p, Gia_Obj_t *pObj)
static int Gia_ManObjNum(Gia_Man_t *p)
static void Ssc_ManCollectSuper_rec(Gia_Man_t *p, Gia_Obj_t *pObj, Vec_Int_t *vSuper)