diff options
| author | Alan Mishchenko <alanmi@berkeley.edu> | 2012-10-09 12:35:47 -0700 | 
|---|---|---|
| committer | Alan Mishchenko <alanmi@berkeley.edu> | 2012-10-09 12:35:47 -0700 | 
| commit | d3595d230f51c4208c56a62fa309e2f7861598fc (patch) | |
| tree | a2285af8c339b8effbfad039185a77a606d8f3c7 | |
| parent | 7cf176c420295fd95a6cc2c6607caa3130980208 (diff) | |
| download | abc-d3595d230f51c4208c56a62fa309e2f7861598fc.tar.gz abc-d3595d230f51c4208c56a62fa309e2f7861598fc.tar.bz2 abc-d3595d230f51c4208c56a62fa309e2f7861598fc.zip  | |
Improvements to gate sizing (bug fix).
| -rw-r--r-- | src/map/scl/sclUpsize.c | 10 | 
1 files changed, 6 insertions, 4 deletions
diff --git a/src/map/scl/sclUpsize.c b/src/map/scl/sclUpsize.c index ffdb58d9..5216ed22 100644 --- a/src/map/scl/sclUpsize.c +++ b/src/map/scl/sclUpsize.c @@ -143,7 +143,8 @@ void Abc_SclFindCriticalNodeWindow_rec( SC_Man * p, Abc_Obj_t * pObj, Vec_Int_t          if ( fSlackFan >= 0 )              Abc_SclFindCriticalNodeWindow_rec( p, pNext, vPath, fSlackFan );      } -    Vec_IntPush( vPath, Abc_ObjId(pObj) ); +    if ( Abc_ObjFaninNum(pObj) > 0 ) +        Vec_IntPush( vPath, Abc_ObjId(pObj) );  }  Vec_Int_t * Abc_SclFindCriticalNodeWindow( SC_Man * p, Vec_Int_t * vPathCos, int Window )  { @@ -196,7 +197,7 @@ Vec_Int_t * Abc_SclFindNodesToUpdate( Abc_Obj_t * pPivot, Vec_Int_t ** pvEvals )      // collect fanins, node, and fanouts      vNodes = Vec_IntAlloc( 16 );      Abc_ObjForEachFanin( pPivot, pNext, i ) -        if ( Abc_ObjIsNode(pNext) ) +        if ( Abc_ObjIsNode(pNext) && Abc_ObjFaninNum(pNext) > 0 )              Vec_IntPush( vNodes, Abc_ObjId(pNext) );      Vec_IntPush( vNodes, Abc_ObjId(pPivot) );      Abc_ObjForEachFanout( pPivot, pNext, i ) @@ -539,11 +540,12 @@ void Abc_SclUpsizePerform( SC_Lib * pLib, Abc_Ntk_t * pNtk, int nIters, int Wind      // update for best gates and recompute timing      ABC_SWAP( Vec_Int_t *, p->vGatesBest, p->vGates );      Abc_SclTimeNtkRecompute( p, &p->SumArea, &p->MaxDelay, 0 ); +    if ( fVerbose ) +        Abc_SclUpsizePrint( p, i, Window, nAllPos/i, nAllNodes/i, nAllUpsizes/i, nAllTfos/i, 1 ); +    // report runtime      p->timeTotal = clock() - p->timeTotal;      if ( fVerbose )      { -        Abc_SclUpsizePrint( p, i, Window, nAllPos/i, nAllNodes/i, nAllUpsizes/i, nAllTfos/i, 1 ); -        // report runtime          p->timeOther = p->timeTotal - p->timeCone - p->timeSize - p->timeTime;          ABC_PRTP( "Runtime: Critical path", p->timeCone,  p->timeTotal );          ABC_PRTP( "Runtime: Sizing eval  ", p->timeSize,  p->timeTotal );  | 
