@@ -329,7 +329,12 @@ void GlobalRouter::globalRoute(bool save_guides,
329329 logger_->info (GRT, 14 , " Routed nets: {}" , routes_.size ());
330330 }
331331 if (save_guides) {
332- saveGuides ();
332+ std::vector<odb::dbNet*> nets;
333+ nets.reserve (block_->getNets ().size ());
334+ for (odb::dbNet* db_net : block_->getNets ()) {
335+ nets.push_back (db_net);
336+ }
337+ saveGuides (nets);
333338 }
334339 }
335340
@@ -402,6 +407,7 @@ int GlobalRouter::repairAntennas(odb::dbMTerm* diode_mterm,
402407 " routing source is detailed routing." );
403408 }
404409
410+ std::vector<odb::dbNet*> modified_nets;
405411 while (violations && itr < iterations) {
406412 if (verbose_) {
407413 logger_->info (GRT, 6 , " Repairing antennas, iteration {}." , itr + 1 );
@@ -417,7 +423,7 @@ int GlobalRouter::repairAntennas(odb::dbMTerm* diode_mterm,
417423 && repair_antennas_->hasNewViolations ()) {
418424 // Run jumper insertion and clean
419425 repair_antennas_->jumperInsertion (
420- routes_, grid_->getTileSize (), getMaxRoutingLayer ());
426+ routes_, grid_->getTileSize (), getMaxRoutingLayer (), modified_nets );
421427 repair_antennas_->clearViolations ();
422428
423429 // run again antenna checker
@@ -439,13 +445,14 @@ int GlobalRouter::repairAntennas(odb::dbMTerm* diode_mterm,
439445 nets_to_repair.clear ();
440446 for (const Net* net : incr_groute.updateRoutes ()) {
441447 nets_to_repair.push_back (net->getDbNet ());
448+ modified_nets.push_back (net->getDbNet ());
442449 }
443450 }
444451 repair_antennas_->clearViolations ();
445452 itr++;
446453 }
447454 logger_->metric (" antenna_diodes_count" , total_diodes_count_);
448- saveGuides ();
455+ saveGuides (modified_nets );
449456 return total_diodes_count_;
450457}
451458
@@ -2399,7 +2406,7 @@ void GlobalRouter::saveGuidesFromFile(
23992406 }
24002407}
24012408
2402- void GlobalRouter::saveGuides ()
2409+ void GlobalRouter::saveGuides (const std::vector<odb::dbNet*>& nets )
24032410{
24042411 int offset_x = grid_origin_.x ();
24052412 int offset_y = grid_origin_.y ();
@@ -2409,7 +2416,7 @@ void GlobalRouter::saveGuides()
24092416 int net_with_jumpers, total_jumpers;
24102417 net_with_jumpers = 0 ;
24112418 total_jumpers = 0 ;
2412- for (odb::dbNet* db_net : block_-> getNets () ) {
2419+ for (odb::dbNet* db_net : nets ) {
24132420 auto iter = routes_.find (db_net);
24142421 if (iter == routes_.end ()) {
24152422 continue ;
@@ -4810,6 +4817,11 @@ std::vector<Net*> GlobalRouter::updateDirtyRoutes(bool save_guides)
48104817{
48114818 std::vector<Net*> dirty_nets;
48124819 if (!dirty_nets_.empty ()) {
4820+ std::vector<odb::dbNet*> modified_nets;
4821+ modified_nets.reserve (dirty_nets.size ());
4822+ for (const Net* net : dirty_nets) {
4823+ modified_nets.push_back (net->getDbNet ());
4824+ }
48134825 fastroute_->setVerbose (false );
48144826 fastroute_->clearNetsToRoute ();
48154827
@@ -4887,7 +4899,7 @@ std::vector<Net*> GlobalRouter::updateDirtyRoutes(bool save_guides)
48874899 fastroute_->setCriticalNetsPercentage (old_critical_nets_percentage);
48884900 fastroute_->setCongestionReportIterStep (congestion_report_iter_step_);
48894901 if (save_guides) {
4890- saveGuides ();
4902+ saveGuides (modified_nets );
48914903 }
48924904 }
48934905
0 commit comments