DECLARATIONS ///.
Date [Ver. 2.0. Started - June 1, 2004.]
] FUNCTION DEFINITIONS /// Function*************************************************************
Description [The object graph is stored in the mapping manager. First, the AND nodes that fanout into POs are collected in the DFS order. Two preprocessing steps are performed: the k-feasible cuts are computed for each node and the truth tables are computed for each cut. Next, the delay-optimal matches are assigned for each node, followed by several iterations of area recoveryd: using area flow (global optimization) and using exact area at a node (local optimization).]
51{
52 int fShowSwitching = 0;
53 int fUseAreaFlow = 1;
54 int fUseExactArea = !
p->fSwitching;
55 int fUseExactAreaWithPhase = !
p->fSwitching;
57
59
63
64
65
66 clk = Abc_Clock();
68 p->timeCuts = Abc_Clock() - clk;
69
70 clk = Abc_Clock();
72 p->timeTruth = Abc_Clock() - clk;
74
75
77
78 clk = Abc_Clock();
81 return 0;
82 p->timeMatch = Abc_Clock() - clk;
83
87{
88printf( "Delay : %s = %8.2f Flow = %11.1f Area = %11.1f %4.1f %% ",
89 fShowSwitching? "Switch" : "Delay",
93}
95
96 if ( !
p->fAreaRecovery )
97 {
100 return 1;
101 }
102
104
105 clk = Abc_Clock();
106 if ( fUseAreaFlow )
107 {
108
110
113
117{
118printf( "AreaFlow : %s = %8.2f Flow = %11.1f Area = %11.1f %4.1f %% ",
119 fShowSwitching? "Switch" : "Delay",
122 100.0*(
p->AreaBase-
p->AreaFinal)/
p->AreaBase );
123ABC_PRT(
"Time", Abc_Clock() - clk );
124}
125 }
126 p->timeArea += Abc_Clock() - clk;
128
130
131 clk = Abc_Clock();
132 if ( fUseExactArea )
133 {
134
136
139
143{
144printf( "Area : %s = %8.2f Flow = %11.1f Area = %11.1f %4.1f %% ",
145 fShowSwitching? "Switch" : "Delay",
148 100.0*(
p->AreaBase-
p->AreaFinal)/
p->AreaBase );
149ABC_PRT(
"Time", Abc_Clock() - clk );
150}
151 }
152 p->timeArea += Abc_Clock() - clk;
154
156
157 clk = Abc_Clock();
158 if ( fUseExactAreaWithPhase )
159 {
160
162
165
169{
170printf( "Area : %s = %8.2f Flow = %11.1f Area = %11.1f %4.1f %% ",
171 fShowSwitching? "Switch" : "Delay",
174 100.0*(
p->AreaBase-
p->AreaFinal)/
p->AreaBase );
175ABC_PRT(
"Time", Abc_Clock() - clk );
176}
177 }
178 p->timeArea += Abc_Clock() - clk;
180
182
183 clk = Abc_Clock();
185 {
186
188
191
195{
196printf( "Switching: %s = %8.2f Flow = %11.1f Area = %11.1f %4.1f %% ",
197 fShowSwitching? "Switch" : "Delay",
200 100.0*(
p->AreaBase-
p->AreaFinal)/
p->AreaBase );
201ABC_PRT(
"Time", Abc_Clock() - clk );
202}
203
204
206
209
213{
214printf( "Switching: %s = %8.2f Flow = %11.1f Area = %11.1f %4.1f %% ",
215 fShowSwitching? "Switch" : "Delay",
218 100.0*(
p->AreaBase-
p->AreaFinal)/
p->AreaBase );
219ABC_PRT(
"Time", Abc_Clock() - clk );
220}
221 }
222 p->timeArea += Abc_Clock() - clk;
224
225
228 return 1;
229}
void Map_MappingCuts(Map_Man_t *p)
GLOBAL VARIABLES ///.
void Map_MappingSetRefs(Map_Man_t *pMan)
int Map_MappingMatches(Map_Man_t *p)
void Map_TimeComputeRequiredGlobal(Map_Man_t *p)
void Map_MappingPrintOutputArrivals(Map_Man_t *p)
float Map_MappingGetAreaFlow(Map_Man_t *p)
void Map_MappingSetChoiceLevels(Map_Man_t *pMan)
void Map_MappingReportChoices(Map_Man_t *pMan)
void Map_MappingTruths(Map_Man_t *pMan)
FUNCTION DEFINITIONS ///.
float Map_MappingGetSwitching(Map_Man_t *pMan)
float Map_MappingGetArea(Map_Man_t *pMan)