49 Vec_IntFillExtra(
p->vLevelR, pObj->
Id + 1, 0 );
50 return Vec_IntEntry(
p->vLevelR, pObj->
Id);
68 Vec_IntFillExtra(
p->vLevelR, pObj->
Id + 1, 0 );
69 Vec_IntWriteEntry(
p->vLevelR, pObj->
Id, LevelR );
85 Aig_ObjSetReverseLevel(
p, pObj, 0 );
103 return p->nLevelMax + 1 - Aig_ObjReverseLevel(
p, pObj);
120 int i, iFanout = -1, LevelCur, Level = 0;
123 LevelCur = Aig_ObjReverseLevel(
p, pFanout );
124 Level = Abc_MaxInt( Level, LevelCur );
152 p->vLevelR = Vec_IntAlloc( 0 );
153 Vec_IntFill(
p->vLevelR, Aig_ManObjNumMax(
p), 0 );
161 Vec_PtrFree( vNodes );
178 Vec_IntFree(
p->vLevelR );
198 int iFanout = -1, LevelOld, Lev, k, m;
200 assert( Aig_ObjIsNode(pObjNew) );
202 if (
p->vLevels == NULL )
205 LevelOld = Aig_ObjLevel(pObjNew);
206 if ( LevelOld == Aig_ObjLevelNew(pObjNew) )
211 Vec_VecClear(
p->vLevels );
212 Vec_VecPush(
p->vLevels, LevelOld, pObjNew );
218 assert( Aig_ObjLevel(pTemp) == Lev );
219 pTemp->
Level = Aig_ObjLevelNew(pTemp);
221 if ( Aig_ObjLevel(pTemp) == Lev )
226 if ( Aig_ObjIsNode(pFanout) && !pFanout->
fMarkA )
228 assert( Aig_ObjLevel(pFanout) >= Lev );
229 Vec_VecPush(
p->vLevels, Aig_ObjLevel(pFanout), pFanout );
250 int LevelOld, LevFanin, Lev, k;
252 assert( Aig_ObjIsNode(pObjNew) );
254 if (
p->vLevels == NULL )
257 LevelOld = Aig_ObjReverseLevel(
p, pObjNew);
263 Vec_VecClear(
p->vLevels );
264 Vec_VecPush(
p->vLevels, LevelOld, pObjNew );
270 LevelOld = Aig_ObjReverseLevel(
p, pTemp);
271 assert( LevelOld == Lev );
274 if ( Aig_ObjReverseLevel(
p, pTemp) == Lev )
277 pFanin = Aig_ObjFanin0(pTemp);
278 if ( Aig_ObjIsNode(pFanin) && !pFanin->
fMarkA )
280 LevFanin = Aig_ObjReverseLevel(
p, pFanin );
281 assert( LevFanin >= Lev );
282 Vec_VecPush(
p->vLevels, LevFanin, pFanin );
285 pFanin = Aig_ObjFanin1(pTemp);
286 if ( Aig_ObjIsNode(pFanin) && !pFanin->
fMarkA )
288 LevFanin = Aig_ObjReverseLevel(
p, pFanin );
289 assert( LevFanin >= Lev );
290 Vec_VecPush(
p->vLevels, LevFanin, pFanin );
313 if ( Aig_ObjLevel(pObj) != Aig_ObjLevelNew(pObj) )
315 printf(
"Level of node %6d should be %4d instead of %4d.\n",
316 pObj->
Id, Aig_ObjLevelNew(pObj), Aig_ObjLevel(pObj) );
320 printf(
"Levels of %d nodes are incorrect.\n", Counter );
340 if ( Aig_ObjLevel(pObj) != Aig_ObjLevelNew(pObj) )
342 printf(
"Reverse level of node %6d should be %4d instead of %4d.\n",
347 printf(
"Reverse levels of %d nodes are incorrect.\n", Counter );
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
int Aig_ObjReverseLevelNew(Aig_Man_t *p, Aig_Obj_t *pObj)
void Aig_ManStartReverseLevels(Aig_Man_t *p, int nMaxLevelIncrease)
void Aig_ManVerifyReverseLevel(Aig_Man_t *p)
void Aig_ManStopReverseLevels(Aig_Man_t *p)
void Aig_ObjClearReverseLevel(Aig_Man_t *p, Aig_Obj_t *pObj)
void Aig_ManVerifyLevel(Aig_Man_t *p)
int Aig_ObjRequiredLevel(Aig_Man_t *p, Aig_Obj_t *pObj)
void Aig_ManUpdateReverseLevel(Aig_Man_t *p, Aig_Obj_t *pObjNew)
void Aig_ManUpdateLevel(Aig_Man_t *p, Aig_Obj_t *pObjNew)
Vec_Ptr_t * Aig_ManDfsReverse(Aig_Man_t *p)
#define Aig_ObjForEachFanout(p, pObj, pFanout, iFan, i)
struct Aig_Obj_t_ Aig_Obj_t
int Aig_ManLevels(Aig_Man_t *p)
#define Aig_ManForEachNode(p, pObj, i)
typedefABC_NAMESPACE_HEADER_START struct Aig_Man_t_ Aig_Man_t
INCLUDES ///.
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.
#define Vec_VecForEachEntryStart(Type, vGlob, pEntry, i, k, LevelStart)