47 int i, j, best_i, temp;
56 for ( i = 0; i < (int)pCut->
nLeaves-1; i++ )
59 for ( j = i+1; j < (int)pCut->
nLeaves; j++ )
60 if ( pPinDelays[pPinPerm[j]] > pPinDelays[pPinPerm[best_i]] )
65 pPinPerm[i] = pPinPerm[best_i];
66 pPinPerm[best_i] = temp;
97 float Delay, DelayCur;
99 int i, Shift, Pin2PinDelay;
109 for ( i = 0; i < (int)pCut->
nLeaves; i++ )
111 DelayCur = pPinDelays[pPinPerm[i]] + pLutDelays[i];
112 Delay =
IF_MAX( Delay, DelayCur );
120 Delay =
IF_MAX( Delay, DelayCur );
133 Delay =
IF_MAX( Delay, DelayCur );
143 Delay =
IF_MAX( Delay, DelayCur + 1.0 );
151 Delay =
IF_MAX( Delay, DelayCur );
187 for ( i = 0; i < (int)pCut->
nLeaves; i++ )
189 Required = ObjRequired - pLutDelays[i];
196 Required = ObjRequired;
226 Required = ObjRequired - (float)Pin2PinDelay;
232 Required = ObjRequired;
257 Abc_Print( 0,
"Delay optimization of latch path is not performed because there is no latches.\n" );
324 Abc_Print( 0,
"Required times are exceeded at %d output%s. The earliest arrival times are used.\n", Counter, Counter > 1 ?
"s":
"" );
393 if ( pObj->
nRefs == 0 )
483 if ( pObj->
nRefs == 0 )
int If_CutSopBalancePinDelays(If_Man_t *p, If_Cut_t *pCut, char *pPerm)
static If_Obj_t * If_ManObj(If_Man_t *p, int i)
void Tim_ManIncrementTravId(Tim_Man_t *p)
DECLARATIONS ///.
static int If_ObjIsAnd(If_Obj_t *pObj)
#define If_ManForEachLatchInput(p, pObj, i)
#define If_CutForEachLeaf(p, pCut, pLeaf, i)
static int If_ObjIsCo(If_Obj_t *pObj)
static char * If_CutPerm(If_Cut_t *pCut)
float pLutDelays[IF_MAX_LUTSIZE+1][IF_MAX_LUTSIZE+1]
float If_ManDelayMax(If_Man_t *p, int fSeq)
static If_Obj_t * If_ObjFanin0(If_Obj_t *pObj)
static int If_ObjIsCi(If_Obj_t *pObj)
static If_Cut_t * If_ObjCutBest(If_Obj_t *pObj)
#define If_CutForEachLeafSeq(p, pCut, pLeaf, Shift, i)
#define If_ManForEachPo(p, pObj, i)
void Tim_ManSetCiRequired(Tim_Man_t *p, int iCi, float Delay)
#define If_ManForEachObjReverse(p, pObj, i)
#define IF_MAX_LUTSIZE
INCLUDES ///.
static int Vec_IntEntry(Vec_Int_t *p, int i)
#define ABC_NAMESPACE_IMPL_END
#define IF_MIN(a, b)
MACRO DEFINITIONS ///.
#define IF_MAX_FUNC_LUTSIZE
int If_CutLutBalancePinDelays(If_Man_t *p, If_Cut_t *pCut, char *pPerm)
float If_CutDelay(If_Man_t *p, If_Obj_t *pObj, If_Cut_t *pCut)
static void Abc_Print(int level, const char *format,...)
static float If_ObjArrTime(If_Obj_t *pObj)
#define ABC_NAMESPACE_IMPL_START
static int Vec_IntSize(Vec_Int_t *p)
#define If_ManForEachCo(p, pObj, i)
static int If_ObjIsConst1(If_Obj_t *pObj)
void If_CutPropagateRequired(If_Man_t *p, If_Obj_t *pObj, If_Cut_t *pCut, float ObjRequired)
ABC_NAMESPACE_IMPL_START void If_CutSortInputPins(If_Man_t *p, If_Cut_t *pCut, int *pPinPerm, float *pPinDelays)
DECLARATIONS ///.
float Tim_ManGetCoRequired(Tim_Man_t *p, int iCo)
static int If_ManCoNum(If_Man_t *p)
void Tim_ManSetCoRequired(Tim_Man_t *p, int iCo, float Delay)
void If_ManComputeRequired(If_Man_t *p)
void If_ManMarkMapping(If_Man_t *p)
void Tim_ManInitPoRequiredAll(Tim_Man_t *p, float Delay)
int If_CutDsdBalancePinDelays(If_Man_t *p, If_Cut_t *pCut, char *pPerm)