52 p->nCallsRecycle = 100;
88 assert( p->pFraig->pHTable == NULL );
92 if ( p->pSat == NULL )
94 printf(
"Constraints are UNSAT after propagation.\n" );
101 if ( p->vPivot == (
Vec_Int_t *)(ABC_PTRINT_T)1 )
103 printf(
"Constraints are UNSAT.\n" );
107 if ( p->vPivot == NULL )
109 printf(
"Conflict limit is reached while trying to find one SAT assignment.\n" );
119 printf(
"Computed reference pattern violates %d constraints (this is a bug!).\n",
Gia_ManCheckCoPhase(p->pCare) );
134 Abc_Print( 1,
"Parameters: SimWords = %d. SatConfs = %d. SatVarMax = %d. CallsRec = %d. Verbose = %d.\n",
135 p->pPars->nWords, p->pPars->nBTLimit, p->pPars->nSatVarMax, p->pPars->nCallsRecycle, p->pPars->fVerbose );
136 Abc_Print( 1,
"SAT calls : Total = %d. Proof = %d. Cex = %d. Undec = %d.\n",
137 p->nSatCalls, p->nSatCallsUnsat, p->nSatCallsSat, p->nSatCallsUndec );
138 Abc_Print( 1,
"SAT solver: Vars = %d. Clauses = %d. Recycles = %d. Sim rounds = %d.\n",
141 p->timeOther = p->timeTotal - p->timeSimInit - p->timeSimSat - p->timeCnfGen - p->timeSatSat - p->timeSatUnsat - p->timeSatUndec;
142 ABC_PRTP(
"Initialization ", p->timeSimInit, p->timeTotal );
143 ABC_PRTP(
"SAT simulation ", p->timeSimSat, p->timeTotal );
144 ABC_PRTP(
"CNF generation ", p->timeSimSat, p->timeTotal );
145 ABC_PRTP(
"SAT solving ", p->timeSat-p->timeCnfGen, p->timeTotal );
146 ABC_PRTP(
" unsat ", p->timeSatUnsat, p->timeTotal );
147 ABC_PRTP(
" sat ", p->timeSatSat, p->timeTotal );
148 ABC_PRTP(
" undecided ", p->timeSatUndec, p->timeTotal );
149 ABC_PRTP(
"Other ", p->timeOther, p->timeTotal );
150 ABC_PRTP(
"TOTAL ", p->timeTotal, p->timeTotal );
244 printf(
"Verification succeeded.\n" );
245 else if ( Status == 0 )
246 printf(
"Verification failed.\n" );
247 else if ( Status == -1 )
248 printf(
"Verification undecided.\n" );
270 int i, fCompl, nRefined, status;
284 if ( p->pPars->fVerbose )
285 printf(
"Care set produced %d hits out of %d.\n",
Ssc_GiaEstimateCare(p->pFraig, 5), 640 );
298 if ( pPars->fVerbose )
318 if ( pAig->
iPatsPi == 64 * pPars->nWords )
323 if ( pPars->fVerbose )
356 else if ( status ==
l_True )
375 while ( pAig->
iPatsPi < 64 * pPars->nWords )
379 if ( pPars->fVerbose )
390 if ( pResult == NULL )
392 printf(
"There is no equivalences.\n" );
400 if ( pPars->fVerbose )
404 if ( pPars->fVerbose )
406 Abc_Print( 1,
"Reduction in AIG nodes:%8d ->%8d (%6.2f %%). ",
416 if ( pPars->fVerify )
424 if ( pPars->fVerbose )
442 if ( pPars->fVerbose )
444 printf(
"User AIG: " );
446 printf(
"Care AIG: " );
453 if ( pPars->fAppend )
int Ssc_GiaSimulatePatternFraig_rec(Ssc_Man_t *p, int iFraigObj)
static int * Vec_IntArray(Vec_Int_t *p)
Gia_Man_t * Ssc_PerformSweepingInt(Gia_Man_t *pAig, Gia_Man_t *pCare, Ssc_Pars_t *pPars)
Gia_Man_t * Gia_ManDupCones(Gia_Man_t *p, int *pPos, int nPos, int fTrimPis)
static int Ssc_ObjSatVar(Ssc_Man_t *p, int iObj)
MACRO DEFINITIONS ///.
Gia_Man_t * Gia_ManDup(Gia_Man_t *p)
void Gia_ManStop(Gia_Man_t *p)
void Gia_ManPrintStats(Gia_Man_t *p, Gps_Par_t *pPars)
static int Gia_ManPoNum(Gia_Man_t *p)
static int Gia_ObjFaninC1(Gia_Obj_t *pObj)
static Gia_Obj_t * Gia_ManCi(Gia_Man_t *p, int v)
static int Gia_ManAppendCo(Gia_Man_t *p, int iLit0)
int Ssc_GiaSimClassRefineOneBit(Gia_Man_t *p, int i)
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
void Ssc_GiaResetPiPattern(Gia_Man_t *p, int nWords)
Ssc_Man_t * Ssc_ManStart(Gia_Man_t *pAig, Gia_Man_t *pCare, Ssc_Pars_t *pPars)
static void sat_solver_bookmark(sat_solver *s)
static int Gia_ObjIsTravIdCurrent(Gia_Man_t *p, Gia_Obj_t *pObj)
typedefABC_NAMESPACE_HEADER_START struct Ssc_Man_t_ Ssc_Man_t
INCLUDES ///.
void Gia_ManInvertPos(Gia_Man_t *pAig)
typedefABC_NAMESPACE_HEADER_START struct Ssc_Pars_t_ Ssc_Pars_t
INCLUDES ///.
static int Gia_ManAppendCi(Gia_Man_t *p)
void sat_solver_delete(sat_solver *s)
void Ssc_ManPrintStats(Ssc_Man_t *p)
static int Gia_ObjIsHead(Gia_Man_t *p, int Id)
Gia_Man_t * Gia_ManDupZero(Gia_Man_t *p)
static abctime Abc_Clock()
Gia_Man_t * Gia_ManDupAndOr(Gia_Man_t *p, int nOuts, int fUseOr, int fCompl)
static Vec_Int_t * Vec_IntStartNatural(int nSize)
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)
void Gia_ManEquivPrintClasses(Gia_Man_t *p, int fVerbose, float Mem)
void Gia_ManStopP(Gia_Man_t **p)
int Gia_ManHasDangling(Gia_Man_t *p)
void Ssc_GiaClassesInit(Gia_Man_t *p)
FUNCTION DECLARATIONS ///.
unsigned Gia_ManRandom(int fReset)
FUNCTION DEFINITIONS ///.
int Ssc_PerformVerification(Gia_Man_t *p0, Gia_Man_t *p1, Gia_Man_t *pC)
#define ABC_PRTP(a, t, T)
#define Gia_ManForEachCi(p, pObj, i)
Gia_Man_t * Gia_ManEquivReduce(Gia_Man_t *p, int fUseAll, int fDualOut, int fSkipPhase, int fVerbose)
static void Abc_PrintTime(int level, const char *pStr, abctime time)
void Ssc_GiaSavePiPattern(Gia_Man_t *p, Vec_Int_t *vPat)
int Ssc_GiaClassesRefine(Gia_Man_t *p)
static int Gia_ManAndNum(Gia_Man_t *p)
static int Abc_LitIsCompl(int Lit)
static Gia_Obj_t * Gia_ObjFanin0(Gia_Obj_t *pObj)
static Vec_Int_t * Vec_IntAlloc(int nCap)
FUNCTION DEFINITIONS ///.
void Ssc_ManStartSolver(Ssc_Man_t *p)
int Ssc_GiaTransferPiPattern(Gia_Man_t *pAig, Gia_Man_t *pCare, Vec_Int_t *vPivot)
static void Gia_ObjSetProved(Gia_Man_t *p, int Id)
static int Gia_ObjFanin1Copy(Gia_Obj_t *pObj)
Vec_Int_t * Ssc_ManFindPivotSat(Ssc_Man_t *p)
Gia_Man_t * Ssc_PerformSweeping(Gia_Man_t *pAig, Gia_Man_t *pCare, Ssc_Pars_t *pPars)
Gia_Man_t * Gia_ManDupDfs(Gia_Man_t *p)
static void Gia_ObjSetTravIdCurrent(Gia_Man_t *p, Gia_Obj_t *pObj)
int Ssc_GiaResimulateOneClass(Ssc_Man_t *p, int iRepr, int iObj)
int sat_solver_nvars(sat_solver *s)
#define ABC_NAMESPACE_IMPL_END
int Ssc_GiaSimulatePattern_rec(Ssc_Man_t *p, Gia_Obj_t *pObj)
void Cec_ManCecSetDefaultParams(Cec_ParCec_t *p)
void Gia_ManHashStart(Gia_Man_t *p)
Gia_Man_t * Gia_ManStart(int nObjsMax)
DECLARATIONS ///.
int Gia_ManCheckCoPhase(Gia_Man_t *p)
static void Vec_IntPush(Vec_Int_t *p, int Entry)
void Gia_ManFillValue(Gia_Man_t *p)
static int Gia_ManCandNum(Gia_Man_t *p)
static void Vec_IntFreeP(Vec_Int_t **p)
Gia_Man_t * Ssc_PerformSweepingConstr(Gia_Man_t *p, Ssc_Pars_t *pPars)
static void Abc_Print(int level, const char *format,...)
static int Gia_ObjFanin0Copy(Gia_Obj_t *pObj)
#define Gia_ClassForEachObj(p, i, iObj)
#define Gia_ManForEachCand(p, pObj, i)
void Gia_ManDupAppendShare(Gia_Man_t *p, Gia_Man_t *pTwo)
int sat_solver_nclauses(sat_solver *s)
#define ABC_NAMESPACE_IMPL_START
static Gia_Obj_t * Gia_ObjReprObj(Gia_Man_t *p, int Id)
static int Gia_ManCiNum(Gia_Man_t *p)
ABC_NAMESPACE_IMPL_START void Ssc_ManSetDefaultParams(Ssc_Pars_t *p)
DECLARATIONS ///.
int Ssc_GiaEstimateCare(Gia_Man_t *p, int nWords)
int Gia_ManIsNormalized(Gia_Man_t *p)
static int Gia_ObjIsAnd(Gia_Obj_t *pObj)
static Gia_Obj_t * Gia_ManConst0(Gia_Man_t *p)
int Cec_ManVerify(Gia_Man_t *p, Cec_ParCec_t *pPars)
MACRO DEFINITIONS ///.
static int Abc_Lit2Var(int Lit)
#define ABC_CALLOC(type, num)
static Gia_Obj_t * Gia_ObjFanin1(Gia_Obj_t *pObj)
int Ssc_ManCheckEquivalence(Ssc_Man_t *p, int iRepr, int iObj, int fCompl)
void Ssc_GiaRandomPiPattern(Gia_Man_t *p, int nWords, Vec_Int_t *vPivot)
void Ssc_GiaSimRound(Gia_Man_t *p)
void Ssc_ManStop(Ssc_Man_t *p)
void Gia_ManIncrementTravId(Gia_Man_t *p)
Gia_Man_t * Gia_ManDupLevelized(Gia_Man_t *p)
static int Gia_ObjFaninC0(Gia_Obj_t *pObj)
static void Vec_IntFree(Vec_Int_t *p)
static void Vec_IntClear(Vec_Int_t *p)
Gia_Man_t * Gia_ManCleanup(Gia_Man_t *p)
char * Abc_UtilStrsav(char *s)
static int Gia_ObjFaninId1(Gia_Obj_t *pObj, int ObjId)
void Gia_ManSetPhasePattern(Gia_Man_t *p, Vec_Int_t *vCiValues)
int Gia_ManHashAnd(Gia_Man_t *p, int iLit0, int iLit1)
Gia_Man_t * Gia_ManMiter(Gia_Man_t *pAig0, Gia_Man_t *pAig1, int nInsDup, int fDualOut, int fSeq, int fImplic, int fVerbose)
static int Gia_Obj2Lit(Gia_Man_t *p, Gia_Obj_t *pObj)
static int Gia_ObjRepr(Gia_Man_t *p, int Id)
void Ssc_GiaClassesCheckPairs(Gia_Man_t *p, Vec_Int_t *vDisPairs)
static int Gia_ObjFaninId0(Gia_Obj_t *pObj, int ObjId)
static int Gia_ObjHasRepr(Gia_Man_t *p, int Id)
static int Gia_ManRegNum(Gia_Man_t *p)