117 printf(
"Bi-decomposition stats: Calls = %d. Nodes = %d. Reuse = %d.\n",
119 printf(
"ANDs = %d. ORs = %d. Weak = %d. Muxes = %d. Memory = %.2f K\n",
165 for ( i = 0; i < p->
nVars; i++ )
170 pNode->uSupp = (1 << i);
179 pNode->puFunc = puTruth;
203 printf(
" 0 : Const 1\n" );
204 for ( i = 1; i < p->
nNodes; i++ )
206 printf(
" %d : ", i );
236 printf(
"%c",
'a' +
Bdc_FunId(p,pNode) - 1 );
295 assert( nVars <= p->pPars->nVarsMax );
324 if ( p->
pRoot == NULL )
327 printf(
"Bdc_ManDecompose(): Internal verification failed.\n" );
346 static int Total = 0;
356 unsigned uFunc = uTruth;
362 printf(
"%5d : Nodes = %5d. Total = %8d.\n", ++Counter, RetValue, Total );
ABC_NAMESPACE_IMPL_START Bdc_Fun_t * Bdc_ManFunc(Bdc_Man_t *p, int i)
DECLARATIONS ///.
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
void Bdc_ManDecPrint_rec(Bdc_Man_t *p, Bdc_Fun_t *pNode)
void Bdc_TableClear(Bdc_Man_t *p)
static int Kit_TruthWordNum(int nVars)
Bdc_Fun_t * Bdc_FuncFanin1(Bdc_Fun_t *p)
static void Kit_TruthFill(unsigned *pOut, int nVars)
void Bdc_TableAdd(Bdc_Man_t *p, Bdc_Fun_t *pFunc)
void Bdc_ManDecPrintSimple(Bdc_Man_t *p)
void Bdc_ManDecPrint(Bdc_Man_t *p)
#define ABC_ALLOC(type, num)
static int Kit_TruthIsConst0(unsigned *pIn, int nVars)
void Bdc_ManPrepare(Bdc_Man_t *p, Vec_Ptr_t *vDivs)
static abctime Abc_Clock()
static unsigned * Vec_IntFetch(Vec_Int_t *p, int nWords)
static int Vec_PtrSize(Vec_Ptr_t *p)
void Bdc_ManDecomposeTest(unsigned uTruth, int nVars)
Bdc_Fun_t * Bdc_ManDecompose_rec(Bdc_Man_t *p, Bdc_Isf_t *pIsf)
MACRO DEFINITIONS ///.
static void Kit_TruthAnd(unsigned *pOut, unsigned *pIn0, unsigned *pIn1, int nVars)
static Vec_Ptr_t * Vec_PtrAllocTruthTables(int nVars)
int Bdc_ManNodeNum(Bdc_Man_t *p)
static Vec_Int_t * Vec_IntStart(int nSize)
static Vec_Int_t * Vec_IntAlloc(int nCap)
FUNCTION DEFINITIONS ///.
typedefABC_NAMESPACE_HEADER_START struct Bdc_Fun_t_ Bdc_Fun_t
INCLUDES ///.
Bdc_Fun_t * Bdc_ManRoot(Bdc_Man_t *p)
#define ABC_NAMESPACE_IMPL_END
void Bdc_SuppMinimize(Bdc_Man_t *p, Bdc_Isf_t *pIsf)
void * Bdc_FuncCopy(Bdc_Fun_t *p)
void Bdc_FuncSetCopyInt(Bdc_Fun_t *p, int iCopy)
void Bdc_FuncSetCopy(Bdc_Fun_t *p, void *pCopy)
static int Bdc_FunId(Bdc_Man_t *p, Bdc_Fun_t *pFun)
static void Kit_TruthNot(unsigned *pOut, unsigned *pIn, int nVars)
int Bdc_FuncCopyInt(Bdc_Fun_t *p)
#define ABC_NAMESPACE_IMPL_START
static void Kit_TruthSharp(unsigned *pOut, unsigned *pIn0, unsigned *pIn1, int nVars)
static void * Vec_PtrEntry(Vec_Ptr_t *p, int i)
static int Bdc_IsComplement(Bdc_Fun_t *p)
static Bdc_Fun_t * Bdc_FunNew(Bdc_Man_t *p)
static int Vec_IntSize(Vec_Int_t *p)
unsigned Kit_TruthSupport(unsigned *pTruth, int nVars)
void Bdc_ManFree(Bdc_Man_t *p)
int Bdc_ManDecompose(Bdc_Man_t *p, unsigned *puFunc, unsigned *puCare, int nVars, Vec_Ptr_t *vDivs, int nNodesMax)
static void Kit_TruthCopy(unsigned *pOut, unsigned *pIn, int nVars)
int Bdc_ManAndNum(Bdc_Man_t *p)
static Bdc_Fun_t * Bdc_FunWithId(Bdc_Man_t *p, int Id)
static Bdc_Fun_t * Bdc_Not(Bdc_Fun_t *p)
Bdc_Fun_t * Bdc_FuncFanin0(Bdc_Fun_t *p)
static void Vec_IntFree(Vec_Int_t *p)
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.
static void Vec_IntClear(Vec_Int_t *p)
Bdc_Man_t * Bdc_ManAlloc(Bdc_Par_t *pPars)
MACRO DEFINITIONS ///.
static Bdc_Fun_t * Bdc_Regular(Bdc_Fun_t *p)
int Bdc_ManNodeVerify(Bdc_Man_t *p, Bdc_Isf_t *pIsf, Bdc_Fun_t *pFunc)
static void Vec_PtrFree(Vec_Ptr_t *p)
static void Bdc_IsfStart(Bdc_Man_t *p, Bdc_Isf_t *pF)