From 7c3eab6eb469d4c4324fa900e0249d7ab6f0f35e Mon Sep 17 00:00:00 2001 From: Alan Mishchenko Date: Sat, 4 Apr 2015 16:01:12 +0700 Subject: Properly copying and saving the timing info in &get and &put. --- src/base/abci/abc.c | 6 +++++- src/base/abci/abcTiming.c | 10 ++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) (limited to 'src/base/abci') diff --git a/src/base/abci/abc.c b/src/base/abci/abc.c index 2fd6c633..0e53610d 100644 --- a/src/base/abci/abc.c +++ b/src/base/abci/abc.c @@ -25968,7 +25968,9 @@ int Abc_CommandAbc9Get( Abc_Frame_t * pAbc, int argc, char ** argv ) Abc_Ntk_t * pNtk = pAbc->pNtkCur; Vec_FltFreeP( &pGia->vInArrs ); Vec_FltFreeP( &pGia->vOutReqs ); - pGia->vInArrs = Vec_FltAllocArray( Abc_NtkGetCiArrivalFloats(pNtk), Abc_NtkCiNum(pNtk) ); + pGia->DefInArrs = Abc_NtkReadDefaultArrivalWorst(pNtk); + pGia->DefOutReqs = Abc_NtkReadDefaultRequiredWorst(pNtk); + pGia->vInArrs = Vec_FltAllocArray( Abc_NtkGetCiArrivalFloats(pNtk), Abc_NtkCiNum(pNtk) ); pGia->vOutReqs = Vec_FltAllocArray( Abc_NtkGetCoRequiredFloats(pNtk), Abc_NtkCoNum(pNtk) ); } Abc_FrameUpdateGia( pAbc, pGia ); @@ -26089,6 +26091,8 @@ int Abc_CommandAbc9Put( Abc_Frame_t * pAbc, int argc, char ** argv ) { Abc_Obj_t * pObj; int i; Abc_NtkTimeInitialize( pNtk, NULL ); + Abc_NtkTimeSetDefaultArrival( pNtk, pAbc->pGia->DefInArrs, pAbc->pGia->DefInArrs ); + Abc_NtkTimeSetDefaultRequired( pNtk, pAbc->pGia->DefOutReqs, pAbc->pGia->DefOutReqs ); if ( pAbc->pGia->vInArrs ) Abc_NtkForEachCi( pNtk, pObj, i ) Abc_NtkTimeSetArrival( pNtk, Abc_ObjId(pObj), Vec_FltEntry(pAbc->pGia->vInArrs, i), Vec_FltEntry(pAbc->pGia->vInArrs, i) ); diff --git a/src/base/abci/abcTiming.c b/src/base/abci/abcTiming.c index c3a9d313..bcbedeee 100644 --- a/src/base/abci/abcTiming.c +++ b/src/base/abci/abcTiming.c @@ -90,6 +90,14 @@ Abc_Time_t * Abc_NodeReadRequired( Abc_Obj_t * pNode ) assert( pNode->pNtk->pManTime ); return Abc_NodeRequired(pNode); } +float Abc_NtkReadDefaultArrivalWorst( Abc_Ntk_t * pNtk ) +{ + return 0.5 * pNtk->pManTime->tArrDef.Rise + 0.5 * pNtk->pManTime->tArrDef.Fall; +} +float Abc_NtkReadDefaultRequiredWorst( Abc_Ntk_t * pNtk ) +{ + return 0.5 * pNtk->pManTime->tReqDef.Rise + 0.5 * pNtk->pManTime->tReqDef.Fall; +} float Abc_NodeReadArrivalAve( Abc_Obj_t * pNode ) { return 0.5 * Abc_NodeArrival(pNode)->Rise + 0.5 * Abc_NodeArrival(pNode)->Fall; @@ -531,6 +539,8 @@ void Abc_ManTimeStop( Abc_ManTime_t * p ) ***********************************************************************/ void Abc_ManTimeDup( Abc_Ntk_t * pNtkOld, Abc_Ntk_t * pNtkNew ) { + extern void Abc_NtkTimePrint( Abc_Ntk_t * pNtk ); + Abc_Obj_t * pObj; Abc_Time_t ** ppTimesOld, ** ppTimesNew; int i; -- cgit v1.2.3