|
19 | 19 | #include "Python.h" |
20 | 20 | #endif |
21 | 21 |
|
| 22 | +#include "ant/AntennaChecker.hh" |
22 | 23 | #include "ant/MakeAntennaChecker.hh" |
| 24 | +#include "cgt/ClockGating.h" |
23 | 25 | #include "cgt/MakeClockGating.h" |
24 | 26 | #include "cts/MakeTritoncts.h" |
| 27 | +#include "cts/TritonCTS.h" |
25 | 28 | #include "db_sta/MakeDbSta.hh" |
26 | 29 | #include "db_sta/dbNetwork.hh" |
27 | 30 | #include "db_sta/dbReadVerilog.hh" |
28 | 31 | #include "db_sta/dbSta.hh" |
| 32 | +#include "dft/Dft.hh" |
29 | 33 | #include "dft/MakeDft.hh" |
30 | 34 | #include "dpl/MakeOpendp.h" |
| 35 | +#include "dpl/Opendp.h" |
| 36 | +#include "dst/Distributed.h" |
31 | 37 | #include "dst/MakeDistributed.h" |
32 | 38 | #include "est/EstimateParasitics.h" |
33 | 39 | #include "est/MakeEstimateParasitics.h" |
34 | 40 | #include "exa/MakeExample.h" |
| 41 | +#include "exa/example.h" |
| 42 | +#include "fin/Finale.h" |
35 | 43 | #include "fin/MakeFinale.h" |
36 | 44 | #include "gpl/MakeReplace.h" |
| 45 | +#include "gpl/Replace.h" |
37 | 46 | #include "grt/GlobalRouter.h" |
38 | 47 | #include "grt/MakeGlobalRouter.h" |
39 | 48 | #include "gui/MakeGui.h" |
40 | 49 | #include "ifp/MakeInitFloorplan.hh" |
41 | 50 | #include "mpl/MakeMacroPlacer.h" |
| 51 | +#include "mpl/rtl_mp.h" |
42 | 52 | #include "odb/3dblox.h" |
43 | 53 | #include "odb/MakeOdb.h" |
44 | 54 | #include "odb/cdl.h" |
|
50 | 60 | #include "ord/InitOpenRoad.hh" |
51 | 61 | #include "pad/MakeICeWall.h" |
52 | 62 | #include "par/MakePartitionMgr.h" |
| 63 | +#include "par/PartitionMgr.h" |
53 | 64 | #include "pdn/MakePdnGen.hh" |
| 65 | +#include "pdn/PdnGen.hh" |
| 66 | +#include "ppl/IOPlacer.h" |
54 | 67 | #include "ppl/MakeIoplacer.h" |
55 | 68 | #include "psm/MakePDNSim.hh" |
| 69 | +#include "psm/pdnsim.h" |
56 | 70 | #include "rcx/MakeOpenRCX.h" |
| 71 | +#include "rcx/ext.h" |
57 | 72 | #include "rmp/MakeRestructure.h" |
| 73 | +#include "rmp/Restructure.h" |
58 | 74 | #include "rsz/MakeResizer.hh" |
| 75 | +#include "rsz/Resizer.hh" |
59 | 76 | #include "sta/VerilogReader.hh" |
60 | 77 | #include "sta/VerilogWriter.hh" |
61 | 78 | #include "stt/MakeSteinerTreeBuilder.h" |
62 | 79 | #include "tap/MakeTapcell.h" |
| 80 | +#include "tap/tapcell.h" |
63 | 81 | #include "triton_route/MakeTritonRoute.h" |
| 82 | +#include "triton_route/TritonRoute.h" |
64 | 83 | #include "upf/MakeUpf.h" |
65 | 84 | #include "utl/CallBackHandler.h" |
66 | 85 | #include "utl/Logger.h" |
@@ -97,34 +116,34 @@ OpenRoad::OpenRoad() |
97 | 116 |
|
98 | 117 | OpenRoad::~OpenRoad() |
99 | 118 | { |
100 | | - deleteDbVerilogNetwork(verilog_network_); |
| 119 | + delete verilog_network_; |
101 | 120 | // Temporarily removed until a crash can be resolved |
102 | 121 | // deleteDbSta(sta_); |
103 | 122 | // sta::deleteAllMemory(); |
104 | | - deleteIoplacer(ioPlacer_); |
105 | | - deleteResizer(resizer_); |
106 | | - deleteOpendp(opendp_); |
107 | | - deleteGlobalRouter(global_router_); |
108 | | - deleteRestructure(restructure_); |
109 | | - deleteClockGating(clock_gating_); |
110 | | - deleteTritonCts(tritonCts_); |
111 | | - deleteTapcell(tapcell_); |
112 | | - deleteMacroPlacer(macro_placer_); |
113 | | - deleteExample(example_); |
114 | | - deleteOpenRCX(extractor_); |
115 | | - deleteTritonRoute(detailed_router_); |
116 | | - deleteReplace(replace_); |
117 | | - deletePDNSim(pdnsim_); |
118 | | - deleteFinale(finale_); |
119 | | - deleteAntennaChecker(antenna_checker_); |
| 123 | + delete ioPlacer_; |
| 124 | + delete resizer_; |
| 125 | + delete opendp_; |
| 126 | + delete global_router_; |
| 127 | + delete restructure_; |
| 128 | + delete clock_gating_; |
| 129 | + delete tritonCts_; |
| 130 | + delete tapcell_; |
| 131 | + delete macro_placer_; |
| 132 | + delete example_; |
| 133 | + delete extractor_; |
| 134 | + delete detailed_router_; |
| 135 | + delete replace_; |
| 136 | + delete pdnsim_; |
| 137 | + delete finale_; |
| 138 | + delete antenna_checker_; |
120 | 139 | odb::dbDatabase::destroy(db_); |
121 | | - deletePartitionMgr(partitionMgr_); |
122 | | - deletePdnGen(pdngen_); |
123 | | - deleteICeWall(icewall_); |
124 | | - deleteDistributed(distributer_); |
125 | | - deleteSteinerTreeBuilder(stt_builder_); |
126 | | - dft::deleteDft(dft_); |
127 | | - est::deleteEstimateParasitics(estimate_parasitics_); |
| 140 | + delete partitionMgr_; |
| 141 | + delete pdngen_; |
| 142 | + delete icewall_; |
| 143 | + delete distributer_; |
| 144 | + delete stt_builder_; |
| 145 | + delete dft_; |
| 146 | + delete estimate_parasitics_; |
128 | 147 | delete logger_; |
129 | 148 | delete verilog_reader_; |
130 | 149 | delete callback_handler_; |
@@ -171,123 +190,98 @@ void OpenRoad::init(Tcl_Interp* tcl_interp, |
171 | 190 |
|
172 | 191 | // Make components. |
173 | 192 | utl::Progress::setBatchMode(batch_mode); |
174 | | - logger_ = utl::makeLogger(log_filename, metrics_filename); |
| 193 | + logger_ = new utl::Logger(log_filename, metrics_filename); |
175 | 194 | callback_handler_ = new utl::CallBackHandler(logger_); |
176 | 195 | db_->setLogger(logger_); |
177 | | - sta_ = sta::makeDbSta(); |
178 | | - verilog_network_ = makeDbVerilogNetwork(); |
179 | | - ioPlacer_ = ppl::makeIoplacer(); |
180 | | - resizer_ = rsz::makeResizer(); |
181 | | - opendp_ = dpl::makeOpendp(); |
182 | | - finale_ = fin::makeFinale(); |
183 | | - global_router_ = grt::makeGlobalRouter(); |
184 | | - restructure_ = rmp::makeRestructure(); |
185 | | - clock_gating_ = cgt::makeClockGating(); |
186 | | - tritonCts_ = cts::makeTritonCts(); |
187 | | - tapcell_ = tap::makeTapcell(); |
188 | | - macro_placer_ = mpl::makeMacroPlacer(); |
189 | | - example_ = exa::makeExample(); |
190 | | - extractor_ = rcx::makeOpenRCX(); |
191 | | - detailed_router_ = drt::makeTritonRoute(); |
192 | | - replace_ = gpl::makeReplace(); |
193 | | - pdnsim_ = psm::makePDNSim(); |
194 | | - antenna_checker_ = ant::makeAntennaChecker(); |
195 | | - partitionMgr_ = par::makePartitionMgr(); |
196 | | - pdngen_ = pdn::makePdnGen(); |
197 | | - icewall_ = pad::makeICeWall(); |
198 | | - distributer_ = dst::makeDistributed(); |
199 | | - stt_builder_ = stt::makeSteinerTreeBuilder(); |
200 | | - dft_ = dft::makeDft(); |
201 | | - estimate_parasitics_ = est::makeEstimateParasitics(); |
| 196 | + sta_ = new sta::dbSta(tcl_interp, db_, logger_); |
| 197 | + verilog_network_ = new dbVerilogNetwork(sta_); |
| 198 | + ioPlacer_ = new ppl::IOPlacer(db_, logger_); |
| 199 | + stt_builder_ = new stt::SteinerTreeBuilder(db_, logger_); |
| 200 | + antenna_checker_ = new ant::AntennaChecker(db_, logger_); |
| 201 | + opendp_ = new dpl::Opendp(db_, logger_); |
| 202 | + global_router_ = new grt::GlobalRouter(logger_, |
| 203 | + callback_handler_, |
| 204 | + stt_builder_, |
| 205 | + db_, |
| 206 | + sta_, |
| 207 | + antenna_checker_, |
| 208 | + opendp_); |
| 209 | + grt::initGui(global_router_, db_, logger_); |
| 210 | + |
| 211 | + estimate_parasitics_ = new est::EstimateParasitics( |
| 212 | + logger_, callback_handler_, db_, sta_, stt_builder_, global_router_); |
| 213 | + est::initGui(estimate_parasitics_); |
| 214 | + |
| 215 | + resizer_ = new rsz::Resizer(logger_, |
| 216 | + db_, |
| 217 | + sta_, |
| 218 | + stt_builder_, |
| 219 | + global_router_, |
| 220 | + opendp_, |
| 221 | + estimate_parasitics_); |
| 222 | + finale_ = new fin::Finale(db_, logger_); |
| 223 | + restructure_ = new rmp::Restructure( |
| 224 | + logger_, sta_, db_, resizer_, estimate_parasitics_); |
| 225 | + clock_gating_ = new cgt::ClockGating(logger_, sta_); |
| 226 | + tritonCts_ = new cts::TritonCTS(logger_, |
| 227 | + db_, |
| 228 | + getDbNetwork(), |
| 229 | + sta_, |
| 230 | + stt_builder_, |
| 231 | + resizer_, |
| 232 | + estimate_parasitics_); |
| 233 | + tapcell_ = new tap::Tapcell(db_, logger_); |
| 234 | + partitionMgr_ = new par::PartitionMgr(db_, getDbNetwork(), sta_, logger_); |
| 235 | + macro_placer_ |
| 236 | + = new mpl::MacroPlacer(getDbNetwork(), db_, sta_, logger_, partitionMgr_); |
| 237 | + extractor_ = new rcx::Ext(db_, logger_, getVersion()); |
| 238 | + distributer_ = new dst::Distributed(logger_); |
| 239 | + detailed_router_ = new drt::TritonRoute( |
| 240 | + db_, logger_, callback_handler_, distributer_, stt_builder_); |
| 241 | + drt::initGui(detailed_router_); |
| 242 | + |
| 243 | + replace_ = new gpl::Replace(db_, sta_, resizer_, global_router_, logger_); |
| 244 | + pdnsim_ = new psm::PDNSim(logger_, db_, sta_, estimate_parasitics_, opendp_); |
| 245 | + pdngen_ = new pdn::PdnGen(db_, logger_); |
| 246 | + icewall_ = new pad::ICeWall(db_, logger_); |
| 247 | + dft_ = new dft::Dft(db_, sta_, logger_); |
| 248 | + example_ = new exa::Example(db_, logger_); |
202 | 249 |
|
203 | 250 | // Init components. |
204 | 251 | Ord_Init(tcl_interp); |
205 | 252 | // Import TCL scripts. |
206 | 253 | utl::evalTclInit(tcl_interp, ord::ord_tcl_inits); |
207 | 254 |
|
208 | | - initLogger(logger_, tcl_interp); |
| 255 | + utl::initLogger(tcl_interp); |
209 | 256 | // GUI first so we can register our sink with the logger |
210 | 257 | gui::initGui(tcl_interp, db_, sta_, logger_); |
211 | 258 | odb::initOdb(tcl_interp); |
212 | 259 | upf::initUpf(tcl_interp); |
213 | 260 | ifp::initInitFloorplan(tcl_interp); |
214 | | - initDbSta(sta_, logger_, tcl_interp, db_); |
215 | | - initResizer(resizer_, |
216 | | - tcl_interp, |
217 | | - logger_, |
218 | | - db_, |
219 | | - sta_, |
220 | | - stt_builder_, |
221 | | - global_router_, |
222 | | - opendp_, |
223 | | - estimate_parasitics_); |
224 | | - initDbVerilogNetwork(verilog_network_, sta_); |
225 | | - initIoplacer(ioPlacer_, db_, logger_, tcl_interp); |
226 | | - initReplace( |
227 | | - replace_, db_, sta_, resizer_, global_router_, logger_, tcl_interp); |
228 | | - initOpendp(opendp_, db_, logger_, tcl_interp); |
229 | | - initFinale(finale_, db_, logger_, tcl_interp); |
230 | | - initGlobalRouter(global_router_, |
231 | | - db_, |
232 | | - sta_, |
233 | | - antenna_checker_, |
234 | | - opendp_, |
235 | | - stt_builder_, |
236 | | - logger_, |
237 | | - callback_handler_, |
238 | | - tcl_interp); |
239 | | - initTritonCts(tritonCts_, |
240 | | - db_, |
241 | | - getDbNetwork(), |
242 | | - sta_, |
243 | | - stt_builder_, |
244 | | - resizer_, |
245 | | - estimate_parasitics_, |
246 | | - logger_, |
247 | | - tcl_interp); |
248 | | - initTapcell(tapcell_, db_, logger_, tcl_interp); |
249 | | - initMacroPlacer(macro_placer_, |
250 | | - getDbNetwork(), |
251 | | - db_, |
252 | | - sta_, |
253 | | - logger_, |
254 | | - partitionMgr_, |
255 | | - tcl_interp); |
256 | | - initExample(example_, db_, logger_, tcl_interp); |
257 | | - initOpenRCX(extractor_, db_, logger_, getVersion(), tcl_interp); |
258 | | - initICeWall(icewall_, db_, logger_, tcl_interp); |
259 | | - initRestructure(restructure_, |
260 | | - logger_, |
261 | | - sta_, |
262 | | - db_, |
263 | | - resizer_, |
264 | | - estimate_parasitics_, |
265 | | - tcl_interp); |
266 | | - cgt::initClockGating(clock_gating_, tcl_interp, logger_, sta_); |
267 | | - initTritonRoute(detailed_router_, |
268 | | - db_, |
269 | | - logger_, |
270 | | - callback_handler_, |
271 | | - distributer_, |
272 | | - stt_builder_, |
273 | | - tcl_interp); |
274 | | - initPDNSim( |
275 | | - pdnsim_, logger_, db_, sta_, estimate_parasitics_, opendp_, tcl_interp); |
276 | | - initAntennaChecker(antenna_checker_, db_, logger_, tcl_interp); |
277 | | - initPartitionMgr( |
278 | | - partitionMgr_, db_, getDbNetwork(), sta_, logger_, tcl_interp); |
279 | | - initPdnGen(pdngen_, db_, logger_, tcl_interp); |
280 | | - initDistributed(distributer_, logger_, tcl_interp); |
281 | | - initSteinerTreeBuilder(stt_builder_, db_, logger_, tcl_interp); |
282 | | - dft::initDft(dft_, db_, sta_, logger_, tcl_interp); |
283 | | - initEstimateParasitics(estimate_parasitics_, |
284 | | - tcl_interp, |
285 | | - logger_, |
286 | | - callback_handler_, |
287 | | - db_, |
288 | | - sta_, |
289 | | - stt_builder_, |
290 | | - global_router_); |
| 261 | + sta::initDbSta(tcl_interp); |
| 262 | + rsz::initResizer(tcl_interp); |
| 263 | + ppl::initIoplacer(tcl_interp); |
| 264 | + gpl::initReplace(tcl_interp); |
| 265 | + dpl::initOpendp(tcl_interp); |
| 266 | + fin::initFinale(tcl_interp); |
| 267 | + grt::initTcl(tcl_interp); |
| 268 | + cts::initTritonCts(tcl_interp); |
| 269 | + tap::initTapcell(tcl_interp); |
| 270 | + mpl::initMacroPlacer(tcl_interp); |
| 271 | + exa::initExample(tcl_interp); |
| 272 | + rcx::initOpenRCX(tcl_interp); |
| 273 | + pad::initICeWall(tcl_interp); |
| 274 | + rmp::initRestructure(tcl_interp); |
| 275 | + cgt::initClockGating(tcl_interp); |
| 276 | + drt::initTcl(tcl_interp); |
| 277 | + psm::initPDNSim(tcl_interp); |
| 278 | + ant::initAntennaChecker(tcl_interp); |
| 279 | + par::initPartitionMgr(tcl_interp); |
| 280 | + pdn::initPdnGen(tcl_interp); |
| 281 | + dst::initDistributed(tcl_interp); |
| 282 | + stt::initSteinerTreeBuilder(tcl_interp); |
| 283 | + dft::initDft(tcl_interp); |
| 284 | + est::initTcl(tcl_interp); |
291 | 285 |
|
292 | 286 | // Import exported commands to global namespace. |
293 | 287 | Tcl_Eval(tcl_interp, "sta::define_sta_cmds"); |
|
0 commit comments