51 for ( i = 0; i <
p->nOutputs; i++ )
56 tReq =
Map_Regular(
p->pOutputs[i])->tArrival[fPhase].Worst;
57 tReqMax =
MAP_MAX( tReqMax, tReq );
86 tExtra = pNode->
p->pNodeDelays ? pNode->
p->pNodeDelays[pNode->
Num] : 0;
87 ptArrRes->
Rise = ptArrRes->
Fall = 0.0;
89 for ( i = pCut->
nLeaves - 1; i >= 0; i-- )
92 fPinPhase = ((uPhaseTot & (1 << i)) == 0);
99 if ( tDelay > tWorstLimit )
101 if ( ptArrRes->
Rise < tDelay )
102 ptArrRes->
Rise = tDelay;
109 if ( tDelay > tWorstLimit )
111 if ( ptArrRes->
Rise < tDelay )
112 ptArrRes->
Rise = tDelay;
119 if ( tDelay > tWorstLimit )
121 if ( ptArrRes->
Fall < tDelay )
122 ptArrRes->
Fall = tDelay;
129 if ( tDelay > tWorstLimit )
131 if ( ptArrRes->
Fall < tDelay )
132 ptArrRes->
Fall = tDelay;
137 return ptArrRes->
Worst;
157 float tNewReqTime, tExtra;
161 tExtra = pNode->
p->pNodeDelays ? pNode->
p->pNodeDelays[pNode->
Num] : 0;
171 for ( i = 0; i < pCut->
nLeaves; i++ )
174 fPinPhase = ((uPhase & (1 << i)) == 0);
233 for ( i = 0; i < pCut->
nLeaves; i++ )
236 fPinPhase = ((uPhaseTot & (1 << i)) == 0);
244 if ( ptArrRes->
Rise < tDelay )
245 ptArrRes->
Rise = tDelay;
252 if ( ptArrRes->
Rise < tDelay )
253 ptArrRes->
Rise = tDelay;
260 if ( ptArrRes->
Fall < tDelay )
261 ptArrRes->
Fall = tDelay;
268 if ( ptArrRes->
Fall < tDelay )
269 ptArrRes->
Fall = tDelay;
296 for ( k =
p->vMapObjs->nSize - 1; k >= 0; k-- )
298 pNode =
p->vMapObjs->pArray[k];
323 fPhase = (pNode->
pCutBest[1] == NULL);
325 if ( pNode->
nRefAct[fPhase] > 0 )
387 int fUseConMan = Scl_ConIsRunning() && Scl_ConHasOutReqs();
392 if (
p->DelayTarget != -1 )
394 if (
p->fRequiredGlo >
p->DelayTarget +
p->fEpsilon )
396 if (
p->fMappingMode == 1 )
397 printf(
"Cannot meet the target required times (%4.2f). Continue anyway.\n",
p->DelayTarget );
399 else if (
p->fRequiredGlo <
p->DelayTarget -
p->fEpsilon )
401 if (
p->fMappingMode == 1 &&
p->fVerbose )
402 printf(
"Relaxing the required times from (%4.2f) to the target (%4.2f).\n",
p->fRequiredGlo,
p->DelayTarget );
403 p->fRequiredGlo =
p->DelayTarget;
407 for ( i = 0; i <
p->vMapObjs->nSize; i++ )
417 for ( i = 0; i <
p->nOutputs; i++ )
420 ptTime =
Map_Regular(
p->pOutputs[i])->tRequired + fPhase;
421 ptTimeA =
Map_Regular(
p->pOutputs[i])->tArrival + fPhase;
425 float Value = Scl_ConGetOutReqFloat(i);
427 if ( Value > 0 && ptTimeA->
Worst <= Value )
430 else if ( Value > 0 && ptTimeA->
Worst > Value )
439 if (
p->pOutputRequireds &&
p->pOutputRequireds[i].Worst > 0 && ptTimeA->
Worst <=
p->pOutputRequireds[i].Worst )
440 ptTime->
Rise = ptTime->
Fall = ptTime->
Worst =
p->pOutputRequireds[i].Worst;
442 else if (
p->pOutputRequireds &&
p->pOutputRequireds[i].Worst > 0 && ptTimeA->
Worst >
p->pOutputRequireds[i].Worst )
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
float Map_MatchComputeReqTimes(Map_Cut_t *pCut, int fPhase, Map_Time_t *ptArrRes)
void Map_TimePropagateRequiredPhase(Map_Man_t *p, Map_Node_t *pNode, int fPhase)
void Map_TimeComputeRequiredGlobal(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_TimePropagateRequired(Map_Man_t *p)
typedefABC_NAMESPACE_HEADER_START struct Map_ManStruct_t_ Map_Man_t
INCLUDES ///.
int Map_NodeIsBuf(Map_Node_t *p)
int Map_NodeIsConst(Map_Node_t *p)
struct Map_MatchStruct_t_ Map_Match_t
struct Map_CutStruct_t_ Map_Cut_t
struct Map_SuperStruct_t_ Map_Super_t
struct Map_TimeStruct_t_ Map_Time_t
int Map_NodeIsAnd(Map_Node_t *p)
#define Map_IsComplement(p)
GLOBAL VARIABLES ///.
struct Map_NodeStruct_t_ Map_Node_t