Go to the source code of this file.
◆ Map_MatchComputeReqTimes()
Definition at line 219 of file mapperTime.c.
220{
223 unsigned uPhaseTot;
224 int fPinPhase, i;
225 float tDelay;
226
227
230
231
233 for ( i = 0; i < pCut->
nLeaves; i++ )
234 {
235
236 fPinPhase = ((uPhaseTot & (1 << i)) == 0);
238
239
240
242 {
244 if ( ptArrRes->
Rise < tDelay )
245 ptArrRes->
Rise = tDelay;
246 }
247
248
250 {
252 if ( ptArrRes->
Rise < tDelay )
253 ptArrRes->
Rise = tDelay;
254 }
255
256
258 {
260 if ( ptArrRes->
Fall < tDelay )
261 ptArrRes->
Fall = tDelay;
262 }
263
264
266 {
268 if ( ptArrRes->
Fall < tDelay )
269 ptArrRes->
Fall = tDelay;
270 }
271 }
272
274}
struct Map_SuperStruct_t_ Map_Super_t
struct Map_TimeStruct_t_ Map_Time_t
◆ Map_TimeComputeArrivalMax()
DECLARATIONS ///.
CFile****************************************************************
FileName [mapperTime.c]
PackageName [MVSIS 1.3: Multi-valued logic synthesis system.]
Synopsis [Generic technology mapping engine.]
Author [MVSIS Group]
Affiliation [UC Berkeley]
Date [Ver. 2.0. Started - June 1, 2004.]
Revision [
- Id
- mapperTime.c,v 1.3 2005/03/02 02:35:54 alanmi Exp
] FUNCTION DEFINITIONS /// Function*************************************************************
Synopsis [Computes the maximum arrival times.]
Description []
SideEffects []
SeeAlso []
Definition at line 45 of file mapperTime.c.
46{
47 float tReqMax, tReq;
48 int i, fPhase;
49
51 for ( i = 0; i <
p->nOutputs; i++ )
52 {
54 continue;
56 tReq =
Map_Regular(
p->pOutputs[i])->tArrival[fPhase].Worst;
57 tReqMax =
MAP_MAX( tReqMax, tReq );
58 }
59 return tReqMax;
60}
int Map_NodeIsConst(Map_Node_t *p)
#define Map_IsComplement(p)
GLOBAL VARIABLES ///.
◆ Map_TimeComputeRequiredGlobal()
| void Map_TimeComputeRequiredGlobal |
( |
Map_Man_t * | p | ) |
|
Definition at line 385 of file mapperTime.c.
386{
387 int fUseConMan = Scl_ConIsRunning() && Scl_ConHasOutReqs();
389 int fPhase, i;
390
392 if (
p->DelayTarget != -1 )
393 {
394 if (
p->fRequiredGlo >
p->DelayTarget +
p->fEpsilon )
395 {
396 if (
p->fMappingMode == 1 )
397 printf(
"Cannot meet the target required times (%4.2f). Continue anyway.\n",
p->DelayTarget );
398 }
399 else if (
p->fRequiredGlo <
p->DelayTarget -
p->fEpsilon )
400 {
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;
404 }
405 }
406
407 for ( i = 0; i <
p->vMapObjs->nSize; i++ )
408 {
415 }
416
417 for ( i = 0; i <
p->nOutputs; i++ )
418 {
420 ptTime =
Map_Regular(
p->pOutputs[i])->tRequired + fPhase;
421 ptTimeA =
Map_Regular(
p->pOutputs[i])->tArrival + fPhase;
422
423 if ( fUseConMan )
424 {
425 float Value = Scl_ConGetOutReqFloat(i);
426
427 if ( Value > 0 && ptTimeA->
Worst <= Value )
429
430 else if ( Value > 0 && ptTimeA->
Worst > Value )
432
433 else
435 }
436 else
437 {
438
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;
441
442 else if (
p->pOutputRequireds &&
p->pOutputRequireds[i].Worst > 0 && ptTimeA->
Worst >
p->pOutputRequireds[i].Worst )
444
445 else
447 }
448 }
449
451}
ABC_NAMESPACE_IMPL_START float Map_TimeComputeArrivalMax(Map_Man_t *p)
DECLARATIONS ///.
void Map_TimePropagateRequired(Map_Man_t *p)
◆ Map_TimeCutComputeArrival()
| float Map_TimeCutComputeArrival |
( |
Map_Node_t * | pNode, |
|
|
Map_Cut_t * | pCut, |
|
|
int | fPhase, |
|
|
float | tWorstLimit ) |
Function*************************************************************
Synopsis [Computes the arrival times of the cut.]
Description [Computes the arrival times of the cut if it is implemented using the given supergate with the given phase. Uses the constraint-type specification of rise/fall arrival times.]
SideEffects []
SeeAlso []
Definition at line 75 of file mapperTime.c.
76{
82 int fPinPhase;
83 float tDelay, tExtra;
84 int i;
85
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-- )
90 {
91
92 fPinPhase = ((uPhaseTot & (1 << i)) == 0);
94
95
97 {
99 if ( tDelay > tWorstLimit )
101 if ( ptArrRes->
Rise < tDelay )
102 ptArrRes->
Rise = tDelay;
103 }
104
105
107 {
109 if ( tDelay > tWorstLimit )
111 if ( ptArrRes->
Rise < tDelay )
112 ptArrRes->
Rise = tDelay;
113 }
114
115
117 {
119 if ( tDelay > tWorstLimit )
121 if ( ptArrRes->
Fall < tDelay )
122 ptArrRes->
Fall = tDelay;
123 }
124
125
127 {
129 if ( tDelay > tWorstLimit )
131 if ( ptArrRes->
Fall < tDelay )
132 ptArrRes->
Fall = tDelay;
133 }
134 }
135
137 return ptArrRes->
Worst;
138}
struct Map_MatchStruct_t_ Map_Match_t
◆ Map_TimePropagateRequired()
| void Map_TimePropagateRequired |
( |
Map_Man_t * | p | ) |
|
Function*************************************************************
Synopsis [Computes the required times of all nodes.]
Description []
SideEffects []
SeeAlso []
Definition at line 288 of file mapperTime.c.
289{
291
293 int fPhase, k;
294
295
296 for ( k =
p->vMapObjs->nSize - 1; k >= 0; k-- )
297 {
298 pNode =
p->vMapObjs->pArray[k];
300 continue;
301
302
304 {
308 continue;
309 }
310
311
313
315
317
318
320 {
321
322
323 fPhase = (pNode->
pCutBest[1] == NULL);
324
325 if ( pNode->
nRefAct[fPhase] > 0 )
326 {
327
329
330
332
333
334
337 }
338 }
339
340
343
344
346 continue;
347
348
349
354 }
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384}
void Map_TimePropagateRequiredPhase(Map_Man_t *p, Map_Node_t *pNode, int fPhase)
int Map_NodeIsBuf(Map_Node_t *p)
int Map_NodeIsAnd(Map_Node_t *p)
struct Map_NodeStruct_t_ Map_Node_t
◆ Map_TimePropagateRequiredPhase()
Function*************************************************************
Synopsis []
Description []
SideEffects []
SeeAlso []
Definition at line 152 of file mapperTime.c.
153{
157 float tNewReqTime, tExtra;
158 unsigned uPhase;
159 int fPinPhase, i;
160
161 tExtra = pNode->
p->pNodeDelays ? pNode->
p->pNodeDelays[pNode->
Num] : 0;
162
165
168
170
171 for ( i = 0; i < pCut->
nLeaves; i++ )
172 {
173
174 fPinPhase = ((uPhase & (1 << i)) == 0);
177
178
179
180
182 {
185 }
186
187
188
189
191 {
194 }
195
196
197
198
200 {
203 }
204
205
206
207
209 {
212 }
213 }
214
215
216
217
218}
struct Map_CutStruct_t_ Map_Cut_t