diff options
Diffstat (limited to 'src/base/abci/abcTiming.c')
-rw-r--r-- | src/base/abci/abcTiming.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/base/abci/abcTiming.c b/src/base/abci/abcTiming.c index 3d37265e..d535bc05 100644 --- a/src/base/abci/abcTiming.c +++ b/src/base/abci/abcTiming.c @@ -365,6 +365,54 @@ void Abc_NtkTimeInitialize( Abc_Ntk_t * pNtk, Abc_Ntk_t * pNtkOld ) /**Function************************************************************* + Synopsis [Finalizes the timing manager after setting arr/req times.] + + Description [] + + SideEffects [] + + SeeAlso [] + +***********************************************************************/ +void Abc_NtkTimeScale( Abc_Ntk_t * pNtk, float Scale ) +{ + Abc_Obj_t * pObj; + Abc_Time_t ** ppTimes, * pTime; + int i; + if ( pNtk->pManTime == NULL ) + return; + // arrival + pNtk->pManTime->tArrDef.Fall *= Scale; + pNtk->pManTime->tArrDef.Rise *= Scale; + // departure + if ( pNtk->pManTime->tReqDef.Fall != ABC_INFINITY ) + pNtk->pManTime->tReqDef.Fall *= Scale; + if ( pNtk->pManTime->tReqDef.Rise != ABC_INFINITY ) + pNtk->pManTime->tReqDef.Rise *= Scale; + // set the default timing + ppTimes = (Abc_Time_t **)pNtk->pManTime->vArrs->pArray; + Abc_NtkForEachCi( pNtk, pObj, i ) + { + pTime = ppTimes[pObj->Id]; + if ( Abc_MaxFloat(pTime->Fall, pTime->Rise) != -ABC_INFINITY ) + continue; + pTime->Fall *= Scale; + pTime->Rise *= Scale; + } + // set the default timing + ppTimes = (Abc_Time_t **)pNtk->pManTime->vReqs->pArray; + Abc_NtkForEachCo( pNtk, pObj, i ) + { + pTime = ppTimes[pObj->Id]; + if ( Abc_MaxFloat(pTime->Fall, pTime->Rise) != ABC_INFINITY ) + continue; + pTime->Fall *= Scale; + pTime->Rise *= Scale; + } +} + +/**Function************************************************************* + Synopsis [Prepares the timing manager for delay trace.] Description [] |