mirror of https://github.com/YosysHQ/abc.git
Properly copying and saving the timing info in &get and &put.
This commit is contained in:
parent
7c3eab6eb4
commit
3a15f34307
|
|
@ -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 );
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue