summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2015-09-06 21:28:04 -0700
committerAlan Mishchenko <alanmi@berkeley.edu>2015-09-06 21:28:04 -0700
commit2540f02e7e81f8ec7521dea54c8d080890ad5209 (patch)
treec18e0289a0a253ab2cbeb768dfe8cd7c4aa2ec07
parent50fe603b832b0bc31f536ff1d7ef140a511ffb59 (diff)
downloadabc-2540f02e7e81f8ec7521dea54c8d080890ad5209.tar.gz
abc-2540f02e7e81f8ec7521dea54c8d080890ad5209.tar.bz2
abc-2540f02e7e81f8ec7521dea54c8d080890ad5209.zip
More tuning in &nf.
-rw-r--r--src/aig/gia/giaNf.c47
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) )