77 int nCofs, i, k, nSkip;
108 for ( i = 0; i < nCofs; i++ )
133 for ( nSkip = (1<<k), i = 0; i < nCofs; i += 2*nSkip )
144 pAig->pEquivs[pAnd->
Id] = pTemp;
161 float pPinDelays[32];
164 unsigned uResult = 0;
165 float tRequired, * pDelays;
168 if ( pLutLib == NULL )
187 uResult |= (1 << pPinPerm[k]);
211 float tDelta, tArrival;
212 int i, k, k2,
Counter, CounterRes, nTimeCris;
213 unsigned * puTCEdges;
225 tDelta = fUseLutLib ? tArrival*Percentage/100.0 : 1.0;
228 printf(
"Max delay = %.2f. Delta = %.2f. ", tArrival, tDelta );
229 printf(
"Using %s model. ", fUseLutLib?
"LUT library" :
"unit-delay" );
231 printf(
"Percentage = %d. ", Percentage );
245 Counter = CounterRes = 0;
253 printf(
"Edges: Total = %7d. 0-slack = %7d. Critical = %7d. Ratio = %4.2f\n",
262 Counter = CounterRes = 0;
272 if ( !
Nwk_ObjIsCi(pFanin) && (puTCEdges[pNode->Id] & (1<<k)) )
274 if ( !fVeryVerbose && nTimeCris == 0 )
282 if ( !
Nwk_ObjIsCi(pFanin) && (puTCEdges[pNode->Id] & (1<<k)) )
284 if ( puTCEdges[pFanin->Id] & (1<<k2) )
304 printf(
"%5d Node %5d : %d %2d %2d ", Counter, pNode->Id,
307 printf(
"%d(%.2f)%s ", pFanin->Id,
Nwk_ObjSlack(pFanin), (puTCEdges[pNode->Id] & (1<<k))?
"*":
"" );
348 printf(
"Nodes: Total = %7d. 0-slack = %7d. Workable = %7d. Ratio = %4.2f\n",
349 Nwk_ManNodeNum(pNtk), Counter, CounterRes, Counter? 1.0*CounterRes/Counter : 0.0 );
356 pAig->pEquivs[pAnd->
Id] = NULL;
static int Nwk_ObjIsCi(Nwk_Obj_t *p)
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
typedefABC_NAMESPACE_HEADER_START struct Aig_Man_t_ Aig_Man_t
INCLUDES ///.
typedefABC_NAMESPACE_HEADER_START struct Nwk_Obj_t_ Nwk_Obj_t
INCLUDES ///.
Aig_Man_t * Nwk_ManSpeedup(Nwk_Man_t *pNtk, int fUseLutLib, int Percentage, int Degree, int fVerbose, int fVeryVerbose)
static float Nwk_ObjSlack(Nwk_Obj_t *pObj)
void Aig_ManStop(Aig_Man_t *p)
static int Vec_PtrPushUnique(Vec_Ptr_t *p, void *Entry)
static int Aig_ObjIsTravIdCurrent(Aig_Man_t *p, Aig_Obj_t *pObj)
static Aig_Obj_t * Aig_ObjFanin0(Aig_Obj_t *pObj)
Aig_Man_t * Aig_ManDupDfs(Aig_Man_t *p)
static int Aig_IsComplement(Aig_Obj_t *p)
static Aig_Obj_t * Aig_Regular(Aig_Obj_t *p)
ABC_DLL Aig_Man_t * Nwk_ManStrash(Nwk_Man_t *p)
float pLutDelays[IF_MAX_LUTSIZE+1][IF_MAX_LUTSIZE+1]
static void Vec_PtrPush(Vec_Ptr_t *p, void *Entry)
#define ABC_ALLOC(type, num)
static Aig_Obj_t * Aig_ObjFanin1(Aig_Obj_t *pObj)
static int Vec_PtrSize(Vec_Ptr_t *p)
static void Aig_ObjSetTravIdCurrent(Aig_Man_t *p, Aig_Obj_t *pObj)
static int Nwk_ObjFaninNum(Nwk_Obj_t *p)
Aig_Obj_t * Aig_And(Aig_Man_t *p, Aig_Obj_t *p0, Aig_Obj_t *p1)
int Aig_ManChoiceLevel(Aig_Man_t *p)
void Aig_ManIncrementTravId(Aig_Man_t *p)
DECLARATIONS ///.
static int Aig_ObjIsNode(Aig_Obj_t *pObj)
static float Nwk_ObjArrival(Nwk_Obj_t *pObj)
static int Aig_WordCountOnes(unsigned uWord)
#define Aig_ManForEachNode(p, pObj, i)
void Aig_ManSpeedupNode(Nwk_Man_t *pNtk, Aig_Man_t *pAig, Nwk_Obj_t *pNode, Vec_Ptr_t *vLeaves, Vec_Ptr_t *vTimes)
#define ABC_NAMESPACE_IMPL_END
ABC_DLL void Nwk_ManDelayTraceSortPins(Nwk_Obj_t *pNode, int *pPinPerm, float *pPinDelays)
static Aig_Obj_t * Aig_ObjEquiv(Aig_Man_t *p, Aig_Obj_t *pObj)
static Aig_Obj_t * Aig_ObjChild1Copy(Aig_Obj_t *pObj)
Tim_Man_t * Tim_ManDup(Tim_Man_t *p, int fUnitDelay)
void Tim_ManStop(Tim_Man_t *p)
static Aig_Obj_t * Aig_ObjChild0Copy(Aig_Obj_t *pObj)
static void Vec_PtrWriteEntry(Vec_Ptr_t *p, int i, void *Entry)
static int Aig_ManObjNumMax(Aig_Man_t *p)
static Aig_Obj_t * Aig_ManConst1(Aig_Man_t *p)
#define ABC_NAMESPACE_IMPL_START
static void * Vec_PtrEntry(Vec_Ptr_t *p, int i)
Aig_Obj_t * Aig_Mux(Aig_Man_t *p, Aig_Obj_t *pC, Aig_Obj_t *p1, Aig_Obj_t *p0)
static Vec_Ptr_t * Vec_PtrAlloc(int nCap)
FUNCTION DEFINITIONS ///.
unsigned Nwk_ManDelayTraceTCEdges(Nwk_Man_t *pNtk, Nwk_Obj_t *pNode, float tDelta, int fUseLutLib)
static Nwk_Obj_t * Nwk_ObjFanin(Nwk_Obj_t *p, int i)
#define Nwk_ObjForEachFanin(pObj, pFanin, i)
static int Nwk_ManObjNumMax(Nwk_Man_t *p)
int Aig_ObjCheckTfi(Aig_Man_t *p, Aig_Obj_t *pNew, Aig_Obj_t *pOld)
ABC_DLL float Nwk_ManDelayTraceLut(Nwk_Man_t *pNtk)
ABC_DLL int Nwk_ManGetTotalFanins(Nwk_Man_t *pNtk)
static int Nwk_ManNodeNum(Nwk_Man_t *p)
static void Vec_PtrClear(Vec_Ptr_t *p)
typedefABC_NAMESPACE_HEADER_START struct Tim_Man_t_ Tim_Man_t
INCLUDES ///.
static float Nwk_ObjRequired(Nwk_Obj_t *pObj)
static int Aig_ObjRefs(Aig_Obj_t *pObj)
ABC_NAMESPACE_IMPL_START int Aig_ManSpeedupNode_rec(Aig_Man_t *pAig, Aig_Obj_t *pNode, Vec_Ptr_t *vNodes)
DECLARATIONS ///.
static Aig_Obj_t * Aig_NotCond(Aig_Obj_t *p, int c)
#define Vec_PtrForEachEntry(Type, vVec, pEntry, i)
MACRO DEFINITIONS ///.
static int Aig_ObjIsCi(Aig_Obj_t *pObj)
static void Vec_PtrFree(Vec_Ptr_t *p)
#define Nwk_ManForEachNode(p, pObj, i)