57 assert( Abc_NtkPoNum(
p->pNtk) > 0 );
60 SC_Pair * pArr = Abc_SclObjTime(
p, pObj );
61 if ( fMaxArr < pArr->rise ) fMaxArr = pArr->
rise, *pfRise = 1, pPivot = pObj;
62 if ( fMaxArr < pArr->fall ) fMaxArr = pArr->
fall, *pfRise = 0, pPivot = pObj;
65 pPivot = Abc_NtkPo(
p->pNtk, 0);
77 SC_Pair * pArr = Abc_SclObjTime(
p, pFanin );
78 if ( fMaxArr < pArr->rise ) fMaxArr = pArr->
rise, *pfRise = 1, pPivot = pFanin;
79 if ( fMaxArr < pArr->fall ) fMaxArr = pArr->
fall, *pfRise = 0, pPivot = pFanin;
93 if ( fMinSlack > Abc_SclObjGetSlack(
p, pFanin,
p->MaxDelay0 ) )
95 fMinSlack = Abc_SclObjGetSlack(
p, pFanin,
p->MaxDelay0 );
101 pArr = Abc_SclObjTime(
p, pPivot );
102 *pfRise = (pArr->
rise >= pArr->
fall);
117static inline void Abc_SclTimeNodePrint(
SC_Man *
p,
Abc_Obj_t * pObj,
int fRise,
int Length,
float maxDelay )
119 SC_Cell * pCell = Abc_ObjIsNode(pObj) ? Abc_SclObjCell(pObj) : NULL;
120 printf(
"%8d : ", Abc_ObjId(pObj) );
121 printf(
"%d ", Abc_ObjFaninNum(pObj) );
122 printf(
"%4d ", Abc_ObjFanoutNum(pObj) );
123 printf(
"%-*s ", Length, pCell ? pCell->
pName :
"pi" );
124 printf(
"A =%7.2f ", pCell ? pCell->
area : 0.0 );
125 printf(
"D%s =", fRise ?
"r" :
"f" );
126 printf(
"%6.1f", Abc_SclObjTimeMax(
p, pObj) );
127 printf(
"%7.1f ps ", -Abc_AbsFloat(Abc_SclObjTimeOne(
p, pObj, 0) - Abc_SclObjTimeOne(
p, pObj, 1)) );
128 printf(
"S =%6.1f ps ", Abc_SclObjSlewMax(
p, pObj) );
129 printf(
"Cin =%5.1f ff ", pCell ? SC_CellPinCapAve(pCell) : 0.0 );
130 printf(
"Cout =%6.1f ff ", Abc_SclObjLoadMax(
p, pObj) );
131 printf(
"Cmax =%6.1f ff ", pCell ? SC_CellPin(pCell, pCell->
n_inputs)->max_out_cap : 0.0 );
132 printf(
"G =%5d ", pCell ? (
int)(100.0 * Abc_SclObjLoadAve(
p, pObj) / SC_CellPinCapAve(pCell)) : 0 );
138 int fReversePath = 1;
139 int i, nLength = 0, fRise = 0;
141 float maxDelay = Abc_SclObjTimeOne(
p, pPivot, fRise );
142 p->ReportDelay = maxDelay;
144 unsigned int tortoiseIndex = 0;
145 int tortoiseStep = 0;
148 printf(
"WireLoad = \"%s\" ",
p->pWLoadUsed ?
p->pWLoadUsed->pName :
"none" );
149 SetConsoleTextAttribute( GetStdHandle(STD_OUTPUT_HANDLE), 14 );
150 printf(
"Gates =%7d ", Abc_NtkNodeNum(
p->pNtk) );
151 SetConsoleTextAttribute( GetStdHandle(STD_OUTPUT_HANDLE), 7 );
152 printf(
"(%5.1f %%) ", 100.0 * Abc_SclGetBufInvCount(
p->pNtk) / Abc_NtkNodeNum(
p->pNtk) );
153 SetConsoleTextAttribute( GetStdHandle(STD_OUTPUT_HANDLE), 10 );
154 printf(
"Cap =%5.1f ff ",
p->EstLoadAve );
155 SetConsoleTextAttribute( GetStdHandle(STD_OUTPUT_HANDLE), 7 );
156 printf(
"(%5.1f %%) ", Abc_SclGetAverageSize(
p->pNtk) );
157 SetConsoleTextAttribute( GetStdHandle(STD_OUTPUT_HANDLE), 11 );
158 printf(
"Area =%12.2f ", Abc_SclGetTotalArea(
p->pNtk) );
159 SetConsoleTextAttribute( GetStdHandle(STD_OUTPUT_HANDLE), 7 );
161 SetConsoleTextAttribute( GetStdHandle(STD_OUTPUT_HANDLE), 13 );
162 printf(
"Delay =%9.2f ps ", maxDelay );
163 SetConsoleTextAttribute( GetStdHandle(STD_OUTPUT_HANDLE), 7 );
167 Abc_Print( 1,
"WireLoad = \"%s\" ",
p->pWLoadUsed ?
p->pWLoadUsed->pName :
"none" );
168 Abc_Print( 1,
"%sGates =%7d%s ",
"\033[1;33m", Abc_NtkNodeNum(
p->pNtk),
"\033[0m" );
169 Abc_Print( 1,
"(%5.1f %%) ", 100.0 * Abc_SclGetBufInvCount(
p->pNtk) / Abc_NtkNodeNum(
p->pNtk) );
170 Abc_Print( 1,
"%sCap =%5.1f ff%s ",
"\033[1;32m",
p->EstLoadAve,
"\033[0m" );
171 Abc_Print( 1,
"(%5.1f %%) ", Abc_SclGetAverageSize(
p->pNtk) );
172 Abc_Print( 1,
"%sArea =%12.2f%s ",
"\033[1;36m", Abc_SclGetTotalArea(
p->pNtk),
"\033[0m" );
173 Abc_Print( 1,
"(%5.1f %%) ", 100.0 *
Abc_SclCountMinSize(
p->pLib,
p->pNtk, 0) / Abc_NtkNodeNum(
p->pNtk) );
174 Abc_Print( 1,
"%sDelay =%9.2f ps%s ",
"\033[1;35m", maxDelay,
"\033[0m" );
176 Abc_Print( 1,
" \n" );
184 if ( Abc_ObjFaninNum(pObj) > 0 )
185 nLength = Abc_MaxInt( nLength,
strlen(Abc_SclObjCell(pObj)->pName) );
188 if ( Abc_ObjFaninNum(pObj) > 0 )
189 Abc_SclTimeNodePrint(
p, pObj, -1, nLength, maxDelay );
194 int iStart = -1, iEnd = -1;
198 pObj = Abc_ObjFanin0(pPivot);
200 while ( pObj && Abc_ObjIsNode(pObj) )
203 nLength = Abc_MaxInt( nLength, Abc_SclObjCell(pObj) ?
strlen(Abc_SclObjCell(pObj)->pName) : 2 );
211 pObj = Abc_ObjFanin0(pPivot);
214 printf(
"Path%3d --", i-- );
215 Abc_SclTimeNodePrint(
p, pObj, fRise, nLength, maxDelay );
223 vPath = Vec_PtrAlloc( 100 );
224 Vec_PtrPush( vPath, pPivot );
225 pObj = Abc_ObjFanin0(pPivot);
228 Vec_PtrPush( vPath, pObj );
233 tortoiseStep = (tortoiseStep + 1) % 2;
234 tortoiseIndex += tortoiseStep;
236 if(vPath->pArray[tortoiseIndex] == pObj) {
242 printf(
"Path%3d --", Vec_PtrSize(vPath)-1-i );
243 Abc_SclTimeNodePrint(
p, pObj, fRise, nLength, maxDelay );
247 Vec_PtrFree( vPath );
251 if ( pTemp == pPrev )
254 if ( pTemp == pPivot )
256 printf(
"Start-point = pi%0*d. End-point = po%0*d.\n",
257 Abc_Base10Log( Abc_NtkPiNum(
p->pNtk) ), iStart,
258 Abc_Base10Log( Abc_NtkPoNum(
p->pNtk) ), iEnd );
275 SC_Pair * pArrIn = Abc_SclObjTime(
p, pFanin );
276 SC_Pair * pSlewIn = Abc_SclObjSlew(
p, pFanin );
277 SC_Pair * pLoad = Abc_SclObjLoad(
p, pObj );
278 SC_Pair * pArrOut = Abc_SclObjTime(
p, pObj );
279 SC_Pair * pSlewOut = Abc_SclObjSlew(
p, pObj );
280 if (
p->pFuncFanin ) pLoad->
fall +=
p->pFuncFanin(
p, pObj, pFanin, k, 0);
281 if (
p->pFuncFanin ) pLoad->
rise +=
p->pFuncFanin(
p, pObj, pFanin, k, 1);
282 Scl_LibPinArrival( pTime, pArrIn, pSlewIn, pLoad, pArrOut, pSlewOut );
286 SC_Pair * pDepIn = Abc_SclObjDept(
p, pFanin );
287 SC_Pair * pSlewIn = Abc_SclObjSlew(
p, pFanin );
288 SC_Pair * pLoad = Abc_SclObjLoad(
p, pObj );
289 SC_Pair * pDepOut = Abc_SclObjDept(
p, pObj );
290 if (
p->pFuncFanin ) pLoad->
fall +=
p->pFuncFanin(
p, pObj, pFanin, k, 0);
291 if (
p->pFuncFanin ) pLoad->
rise +=
p->pFuncFanin(
p, pObj, pFanin, k, 1);
292 Scl_LibPinDeparture( pTime, pDepIn, pSlewIn, pLoad, pDepOut );
299 SC_PairClean( Abc_SclObjDept(
p, pObj) );
302 if ( Abc_ObjIsCo(pFanout) || Abc_ObjIsLatch(pFanout) )
304 pTime = Scl_CellPinTime( Abc_SclObjCell(pFanout),
Abc_NodeFindFanin(pFanout, pObj) );
311 return (0.5 * Abc_SclObjLoad(
p, pObj)->fall + 0.5 * Abc_SclObjLoad(
p, pObj)->rise) / (
p->EstLoadAve *
p->EstLoadMax);
315 if (
p->pPiDrive != NULL )
317 SC_Pair * pLoad = Abc_SclObjLoad(
p, pObj );
318 SC_Pair * pTime = Abc_SclObjTime(
p, pObj );
319 SC_Pair * pSlew = Abc_SclObjSlew(
p, pObj );
320 Scl_LibHandleInputDriver(
p->pPiDrive, pLoad, pTime, pSlew );
328 SC_Pair * pLoad = Abc_SclObjLoad(
p, pObj );
329 float LoadRise = pLoad->
rise;
330 float LoadFall = pLoad->
fall;
333 float Value =
p->EstLoadMax ? Abc_SclObjLoadValue(
p, pObj ) : 0;
335 if ( Abc_ObjIsCi(pObj) )
338 Abc_SclTimeCi(
p, pObj );
341 if ( Abc_ObjIsCo(pObj) )
345 Abc_SclObjDupFanin(
p, pObj );
346 Vec_FltWriteEntry(
p->vTimesOut, pObj->
iData, Abc_SclObjTimeMax(
p, pObj) );
347 Vec_QueUpdate(
p->vQue, pObj->
iData );
351 assert( Abc_ObjIsNode(pObj) );
353 if (
p->EstLoadMax && Value > 1 )
355 pLoad->
rise =
p->EstLoadAve *
p->EstLoadMax;
356 pLoad->
fall =
p->EstLoadAve *
p->EstLoadMax;
359 SC_Pair * pDepOut = Abc_SclObjDept(
p, pObj );
360 float EstDelta =
p->EstLinear * log( Value );
361 DeptRise = pDepOut->
rise;
362 DeptFall = pDepOut->
fall;
363 pDepOut->
rise += EstDelta;
364 pDepOut->
fall += EstDelta;
369 pCell = Abc_SclObjCell( pObj );
373 pTime = Scl_CellPinTime( pCell, k );
375 Abc_SclDeptFanin(
p, pTime, pObj, pFanin, k );
377 Abc_SclTimeFanin(
p, pTime, pObj, pFanin, k );
379 if (
p->EstLoadMax && Value > 1 )
381 pLoad->
rise = LoadRise;
382 pLoad->
fall = LoadFall;
385 SC_Pair * pDepOut = Abc_SclObjDept(
p, pObj );
386 pDepOut->
rise = DeptRise;
387 pDepOut->
fall = DeptFall;
391 SC_Pair * pArrOut = Abc_SclObjTime(
p, pObj );
392 float EstDelta =
p->EstLinear * log( Value );
393 pArrOut->
rise += EstDelta;
394 pArrOut->
fall += EstDelta;
403 Abc_SclConeClean(
p, vCone );
406 if ( fVerbose && Abc_ObjIsNode(pObj) )
407 printf(
" Updating node %d with gate %s\n", Abc_ObjId(pObj), Abc_SclObjCell(pObj)->pName );
408 if ( fVerbose && Abc_ObjIsNode(pObj) )
409 printf(
" before (%6.1f ps %6.1f ps) ", Abc_SclObjTimeOne(
p, pObj, 1), Abc_SclObjTimeOne(
p, pObj, 0) );
411 if ( fVerbose && Abc_ObjIsNode(pObj) )
412 printf(
"after (%6.1f ps %6.1f ps)\n", Abc_SclObjTimeOne(
p, pObj, 1), Abc_SclObjTimeOne(
p, pObj, 0) );
421 Abc_SclManCleanTime(
p );
429 D = Abc_SclReadMaxDelay(
p );
430 if ( fReverse && DUser > 0 && D < DUser )
433 *pArea = Abc_SclGetTotalArea(
p->pNtk);
455static inline void Abc_SclTimeIncUpdateClean(
SC_Man *
p )
467 Vec_IntClear( vLevel );
472 assert( !Abc_ObjIsLatch(pObj) );
475 Vec_IntPush( Vec_WecEntry(
p->vLevels, Abc_ObjLevel(pObj)), Abc_ObjId(pObj) );
484 if ( !pFanin->
fMarkC && !Abc_ObjIsLatch(pFanin) )
485 Abc_SclTimeIncAddNode(
p, pFanin );
492 if ( !pFanout->
fMarkC && !Abc_ObjIsLatch(pFanout) )
493 Abc_SclTimeIncAddNode(
p, pFanout );
495static inline void Abc_SclTimeIncUpdateArrival(
SC_Man *
p )
501 float E = (float)0.1;
507 if ( Abc_ObjIsCo(pObj) )
509 Abc_SclObjDupFanin(
p, pObj );
510 Vec_FltWriteEntry(
p->vTimesOut, pObj->
iData, Abc_SclObjTimeMax(
p, pObj) );
511 Vec_QueUpdate(
p->vQue, pObj->
iData );
514 pArrOut = Abc_SclObjTime(
p, pObj );
515 pSlewOut = Abc_SclObjSlew(
p, pObj );
516 SC_PairMove( &ArrOut, pArrOut );
517 SC_PairMove( &SlewOut, pSlewOut );
520 if ( !SC_PairEqualE(&ArrOut, pArrOut, E) || !SC_PairEqualE(&SlewOut, pSlewOut, E) )
521 Abc_SclTimeIncAddFanouts(
p, pObj );
524 p->MaxDelay = Abc_SclReadMaxDelay(
p );
526static inline void Abc_SclTimeIncUpdateDeparture(
SC_Man *
p )
531 float E = (float)0.1;
537 pDepOut = Abc_SclObjDept(
p, pObj );
538 SC_PairMove( &DepOut, pDepOut );
539 Abc_SclDeptObj(
p, pObj );
541 if ( !SC_PairEqualE(&DepOut, pDepOut, E) )
542 Abc_SclTimeIncAddFanins(
p, pObj );
545 p->MaxDelay = Abc_SclReadMaxDelay(
p );
553 printf(
"Level of node %d is out of date!\n", i );
559 if ( Vec_IntSize(
p->vChanged) == 0 )
564 Abc_SclTimeIncAddFanins(
p, pObj );
567 Abc_SclTimeIncAddNode(
p, pObj );
569 Vec_IntClear(
p->vChanged );
570 Abc_SclTimeIncUpdateArrival(
p );
571 Abc_SclTimeIncUpdateDeparture(
p );
572 Abc_SclTimeIncUpdateClean(
p );
573 RetValue =
p->nIncUpdates;
579 Vec_IntPush(
p->vChanged, Abc_ObjId(pObj) );
585 if ( LevelNew == (
int)pObj->
Level && Abc_ObjIsNode(pObj) && Abc_ObjFaninNum(pObj) > 0 )
587 pObj->
Level = LevelNew;
618 SC_Pair * pLoad = Abc_SclObjLoad(
p, pObj );
619 pLoad->
rise = pLoad->
fall = MaxLoad;
630 p->pPiDrive = SC_LibCell(
p->pLib, iCell );
632 assert(
p->pPiDrive->n_inputs == 1 );
650 SC_Man *
p = Abc_SclManAlloc( pLib, pNtk );
653 p->EstLoadMax = 0.01 * nTreeCRatio;
664 pNtk->
pWLoadUsed = Abc_UtilStrsav(
p->pWLoadUsed->pName );
670 p->SumArea =
p->SumArea0;
671 p->MaxDelay =
p->MaxDelay0;
692 Abc_SclDumpStats(
p,
"stats.txt", 0 );
712 Abc_SclTimePerformInt( pLib, pNtkNew, nTreeCRatio, fUseWireLoads, fShowAll, fPrintPath, fDumpStats );
737 printf(
"Node %d and its fanin %d have common fanin %d.\n", Abc_ObjId(pObj), Abc_ObjId(pFanin), Abc_ObjId(pTemp) );
758 if ( Abc_ObjIsNode(pFanin) && Abc_ObjFanoutNum(pFanin) == 1 )
773static inline int Abc_ObjIsBuffer(
Abc_Obj_t * pObj ) {
return Abc_ObjIsNode(pObj) && Abc_ObjFaninNum(pObj) == 1; }
779 if ( Abc_ObjIsBuffer(pFanout) )
788 if ( Abc_ObjIsBuffer(pFanout) )
790 return Counter + Abc_ObjIsBuffer(pObj);
800 if ( !Abc_ObjIsBuffer(pObj) )
819 if ( !Abc_ObjIsBuffer(pObj) )
820 return Abc_SclObjTimeMax(
p, pObj);
839 if ( !Abc_ObjIsBuffer(pObj) )
843 Load += 0.5 * Abc_SclObjLoad(
p, pObj)->rise + 0.5 * Abc_SclObjLoad(
p, pObj)->fall;
844 Load -= 0.5 * SC_CellPin(Abc_SclObjCell(pObj), 0)->rise_cap + 0.5 * SC_CellPin(Abc_SclObjCell(pObj), 0)->fall_cap;
854 Load += 0.5 * Abc_SclObjLoad(
p, pObj)->rise + 0.5 * Abc_SclObjLoad(
p, pObj)->fall;
860 for ( i = 0; i < nOffset; i++ )
862 printf(
"%6d: %-16s (%2d:%3d:%3d) ",
865 Abc_ObjFanoutNum(pObj),
870 printf(
"a =%5.2f ", Abc_ObjIsPi(pObj) ? 0 : Abc_SclObjCell(pObj)->area );
872 printf(
"%6.0f ps; ", Abc_SclObjTimeOne(
p, pObj, 1) );
873 printf(
"%6.0f ps) ", Abc_SclObjTimeOne(
p, pObj, 0) );
874 printf(
"l =%5.0f ff ", Abc_SclObjLoadMax(
p, pObj) );
875 printf(
"s =%5.0f ps ", Abc_SclObjSlewMax(
p, pObj) );
876 printf(
"sl =%5.0f ps ", Abc_SclObjSlackMax(
p, pObj,
p->MaxDelay0) );
891 assert( Abc_ObjIsBuffer(pObj) );
893 if ( Abc_ObjIsBuffer(pFanout) )
906 if ( Abc_ObjIsBuffer(pFanout) )
914 int fUseWireLoads = 0;
916 assert( Abc_NtkIsMappedLogic(pNtk) );
struct Abc_Obj_t_ Abc_Obj_t
#define Abc_NtkForEachCo(pNtk, pCo, i)
#define Abc_NtkForEachPo(pNtk, pPo, i)
ABC_DLL Abc_Ntk_t * Abc_NtkDupDfsNoBarBufs(Abc_Ntk_t *pNtk)
#define Abc_NtkForEachObj(pNtk, pObj, i)
ITERATORS ///.
#define Abc_ObjForEachFanin(pObj, pFanin, i)
#define Abc_ObjForEachFanout(pObj, pFanout, i)
ABC_DLL void Abc_ObjPrint(FILE *pFile, Abc_Obj_t *pObj)
struct Abc_Ntk_t_ Abc_Ntk_t
#define Abc_NtkForEachNodeReverse(pNtk, pNode, i)
#define Abc_NtkForEachPi(pNtk, pPi, i)
#define Abc_NtkForEachCi(pNtk, pCi, i)
ABC_DLL void Abc_NtkDelete(Abc_Ntk_t *pNtk)
#define Abc_NtkForEachNode1(pNtk, pNode, i)
ABC_DLL int Abc_ObjLevelNew(Abc_Obj_t *pObj)
#define Abc_NtkForEachObjVec(vIds, pNtk, pObj, i)
ABC_DLL int Abc_NodeFindFanin(Abc_Obj_t *pNode, Abc_Obj_t *pFanin)
#define Abc_NtkForEachNode(pNtk, pNode, i)
#define Abc_NtkForEachNodeReverse1(pNtk, pNode, i)
#define ABC_INFINITY
MACRO DEFINITIONS ///.
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
ABC_DLL float Abc_FrameReadMaxLoad()
ABC_DLL char * Abc_FrameReadDrivingCell()
typedefABC_NAMESPACE_IMPL_START struct Vec_Int_t_ Vec_Int_t
DECLARATIONS ///.
char * Mio_GateReadName(Mio_Gate_t *pGate)
struct Mio_GateStruct_t_ Mio_Gate_t
struct SC_Timing_ SC_Timing
SC_WireLoad * Abc_SclFetchWireLoadModel(SC_Lib *p, char *pName)
SC_WireLoad * Abc_SclFindWireLoadModel(SC_Lib *p, float Area)
int Abc_SclCellFind(SC_Lib *p, char *pName)
void Abc_SclComputeLoad(SC_Man *p)
void Abc_SclTimeNode(SC_Man *p, Abc_Obj_t *pObj, int fDept)
int Abc_SclTimeIncUpdate(SC_Man *p)
void Abc_SclTimeIncUpdateLevel_rec(Abc_Obj_t *pObj)
void Abc_SclPrintBuffers(SC_Lib *pLib, Abc_Ntk_t *pNtk, int fVerbose)
ABC_NAMESPACE_IMPL_START Abc_Obj_t * Abc_SclFindCriticalCo(SC_Man *p, int *pfRise)
DECLARATIONS ///.
void Abc_SclTimeCone(SC_Man *p, Vec_Int_t *vCone)
int Abc_SclCountBufferFanouts(Abc_Obj_t *pObj)
void Abc_SclTimeIncInsert(SC_Man *p, Abc_Obj_t *pObj)
void Abc_SclPrintFaninPairs(SC_Man *p, Abc_Ntk_t *pNtk)
void Abc_SclTimePerformInt(SC_Lib *pLib, Abc_Ntk_t *pNtk, int nTreeCRatio, int fUseWireLoads, int fShowAll, int fPrintPath, int fDumpStats)
int Abc_SclCheckCommonInputs(Abc_Obj_t *pObj, Abc_Obj_t *pFanin)
int Abc_SclCountNonBufferFanouts(Abc_Obj_t *pObj)
int Abc_SclCountNonBufferFanoutsInt(Abc_Obj_t *pObj)
int Abc_SclCountBufferFanoutsInt(Abc_Obj_t *pObj)
void Abc_SclTimePerform(SC_Lib *pLib, Abc_Ntk_t *pNtk, int nTreeCRatio, int fUseWireLoads, int fShowAll, int fPrintPath, int fDumpStats)
void Abc_SclPrintBuffersOne(SC_Man *p, Abc_Obj_t *pObj, int nOffset)
void Abc_SclPrintBuffersInt(SC_Man *p, Abc_Obj_t *pObj, int nOffset)
int Abc_SclHasBufferFanout(Abc_Obj_t *pObj)
float Abc_SclCountNonBufferDelayInt(SC_Man *p, Abc_Obj_t *pObj)
void Abc_SclPrintBufferTrees(SC_Man *p, Abc_Ntk_t *pNtk)
void Abc_SclTimeIncUpdateLevel(Abc_Obj_t *pObj)
float Abc_SclCountNonBufferDelay(SC_Man *p, Abc_Obj_t *pObj)
Abc_Obj_t * Abc_SclFindMostCriticalFanin2(SC_Man *p, int *pfRise, Abc_Obj_t *pNode)
float Abc_SclCountNonBufferLoad(SC_Man *p, Abc_Obj_t *pObj)
float Abc_SclCountNonBufferLoadInt(SC_Man *p, Abc_Obj_t *pObj)
Abc_Obj_t * Abc_SclFindMostCriticalFanin(SC_Man *p, int *pfRise, Abc_Obj_t *pNode)
void Abc_SclTimeIncCheckLevel(Abc_Ntk_t *pNtk)
SC_Man * Abc_SclManStart(SC_Lib *pLib, Abc_Ntk_t *pNtk, int fUseWireLoads, int fDept, float DUser, int nTreeCRatio)
void Abc_SclTimeNtkPrint(SC_Man *p, int fShowAll, int fPrintPath)
void Abc_SclManReadSlewAndLoad(SC_Man *p, Abc_Ntk_t *pNtk)
void Abc_SclTimeNtkRecompute(SC_Man *p, float *pArea, float *pDelay, int fReverse, float DUser)
void Abc_SclMioGates2SclGates(SC_Lib *pLib, Abc_Ntk_t *p)
DECLARATIONS ///.
int Abc_SclCountMinSize(SC_Lib *pLib, Abc_Ntk_t *p, int fUseMax)
int Abc_SclCountNearCriticalNodes(SC_Man *p)
typedefABC_NAMESPACE_HEADER_START struct SC_Man_ SC_Man
INCLUDES ///.
#define Vec_PtrForEachEntryReverse(Type, vVec, pEntry, i)
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
#define Vec_WecForEachLevel(vGlob, vVec, i)
MACRO DEFINITIONS ///.
#define Vec_WecForEachLevelReverse(vGlob, vVec, i)