67 if ( pNamePo == NULL )
69 if ( vNamesPi == NULL )
72 vNamesPi = vNamesPiFake;
107 fprintf( stdout,
"Abc_NtkDeriveFromBdd(): Network check has failed.\n" );
135 printf(
"Abc_NtkBddToMuxes: The network check has failed.\n" );
170 pNode->
pCopy = pNodeNew;
220 Abc_Obj_t * pNodeNew, * pNodeNew0, * pNodeNew1, * pNodeNewC;
224 if (
st__lookup( tBdd2Node, (
char *)bFunc, (
char **)&pNodeNew ) )
235 st__insert( tBdd2Node, (
char *)bFunc, (
char *)pNodeNew );
299 printf(
"Constructing global BDDs is aborted.\n" );
369 DdNode * bFunc, * bFunc0, * bFunc1, * bFuncC;
370 int fDetectMuxes = 1;
376 printf(
"The number of live nodes reached %d.\n", nBddSizeMax );
404 if ( bFuncC == NULL )
408 if ( bFunc0 == NULL )
412 if ( bFunc1 == NULL )
431 if ( bFunc0 == NULL )
435 if ( bFunc1 == NULL )
457 if ( --pNode->
vFanouts.nSize == 0 && fDropInternal )
571 DdNode * bImp, * bSum, * bTemp;
580 for ( i = 0; i < nImps; i++ )
void st__free_table(st__table *table)
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
static Abc_Obj_t * Abc_ObjFanin1(Abc_Obj_t *pObj)
#define CUDD_UNIQUE_SLOTS
void * Abc_NtkFreeGlobalBdds(Abc_Ntk_t *pNtk, int fFreeMan)
void Cudd_RecursiveDeref(DdManager *table, DdNode *n)
static int Abc_NtkObjNumMax(Abc_Ntk_t *pNtk)
static int Abc_ObjIsBo(Abc_Obj_t *pObj)
ABC_DLL Abc_Obj_t * Abc_AigConst1(Abc_Ntk_t *pNtk)
ABC_DLL int Abc_NtkMinimumBase(Abc_Ntk_t *pNtk)
FUNCTION DEFINITIONS ///.
void * Abc_NtkBuildGlobalBdds(Abc_Ntk_t *pNtk, int nBddSizeMax, int fDropInternal, int fReorder, int fVerbose)
static int Abc_ObjFaninC1(Abc_Obj_t *pObj)
int st__insert(st__table *table, const char *key, char *value)
DdNode * Cudd_Support(DdManager *dd, DdNode *f)
void Cudd_Deref(DdNode *node)
static int Abc_ObjFanoutNum(Abc_Obj_t *pObj)
#define Cudd_Regular(node)
static Abc_Obj_t * Abc_NodeBddToMuxes(Abc_Obj_t *pNodeOld, Abc_Ntk_t *pNtkNew)
int st__ptrcmp(const char *, const char *)
static void * Abc_NtkGlobalBdd(Abc_Ntk_t *pNtk)
ABC_DLL Abc_Obj_t * Abc_NtkCreateNodeConst1(Abc_Ntk_t *pNtk)
static int Abc_ObjFaninC0(Abc_Obj_t *pObj)
static void Vec_PtrPush(Vec_Ptr_t *p, void *Entry)
ABC_DLL Abc_Obj_t * Abc_NtkCreateNodeMux(Abc_Ntk_t *pNtk, Abc_Obj_t *pNodeC, Abc_Obj_t *pNode1, Abc_Obj_t *pNode0)
static int Abc_NtkCiNum(Abc_Ntk_t *pNtk)
#define Abc_NtkForEachCo(pNtk, pCo, i)
ABC_DLL int Abc_NtkCheck(Abc_Ntk_t *pNtk)
FUNCTION DEFINITIONS ///.
ABC_DLL char * Abc_ObjAssignName(Abc_Obj_t *pObj, char *pName, char *pSuffix)
int Abc_NtkSizeOfGlobalBdds(Abc_Ntk_t *pNtk)
DdNode * Cudd_bddIte(DdManager *dd, DdNode *f, DdNode *g, DdNode *h)
ABC_DLL Vec_Ptr_t * Abc_NtkDfs(Abc_Ntk_t *pNtk, int fCollectAll)
static abctime Abc_Clock()
static int Vec_PtrSize(Vec_Ptr_t *p)
static Abc_Obj_t * Abc_ObjFanin0(Abc_Obj_t *pObj)
static int Abc_NtkCoNum(Abc_Ntk_t *pNtk)
ABC_DLL void Abc_NtkDelete(Abc_Ntk_t *pNtk)
DdNode * Cudd_bddTransfer(DdManager *ddSource, DdManager *ddDestination, DdNode *f)
static void * Abc_ObjGlobalBdd(Abc_Obj_t *pObj)
ABC_DLL void Abc_ObjAddFanin(Abc_Obj_t *pObj, Abc_Obj_t *pFanin)
ABC_DLL Abc_Ntk_t * Abc_NtkAlloc(Abc_NtkType_t Type, Abc_NtkFunc_t Func, int fUseMemMan)
DECLARATIONS ///.
st__table * st__init_table(st__compare_func_type compare, st__hash_func_type hash)
ABC_DLL void Abc_NodeFreeNames(Vec_Ptr_t *vNames)
void Abc_NtkBddImplicationTest()
static int Abc_ObjIsNode(Abc_Obj_t *pObj)
static int Abc_NtkNodeNum(Abc_Ntk_t *pNtk)
static DdNode * Abc_NodeGlobalBdds_rec(DdManager *dd, Abc_Obj_t *pNode, int nBddSizeMax, int fDropInternal, ProgressBar *pProgress, int *pCounter, int fVerbose)
#define Cudd_IsComplement(node)
ABC_DLL Abc_Ntk_t * Abc_NtkStartFrom(Abc_Ntk_t *pNtk, Abc_NtkType_t Type, Abc_NtkFunc_t Func)
ABC_DLL int Abc_NodeIsMuxType(Abc_Obj_t *pNode)
ABC_DLL int Abc_AigCleanup(Abc_Aig_t *pMan)
ABC_DLL Abc_Obj_t * Abc_NtkCreateNodeInv(Abc_Ntk_t *pNtk, Abc_Obj_t *pFanin)
ABC_DLL Vec_Ptr_t * Abc_NodeGetFakeNames(int nNames)
Abc_Ntk_t * Abc_NtkBddToMuxes(Abc_Ntk_t *pNtk)
#define ABC_NAMESPACE_IMPL_END
DdManager * Cudd_Init(unsigned int numVars, unsigned int numVarsZ, unsigned int numSlots, unsigned int cacheSize, unsigned long maxMemory)
ABC_DLL void Abc_NtkFinalize(Abc_Ntk_t *pNtk, Abc_Ntk_t *pNtkNew)
static Abc_Obj_t * Abc_NtkCreatePi(Abc_Ntk_t *pNtk)
DdNode * Cudd_bddOr(DdManager *dd, DdNode *f, DdNode *g)
static ABC_NAMESPACE_IMPL_START void Abc_NtkBddToMuxesPerform(Abc_Ntk_t *pNtk, Abc_Ntk_t *pNtkNew)
DECLARATIONS ///.
static void Abc_ObjSetGlobalBdd(Abc_Obj_t *pObj, void *bF)
static void Vec_PtrWriteEntry(Vec_Ptr_t *p, int i, void *Entry)
#define ABC_NAMESPACE_IMPL_START
void Cudd_AutodynDisable(DdManager *unique)
DdNode * Cudd_ReadOne(DdManager *dd)
int st__lookup(st__table *table, const char *key, char **value)
static Abc_Obj_t * Abc_ObjRegular(Abc_Obj_t *p)
static int Abc_ObjIsBi(Abc_Obj_t *pObj)
#define Abc_NtkForEachCi(pNtk, pCi, i)
static Vec_Ptr_t * Vec_PtrAlloc(int nCap)
FUNCTION DEFINITIONS ///.
#define Abc_ObjForEachFanin(pObj, pFanin, i)
static Abc_Obj_t * Abc_NodeBddToMuxes_rec(DdManager *dd, DdNode *bFunc, Abc_Ntk_t *pNtkNew, st__table *tBdd2Node)
static Vec_Att_t * Vec_AttAlloc(int nSize, void *pMan, void(*pFuncFreeMan)(void *), void *(*pFuncStartObj)(void *), void(*pFuncFreeObj)(void *, void *))
MACRO DEFINITIONS ///.
static int Abc_NtkIsBddLogic(Abc_Ntk_t *pNtk)
unsigned int Cudd_NodeReadIndex(DdNode *node)
DdNode * Cudd_bddIthVar(DdManager *dd, int i)
static Abc_Obj_t * Abc_NtkCreateNode(Abc_Ntk_t *pNtk)
unsigned int Cudd_ReadKeys(DdManager *dd)
#define Cudd_NotCond(node, c)
DdNode * Cudd_bddAnd(DdManager *dd, DdNode *f, DdNode *g)
Abc_Ntk_t * Abc_NtkDeriveFromBdd(void *dd0, void *bFunc, char *pNamePo, Vec_Ptr_t *vNamesPi)
FUNCTION DEFINITIONS ///.
static int Abc_ObjIsBox(Abc_Obj_t *pObj)
void Cudd_Quit(DdManager *unique)
int Cudd_ReduceHeap(DdManager *table, Cudd_ReorderingType heuristic, int minsize)
void Cudd_AutodynEnable(DdManager *unique, Cudd_ReorderingType method)
unsigned int Cudd_ReadDead(DdManager *dd)
static Abc_Obj_t * Abc_ObjFanin(Abc_Obj_t *pObj, int i)
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.
static int Abc_ObjIsComplement(Abc_Obj_t *p)
#define Abc_NtkForEachObj(pNtk, pObj, i)
ITERATORS ///.
double Abc_NtkSpacePercentage(Abc_Obj_t *pNode)
static Abc_Obj_t * Abc_NtkCreatePo(Abc_Ntk_t *pNtk)
static void ** Vec_PtrArray(Vec_Ptr_t *p)
int Cudd_SharingSize(DdNode **nodeArray, int n)
ABC_DLL void * Abc_NtkAttrFree(Abc_Ntk_t *pNtk, int Attr, int fFreeMan)
DECLARATIONS ///.
int st__ptrhash(const char *, int)
ABC_DLL Abc_Obj_t * Abc_NodeRecognizeMux(Abc_Obj_t *pNode, Abc_Obj_t **ppNodeT, Abc_Obj_t **ppNodeE)
#define Abc_NtkForEachPi(pNtk, pPi, i)
int Cudd_DagSize(DdNode *node)
static void Vec_PtrFree(Vec_Ptr_t *p)