48 for ( i = 0; i < p->nOutputs; i++ )
53 tReq =
Map_Regular(p->pOutputs[i])->tArrival[fPhase].Worst;
54 tReqMax =
MAP_MAX( tReqMax, tReq );
83 tExtra = pNode->
p->pNodeDelays ? pNode->
p->pNodeDelays[pNode->
Num] : 0;
84 ptArrRes->
Rise = ptArrRes->
Fall = 0.0;
86 for ( i = pCut->
nLeaves - 1; i >= 0; i-- )
89 fPinPhase = ((uPhaseTot & (1 << i)) == 0);
96 if ( tDelay > tWorstLimit )
98 if ( ptArrRes->
Rise < tDelay )
99 ptArrRes->
Rise = tDelay;
106 if ( tDelay > tWorstLimit )
108 if ( ptArrRes->
Rise < tDelay )
109 ptArrRes->
Rise = tDelay;
116 if ( tDelay > tWorstLimit )
118 if ( ptArrRes->
Fall < tDelay )
119 ptArrRes->
Fall = tDelay;
126 if ( tDelay > tWorstLimit )
128 if ( ptArrRes->
Fall < tDelay )
129 ptArrRes->
Fall = tDelay;
134 return ptArrRes->
Worst;
154 float tNewReqTime, tExtra;
158 tExtra = pNode->
p->pNodeDelays ? pNode->
p->pNodeDelays[pNode->
Num] : 0;
168 for ( i = 0; i < pCut->
nLeaves; i++ )
171 fPinPhase = ((uPhase & (1 << i)) == 0);
230 for ( i = 0; i < pCut->
nLeaves; i++ )
233 fPinPhase = ((uPhaseTot & (1 << i)) == 0);
241 if ( ptArrRes->
Rise < tDelay )
242 ptArrRes->
Rise = tDelay;
249 if ( ptArrRes->
Rise < tDelay )
250 ptArrRes->
Rise = tDelay;
257 if ( ptArrRes->
Fall < tDelay )
258 ptArrRes->
Fall = tDelay;
265 if ( ptArrRes->
Fall < tDelay )
266 ptArrRes->
Fall = tDelay;
288 Map_Time_t tReqOutTest, * ptReqOutTest = &tReqOutTest;
293 for ( k = p->vMapObjs->nSize - 1; k >= 0; k-- )
295 pNode = p->vMapObjs->pArray[k];
320 fPhase = (pNode->
pCutBest[1] == NULL);
322 if ( pNode->
nRefAct[fPhase] > 0 )
357 for ( k = p->vMapObjs->nSize - 1; k >= 0; k-- )
359 pNode = p->vMapObjs->pArray[k];
387 if ( p->DelayTarget != -1 )
389 if ( p->fRequiredGlo > p->DelayTarget + p->fEpsilon )
391 if ( p->fMappingMode == 1 )
392 printf(
"Cannot meet the target required times (%4.2f). Continue anyway.\n", p->DelayTarget );
394 else if ( p->fRequiredGlo < p->DelayTarget - p->fEpsilon )
396 if ( p->fMappingMode == 1 && p->fVerbose )
397 printf(
"Relaxing the required times from (%4.2f) to the target (%4.2f).\n", p->fRequiredGlo, p->DelayTarget );
398 p->fRequiredGlo = p->DelayTarget;
402 for ( i = 0; i < p->vMapObjs->nSize; i++ )
412 for ( i = 0; i < p->nOutputs; i++ )
415 ptTime =
Map_Regular(p->pOutputs[i])->tRequired + fPhase;
416 ptTimeA =
Map_Regular(p->pOutputs[i])->tArrival + fPhase;
419 if ( p->pOutputRequireds && p->pOutputRequireds[i].Worst > 0 && ptTimeA->
Worst <= p->pOutputRequireds[i].Worst )
420 ptTime->
Rise = ptTime->
Fall = ptTime->
Worst = p->pOutputRequireds[i].Worst;
422 else if ( p->pOutputRequireds && p->pOutputRequireds[i].Worst > 0 && ptTimeA->
Worst > p->pOutputRequireds[i].Worst )
426 ptTime->
Rise = ptTime->
Fall = ptTime->
Worst = p->fRequiredGlo;
int Map_NodeIsAnd(Map_Node_t *p)
float Map_MatchComputeReqTimes(Map_Cut_t *pCut, int fPhase, Map_Time_t *ptArrRes)
int Map_NodeIsBuf(Map_Node_t *p)
int Map_NodeIsConst(Map_Node_t *p)
#define Map_IsComplement(p)
GLOBAL VARIABLES ///.
#define ABC_NAMESPACE_IMPL_END
#define ABC_NAMESPACE_IMPL_START
typedefABC_NAMESPACE_HEADER_START struct Map_ManStruct_t_ Map_Man_t
INCLUDES ///.
void Map_TimeComputeRequiredGlobal(Map_Man_t *p)
void Map_TimePropagateRequired(Map_Man_t *p)
float Map_TimeCutComputeArrival(Map_Node_t *pNode, Map_Cut_t *pCut, int fPhase, float tWorstLimit)
ABC_NAMESPACE_IMPL_START float Map_TimeComputeArrivalMax(Map_Man_t *p)
DECLARATIONS ///.
void Map_TimePropagateRequiredPhase(Map_Man_t *p, Map_Node_t *pNode, int fPhase)