50 assert( Vec_PtrSize(
p->vSolvers) == k );
51 assert( Vec_VecSize(
p->vClauses) == k );
52 assert( Vec_IntSize(
p->vActVars) == k );
57 Vec_PtrPush(
p->vSolvers, pSat );
58 Vec_VecExpand(
p->vClauses, k );
59 Vec_IntPush(
p->vActVars, 0 );
83 pSat = Pdr_ManSolver(
p, k);
84 if ( Vec_IntEntry(
p->vActVars, k) <
p->pPars->nRecycle )
86 assert( k < Vec_PtrSize(
p->vSolvers) - 1 );
95 Vec_PtrWriteEntry(
p->vSolvers, k, pSat );
96 Vec_IntWriteEntry(
p->vActVars, k, 0 );
120 Vec_IntClear(
p->vLits );
121 for ( i = 0; i < nArray; i++ )
126 assert( RegId >= 0 && RegId < Aig_ManRegNum(
p->pAig) );
127 Vec_IntPush(
p->vLits, Abc_Var2Lit(RegId, !Abc_LitIsCompl(pArray[i])) );
129 assert( Vec_IntSize(
p->vLits) >= 0 && Vec_IntSize(
p->vLits) <= nArray );
147 int i, iVar, iVarMax = 0;
149 Vec_IntClear(
p->vLits );
151 for ( i = 0; i < pCube->
nLits; i++ )
153 if ( pCube->
Lits[i] == -1 )
156 pObj = Saig_ManLi(
p->pAig, Abc_Lit2Var(pCube->
Lits[i]) );
158 pObj = Saig_ManLo(
p->pAig, Abc_Lit2Var(pCube->
Lits[i]) );
160 iVarMax = Abc_MaxInt( iVarMax, iVar );
161 Vec_IntPush(
p->vLits, Abc_Var2Lit( iVar, fCompl ^ Abc_LitIsCompl(pCube->
Lits[i]) ) );
164 p->tCnf += Abc_Clock() - clk;
183 int Lit, RetValue, i;
184 if ( !
p->pPars->fUsePropOut )
186 pSat = Pdr_ManSolver(
p, k);
190 if (
p->vCexes && Vec_PtrEntry(
p->vCexes, i) )
193 if (
p->pPars->vOutMap && Vec_IntEntry(
p->pPars->vOutMap, i) == -1 )
199 sat_solver_compress( pSat );
218 pSat = Pdr_ManSolver(
p, k);
220 RetValue =
sat_solver_addclause( pSat, Vec_IntArray(vLits), Vec_IntArray(vLits) + Vec_IntSize(vLits) );
222 sat_solver_compress( pSat );
241 Vec_IntClear( vValues );
242 pSat = Pdr_ManSolver(
p, k);
246 Vec_IntPush( vValues, sat_solver_var_value(pSat, iVar) );
270 Limit = sat_solver_set_runtime_limit( pSat, Pdr_ManTimeLimit(
p) );
271 RetValue =
sat_solver_solve( pSat, Vec_IntArray(vLits), Vec_IntArray(vLits) + Vec_IntSize(vLits), 0, 0, 0, 0 );
272 sat_solver_set_runtime_limit( pSat, Limit );
303 Lit = Abc_Var2Lit(
Pdr_ObjSatVar(
p, k, 2, Aig_ManCo(
p->pAig,
p->iOutCur)), 0 );
304 Limit = sat_solver_set_runtime_limit( pSat, Pdr_ManTimeLimit(
p) );
306 sat_solver_set_runtime_limit( pSat, Limit );
315 Vec_IntAddToEntry(
p->vActVars, k, 1 );
321 Vec_IntPush( vLits, Lit );
322 RetValue =
sat_solver_addclause( pSat, Vec_IntArray(vLits), Vec_IntArray(vLits) + Vec_IntSize(vLits) );
324 sat_solver_compress( pSat );
328 Vec_IntPush( vLits, Abc_LitNot(Lit) );
335 Limit = sat_solver_set_runtime_limit( pSat, Pdr_ManTimeLimit(
p) );
336 RetValue =
sat_solver_solve( pSat, Vec_IntArray(vLits), Vec_IntArray(vLits) + Vec_IntSize(vLits), fTryConf ?
p->pPars->nConfGenLimit : nConfLimit, 0, 0, 0 );
337 sat_solver_set_runtime_limit( pSat, Limit );
340 if ( fTryConf &&
p->pPars->nConfGenLimit )
346 clk = Abc_Clock() - clk;
364 if (
p->pPars->fNewXSim )
368 p->tTsim += Abc_Clock() - clk;
369 p->nXsimLits += (*ppPred)->nLits;
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
struct Aig_Obj_t_ Aig_Obj_t
#define Aig_ManForEachObjVec(vIds, p, pObj, i)
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
#define sat_solver_addclause
sat_solver * Pdr_ManNewSolver(sat_solver *pSat, Pdr_Man_t *p, int k, int fInit)
int Pdr_ManFreeVar(Pdr_Man_t *p, int k)
int Pdr_ObjSatVar(Pdr_Man_t *p, int k, int Pol, Aig_Obj_t *pObj)
FUNCTION DECLARATIONS ///.
int Pdr_ObjRegNum(Pdr_Man_t *p, int k, int iSatVar)
struct Pdr_Set_t_ Pdr_Set_t
Pdr_Set_t * Txs3_ManTernarySim(Txs3_Man_t *p, int k, Pdr_Set_t *pCube)
Pdr_Set_t * Pdr_ManTernarySim(Pdr_Man_t *p, int k, Pdr_Set_t *pCube)
struct Pdr_Man_t_ Pdr_Man_t
sat_solver * Pdr_ManFetchSolver(Pdr_Man_t *p, int k)
int Pdr_ManCheckCubeCs(Pdr_Man_t *p, int k, Pdr_Set_t *pCube)
int Pdr_ManCheckCube(Pdr_Man_t *p, int k, Pdr_Set_t *pCube, Pdr_Set_t **ppPred, int nConfLimit, int fTryConf, int fUseLit)
ABC_NAMESPACE_IMPL_START sat_solver * Pdr_ManCreateSolver(Pdr_Man_t *p, int k)
DECLARATIONS ///.
void Pdr_ManSetPropertyOutput(Pdr_Man_t *p, int k)
Vec_Int_t * Pdr_ManLitsToCube(Pdr_Man_t *p, int k, int *pArray, int nArray)
Vec_Int_t * Pdr_ManCubeToLits(Pdr_Man_t *p, int k, Pdr_Set_t *pCube, int fCompl, int fNext)
void Pdr_ManSolverAddClause(Pdr_Man_t *p, int k, Pdr_Set_t *pCube)
void Pdr_ManCollectValues(Pdr_Man_t *p, int k, Vec_Int_t *vObjIds, Vec_Int_t *vValues)
#define Saig_ManForEachPo(p, pObj, i)
void zsat_solver_restart_seed(sat_solver *s, double seed)
sat_solver * zsat_solver_new_seed(double seed)
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.
#define Vec_VecForEachLevelStart(vGlob, vVec, i, LevelStart)