@@ -271,14 +271,12 @@ void OpenRoad::readLef(const char* filename,
271271 bool make_library)
272272{
273273 odb::lefin lef_reader (db_, logger_, false );
274- dbLib* lib = nullptr ;
275- dbTech* tech = nullptr ;
276274 if (make_tech && make_library) {
277- lib = lef_reader.createTechAndLib (tech_name, lib_name, filename);
278- tech = db_->findTech (tech_name);
275+ lef_reader.createTechAndLib (tech_name, lib_name, filename);
279276 } else if (make_tech) {
280- tech = lef_reader.createTech (tech_name, filename);
277+ lef_reader.createTech (tech_name, filename);
281278 } else if (make_library) {
279+ dbTech* tech;
282280 if (tech_name[0 ] != ' \0 ' ) {
283281 tech = db_->findTech (tech_name);
284282 } else {
@@ -287,14 +285,7 @@ void OpenRoad::readLef(const char* filename,
287285 if (!tech) {
288286 logger_->error (ORD, 51 , " Technology {} not found" , tech_name);
289287 }
290- lib = lef_reader.createLib (tech, lib_name, filename);
291- }
292-
293- // both are null on parser failure
294- if (lib != nullptr || tech != nullptr ) {
295- for (OpenRoadObserver* observer : observers_) {
296- observer->postReadLef (tech, lib);
297- }
288+ lef_reader.createLib (tech, lib_name, filename);
298289 }
299290}
300291
@@ -324,20 +315,11 @@ void OpenRoad::readDef(const char* filename,
324315 if (continue_on_errors) {
325316 def_reader.continueOnErrors ();
326317 }
327- dbBlock* block = nullptr ;
328318 if (child) {
329319 auto parent = db_->getChip ()->getBlock ();
330- block = def_reader.createBlock (parent, search_libs, filename, tech);
320+ def_reader.createBlock (parent, search_libs, filename, tech);
331321 } else {
332- dbChip* chip = def_reader.createChip (search_libs, filename, tech);
333- if (chip) {
334- block = chip->getBlock ();
335- }
336- }
337- if (block) {
338- for (OpenRoadObserver* observer : observers_) {
339- observer->postReadDef (block);
340- }
322+ def_reader.createChip (search_libs, filename, tech);
341323 }
342324}
343325
@@ -492,11 +474,6 @@ void OpenRoad::readDb(std::istream& stream)
492474 | std::ios::eofbit);
493475
494476 db_->read (stream);
495-
496- // this fixes up the database post read
497- for (OpenRoadObserver* observer : observers_) {
498- observer->postReadDb (db_);
499- }
500477}
501478
502479void OpenRoad::writeDb (std::ostream& stream)
@@ -538,16 +515,12 @@ void OpenRoad::linkDesign(const char* design_name, bool hierarchy)
538515 sta::dbSta* sta = getSta ();
539516 sta->getDbNetwork ()->setHierarchy ();
540517 }
541- for (OpenRoadObserver* observer : observers_) {
542- observer->postReadDb (db_);
543- }
518+ db_->triggerPostReadDb ();
544519}
545520
546521void OpenRoad::designCreated ()
547522{
548- for (OpenRoadObserver* observer : observers_) {
549- observer->postReadDb (db_);
550- }
523+ db_->triggerPostReadDb ();
551524}
552525
553526bool OpenRoad::unitsInitialized ()
@@ -561,19 +534,6 @@ odb::Rect OpenRoad::getCore()
561534 return db_->getChip ()->getBlock ()->getCoreArea ();
562535}
563536
564- void OpenRoad::addObserver (OpenRoadObserver* observer)
565- {
566- observer->set_unregister_observer (
567- [this , observer] { removeObserver (observer); });
568- observers_.insert (observer);
569- }
570-
571- void OpenRoad::removeObserver (OpenRoadObserver* observer)
572- {
573- observer->set_unregister_observer (nullptr );
574- observers_.erase (observer);
575- }
576-
577537void OpenRoad::setThreadCount (int threads, bool printInfo)
578538{
579539 int max_threads = std::thread::hardware_concurrency ();
0 commit comments