summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2012-04-06 13:31:03 -0700
committerAlan Mishchenko <alanmi@berkeley.edu>2012-04-06 13:31:03 -0700
commit2c21e2de0dffc29bc91cc17fecf6401b433836b1 (patch)
tree4b285a1e28acdc9c6163f30db11563bdbbd5c61b
parent5de8e60b9f4a13bcf76922d94eda65985dc3741b (diff)
downloadabc-2c21e2de0dffc29bc91cc17fecf6401b433836b1.tar.gz
abc-2c21e2de0dffc29bc91cc17fecf6401b433836b1.tar.bz2
abc-2c21e2de0dffc29bc91cc17fecf6401b433836b1.zip
Improving printouts of critical path.
-rw-r--r--src/base/abci/abcTiming.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/base/abci/abcTiming.c b/src/base/abci/abcTiming.c
index dc48b7e6..981afcc6 100644
--- a/src/base/abci/abcTiming.c
+++ b/src/base/abci/abcTiming.c
@@ -889,9 +889,11 @@ float Abc_NtkDelayTrace( Abc_Ntk_t * pNtk, Abc_Obj_t * pOut, Abc_Obj_t * pIn, in
}
else
{
- float Slack = 0.0;
+ float Slack = 0.0, SlackAdd;
int k, iFanin, Length = 0;
Abc_Obj_t * pFanin;
+ // check the additional slack
+ SlackAdd = (Abc_NodeRequired(pOut)->Worst == 0.0) ? 0.0 : Abc_NodeRequired(pOut)->Worst - Abc_NodeArrival(Abc_ObjFanin0(pOut))->Worst;
// collect the critical path
Abc_NtkDelayTraceCritPathCollect_rec( vSlacks, Abc_ObjFanin0(pOut), vBest, vPath );
if ( pIn == NULL )
@@ -901,6 +903,7 @@ float Abc_NtkDelayTrace( Abc_Ntk_t * pNtk, Abc_Obj_t * pOut, Abc_Obj_t * pIn, in
if ( Abc_ObjIsNode(pNode) )
Length = Abc_MaxInt( Length, strlen(Mio_GateReadName((Mio_Gate_t *)pNode->pData)) );
// print critical path
+ Abc_NtkLevel( pNtk );
printf( "Critical path from PI \"%s\" to PO \"%s\":\n", Abc_ObjName(pIn), Abc_ObjName(pOut) );
Vec_PtrForEachEntry( Abc_Obj_t *, vPath, pNode, i )
{
@@ -929,10 +932,10 @@ float Abc_NtkDelayTrace( Abc_Ntk_t * pNtk, Abc_Obj_t * pOut, Abc_Obj_t * pIn, in
printf( " " );
printf( " " );
printf( "Arrival =%6.1f. ", Abc_NodeReadArrival(pNode)->Worst );
- printf( "I/O time: (" );
+ printf( "I/O times: (" );
Abc_ObjForEachFanin( pNode, pFanin, k )
printf( "%s%.1f", (k? ", ":""), Abc_NodeReadArrival(pFanin)->Worst );
- printf( " -> %.1f)", Abc_NodeReadArrival(pNode)->Worst + Slack );
+ printf( " -> %.1f)", Abc_NodeReadArrival(pNode)->Worst + Slack + SlackAdd );
}
printf( "\n" );
}