Go to the source code of this file.
◆ Abc_FlowRetime_ConstrainConserv()
| void Abc_FlowRetime_ConstrainConserv |
( |
Abc_Ntk_t * | pNtk | ) |
|
Function*************************************************************
Synopsis [Marks nodes with conservative constraints.]
Description []
SideEffects []
SeeAlso []
Definition at line 90 of file fretTime.c.
90 {
92 int i;
93 void *pArray;
94
95
96 pManMR->nExactConstraints = 0;
97 while( Vec_PtrSize(
pManMR->vExactNodes )) {
99
101 pArray = Vec_PtrReleaseArray(
FTIMEEDGES(pObj) );
103 }
104 }
105
106#if !defined(IGNORE_TIMING)
108 Abc_FlowRetime_ConstrainConserv_forw(pNtk);
109 } else {
110 Abc_FlowRetime_ConstrainConserv_back(pNtk);
111 }
112#endif
113
116}
struct Abc_Obj_t_ Abc_Obj_t
#define Abc_NtkForEachObj(pNtk, pObj, i)
ITERATORS ///.
◆ Abc_FlowRetime_ConstrainExact()
| void Abc_FlowRetime_ConstrainExact |
( |
Abc_Obj_t * | pObj | ) |
|
Function*************************************************************
Synopsis [Introduces exact timing constraints for a node.]
Description []
SideEffects []
SeeAlso []
Definition at line 407 of file fretTime.c.
407 {
408
410 pManMR->nConservConstraints--;
412 }
413
414#if !defined(IGNORE_TIMING)
416 Abc_FlowRetime_ConstrainExact_forw(pObj);
417 } else {
418 Abc_FlowRetime_ConstrainExact_back(pObj);
419 }
420#endif
421}
◆ Abc_FlowRetime_ConstrainExact_back_rec()
| void Abc_FlowRetime_ConstrainExact_back_rec |
( |
Abc_Obj_t * | pObj, |
|
|
Vec_Ptr_t * | vNodes, |
|
|
int | latch ) |
Definition at line 497 of file fretTime.c.
497 {
499 int i;
500
501
502 if (Abc_ObjIsLatch(pObj)) {
503 if (latch) return;
504 latch = 1;
505 }
506
507
508 if (!latch) {
511 } else {
514 }
515
516
519 }
520
521
523 Vec_PtrPush(vNodes, Abc_ObjNotCond(pObj, latch));
524}
#define Abc_ObjForEachFanout(pObj, pFanout, i)
void Abc_FlowRetime_ConstrainExact_back_rec(Abc_Obj_t *pObj, Vec_Ptr_t *vNodes, int latch)
◆ Abc_FlowRetime_ConstrainExact_forw_rec()
| void Abc_FlowRetime_ConstrainExact_forw_rec |
( |
Abc_Obj_t * | pObj, |
|
|
Vec_Ptr_t * | vNodes, |
|
|
int | latch ) |
Definition at line 423 of file fretTime.c.
423 {
425 int i;
426
427
428 if (Abc_ObjIsLatch(pObj)) {
429 if (latch) return;
430 latch = 1;
431 }
432
433
434 if (!latch) {
437 } else {
440 }
441
442
445 }
446
447
449 Vec_PtrPush(vNodes, Abc_ObjNotCond(pObj, latch));
450}
#define Abc_ObjForEachFanin(pObj, pFanin, i)
void Abc_FlowRetime_ConstrainExact_forw_rec(Abc_Obj_t *pObj, Vec_Ptr_t *vNodes, int latch)
◆ Abc_FlowRetime_ConstrainExactAll()
| void Abc_FlowRetime_ConstrainExactAll |
( |
Abc_Ntk_t * | pNtk | ) |
|
Function*************************************************************
Synopsis [Introduces all exact timing constraints in a network]
Description []
SideEffects []
SeeAlso []
Definition at line 584 of file fretTime.c.
584 {
585 int i;
587 void *pArray;
588
589
592 pArray = Vec_PtrReleaseArray(
FTIMEEDGES(pObj) );
594 }
595 pManMR->nExactConstraints = 0;
596
597
602}
void Abc_FlowRetime_ConstrainExact(Abc_Obj_t *pObj)
◆ Abc_FlowRetime_FreeTiming()
| void Abc_FlowRetime_FreeTiming |
( |
Abc_Ntk_t * | pNtk | ) |
|
Function*************************************************************
Synopsis [Deallocates exact constraints.]
Description []
SideEffects []
SeeAlso []
Definition at line 617 of file fretTime.c.
617 {
619 void *pArray;
620
621 while( Vec_PtrSize(
pManMR->vExactNodes )) {
623
625 pArray = Vec_PtrReleaseArray(
FTIMEEDGES(pObj) );
627 }
628 }
629
630 Vec_PtrFree(
pManMR->vExactNodes);
632}
◆ Abc_FlowRetime_InitTiming()
| void Abc_FlowRetime_InitTiming |
( |
Abc_Ntk_t * | pNtk | ) |
|
FUNCTION DEFINITIONS ///.
Function*************************************************************
Synopsis [Initializes timing]
Description []
SideEffects []
SeeAlso []
Definition at line 67 of file fretTime.c.
67 {
68
69 pManMR->nConservConstraints =
pManMR->nExactConstraints = 0;
70
71 pManMR->vExactNodes = Vec_PtrAlloc(1000);
72
76}
#define ABC_ALLOC(type, num)
typedefABC_NAMESPACE_HEADER_START struct Vec_Ptr_t_ Vec_Ptr_t
INCLUDES ///.
◆ Abc_FlowRetime_RefineConstraints()
| int Abc_FlowRetime_RefineConstraints |
( |
| ) |
|
Function*************************************************************
Synopsis [Main timing-constrained routine.]
Description [Refines constraints that are limiting area improvement. These are identified by computing the min-cuts both with and without the conservative constraints: these two situation represent an over- and under-constrained version of the timing.]
SideEffects []
SeeAlso []
Definition at line 693 of file fretTime.c.
693 {
695 int i, flow, count = 0;
697 int maxTighten = 99999;
698
699 vprintf(
"\t\tsubiter %d : constraints = {cons, exact} = %d, %d\n",
701
702
704 vprintf(
"\t\trefinement: over ");
705 fflush(stdout);
708
709
714 } else {
718 }
719
720 if (
pManMR->fConservTimingOnly) {
722 return 0;
723 }
724
725
729 fflush(stdout);
731 vprintf(
"%d refined nodes = ", flow);
732 fflush(stdout);
733
734
740 count < maxTighten) {
741 count++;
743 }
745 }
746 } else {
751 count < maxTighten) {
752 count++;
754 }
756 }
757 }
758
760
761 return (count > 0);
762}
struct Abc_Ntk_t_ Abc_Ntk_t
void Abc_FlowRetime_ClearFlows(int fClearAll)
int Abc_FlowRetime_PushFlows(Abc_Ntk_t *pNtk, int fVerbose)
◆ trace2()
Definition at line 39 of file fretTime.c.
39 {
41 int i;
42
47 break;
48 }
49}
void trace2(Abc_Obj_t *pObj)
void print_node(Abc_Obj_t *pObj)