mirror of
https://github.com/YosysHQ/abc.git
synced 2026-09-04 00:31:14 +02:00
Improvements to the hierarchy/timing manager.
This commit is contained in:
@@ -907,6 +907,7 @@ extern ABC_DLL void Abc_ManTimeStop( Abc_ManTime_t * p );
|
||||
extern ABC_DLL void Abc_ManTimeDup( Abc_Ntk_t * pNtkOld, Abc_Ntk_t * pNtkNew );
|
||||
extern ABC_DLL void Abc_NtkSetNodeLevelsArrival( Abc_Ntk_t * pNtk );
|
||||
extern ABC_DLL float * Abc_NtkGetCiArrivalFloats( Abc_Ntk_t * pNtk );
|
||||
extern ABC_DLL float * Abc_NtkGetCoRequiredFloats( Abc_Ntk_t * pNtk );
|
||||
extern ABC_DLL Abc_Time_t * Abc_NtkGetCiArrivalTimes( Abc_Ntk_t * pNtk );
|
||||
extern ABC_DLL Abc_Time_t * Abc_NtkGetCoRequiredTimes( Abc_Ntk_t * pNtk );
|
||||
extern ABC_DLL float Abc_NtkDelayTrace( Abc_Ntk_t * pNtk, Abc_Obj_t * pOut, Abc_Obj_t * pIn, int fPrint );
|
||||
|
||||
@@ -123,7 +123,7 @@ Abc_Ntk_t * Abc_NtkIf( Abc_Ntk_t * pNtk, If_Par_t * pPars )
|
||||
|
||||
// get timing information
|
||||
pPars->pTimesArr = Abc_NtkGetCiArrivalFloats(pNtk);
|
||||
pPars->pTimesReq = NULL;
|
||||
pPars->pTimesReq = Abc_NtkGetCoRequiredFloats(pNtk);
|
||||
|
||||
// set the latch paths
|
||||
if ( pPars->fLatchPaths && pPars->pTimesArr )
|
||||
|
||||
+13
-12
@@ -557,18 +557,6 @@ Abc_Time_t * Abc_NtkGetCiArrivalTimes( Abc_Ntk_t * pNtk )
|
||||
p[i] = *Abc_NodeArrival(pNode);
|
||||
return p;
|
||||
}
|
||||
|
||||
/**Function*************************************************************
|
||||
|
||||
Synopsis [Sets the CI node levels according to the arrival info.]
|
||||
|
||||
Description []
|
||||
|
||||
SideEffects []
|
||||
|
||||
SeeAlso []
|
||||
|
||||
***********************************************************************/
|
||||
Abc_Time_t * Abc_NtkGetCoRequiredTimes( Abc_Ntk_t * pNtk )
|
||||
{
|
||||
Abc_Time_t * p;
|
||||
@@ -608,6 +596,19 @@ float * Abc_NtkGetCiArrivalFloats( Abc_Ntk_t * pNtk )
|
||||
p[i] = Abc_NodeArrival(pNode)->Worst;
|
||||
return p;
|
||||
}
|
||||
float * Abc_NtkGetCoRequiredFloats( Abc_Ntk_t * pNtk )
|
||||
{
|
||||
float * p;
|
||||
Abc_Obj_t * pNode;
|
||||
int i;
|
||||
if ( pNtk->pManTime == NULL )
|
||||
return NULL;
|
||||
// set the PO required times
|
||||
p = ABC_CALLOC( float, Abc_NtkCoNum(pNtk) );
|
||||
Abc_NtkForEachPo( pNtk, pNode, i )
|
||||
p[i] = Abc_NodeRequired(pNode)->Worst;
|
||||
return p;
|
||||
}
|
||||
|
||||
|
||||
/**Function*************************************************************
|
||||
|
||||
@@ -712,6 +712,8 @@ void Io_WriteTimingInfo( FILE * pFile, Abc_Ntk_t * pNtk )
|
||||
continue;
|
||||
fprintf( pFile, ".output_required %s %g %g\n", Abc_ObjName(Abc_ObjFanin0(pNode)), pTime->Rise, pTime->Fall );
|
||||
}
|
||||
|
||||
fprintf( pFile, "\n" );
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user