69 printf(
"Warning: The choice nodes in the AIG are removed by renoding.\n" );
107 printf(
"Abc_NtkMulti: The network check has failed.\n" );
128 Abc_Obj_t * pNode, * pConst1, * pNodeNew;
137 pConst1->
pCopy = pNodeNew;
178 if ( pNodeOld->
pCopy )
179 return pNodeOld->
pCopy;
192 for ( i = 0; i < vCone->nSize; i++ )
201 pNodeOld->
pCopy = pNodeNew;
202 return pNodeOld->
pCopy;
225 for ( i = 0; i < vFaninsOld->nSize; i++ )
227 pFaninOld = (
Abc_Obj_t *)vFaninsOld->pArray[i];
234 for ( i = 0; i < vFaninsOld->nSize; i++ )
236 pFaninOld = (
Abc_Obj_t *)vFaninsOld->pArray[i];
257 DdNode * bFunc, * bFunc0, * bFunc1;
278 pNode->
pData = bFunc;
298 int nNodes0, nNodes1;
314 assert( vCone->nSize == 0 );
318 nNodes0 = vCone->nSize;
319 assert( nNodes0 <= nFaninMax );
322 if ( vCone->nSize <= nFaninMax )
330 if ( vCone->nSize > nFaninMax )
339 nNodes1 = vCone->nSize;
340 assert( nNodes1 <= nFaninMax );
341 if ( nNodes0 >= nNodes1 )
387 int i, nFanouts, nConeSize;
402 if ( (nFanouts - 1) * nConeSize > nThresh )
420 assert( vCone->nSize <= nFaninMax );
519 int i, nFanouts, nConeSize;
537 if ( (nFanouts - 1) * nConeSize > nThresh )
static int Abc_NtkIsStrash(Abc_Ntk_t *pNtk)
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
static Abc_Obj_t * Abc_ObjFanin1(Abc_Obj_t *pObj)
static int Abc_ObjIsCi(Abc_Obj_t *pObj)
static DdNode * Abc_NtkMultiDeriveBdd(DdManager *dd, Abc_Obj_t *pNodeOld, Vec_Ptr_t *vFaninsOld)
void Cudd_RecursiveDeref(DdManager *table, DdNode *n)
ABC_DLL Abc_Obj_t * Abc_AigConst1(Abc_Ntk_t *pNtk)
ABC_DLL int Abc_NtkMinimumBase(Abc_Ntk_t *pNtk)
FUNCTION DEFINITIONS ///.
static int Abc_ObjFaninC1(Abc_Obj_t *pObj)
static int Vec_PtrPushUnique(Vec_Ptr_t *p, void *Entry)
void Cudd_Deref(DdNode *node)
static int Abc_ObjFanoutNum(Abc_Obj_t *pObj)
Abc_Ntk_t * Abc_NtkMulti(Abc_Ntk_t *pNtk, int nThresh, int nFaninMax, int fCnf, int fMulti, int fSimple, int fFactor)
FUNCTION DEFINITIONS ///.
void Abc_NtkMultiCone_rec(Abc_Obj_t *pNode, Vec_Ptr_t *vCone)
static int Abc_ObjFaninC0(Abc_Obj_t *pObj)
ABC_DLL Abc_Ntk_t * Abc_NtkDup(Abc_Ntk_t *pNtk)
static int Abc_AigNodeIsConst(Abc_Obj_t *pNode)
static void Vec_PtrPush(Vec_Ptr_t *p, void *Entry)
#define Abc_NtkForEachCo(pNtk, pCo, i)
ABC_DLL int Abc_NtkCheck(Abc_Ntk_t *pNtk)
FUNCTION DEFINITIONS ///.
static Abc_Obj_t * Abc_NtkMulti_rec(Abc_Ntk_t *pNtkNew, Abc_Obj_t *pNodeOld)
static Abc_Obj_t * Abc_ObjFanin0(Abc_Obj_t *pObj)
ABC_DLL int Abc_NtkGetChoiceNum(Abc_Ntk_t *pNtk)
static int Abc_NtkCoNum(Abc_Ntk_t *pNtk)
ABC_DLL void Abc_NtkDelete(Abc_Ntk_t *pNtk)
ABC_DLL int Abc_NodeIsMuxControlType(Abc_Obj_t *pNode)
ABC_DLL void Abc_ObjAddFanin(Abc_Obj_t *pObj, Abc_Obj_t *pFanin)
static int Abc_ObjIsNode(Abc_Obj_t *pObj)
static DdNode * Abc_NtkMultiDeriveBdd_rec(DdManager *dd, Abc_Obj_t *pNodeOld, Vec_Ptr_t *vFanins)
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)
static void Abc_NtkMultiSetBoundsSimple(Abc_Ntk_t *pNtk)
static void Abc_NtkMultiSetBoundsCnf(Abc_Ntk_t *pNtk)
#define ABC_NAMESPACE_IMPL_END
ABC_DLL int Abc_NodeMffcSize(Abc_Obj_t *pNode)
FUNCTION DEFINITIONS ///.
ABC_DLL void Abc_NtkFinalize(Abc_Ntk_t *pNtk, Abc_Ntk_t *pNtkNew)
static void Abc_NtkMultiSetBoundsFactor(Abc_Ntk_t *pNtk)
int Abc_NtkMultiLimit(Abc_Obj_t *pNode, Vec_Ptr_t *vCone, int nFaninMax)
static ABC_NAMESPACE_IMPL_START void Abc_NtkMultiInt(Abc_Ntk_t *pNtk, Abc_Ntk_t *pNtkNew)
DECLARATIONS ///.
int Abc_NtkMultiLimit_rec(Abc_Obj_t *pNode, Vec_Ptr_t *vCone, int nFaninMax, int fCanStop, int fFirst)
#define Abc_NtkForEachNode(pNtk, pNode, i)
#define ABC_NAMESPACE_IMPL_START
ABC_DLL int Abc_NtkLogicMakeSimpleCos(Abc_Ntk_t *pNtk, int fDuplicate)
DdNode * Cudd_ReadOne(DdManager *dd)
static void Abc_NtkMultiCone(Abc_Obj_t *pNode, Vec_Ptr_t *vCone)
static Vec_Ptr_t * Vec_PtrAlloc(int nCap)
FUNCTION DEFINITIONS ///.
ABC_DLL int Abc_NodeMffcSizeStop(Abc_Obj_t *pNode)
DdNode * Cudd_bddIthVar(DdManager *dd, int i)
static Abc_Obj_t * Abc_NtkCreateNode(Abc_Ntk_t *pNtk)
#define Cudd_NotCond(node, c)
DdNode * Cudd_bddAnd(DdManager *dd, DdNode *f, DdNode *g)
static void Abc_NtkMultiSetBoundsMulti(Abc_Ntk_t *pNtk, int nThresh)
static Abc_Obj_t * Abc_ObjFanin(Abc_Obj_t *pObj, int i)
static int Abc_ObjIsComplement(Abc_Obj_t *p)
#define Abc_NtkForEachObj(pNtk, pObj, i)
ITERATORS ///.
static void Abc_NtkMultiSetBounds(Abc_Ntk_t *pNtk, int nThresh, int nFaninMax)
static void Vec_PtrFree(Vec_Ptr_t *p)