51 vObjs = Vec_PtrAlloc( 4098 );
54 if ( pObj->
pData == NULL )
57 Vec_PtrPush( vObjs, pObj );
80 vClasses = Vec_PtrAlloc( 4098 );
88 Vec_PtrPush( vClasses, pRepr );
121 Vec_PtrWriteEntry( vClasses, i, pRepr );
122 Vec_PtrPush( vMembers, pObj );
126 if ( pObj->
pData == pObj )
165 if ( pObj->
pData == NULL )
167 if ( Hop_ObjRefs(pObj) > 0 )
170 printf(
"The number of class members with fanouts = %5d.\n", Counter );
190 if ( pObj->
pData == NULL )
208static inline Hop_Obj_t * Hop_ObjChild0Hop(
Hop_Obj_t * pObj ) {
return Hop_NotCond( Hop_ObjReprHop(Hop_ObjFanin0(pObj)), Hop_ObjFaninC0(pObj) ); }
209static inline Hop_Obj_t * Hop_ObjChild1Hop(
Hop_Obj_t * pObj ) {
return Hop_NotCond( Hop_ObjReprHop(Hop_ObjFanin1(pObj)), Hop_ObjFaninC1(pObj) ); }
231 pNew->vObjs = Vec_PtrAlloc(
p->nCreated );
232 Vec_PtrPush( pNew->vObjs, Hop_ManConst1(pNew) );
234 Hop_ManConst1(
p)->pNext = Hop_ManConst1(pNew);
241 if ( !Hop_ObjIsNode(pObj) )
243 pObj->
pNext =
Hop_And( pNew, Hop_ObjChild0Hop(pObj), Hop_ObjChild1Hop(pObj) );
245 if ( Hop_ManConst1(pNew) == Hop_Regular(pObj->
pNext) )
257 printf(
"Abc_NtkHaigReconstruct: Check for History AIG has failed.\n" );
283 if ( Abc_ObjIsCi(pNode) )
285 assert( Abc_ObjIsNode(pNode) );
287 if ( Abc_NodeIsTravIdCurrent( pNode ) )
290 Abc_NodeSetTravIdCurrent( pNode );
313 assert( !Abc_ObjIsComplement(pOld) );
314 assert( !Abc_ObjIsComplement(pNew) );
315 Abc_NtkIncrementTravId(pNtk);
330static inline Abc_Obj_t * Hop_ObjChild0Next(
Hop_Obj_t * pObj ) {
return Abc_ObjNotCond( (
Abc_Obj_t *)Hop_ObjFanin0(pObj)->pNext, Hop_ObjFaninC0(pObj) ); }
331static inline Abc_Obj_t * Hop_ObjChild1Next(
Hop_Obj_t * pObj ) {
return Abc_ObjNotCond( (
Abc_Obj_t *)Hop_ObjFanin1(pObj)->pNext, Hop_ObjFaninC1(pObj) ); }
347 Abc_Obj_t * pObjOld, * pObjAbcThis, * pObjAbcRepr;
350 assert(
p->nCreated == Vec_PtrSize(
p->vObjs) );
363 if ( !Hop_ObjIsNode(pObj) )
377 if ( pObj->
pData == NULL )
380 if ( pObj->
pData == pObj )
391 assert( Abc_ObjFanoutNum(pObjAbcThis) == 0 );
393 assert( pObjAbcRepr != pObjAbcThis );
398 while ( pObjAbcRepr->
pData )
401 pObjAbcRepr->
pData = pObjAbcThis;
411 printf(
"Abc_NtkHaigUse: The network check has failed.\n" );
435 printf(
"Collected %6d class members.\n", Vec_PtrSize(vMembers) );
439 printf(
"Collected %6d classes. (Ave = %5.2f)\n", Vec_PtrSize(vClasses),
440 (
float)(Vec_PtrSize(vMembers))/Vec_PtrSize(vClasses) );
442 Vec_PtrFree( vMembers );
443 Vec_PtrFree( vClasses );
460 int i, nClasses, nMembers, nFanouts, nNormals;
466 if ( pRepr && pRepr->
pData == pObj )
467 pRepr->
pData = pRepr;
469 if ( pObj->
pData == pObj )
475 if ( pObj->
pData == NULL )
479 pRepr->
pData = pRepr;
486 if ( pObj->
pData == NULL )
489 if ( pRepr->
Id > pObj->
Id )
498 nMembers = nClasses = nFanouts = nNormals = 0;
501 if ( pObj->
pData == NULL )
506 if ( pObj->
pData == pObj )
508 else if ( Hop_ObjRefs(pObj) > 0 )
int Abc_NtkHaigCheckTfi(Abc_Ntk_t *pNtk, Abc_Obj_t *pOld, Abc_Obj_t *pNew)
int Abc_NtkHaigCheckTfi_rec(Abc_Obj_t *pNode, Abc_Obj_t *pOld)
int Abc_NtkHaigResetReprs(Hop_Man_t *p)
Vec_Ptr_t * Abc_NtkHaigCreateClasses(Vec_Ptr_t *vMembers)
Hop_Man_t * Abc_NtkHaigReconstruct(Hop_Man_t *p)
int Abc_NtkHaigCountFans(Hop_Man_t *p)
void Abc_NtkHaigResetReprsOld(Hop_Man_t *pMan)
Abc_Ntk_t * Abc_NtkHopRemoveLoops(Abc_Ntk_t *pNtk, Hop_Man_t *pMan)
ABC_NAMESPACE_IMPL_START Vec_Ptr_t * Abc_NtkHaigCollectMembers(Hop_Man_t *p)
DECLARATIONS ///.
Abc_Ntk_t * Abc_NtkHaigRecreateAig(Abc_Ntk_t *pNtk, Hop_Man_t *p)
struct Abc_Obj_t_ Abc_Obj_t
#define Abc_NtkForEachCo(pNtk, pCo, i)
ABC_DLL void Abc_ObjAddFanin(Abc_Obj_t *pObj, Abc_Obj_t *pFanin)
ABC_DLL int Abc_NtkCheck(Abc_Ntk_t *pNtk)
FUNCTION DEFINITIONS ///.
struct Abc_Aig_t_ Abc_Aig_t
struct Abc_Ntk_t_ Abc_Ntk_t
ABC_DLL Abc_Obj_t * Abc_AigAnd(Abc_Aig_t *pMan, Abc_Obj_t *p0, Abc_Obj_t *p1)
ABC_DLL void Abc_NtkDelete(Abc_Ntk_t *pNtk)
ABC_DLL Abc_Ntk_t * Abc_NtkStartFrom(Abc_Ntk_t *pNtk, Abc_NtkType_t Type, Abc_NtkFunc_t Func)
ABC_DLL Abc_Obj_t * Abc_AigConst1(Abc_Ntk_t *pNtk)
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
Hop_Obj_t * Hop_ObjCreatePo(Hop_Man_t *p, Hop_Obj_t *pDriver)
typedefABC_NAMESPACE_HEADER_START struct Hop_Man_t_ Hop_Man_t
INCLUDES ///.
int Hop_ManCheck(Hop_Man_t *p)
DECLARATIONS ///.
#define Hop_ManForEachPi(p, pObj, i)
ITERATORS ///.
Hop_Obj_t * Hop_And(Hop_Man_t *p, Hop_Obj_t *p0, Hop_Obj_t *p1)
void Hop_ManStop(Hop_Man_t *p)
#define Hop_ManForEachPo(p, pObj, i)
Hop_Obj_t * Hop_ObjCreatePi(Hop_Man_t *p)
DECLARATIONS ///.
Hop_Man_t * Hop_ManStart()
DECLARATIONS ///.
Hop_Obj_t * Hop_ObjRepr(Hop_Obj_t *pObj)
struct Hop_Obj_t_ Hop_Obj_t
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.