diff options
author | Alan Mishchenko <alanmi@berkeley.edu> | 2015-07-09 20:54:10 -0700 |
---|---|---|
committer | Alan Mishchenko <alanmi@berkeley.edu> | 2015-07-09 20:54:10 -0700 |
commit | 3aece535b93f7407a27e33bacb4599c38c3c16b8 (patch) | |
tree | 6f90ca209102d15db6a2ae2489fd2bc959eff85b /src/aig/gia/giaFanout.c | |
parent | 10e0f3c58dbe344ea8f22e66e2658bda75b40d03 (diff) | |
download | abc-3aece535b93f7407a27e33bacb4599c38c3c16b8.tar.gz abc-3aece535b93f7407a27e33bacb4599c38c3c16b8.tar.bz2 abc-3aece535b93f7407a27e33bacb4599c38c3c16b8.zip |
New TFI/TFO profiling code.
Diffstat (limited to 'src/aig/gia/giaFanout.c')
-rw-r--r-- | src/aig/gia/giaFanout.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/aig/gia/giaFanout.c b/src/aig/gia/giaFanout.c index 62053fec..6a940354 100644 --- a/src/aig/gia/giaFanout.c +++ b/src/aig/gia/giaFanout.c @@ -127,7 +127,7 @@ void Gia_ObjAddFanout( Gia_Man_t * p, Gia_Obj_t * pObj, Gia_Obj_t * pFanout ) p->nFansAlloc = nFansAlloc; } assert( Gia_ObjId(p, pObj) < p->nFansAlloc && Gia_ObjId(p, pFanout) < p->nFansAlloc ); - iFan = Gia_FanoutCreate( Gia_ObjId(p, pFanout), Gia_ObjWhatFanin(pFanout, pObj) ); + iFan = Gia_FanoutCreate( Gia_ObjId(p, pFanout), Gia_ObjWhatFanin(p, pFanout, pObj) ); pPrevC = Gia_FanoutPrev( p->pFanData, iFan ); pNextC = Gia_FanoutNext( p->pFanData, iFan ); pFirst = Gia_FanoutObj( p->pFanData, Gia_ObjId(p, pObj) ); @@ -166,7 +166,7 @@ void Gia_ObjRemoveFanout( Gia_Man_t * p, Gia_Obj_t * pObj, Gia_Obj_t * pFanout ) assert( p->pFanData && Gia_ObjId(p, pObj) < p->nFansAlloc && Gia_ObjId(p, pFanout) < p->nFansAlloc ); assert( !Gia_IsComplement(pObj) && !Gia_IsComplement(pFanout) ); assert( Gia_ObjId(p, pFanout) > 0 ); - iFan = Gia_FanoutCreate( Gia_ObjId(p, pFanout), Gia_ObjWhatFanin(pFanout, pObj) ); + iFan = Gia_FanoutCreate( Gia_ObjId(p, pFanout), Gia_ObjWhatFanin(p, pFanout, pObj) ); pPrevC = Gia_FanoutPrev( p->pFanData, iFan ); pNextC = Gia_FanoutNext( p->pFanData, iFan ); pPrev = Gia_FanoutPrev( p->pFanData, *pNextC ); @@ -214,7 +214,7 @@ Vec_Int_t * Gia_ManStartFanoutMap( Gia_Man_t * p, Vec_Int_t * vFanoutNums ) Gia_Obj_t * pObj; int i, iOffset; iOffset = Gia_ManObjNum(p); - vEdgeMap = Vec_IntStart( iOffset + 2 * Gia_ManAndNum(p) + Gia_ManCoNum(p) ); + vEdgeMap = Vec_IntStart( iOffset + Gia_ManMuxNum(p) + 2 * Gia_ManAndNum(p) + Gia_ManCoNum(p) ); Gia_ManForEachObj( p, pObj, i ) { Vec_IntWriteEntry( vEdgeMap, i, iOffset ); @@ -269,6 +269,14 @@ void Gia_ManStaticFanoutStart( Gia_Man_t * p ) Gia_ObjSetFanout( p, pFanin, iFanout, pObj ); Vec_IntAddToEntry( vCounts, Gia_ObjId(p, pFanin), 1 ); } + if ( Gia_ObjIsMux(p, pObj) ) + { + + pFanin = Gia_ObjFanin2(p, pObj); + iFanout = Vec_IntEntry( vCounts, Gia_ObjId(p, pFanin) ); + Gia_ObjSetFanout( p, pFanin, iFanout, pObj ); + Vec_IntAddToEntry( vCounts, Gia_ObjId(p, pFanin), 1 ); + } } // double-check the current number of fanouts added Gia_ManForEachObj( p, pObj, i ) |