72 int RetValue, iObj, i;
101 Vec_Int_t * vNodes, * vLeaves, * vInners, * vMffc;
162 int i, nDivs, nDivsAll = 0, nDivs0 = 0;
166 nDivs0 += (nDivs == 0);
173 printf(
"Divs =%4d ", nDivs );
176 printf(
"Collected %d (%.1f %%) MFFCs and %d (%.1f %%) have no divisors (div ave for others is %.2f).\n",
180 printf(
"Using %.2f MB for MFFCs and %.2f MB for pivots. ",
198 Vec_Int_t * vMffc, * vPivot, * vPivot0, * vPivot1;
201 int i, k, iObj, iPivot, iMffc;
static void Vec_WecShrink(Vec_Wec_t *p, int nSizeNew)
void Gia_ManCreateRefs(Gia_Man_t *p)
static Vec_Wec_t * Vec_WecAlloc(int nCap)
FUNCTION DEFINITIONS ///.
static void Vec_WecSortByLastInt(Vec_Wec_t *p, int fReverse)
typedefABC_NAMESPACE_HEADER_START struct Vec_Wec_t_ Vec_Wec_t
INCLUDES ///.
void Gia_ManStop(Gia_Man_t *p)
ABC_NAMESPACE_IMPL_START int Gia_ObjCheckMffc_rec(Gia_Man_t *p, Gia_Obj_t *pObj, int Limit, Vec_Int_t *vNodes)
DECLARATIONS ///.
static int Gia_ObjCheckMffc(Gia_Man_t *p, Gia_Obj_t *pRoot, int Limit, Vec_Int_t *vNodes, Vec_Int_t *vLeaves, Vec_Int_t *vInners)
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
static void Vec_WecFree(Vec_Wec_t *p)
static Vec_Wec_t * Vec_WecStart(int nSize)
static double Vec_WecMemory(Vec_Wec_t *p)
static Vec_Int_t * Vec_WecPushLevel(Vec_Wec_t *p)
Vec_Wec_t * Gia_ManComputeMffcs(Gia_Man_t *p, int LimitMin, int LimitMax, int SuppMax, int RatioBest)
static int Gia_ObjRefNumId(Gia_Man_t *p, int Id)
static int Gia_ObjRefDecId(Gia_Man_t *p, int Id)
static int Gia_ObjFaninId1p(Gia_Man_t *p, Gia_Obj_t *pObj)
static int Gia_ObjRefNum(Gia_Man_t *p, Gia_Obj_t *pObj)
static void Vec_IntErase(Vec_Int_t *p)
static abctime Abc_Clock()
static int Abc_MaxInt(int a, int b)
static void Vec_IntSort(Vec_Int_t *p, int fReverse)
static Vec_Int_t * Vec_IntStartFull(int nSize)
static Gia_Obj_t * Gia_ManObj(Gia_Man_t *p, int v)
static int Vec_WecSize(Vec_Wec_t *p)
void Gia_ManResubTest(Gia_Man_t *p)
#define ABC_SWAP(Type, a, b)
static void Vec_IntGrow(Vec_Int_t *p, int nCapMin)
static void Abc_PrintTime(int level, const char *pStr, abctime time)
static void Vec_IntWriteEntry(Vec_Int_t *p, int i, int Entry)
static int Gia_ManAndNum(Gia_Man_t *p)
static int Gia_ObjIsMuxId(Gia_Man_t *p, int iObj)
static Gia_Obj_t * Gia_ObjFanin0(Gia_Obj_t *pObj)
#define Vec_WecForEachLevel(vGlob, vVec, i)
MACRO DEFINITIONS ///.
static Vec_Int_t * Vec_IntAlloc(int nCap)
FUNCTION DEFINITIONS ///.
static void Vec_IntTwoMerge2(Vec_Int_t *vArr1, Vec_Int_t *vArr2, Vec_Int_t *vArr)
static int Vec_IntEntry(Vec_Int_t *p, int i)
#define ABC_NAMESPACE_IMPL_END
Gia_Man_t * Gia_ManDupMuxes(Gia_Man_t *p, int Limit)
#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)
#define Vec_IntForEachEntryStart(vVec, Entry, i, Start)
void Gia_ManAddDivisors(Gia_Man_t *p, Vec_Wec_t *vMffcs)
static Gia_Obj_t * Gia_ObjFanin2(Gia_Man_t *p, Gia_Obj_t *pObj)
#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 int Vec_IntSize(Vec_Int_t *p)
#define Vec_WecForEachLevelStart(vGlob, vVec, i, LevelStart)
static int Gia_ObjIsAnd(Gia_Obj_t *pObj)
static int Gia_ObjFaninId0p(Gia_Man_t *p, Gia_Obj_t *pObj)
static int Vec_IntTwoFindCommon(Vec_Int_t *vArr1, Vec_Int_t *vArr2, Vec_Int_t *vArr)
static int Gia_ObjFaninId2p(Gia_Man_t *p, Gia_Obj_t *pObj)
static Gia_Obj_t * Gia_ObjFanin1(Gia_Obj_t *pObj)
static int Gia_ObjFaninId2(Gia_Man_t *p, int ObjId)
void Gia_ManPrintDivStats(Gia_Man_t *p, Vec_Wec_t *vMffcs, Vec_Wec_t *vPivots)
static void Vec_IntFree(Vec_Int_t *p)
static void Vec_IntClear(Vec_Int_t *p)
static int Gia_ObjIsCi(Gia_Obj_t *pObj)
#define Vec_IntForEachEntry(vVec, Entry, i)
MACRO DEFINITIONS ///.
static int Gia_ObjFaninId1(Gia_Obj_t *pObj, int ObjId)
static int Gia_ObjIsMux(Gia_Man_t *p, Gia_Obj_t *pObj)
static int Gia_ManObjNum(Gia_Man_t *p)
static int Gia_ObjRefIncId(Gia_Man_t *p, int Id)
static int Gia_ObjFaninId0(Gia_Obj_t *pObj, int ObjId)