diff options
author | Alan Mishchenko <alanmi@berkeley.edu> | 2012-10-24 10:43:55 -0700 |
---|---|---|
committer | Alan Mishchenko <alanmi@berkeley.edu> | 2012-10-24 10:43:55 -0700 |
commit | bc21cb41b49860e4b43aa859ea4fb6b2827262f5 (patch) | |
tree | ce15d96be061d201333eceb3d3ddc29946c4d5af /src/aig/gia/giaUtil.c | |
parent | 2be812b4e08360f5b154d37ec3d12c029c79af82 (diff) | |
download | abc-bc21cb41b49860e4b43aa859ea4fb6b2827262f5.tar.gz abc-bc21cb41b49860e4b43aa859ea4fb6b2827262f5.tar.bz2 abc-bc21cb41b49860e4b43aa859ea4fb6b2827262f5.zip |
Adding frontier comptuation based on reversed CO order in &ps.
Diffstat (limited to 'src/aig/gia/giaUtil.c')
-rw-r--r-- | src/aig/gia/giaUtil.c | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/src/aig/gia/giaUtil.c b/src/aig/gia/giaUtil.c index 5fe53499..b0f25864 100644 --- a/src/aig/gia/giaUtil.c +++ b/src/aig/gia/giaUtil.c @@ -574,7 +574,7 @@ void Gia_ManDfsForCrossCut_rec( Gia_Man_t * p, Gia_Obj_t * pObj, Vec_Int_t * vNo Gia_ManDfsForCrossCut_rec( p, Gia_ObjFanin1(pObj), vNodes ); Vec_IntPush( vNodes, Gia_ObjId(p, pObj) ); } -Vec_Int_t * Gia_ManDfsForCrossCut( Gia_Man_t * p ) +Vec_Int_t * Gia_ManDfsForCrossCut( Gia_Man_t * p, int fReverse ) { Vec_Int_t * vNodes; Gia_Obj_t * pObj; @@ -582,17 +582,26 @@ Vec_Int_t * Gia_ManDfsForCrossCut( Gia_Man_t * p ) Gia_ManCleanValue( p ); vNodes = Vec_IntAlloc( Gia_ManObjNum(p) ); Gia_ManIncrementTravId( p ); - Gia_ManForEachCo( p, pObj, i ) - if ( !Gia_ObjIsConst0(Gia_ObjFanin0(pObj)) ) - Gia_ManDfsForCrossCut_rec( p, pObj, vNodes ); + if ( fReverse ) + { + Gia_ManForEachCoReverse( p, pObj, i ) + if ( !Gia_ObjIsConst0(Gia_ObjFanin0(pObj)) ) + Gia_ManDfsForCrossCut_rec( p, pObj, vNodes ); + } + else + { + Gia_ManForEachCo( p, pObj, i ) + if ( !Gia_ObjIsConst0(Gia_ObjFanin0(pObj)) ) + Gia_ManDfsForCrossCut_rec( p, pObj, vNodes ); + } return vNodes; } -int Gia_ManCrossCut( Gia_Man_t * p ) +int Gia_ManCrossCut( Gia_Man_t * p, int fReverse ) { Vec_Int_t * vNodes; Gia_Obj_t * pObj; int i, nCutCur = 0, nCutMax = 0; - vNodes = Gia_ManDfsForCrossCut( p ); + vNodes = Gia_ManDfsForCrossCut( p, fReverse ); Gia_ManForEachObjVec( vNodes, p, pObj, i ) { if ( pObj->Value ) |