summaryrefslogtreecommitdiffstats
path: root/src/base/abci
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2015-04-04 16:01:12 +0700
committerAlan Mishchenko <alanmi@berkeley.edu>2015-04-04 16:01:12 +0700
commit7c3eab6eb469d4c4324fa900e0249d7ab6f0f35e (patch)
tree7ee3cfb8d04c3fbdd962ccf6c52a134846414001 /src/base/abci
parente52d3a0c16de062eb7d5558e3ffe7ee006443065 (diff)
downloadabc-7c3eab6eb469d4c4324fa900e0249d7ab6f0f35e.tar.gz
abc-7c3eab6eb469d4c4324fa900e0249d7ab6f0f35e.tar.bz2
abc-7c3eab6eb469d4c4324fa900e0249d7ab6f0f35e.zip
Properly copying and saving the timing info in &get and &put.
Diffstat (limited to 'src/base/abci')
-rw-r--r--src/base/abci/abc.c6
-rw-r--r--src/base/abci/abcTiming.c10
2 files changed, 15 insertions, 1 deletions
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;