diff options
author | Alan Mishchenko <alanmi@berkeley.edu> | 2015-09-06 21:28:04 -0700 |
---|---|---|
committer | Alan Mishchenko <alanmi@berkeley.edu> | 2015-09-06 21:28:04 -0700 |
commit | 2540f02e7e81f8ec7521dea54c8d080890ad5209 (patch) | |
tree | c18e0289a0a253ab2cbeb768dfe8cd7c4aa2ec07 | |
parent | 50fe603b832b0bc31f536ff1d7ef140a511ffb59 (diff) | |
download | abc-2540f02e7e81f8ec7521dea54c8d080890ad5209.tar.gz abc-2540f02e7e81f8ec7521dea54c8d080890ad5209.tar.bz2 abc-2540f02e7e81f8ec7521dea54c8d080890ad5209.zip |
More tuning in &nf.
-rw-r--r-- | src/aig/gia/giaNf.c | 47 |
1 files changed, 30 insertions, 17 deletions
diff --git a/src/aig/gia/giaNf.c b/src/aig/gia/giaNf.c index 84ba55ae..668c75f1 100644 --- a/src/aig/gia/giaNf.c +++ b/src/aig/gia/giaNf.c @@ -1415,7 +1415,7 @@ void Nf_ManSetOutputRequireds( Nf_Man_t * p, int fPropCompl ) else if ( p->pPars->nRelaxRatio == 0 ) Abc_Print( 0, "Relaxing user-specified delay target from %.2f to %.2f.\n", Nf_Wrd2Flt(p->pPars->WordMapDelayTarget), Nf_Wrd2Flt(p->pPars->WordMapDelay) ); } - assert( p->pPars->WordMapDelayTarget == 0 ); + //assert( p->pPars->WordMapDelayTarget == 0 ); // set required times Gia_ManForEachCo( p->pGia, pObj, i ) { @@ -2067,26 +2067,39 @@ void Nf_ManUpdateStats( Nf_Man_t * p ) } p->pPars->WordMapArea = 0; p->nInvs = 0; p->pPars->Area = p->pPars->Edge = 0; - Gia_ManForEachAndReverseId( p->pGia, i ) - for ( c = 0; c < 2; c++ ) - if ( Nf_ObjMapRefNum(p, i, c) ) + Gia_ManForEachAndReverse( p->pGia, pObj, i ) { - pM = Nf_ObjMatchBest( p, i, c ); - if ( pM->fCompl ) + if ( Gia_ObjIsBuf(pObj) ) { - p->pPars->WordMapArea += p->InvArea; - p->pPars->Edge++; - p->pPars->Area++; - p->nInvs++; + if ( Nf_ObjMapRefNum(p, i, 1) ) + { + p->pPars->WordMapArea += p->InvArea; + p->pPars->Edge++; + p->pPars->Area++; + p->nInvs++; + } continue; } - pCut = Nf_CutFromHandle( Nf_ObjCutSet(p, i), pM->CutH ); - pCell = Nf_ManCell( p, pM->Gate ); - assert( Nf_CutSize(pCut) == (int)pCell->nFanins ); - p->pPars->WordMapArea += pCell->Area; - p->pPars->Edge += Nf_CutSize(pCut); - p->pPars->Area++; - //printf( "%5d (%d) : Gate = %7s \n", i, c, pCell->pName ); + for ( c = 0; c < 2; c++ ) + if ( Nf_ObjMapRefNum(p, i, c) ) + { + pM = Nf_ObjMatchBest( p, i, c ); + if ( pM->fCompl ) + { + p->pPars->WordMapArea += p->InvArea; + p->pPars->Edge++; + p->pPars->Area++; + p->nInvs++; + continue; + } + pCut = Nf_CutFromHandle( Nf_ObjCutSet(p, i), pM->CutH ); + pCell = Nf_ManCell( p, pM->Gate ); + assert( Nf_CutSize(pCut) == (int)pCell->nFanins ); + p->pPars->WordMapArea += pCell->Area; + p->pPars->Edge += Nf_CutSize(pCut); + p->pPars->Area++; + //printf( "%5d (%d) : Gate = %7s \n", i, c, pCell->pName ); + } } Gia_ManForEachCiId( p->pGia, Id, i ) if ( Nf_ObjMapRefNum(p, Id, 1) ) |