summaryrefslogtreecommitdiffstats
path: root/src/base/abci/abcTiming.c
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2021-08-12 18:25:00 -0700
committerAlan Mishchenko <alanmi@berkeley.edu>2021-08-12 18:25:00 -0700
commite8ac47641fa410edc5de016478066d104f0beb9c (patch)
tree5b659602a93cb5b1521dede058f9bfcd66736c53 /src/base/abci/abcTiming.c
parent99ab99bfa6d1c2cc11d59af16aa26b273f611674 (diff)
downloadabc-e8ac47641fa410edc5de016478066d104f0beb9c.tar.gz
abc-e8ac47641fa410edc5de016478066d104f0beb9c.tar.bz2
abc-e8ac47641fa410edc5de016478066d104f0beb9c.zip
Suggested changes to collect and pass timing information.
Diffstat (limited to 'src/base/abci/abcTiming.c')
-rw-r--r--src/base/abci/abcTiming.c58
1 files changed, 50 insertions, 8 deletions
diff --git a/src/base/abci/abcTiming.c b/src/base/abci/abcTiming.c
index ae0e7f45..65feb2e8 100644
--- a/src/base/abci/abcTiming.c
+++ b/src/base/abci/abcTiming.c
@@ -24,9 +24,11 @@
#include "base/main/main.h"
#include "map/mio/mio.h"
+
ABC_NAMESPACE_IMPL_START
+
////////////////////////////////////////////////////////////////////////
/// DECLARATIONS ///
////////////////////////////////////////////////////////////////////////
@@ -187,8 +189,11 @@ void Abc_NtkTimeSetDefaultRequired( Abc_Ntk_t * pNtk, float Rise, float Fall )
pNtk->pManTime->tReqDef.Rise = Rise;
pNtk->pManTime->tReqDef.Fall = Fall;
// set the required times for each output
- Abc_NtkForEachCo( pNtk, pObj, i )
- Abc_NtkTimeSetRequired( pNtk, Abc_ObjId(pObj), Rise, Fall );
+ Abc_NtkForEachCo( pNtk, pObj, i ){
+ Abc_NtkTimeSetRequired( pNtk, Abc_ObjId(pObj), Rise, Fall );
+ // printf("Debug: Setting *default* required time on object %d to R %f F %f\n",
+ // Abc_ObjId(pObj),Rise,Fall);
+ }
}
/**Function*************************************************************
@@ -204,6 +209,8 @@ void Abc_NtkTimeSetDefaultRequired( Abc_Ntk_t * pNtk, float Rise, float Fall )
***********************************************************************/
void Abc_NtkTimeSetArrival( Abc_Ntk_t * pNtk, int ObjId, float Rise, float Fall )
{
+ static int debug;
+ debug++;
Vec_Ptr_t * vTimes;
Abc_Time_t * pTime;
if ( pNtk->pManTime == NULL )
@@ -214,9 +221,13 @@ void Abc_NtkTimeSetArrival( Abc_Ntk_t * pNtk, int ObjId, float Rise, float Fall
pTime = (Abc_Time_t *)vTimes->pArray[ObjId];
pTime->Rise = Rise;
pTime->Fall = Fall;
+ // printf("Debug:%d Setting arrival time on object %d to R %f and F %f\n",debug,
+ // ObjId, Rise, Fall);
+
}
void Abc_NtkTimeSetRequired( Abc_Ntk_t * pNtk, int ObjId, float Rise, float Fall )
{
+
Vec_Ptr_t * vTimes;
Abc_Time_t * pTime;
if ( pNtk->pManTime == NULL )
@@ -227,6 +238,10 @@ void Abc_NtkTimeSetRequired( Abc_Ntk_t * pNtk, int ObjId, float Rise, float Fall
pTime = (Abc_Time_t *)vTimes->pArray[ObjId];
pTime->Rise = Rise;
pTime->Fall = Fall;
+ static int debug;
+ debug++;
+ // printf("Debug:%d Setting required time on object %d to R %f and F %f\n",debug,
+ // ObjId, Rise, Fall);
}
/**Function*************************************************************
@@ -480,16 +495,40 @@ Abc_ManTime_t * Abc_ManTimeStart( Abc_Ntk_t * pNtk )
p->vReqs = Vec_PtrAlloc( 0 );
// set default default input=arrivals (assumed to be 0)
// set default default output-requireds (can be either 0 or +infinity, based on the flag)
- p->tReqDef.Rise = fUseZeroDefaultOutputRequired ? 0 : ABC_INFINITY;
- p->tReqDef.Fall = fUseZeroDefaultOutputRequired ? 0 : ABC_INFINITY;
+
+ //AF: hack support the values read in. Not defaults !
+
+ // p->tReqDef.Rise = fUseZeroDefaultOutputRequired ? 0 : ABC_INFINITY;
+ // p->tReqDef.Fall = fUseZeroDefaultOutputRequired ? 0 : ABC_INFINITY;
+
+
+ Abc_Time_t* pTime;
// extend manager
Abc_ManTimeExpand( p, Abc_NtkObjNumMax(pNtk) + 1, 0 );
// set the default timing for CIs
- Abc_NtkForEachCi( pNtk, pObj, i )
- Abc_NtkTimeSetArrival( pNtk, Abc_ObjId(pObj), p->tArrDef.Rise, p->tArrDef.Rise );
+ Abc_NtkForEachCi( pNtk, pObj, i ){
+ Vec_Ptr_t * vTimes;
+ vTimes = pNtk->pManTime->vArrs;
+ pTime = (Abc_Time_t *)vTimes->pArray[Abc_ObjId(pObj)];
+ if (pTime){
+ p->tArrDef.Fall = pTime -> Fall;
+ p->tArrDef.Rise = pTime -> Rise;
+ }
+
+ Abc_NtkTimeSetArrival( pNtk, Abc_ObjId(pObj), p->tArrDef.Rise, p->tArrDef.Rise );
+ }
+
// set the default timing for COs
- Abc_NtkForEachCo( pNtk, pObj, i )
- Abc_NtkTimeSetRequired( pNtk, Abc_ObjId(pObj), p->tReqDef.Rise, p->tReqDef.Rise );
+ Abc_NtkForEachCo( pNtk, pObj, i ){
+ Vec_Ptr_t * vTimes;
+ vTimes = pNtk->pManTime->vArrs;
+ pTime = (Abc_Time_t *)vTimes->pArray[Abc_ObjId(pObj)];
+ if (pTime){
+ p->tReqDef.Fall = pTime -> Fall;
+ p->tReqDef.Rise = pTime -> Rise;
+ }
+ Abc_NtkTimeSetRequired( pNtk, Abc_ObjId(pObj), p->tReqDef.Rise, p->tReqDef.Rise );
+ }
return p;
}
@@ -571,6 +610,9 @@ void Abc_ManTimeDup( Abc_Ntk_t * pNtkOld, Abc_Ntk_t * pNtkNew )
pNtkNew->pManTime->tOutLoad = ABC_ALLOC( Abc_Time_t, Abc_NtkCiNum(pNtkOld) );
memcpy( pNtkNew->pManTime->tOutLoad, pNtkOld->pManTime->tOutLoad, sizeof(Abc_Time_t) * Abc_NtkCoNum(pNtkOld) );
}
+
+ printf("State of abc timing manager\n");
+ Abc_NtkTimePrint(pNtkNew);
}
/**Function*************************************************************