summaryrefslogtreecommitdiffstats
path: root/src/aig/gia/giaFanout.c
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2015-07-09 20:54:10 -0700
committerAlan Mishchenko <alanmi@berkeley.edu>2015-07-09 20:54:10 -0700
commit3aece535b93f7407a27e33bacb4599c38c3c16b8 (patch)
tree6f90ca209102d15db6a2ae2489fd2bc959eff85b /src/aig/gia/giaFanout.c
parent10e0f3c58dbe344ea8f22e66e2658bda75b40d03 (diff)
downloadabc-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.c14
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 )