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/giaFront.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/giaFront.c')
-rw-r--r-- | src/aig/gia/giaFront.c | 43 |
1 files changed, 42 insertions, 1 deletions
diff --git a/src/aig/gia/giaFront.c b/src/aig/gia/giaFront.c index 322da785..fc99cfe9 100644 --- a/src/aig/gia/giaFront.c +++ b/src/aig/gia/giaFront.c @@ -103,13 +103,54 @@ void Gia_ManFrontTransform( Gia_Man_t * p ) SeeAlso [] ***********************************************************************/ +int Gia_ManCrossCutSimple( Gia_Man_t * p ) +{ + Gia_Obj_t * pObj; + int i, nCutCur = 0, nCutMax = 0; + Gia_ManCreateValueRefs( p ); + Gia_ManForEachObj( p, pObj, i ) + { + if ( pObj->Value ) + nCutCur++; + if ( nCutMax < nCutCur ) + nCutMax = nCutCur; + if ( Gia_ObjIsAnd(pObj) ) + { + if ( --Gia_ObjFanin0(pObj)->Value == 0 ) + nCutCur--; + if ( --Gia_ObjFanin1(pObj)->Value == 0 ) + nCutCur--; + } + else if ( Gia_ObjIsCo(pObj) ) + { + if ( --Gia_ObjFanin0(pObj)->Value == 0 ) + nCutCur--; + } + } +// Gia_ManForEachObj( p, pObj, i ) +// assert( pObj->Value == 0 ); + return nCutMax; +} + + +/**Function************************************************************* + + Synopsis [Determine the frontier.] + + Description [] + + SideEffects [] + + SeeAlso [] + +***********************************************************************/ Gia_Man_t * Gia_ManFront( Gia_Man_t * p ) { Gia_Man_t * pNew; Gia_Obj_t * pObj, * pFanin0New, * pFanin1New, * pObjNew; char * pFront; // places used for the frontier int i, iLit, nCrossCut = 0, nCrossCutMax = 0; - int nCrossCutMaxInit = Gia_ManCrossCut( p ); + int nCrossCutMaxInit = Gia_ManCrossCutSimple( p ); int iFront = 0;//, clk = clock(); // set references for all objects Gia_ManCreateValueRefs( p ); |