Commit 2540f02e by Alan Mishchenko

More tuning in &nf.

parent 50fe603b
...@@ -1415,7 +1415,7 @@ void Nf_ManSetOutputRequireds( Nf_Man_t * p, int fPropCompl ) ...@@ -1415,7 +1415,7 @@ void Nf_ManSetOutputRequireds( Nf_Man_t * p, int fPropCompl )
else if ( p->pPars->nRelaxRatio == 0 ) 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) ); 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 // set required times
Gia_ManForEachCo( p->pGia, pObj, i ) Gia_ManForEachCo( p->pGia, pObj, i )
{ {
...@@ -2067,26 +2067,39 @@ void Nf_ManUpdateStats( Nf_Man_t * p ) ...@@ -2067,26 +2067,39 @@ void Nf_ManUpdateStats( Nf_Man_t * p )
} }
p->pPars->WordMapArea = 0; p->nInvs = 0; p->pPars->WordMapArea = 0; p->nInvs = 0;
p->pPars->Area = p->pPars->Edge = 0; p->pPars->Area = p->pPars->Edge = 0;
Gia_ManForEachAndReverseId( p->pGia, i ) Gia_ManForEachAndReverse( p->pGia, pObj, i )
for ( c = 0; c < 2; c++ )
if ( Nf_ObjMapRefNum(p, i, c) )
{ {
pM = Nf_ObjMatchBest( p, i, c ); if ( Gia_ObjIsBuf(pObj) )
if ( pM->fCompl )
{ {
p->pPars->WordMapArea += p->InvArea; if ( Nf_ObjMapRefNum(p, i, 1) )
p->pPars->Edge++; {
p->pPars->Area++; p->pPars->WordMapArea += p->InvArea;
p->nInvs++; p->pPars->Edge++;
p->pPars->Area++;
p->nInvs++;
}
continue; continue;
} }
pCut = Nf_CutFromHandle( Nf_ObjCutSet(p, i), pM->CutH ); for ( c = 0; c < 2; c++ )
pCell = Nf_ManCell( p, pM->Gate ); if ( Nf_ObjMapRefNum(p, i, c) )
assert( Nf_CutSize(pCut) == (int)pCell->nFanins ); {
p->pPars->WordMapArea += pCell->Area; pM = Nf_ObjMatchBest( p, i, c );
p->pPars->Edge += Nf_CutSize(pCut); if ( pM->fCompl )
p->pPars->Area++; {
//printf( "%5d (%d) : Gate = %7s \n", i, c, pCell->pName ); 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 ) Gia_ManForEachCiId( p->pGia, Id, i )
if ( Nf_ObjMapRefNum(p, Id, 1) ) if ( Nf_ObjMapRefNum(p, Id, 1) )
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment