summaryrefslogtreecommitdiffstats
path: root/src/base/abci/abcTiming.c
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2015-03-24 19:24:52 +0700
committerAlan Mishchenko <alanmi@berkeley.edu>2015-03-24 19:24:52 +0700
commit53e4946c4383acabefa8e9070cbaae445005b312 (patch)
tree92719120dd7ff37efebefa0dc2756be49c5d440e /src/base/abci/abcTiming.c
parentefdd26f86d3dbbde1626fe6a84304bc700b97479 (diff)
downloadabc-53e4946c4383acabefa8e9070cbaae445005b312.tar.gz
abc-53e4946c4383acabefa8e9070cbaae445005b312.tar.bz2
abc-53e4946c4383acabefa8e9070cbaae445005b312.zip
Trying to reduce delay degradation afer 'map' with user timing.
Diffstat (limited to 'src/base/abci/abcTiming.c')
-rw-r--r--src/base/abci/abcTiming.c48
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 []