Commit 3a15f343 by Alan Mishchenko

Properly copying and saving the timing info in &get and &put.

parent 7c3eab6e
...@@ -674,62 +674,59 @@ int Io_NtkWriteNodeSubckt( FILE * pFile, Abc_Obj_t * pNode, int Length ) ...@@ -674,62 +674,59 @@ int Io_NtkWriteNodeSubckt( FILE * pFile, Abc_Obj_t * pNode, int Length )
void Io_WriteTimingInfo( FILE * pFile, Abc_Ntk_t * pNtk ) void Io_WriteTimingInfo( FILE * pFile, Abc_Ntk_t * pNtk )
{ {
Abc_Obj_t * pNode; Abc_Obj_t * pNode;
Abc_Time_t * pTime, * pTimeDef; Abc_Time_t * pTime, * pTimeDefIn, * pTimeDefOut;
int i; int i;
if ( pNtk->pManTime == NULL ) if ( pNtk->pManTime == NULL )
return; return;
fprintf( pFile, "\n" ); fprintf( pFile, "\n" );
if ( pNtk->AndGateDelay != 0.0 ) if ( pNtk->AndGateDelay != 0.0 )
fprintf( pFile, ".and_gate_delay %g\n", pNtk->AndGateDelay ); fprintf( pFile, ".and_gate_delay %g\n", pNtk->AndGateDelay );
pTimeDefIn = Abc_NtkReadDefaultArrival( pNtk );
pTimeDef = Abc_NtkReadDefaultArrival( pNtk ); if ( pTimeDefIn->Rise != 0.0 || pTimeDefIn->Fall != 0.0 )
if ( pTimeDef->Rise != 0.0 || pTimeDef->Fall != 0.0 ) fprintf( pFile, ".default_input_arrival %g %g\n", pTimeDefIn->Rise, pTimeDefIn->Fall );
fprintf( pFile, ".default_input_arrival %g %g\n", pTimeDef->Rise, pTimeDef->Fall ); pTimeDefOut = Abc_NtkReadDefaultRequired( pNtk );
pTimeDef = Abc_NtkReadDefaultRequired( pNtk ); if ( pTimeDefOut->Rise != ABC_INFINITY || pTimeDefOut->Fall != ABC_INFINITY )
if ( pTimeDef->Rise != ABC_INFINITY || pTimeDef->Fall != ABC_INFINITY ) fprintf( pFile, ".default_output_required %g %g\n", pTimeDefOut->Rise, pTimeDefOut->Fall );
fprintf( pFile, ".default_output_required %g %g\n", pTimeDef->Rise, pTimeDef->Fall );
fprintf( pFile, "\n" ); fprintf( pFile, "\n" );
Abc_NtkForEachPi( pNtk, pNode, i ) Abc_NtkForEachPi( pNtk, pNode, i )
{ {
pTime = Abc_NodeReadArrival(pNode); pTime = Abc_NodeReadArrival(pNode);
if ( pTime->Rise == pTimeDef->Rise && pTime->Fall == pTimeDef->Fall ) if ( pTime->Rise == pTimeDefIn->Rise && pTime->Fall == pTimeDefIn->Fall )
continue; continue;
fprintf( pFile, ".input_arrival %s %g %g\n", Abc_ObjName(Abc_ObjFanout0(pNode)), pTime->Rise, pTime->Fall ); fprintf( pFile, ".input_arrival %s %g %g\n", Abc_ObjName(Abc_ObjFanout0(pNode)), pTime->Rise, pTime->Fall );
} }
Abc_NtkForEachPo( pNtk, pNode, i ) Abc_NtkForEachPo( pNtk, pNode, i )
{ {
pTime = Abc_NodeReadRequired(pNode); pTime = Abc_NodeReadRequired(pNode);
if ( pTime->Rise == pTimeDef->Rise && pTime->Fall == pTimeDef->Fall ) if ( pTime->Rise == pTimeDefOut->Rise && pTime->Fall == pTimeDefOut->Fall )
continue; continue;
fprintf( pFile, ".output_required %s %g %g\n", Abc_ObjName(Abc_ObjFanin0(pNode)), pTime->Rise, pTime->Fall ); fprintf( pFile, ".output_required %s %g %g\n", Abc_ObjName(Abc_ObjFanin0(pNode)), pTime->Rise, pTime->Fall );
} }
fprintf( pFile, "\n" ); fprintf( pFile, "\n" );
pTimeDefIn = Abc_NtkReadDefaultInputDrive( pNtk );
pTimeDef = Abc_NtkReadDefaultInputDrive( pNtk ); if ( pTimeDefIn->Rise != 0.0 || pTimeDefIn->Fall != 0.0 )
if ( pTimeDef->Rise != 0.0 || pTimeDef->Fall != 0.0 ) fprintf( pFile, ".default_input_drive %g %g\n", pTimeDefIn->Rise, pTimeDefIn->Fall );
fprintf( pFile, ".default_input_drive %g %g\n", pTimeDef->Rise, pTimeDef->Fall );
if ( Abc_NodeReadInputDrive( pNtk, 0 ) ) if ( Abc_NodeReadInputDrive( pNtk, 0 ) )
Abc_NtkForEachPi( pNtk, pNode, i ) Abc_NtkForEachPi( pNtk, pNode, i )
{ {
pTime = Abc_NodeReadInputDrive( pNtk, i ); pTime = Abc_NodeReadInputDrive( pNtk, i );
if ( pTime->Rise == pTimeDef->Rise && pTime->Fall == pTimeDef->Fall ) if ( pTime->Rise == pTimeDefIn->Rise && pTime->Fall == pTimeDefIn->Fall )
continue; continue;
fprintf( pFile, ".input_drive %s %g %g\n", Abc_ObjName(Abc_ObjFanout0(pNode)), pTime->Rise, pTime->Fall ); fprintf( pFile, ".input_drive %s %g %g\n", Abc_ObjName(Abc_ObjFanout0(pNode)), pTime->Rise, pTime->Fall );
} }
pTimeDef = Abc_NtkReadDefaultOutputLoad( pNtk ); pTimeDefOut = Abc_NtkReadDefaultOutputLoad( pNtk );
if ( pTimeDef->Rise != 0.0 || pTimeDef->Fall != 0.0 ) if ( pTimeDefOut->Rise != 0.0 || pTimeDefOut->Fall != 0.0 )
fprintf( pFile, ".default_output_load %g %g\n", pTimeDef->Rise, pTimeDef->Fall ); fprintf( pFile, ".default_output_load %g %g\n", pTimeDefOut->Rise, pTimeDefOut->Fall );
if ( Abc_NodeReadOutputLoad( pNtk, 0 ) ) if ( Abc_NodeReadOutputLoad( pNtk, 0 ) )
Abc_NtkForEachPo( pNtk, pNode, i ) Abc_NtkForEachPo( pNtk, pNode, i )
{ {
pTime = Abc_NodeReadOutputLoad( pNtk, i ); pTime = Abc_NodeReadOutputLoad( pNtk, i );
if ( pTime->Rise == pTimeDef->Rise && pTime->Fall == pTimeDef->Fall ) if ( pTime->Rise == pTimeDefOut->Rise && pTime->Fall == pTimeDefOut->Fall )
continue; continue;
fprintf( pFile, ".output_load %s %g %g\n", Abc_ObjName(Abc_ObjFanin0(pNode)), pTime->Rise, pTime->Fall ); fprintf( pFile, ".output_load %s %g %g\n", Abc_ObjName(Abc_ObjFanin0(pNode)), pTime->Rise, pTime->Fall );
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment