91 #define Cbs0_QueForEachEntry( Que, pObj, i ) \
92 for ( i = (Que).iHead; (i < (Que).iTail) && ((pObj) = (Que).pData[i]); i++ )
112 pPars->nBTLimit = 1000;
113 pPars->nJustLimit = 100;
114 pPars->fUseHighest = 1;
115 pPars->fUseLowest = 0;
116 pPars->fUseMaxFF = 0;
194 return p->
Pars.nJustThis > p->
Pars.nJustLimit || p->
Pars.nBTThis > p->
Pars.nBTLimit;
292 *piHeadOld = p->
iHead;
293 *piTailOld = p->
iTail;
294 for ( i = *piHeadOld; i < *piTailOld; i++ )
296 p->
iHead = *piTailOld;
354 if ( pObjMax == NULL || pObjMax < pObj )
375 if ( pObjMin == NULL || pObjMin > pObj )
394 int i, iMaxFF = 0, iCurFF;
400 if ( iMaxFF < iCurFF )
426 assert( iBound <= p->pProp.iTail );
477 if ( Value0 == 0 || Value1 == 0 )
486 if ( Value0 == 0 || Value1 == 0 )
488 if ( Value0 == 1 && Value1 == 1 )
490 if ( Value0 == 1 || Value1 == 1 )
525 if ( Value0 == 0 || Value1 == 0 )
527 if ( Value0 == 1 && Value1 == 1 )
529 assert( Value0 == 1 || Value1 == 1 );
589 int iPropHead, iJustHead, iJustTail;
606 if ( p->
Pars.fUseHighest )
608 else if ( p->
Pars.fUseLowest )
610 else if ( p->
Pars.fUseMaxFF )
651 p->
Pars.nBTThis = p->
Pars.nJustThis = 0;
658 p->
Pars.nBTTotal += p->
Pars.nBTThis;
682 printf(
"Conf = %6d ", p->
Pars.nBTLimit );
683 printf(
"JustMax = %5d ", p->
Pars.nJustLimit );
685 printf(
"Unsat calls %6d (%6.2f %%) Ave conf = %8.1f ",
688 printf(
"Sat calls %6d (%6.2f %%) Ave conf = %8.1f ",
691 printf(
"Undef calls %6d (%6.2f %%) Ave conf = %8.1f ",
724 p->
Pars.nBTLimit = nConfs;
739 printf(
"Constant 1 output of SRM!!!\n" );
751 p->
Pars.fUseHighest = 1;
752 p->
Pars.fUseLowest = 0;
void Gia_ManCreateRefs(Gia_Man_t *p)
static Gia_Obj_t * Gia_ObjChild0(Gia_Obj_t *pObj)
static int Cbs0_VarIsJust(Gia_Obj_t *pVar)
#define Gia_ManForEachCo(p, pObj, i)
#define Cbs0_QueForEachEntry(Que, pObj, i)
static int Gia_ManPoNum(Gia_Man_t *p)
static int Gia_ObjFaninC1(Gia_Obj_t *pObj)
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
static Gia_Obj_t * Gia_Regular(Gia_Obj_t *p)
#define ABC_REALLOC(type, obj, num)
static int Gia_ObjIsCand(Gia_Obj_t *pObj)
static void Cbs0_VarSetValue(Gia_Obj_t *pVar, int v)
static int Cbs0_VarValue(Gia_Obj_t *pVar)
void Gia_ManCleanMark0(Gia_Man_t *p)
static int Gia_ObjIsConst0(Gia_Obj_t *pObj)
static int Abc_Var2Lit(int Var, int fCompl)
void Cbs0_ManStop(Cbs0_Man_t *p)
static int Cbs0_VarFanin0Value(Gia_Obj_t *pVar)
static int Cbs0_ManCheckLimits(Cbs0_Man_t *p)
static int Gia_ObjRefNum(Gia_Man_t *p, Gia_Obj_t *pObj)
static Gia_Obj_t * Cbs0_ManDecideHighest(Cbs0_Man_t *p)
#define ABC_ALLOC(type, num)
static void Cbs0_QueRestore(Cbs0_Que_t *p, int iHeadOld, int iTailOld)
static Vec_Str_t * Vec_StrAlloc(int nCap)
static abctime Abc_Clock()
static int Abc_MaxInt(int a, int b)
static void Vec_StrPush(Vec_Str_t *p, char Entry)
void Gia_ManCleanMark1(Gia_Man_t *p)
static void Cbs0_ManCancelUntil(Cbs0_Man_t *p, int iBound)
static void Cbs0_ManSaveModel(Cbs0_Man_t *p, Vec_Int_t *vCex)
#define ABC_PRTP(a, t, T)
static Gia_Obj_t * Gia_ObjChild1(Gia_Obj_t *pObj)
void Cbs0_SetDefaultParams(Cbs0_Par_t *pPars)
FUNCTION DEFINITIONS ///.
int Cbs0_ManSolve_rec(Cbs0_Man_t *p)
int Cbs0_ManSolve(Cbs0_Man_t *p, Gia_Obj_t *pObj)
static Gia_Obj_t * Gia_Not(Gia_Obj_t *p)
static int Gia_ManAndNum(Gia_Man_t *p)
static Gia_Obj_t * Cbs0_ManDecideMaxFF(Cbs0_Man_t *p)
static int Cbs0_QueIsEmpty(Cbs0_Que_t *p)
static Gia_Obj_t * Gia_ObjFanin0(Gia_Obj_t *pObj)
static Vec_Int_t * Vec_IntAlloc(int nCap)
FUNCTION DEFINITIONS ///.
static int Cbs0_ManPropagateOne(Cbs0_Man_t *p, Gia_Obj_t *pVar)
static void Cbs0_QuePush(Cbs0_Que_t *p, Gia_Obj_t *pObj)
static Gia_Obj_t * Cbs0_ManDecideLowest(Cbs0_Man_t *p)
#define ABC_NAMESPACE_IMPL_END
static void Cbs0_VarUnassign(Gia_Obj_t *pVar)
static void Vec_IntPush(Vec_Int_t *p, int Entry)
int Cbs0_ManPropagate(Cbs0_Man_t *p)
#define ABC_NAMESPACE_IMPL_START
void Cec_ManSatAddToStore(Vec_Int_t *vCexStore, Vec_Int_t *vCex, int Out)
Vec_Int_t * Cbs0_ReadModel(Cbs0_Man_t *p)
static int Cbs0_ManPropagateTwo(Cbs0_Man_t *p, Gia_Obj_t *pVar)
static int Gia_IsComplement(Gia_Obj_t *p)
Cbs0_Man_t * Cbs0_ManAlloc()
Vec_Int_t * Cbs_ManSolveMiter(Gia_Man_t *pAig, int nConfs, Vec_Str_t **pvStatus, int fVerbose)
static int Gia_ObjIsAnd(Gia_Obj_t *pObj)
static void Cbs0_ManAssign(Cbs0_Man_t *p, Gia_Obj_t *pObj)
static void Cbs0_QueStore(Cbs0_Que_t *p, int *piHeadOld, int *piTailOld)
#define ABC_CALLOC(type, num)
static Gia_Obj_t * Gia_ObjFanin1(Gia_Obj_t *pObj)
static int Cbs0_QueHasNode(Cbs0_Que_t *p, Gia_Obj_t *pObj)
static int Cbs0_VarFanin1Value(Gia_Obj_t *pVar)
static int Cbs0_VarIsAssigned(Gia_Obj_t *pVar)
static int Cbs0_VarFaninFanoutMax(Cbs0_Man_t *p, Gia_Obj_t *pObj)
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)
void Cbs0_ManSatPrintStats(Cbs0_Man_t *p)
typedefABC_NAMESPACE_IMPL_START struct Cbs0_Par_t_ Cbs0_Par_t
DECLARATIONS ///.
static void Cbs0_VarAssign(Gia_Obj_t *pVar)
static int Gia_ObjCioId(Gia_Obj_t *pObj)
static int Gia_ManCoNum(Gia_Man_t *p)
static int Gia_ManRegNum(Gia_Man_t *p)