summaryrefslogtreecommitdiffstats
path: root/src/base
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2015-03-15 13:27:07 +0700
committerAlan Mishchenko <alanmi@berkeley.edu>2015-03-15 13:27:07 +0700
commit8453afcf8b44461c518a44c050fd13fe466c303a (patch)
tree3d5b1ebc96752a96ed3b92bc9f5604edeb72fecd /src/base
parent05244daba9bcdb4fca431d3801b3de2b31eb5c0a (diff)
downloadabc-8453afcf8b44461c518a44c050fd13fe466c303a.tar.gz
abc-8453afcf8b44461c518a44c050fd13fe466c303a.tar.bz2
abc-8453afcf8b44461c518a44c050fd13fe466c303a.zip
Enable arrival/required times in &nf.
Diffstat (limited to 'src/base')
-rw-r--r--src/base/abci/abc.c24
-rw-r--r--src/base/abci/abcPrint.c7
2 files changed, 28 insertions, 3 deletions
diff --git a/src/base/abci/abc.c b/src/base/abci/abc.c
index 67dd0e6d..17e15335 100644
--- a/src/base/abci/abc.c
+++ b/src/base/abci/abc.c
@@ -25884,12 +25884,21 @@ int Abc_CommandAbc9Get( Abc_Frame_t * pAbc, int argc, char ** argv )
pGia = Gia_ManFromAig( pAig );
Aig_ManStop( pAig );
}
- // replace
+ // copy names
if ( fNames )
{
pGia->vNamesIn = Abc_NtkCollectCiNames( pAbc->pNtkCur );
pGia->vNamesOut = Abc_NtkCollectCoNames( pAbc->pNtkCur );
}
+ // copy user timing information
+ if ( pAbc->pNtkCur->pManTime != NULL )
+ {
+ 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->vOutReqs = Vec_FltAllocArray( Abc_NtkGetCiArrivalFloats(pNtk), Abc_NtkCoNum(pNtk) );
+ }
Abc_FrameUpdateGia( pAbc, pGia );
return 0;
@@ -26003,6 +26012,19 @@ int Abc_CommandAbc9Put( Abc_Frame_t * pAbc, int argc, char ** argv )
}
}
}
+ // transfer timing information
+ if ( pAbc->pGia->vInArrs || pAbc->pGia->vOutReqs )
+ {
+ Abc_Obj_t * pObj; int i;
+ Abc_NtkTimeInitialize( pNtk, NULL );
+ 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) );
+ if ( pAbc->pGia->vOutReqs )
+ Abc_NtkForEachCo( pNtk, pObj, i )
+ Abc_NtkTimeSetRequired( pNtk, Abc_ObjId(pObj), Vec_FltEntry(pAbc->pGia->vOutReqs, i), Vec_FltEntry(pAbc->pGia->vOutReqs, i) );
+ }
+
// replace the current network
Abc_FrameReplaceCurrentNetwork( pAbc, pNtk );
if ( fStatusClear )
diff --git a/src/base/abci/abcPrint.c b/src/base/abci/abcPrint.c
index a6545085..b69804a2 100644
--- a/src/base/abci/abcPrint.c
+++ b/src/base/abci/abcPrint.c
@@ -286,12 +286,15 @@ void Abc_NtkPrintStats( Abc_Ntk_t * pNtk, int fFactored, int fSaveBest, int fDum
Abc_Print( 1," bdd =%6d", Abc_NtkGetBddNodeNum(pNtk) - nSingles );
else if ( Abc_NtkHasMapping(pNtk) )
{
+ int fHasTimeMan = (int)(pNtk->pManTime != NULL);
assert( pNtk->pManFunc == Abc_FrameReadLibGen() );
Abc_Print( 1," area =%5.2f", Abc_NtkGetMappedArea(pNtk) );
Abc_Print( 1," delay =%5.2f", Abc_NtkDelayTrace(pNtk, NULL, NULL, 0) );
- if ( pNtk->pManTime )
+ if ( !fHasTimeMan && pNtk->pManTime )
+ {
Abc_ManTimeStop( pNtk->pManTime );
- pNtk->pManTime = NULL;
+ pNtk->pManTime = NULL;
+ }
}
else if ( !Abc_NtkHasBlackbox(pNtk) )
{