71 for ( v = 0; v < 6; v++ )
79 for ( v = 0; v < 6; v++ )
95 Abc_Print( 1,
"K = %d. Memory (bytes): Truth = %4d. Cut = %4d. Obj = %4d. Set = %4d. CutMin = %s\n",
114 for ( v = 0; v < 6; v++ )
136 for ( v = 0; v < 6; v++ )
147 for ( v = 0; v < 6; v++ )
153 extern int Bat_ManCellFuncLookup(
void * pMan,
unsigned * pTruth,
int nVars,
int nLeaves,
char * pStr );
213 int nUnique = 0, nMemTotal = 0;
218 printf(
"Unique truth tables = %d Memory = %.2f MB ", nUnique, 1.0 * nMemTotal / (1<<20) );
232 for ( i = 0; i <= 16; i++ )
370 if ( pFan0 == pFan1 )
372 if ( pFan0 ==
If_Not(pFan1) )
449 for ( pTemp = pObj; pTemp; pTemp = pTemp->
pEquiv )
479 for ( i = 0; i <= pSet->
nCutsMax; i++ )
652 for ( pTemp = pObj; pTemp; pTemp = pTemp->
pEquiv )
679 nCutSets = 128 + nCrossCut;
681 for ( i = 0; i < nCutSets; i++ )
684 if ( i == nCutSets - 1 )
685 pCutSet->
pNext = NULL;
688 pCutSet = pCutSet->
pNext;
690 assert( pCutSet == NULL );
694 Abc_Print( 1,
"Node = %7d. Ch = %5d. Total mem = %7.2f MB. Peak cut mem = %7.2f MB.\n",
697 1.0 * p->
nSetBytes * nCrossCut / (1<<20) );
int nTruth6Words[IF_MAX_FUNC_LUTSIZE+1]
static Hash_IntMan_t * Hash_IntManStart(int nSize)
FUNCTION DEFINITIONS ///.
static Vec_Wec_t * Vec_WecAlloc(int nCap)
FUNCTION DEFINITIONS ///.
Vec_Str_t * vTtVars[IF_MAX_FUNC_LUTSIZE+1]
Vec_Wec_t * vTtIsops[IF_MAX_FUNC_LUTSIZE+1]
static void If_CutSetup(If_Man_t *p, If_Cut_t *pCut)
static int If_ManAndNum(If_Man_t *p)
Vec_Mem_t * vTtMem[IF_MAX_FUNC_LUTSIZE+1]
static If_Set_t * If_ManCutSetFetch(If_Man_t *p)
Vec_Int_t * vTtDecs[IF_MAX_FUNC_LUTSIZE+1]
static int If_ObjIsAnd(If_Obj_t *pObj)
static int Abc_Truth6WordNum(int nVars)
If_Set_t * If_ManSetupNodeCutSet(If_Man_t *p, If_Obj_t *pObj)
If_Obj_t * If_ManCreateCo(If_Man_t *p, If_Obj_t *pDriver)
void If_ManDerefNodeCutSet(If_Man_t *p, If_Obj_t *pObj)
void If_ManStop(If_Man_t *p)
static int Vec_MemEntryNum(Vec_Mem_t *p)
static If_Obj_t * If_ObjFanin0(If_Obj_t *pObj)
static void Vec_PtrPush(Vec_Ptr_t *p, void *Entry)
Vec_Str_t * vTtPerms[IF_MAX_FUNC_LUTSIZE+1]
ABC_NAMESPACE_IMPL_START void Bat_ManFuncSetupTable()
DECLARATIONS ///.
Hash_IntMan_t * vPairHash
#define ABC_ALLOC(type, num)
static int If_ObjIsCi(If_Obj_t *pObj)
void Mem_FixedStop(Mem_Fixed_t *p, int fVerbose)
static Vec_Str_t * Vec_StrAlloc(int nCap)
void If_ManCacheAnalize(If_Man_t *p)
static int Abc_MaxInt(int a, int b)
static void Vec_StrPush(Vec_Str_t *p, char Entry)
static int Vec_PtrSize(Vec_Ptr_t *p)
static void Vec_WrdFreeP(Vec_Wrd_t **p)
void Bat_ManFuncSetdownTable()
void If_ManSetupCiCutSets(If_Man_t *p)
static If_Obj_t * If_Not(If_Obj_t *p)
struct If_Obj_t_ If_Obj_t
static void Abc_PrintTime(int level, const char *pStr, abctime time)
Mem_Fixed_t * Mem_FixedStart(int nEntrySize)
FUNCTION DEFINITIONS ///.
static int If_ManCiNum(If_Man_t *p)
static void Vec_StrWriteEntry(Vec_Str_t *p, int i, char Entry)
#define If_ManForEachCi(p, pObj, i)
static Vec_Int_t * Vec_IntAlloc(int nCap)
FUNCTION DEFINITIONS ///.
void If_ManSetupSet(If_Man_t *p, If_Set_t *pSet)
If_Obj_t * If_ManCreateCi(If_Man_t *p)
void If_ManDerefChoiceCutSet(If_Man_t *p, If_Obj_t *pObj)
static Vec_Mem_t * Vec_MemAllocForTT(int nVars, int fCompl)
static void Vec_MemFreeP(Vec_Mem_t **p)
unsigned __int64 word
DECLARATIONS ///.
static ABC_NAMESPACE_IMPL_START If_Obj_t * If_ManSetupObj(If_Man_t *p)
DECLARATIONS ///.
static void Vec_StrFill(Vec_Str_t *p, int nSize, char Fill)
static void If_ManCutSetRecycle(If_Man_t *p, If_Set_t *pSet)
static void Hash_IntManStop(Hash_IntMan_t *p)
#define ABC_NAMESPACE_IMPL_END
static double Vec_MemMemory(Vec_Mem_t *p)
static If_Obj_t * If_ObjFanin1(If_Obj_t *pObj)
static void Vec_IntPush(Vec_Int_t *p, int Entry)
void Tim_ManStop(Tim_Man_t *p)
static void Vec_IntFreeP(Vec_Int_t **p)
Mem_Fixed_t * pMemEntries
static void Abc_Print(int level, const char *format,...)
void If_ManSetupCutTriv(If_Man_t *p, If_Cut_t *pCut, int ObjId)
static unsigned If_ObjCutSign(unsigned ObjId)
#define ABC_NAMESPACE_IMPL_START
static int If_ManObjNum(If_Man_t *p)
static If_Obj_t * If_Regular(If_Obj_t *p)
Vec_Int_t * vTtDsds[IF_MAX_FUNC_LUTSIZE+1]
void If_ManCreateChoice(If_Man_t *p, If_Obj_t *pObj)
static Vec_Ptr_t * Vec_PtrAlloc(int nCap)
FUNCTION DEFINITIONS ///.
int(* pFuncCell)(If_Man_t *, unsigned *, int, int, char *)
If_Obj_t * If_ManCreateMux(If_Man_t *p, If_Obj_t *pFan0, If_Obj_t *pFan1, If_Obj_t *pCtrl)
static int If_CutPermWords(int nVarsMax)
void Mem_FixedRestart(Mem_Fixed_t *p)
struct If_Cut_t_ If_Cut_t
static void Vec_PtrFreeP(Vec_Ptr_t **p)
struct If_Set_t_ If_Set_t
static void Vec_WecFreeP(Vec_Wec_t **p)
static void Vec_MemHashFree(Vec_Mem_t *p)
int Bat_ManCellFuncLookup(void *pMan, unsigned *pTruth, int nVars, int nLeaves, char *pStr)
If_Man_t * If_ManStart(If_Par_t *pPars)
FUNCTION DEFINITIONS ///.
void If_ManSetupSetAll(If_Man_t *p, int nCrossCut)
If_Obj_t * If_ManCreateXor(If_Man_t *p, If_Obj_t *pFan0, If_Obj_t *pFan1)
static void Vec_PtrClear(Vec_Ptr_t *p)
If_Obj_t * If_ManCreateAnd(If_Man_t *p, If_Obj_t *pFan0, If_Obj_t *pFan1)
static void Vec_IntFree(Vec_Int_t *p)
void If_ManRestart(If_Man_t *p)
static int If_IsComplement(If_Obj_t *p)
char * Mem_FixedEntryFetch(Mem_Fixed_t *p)
static void Vec_StrFreeP(Vec_Str_t **p)
static void Vec_PtrFree(Vec_Ptr_t *p)
static void Vec_WecInit(Vec_Wec_t *p, int nSize)