50 Gia_Obj_t * pObj, * pObj1, * pPrev = NULL;
51 int i, CtrlValue = 0, iPrevValue = -1;
70 int iObjValue = pObj->
Value;
73 pPrev->
Value = iPrevValue;
74 iPrevValue = iObjValue;
79 printf(
"Eliminated path: " );
105 printf(
"Path %d : ", Counter++ );
174 int nLits = 0, * pLits = NULL;
175 int i, Shift[2], status;
242 if ( iEnd - iBeg < 20 )
245 for ( i =
Abc_MaxInt(iBeg-1, 0); i <= iEnd; i++ )
251 for ( i =
Abc_MaxInt(iBeg-1, 0); i <= iEnd; i++ )
258 printf(
"PO %6d : Level = %3d ", iOut,
Gia_ObjLevel(p, pPivot) );
260 printf(
"Timeout reached after %d seconds. ", nTimeOut );
261 else if ( status ==
l_True )
262 printf(
"There is no false path. " );
265 printf(
"False path contains %d nodes (out of %d): ", nLits,
Vec_IntSize(vPath) );
268 for ( i = 0; i < nLits; i++ )
303 printf(
"Collected %d non-overlapping false paths.\n",
Vec_WecSizeUsed(vHooks) );
364 int nLits = 0, * pLits = NULL;
365 int i, Shift[2], status;
429 for ( i =
Abc_MaxInt(iBeg-1, 0); i <= iEnd; i++ )
437 printf(
"Timeout reached after %d seconds. ", nTimeOut );
438 else if ( status ==
l_True )
439 printf(
"There is no false path. " );
444 for ( i = nLits-1; i >= 0; i-- )
469 int Tried = 0, Changed = 0;
475 int i, LevelMax, Changed0 = Changed;
490 if ( Changed0 == Changed )
494 printf(
"Performed %d attempts and %d changes.\n", Tried, Changed );
499 int Tried = 0, Changed = 0;
508 int i, LevelMax, Changed0 = Changed;
537 if ( Changed0 == Changed )
541 printf(
"Performed %d attempts and %d changes.\n", Tried, Changed );
static abctime sat_solver_set_runtime_limit(sat_solver *s, abctime Limit)
static int Gia_ObjLevelId(Gia_Man_t *p, int Id)
static int * Vec_IntArray(Vec_Int_t *p)
static int Vec_WecLevelSize(Vec_Wec_t *p, int i)
typedefABC_NAMESPACE_HEADER_START struct Vec_Wec_t_ Vec_Wec_t
INCLUDES ///.
void Gia_ManCollectPath_rec(Gia_Man_t *p, Gia_Obj_t *pObj, Vec_Int_t *vPath)
Gia_Man_t * Gia_ManDup(Gia_Man_t *p)
void Gia_ManStop(Gia_Man_t *p)
#define Gia_ManForEachCo(p, pObj, i)
static int Gia_ObjFaninC1(Gia_Obj_t *pObj)
static int Gia_ManAppendCo(Gia_Man_t *p, int iLit0)
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
Vec_Int_t * Gia_ManCollectNodesCis(Gia_Man_t *p, int *pNodes, int nNodes)
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 Vec_WecFree(Vec_Wec_t *p)
static float Vec_QueTopPriority(Vec_Que_t *p)
static int Gia_ManAppendCi(Gia_Man_t *p)
static void Vec_FltFree(Vec_Flt_t *p)
void sat_solver_delete(sat_solver *s)
static Vec_Wec_t * Vec_WecStart(int nSize)
static int Abc_Var2Lit(int Var, int fCompl)
typedefABC_NAMESPACE_HEADER_START struct Vec_Que_t_ Vec_Que_t
INCLUDES ///.
Gia_Man_t * Gia_ManFalseRebuildPath(Gia_Man_t *p, Vec_Int_t *vHooks, int fVerbose, int fVeryVerbose)
static Vec_Flt_t * Vec_FltAlloc(int nCap)
FUNCTION DEFINITIONS ///.
static int sat_solver_add_xor(sat_solver *pSat, int iVarA, int iVarB, int iVarC, int fCompl)
void Gia_ManSetRegNum(Gia_Man_t *p, int nRegs)
static int Vec_WecSizeUsed(Vec_Wec_t *p)
static int Vec_QuePop(Vec_Que_t *p)
Gia_Man_t * Gia_ManCheckOne(Gia_Man_t *p, int iOut, int iObj, int nTimeOut, int fVerbose, int fVeryVerbose)
static abctime Abc_Clock()
static int Abc_MaxInt(int a, int b)
ABC_NAMESPACE_IMPL_START void Gia_ManFalseRebuildOne(Gia_Man_t *pNew, Gia_Man_t *p, Vec_Int_t *vHook, int fVerbose, int fVeryVerbose)
DECLARATIONS ///.
static Gia_Obj_t * Gia_ManObj(Gia_Man_t *p, int v)
static void Vec_FltPush(Vec_Flt_t *p, float Entry)
static int sat_solver_final(sat_solver *s, int **ppArray)
static void Abc_PrintTime(int level, const char *pStr, abctime time)
static void Vec_IntWriteEntry(Vec_Int_t *p, int i, int Entry)
Gia_Man_t * Gia_ManCheckFalse(Gia_Man_t *p, int nSlackMax, int nTimeOut, int fVerbose, int fVeryVerbose)
static int Gia_ObjLevel(Gia_Man_t *p, Gia_Obj_t *pObj)
static Vec_Int_t * Vec_IntStart(int nSize)
static Gia_Obj_t * Gia_ObjFanin0(Gia_Obj_t *pObj)
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
Gia_Man_t * Gia_ManCheckFalseAll(Gia_Man_t *p, int nSlackMax, int nTimeOut, int fVerbose, int fVeryVerbose)
Gia_Man_t * Gia_ManStart(int nObjsMax)
DECLARATIONS ///.
#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)
void Gia_ManFillValue(Gia_Man_t *p)
void Gia_ObjPrint(Gia_Man_t *p, Gia_Obj_t *pObj)
Vec_Int_t * Gia_ManCollectPath(Gia_Man_t *p, Gia_Obj_t *pObj)
static int Gia_ObjFanin0Copy(Gia_Obj_t *pObj)
static int Gia_ObjIsCo(Gia_Obj_t *pObj)
#define Gia_ManForEachObjVec(vVec, p, pObj, i)
#define ABC_NAMESPACE_IMPL_START
static Vec_Int_t * Vec_WecEntry(Vec_Wec_t *p, int i)
static int Vec_IntEntryLast(Vec_Int_t *p)
static Gia_Obj_t * Gia_ManCo(Gia_Man_t *p, int v)
sat_solver * sat_solver_new(void)
static int Vec_IntSize(Vec_Int_t *p)
static float ** Vec_FltArrayP(Vec_Flt_t *p)
static int Gia_ObjIsAnd(Gia_Obj_t *pObj)
static Gia_Obj_t * Gia_ManConst0(Gia_Man_t *p)
static int Abc_Lit2Var(int Lit)
static int Gia_ObjFaninId0p(Gia_Man_t *p, Gia_Obj_t *pObj)
typedefABC_NAMESPACE_HEADER_START struct Vec_Flt_t_ Vec_Flt_t
INCLUDES ///.
Gia_Man_t * Gia_ManCheckFalse2(Gia_Man_t *p, int nSlackMax, int nTimeOut, int fVerbose, int fVeryVerbose)
static Gia_Obj_t * Gia_ObjFanin1(Gia_Obj_t *pObj)
static void Vec_QueFree(Vec_Que_t *p)
int Gia_ManLevelNum(Gia_Man_t *p)
void Gia_ManCheckFalseOne(Gia_Man_t *p, int iOut, int nTimeOut, Vec_Wec_t *vHooks, int fVerbose, int fVeryVerbose)
static void Vec_IntPrint(Vec_Int_t *vVec)
void Gia_ManHashAlloc(Gia_Man_t *p)
#define Gia_ManForEachObj1(p, pObj, i)
static int Gia_ObjFaninC0(Gia_Obj_t *pObj)
static void Vec_IntFree(Vec_Int_t *p)
static void Vec_IntClear(Vec_Int_t *p)
static int Gia_ObjIsCi(Gia_Obj_t *pObj)
Gia_Man_t * Gia_ManCleanup(Gia_Man_t *p)
char * Abc_UtilStrsav(char *s)
static Vec_Que_t * Vec_QueAlloc(int nCap)
MACRO DEFINITIONS ///.
int Gia_ManHashAnd(Gia_Man_t *p, int iLit0, int iLit1)
static void Vec_QuePush(Vec_Que_t *p, int v)
static int Gia_ManObjNum(Gia_Man_t *p)
Gia_Man_t * Gia_ManFalseRebuild(Gia_Man_t *p, Vec_Wec_t *vHooks, int fVerbose, int fVeryVerbose)
static void Vec_QueSetPriority(Vec_Que_t *p, float **pCosts)
void Gia_ManHashStop(Gia_Man_t *p)
static int Gia_ManCoNum(Gia_Man_t *p)
static int sat_solver_add_and(sat_solver *pSat, int iVar, int iVar0, int iVar1, int fCompl0, int fCompl1, int fCompl)
static int Gia_ManRegNum(Gia_Man_t *p)