Skip to content

Commit f5879e6

Browse files
committed
Merge remote-tracking branch 'upstream/master' into downsize_move
2 parents 9002e77 + fa92de9 commit f5879e6

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+16536
-711
lines changed

.github/workflows/github-actions-clang-tidy.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,6 @@ jobs:
3333
echo "Ownership change attempt finished."
3434
shell: bash
3535
- if: steps.review.outputs.total_comments > 0
36-
run: exit 1
36+
run: |
37+
echo "Pendinding review comments. Please resolve all comments before merging."
38+
exit 1

src/grt/include/grt/GlobalRouter.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ class GlobalRouter : public ant::GlobalRouteSource
149149
void readGuides(const char* file_name);
150150
void loadGuidesFromDB();
151151
void saveGuidesFromFile(std::unordered_map<odb::dbNet*, Guides>& guides);
152-
void saveGuides();
152+
void saveGuides(const std::vector<odb::dbNet*>& nets);
153153
void writeSegments(const char* file_name);
154154
void readSegments(const char* file_name);
155155
bool netIsCovered(odb::dbNet* db_net, std::string& pins_not_covered);

src/grt/src/GlobalRouter.cpp

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -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;
@@ -2544,8 +2551,10 @@ void GlobalRouter::readSegments(const char* file_name)
25442551
GRT, 257, "Failed to open global route segments file {}.", file_name);
25452552
}
25462553

2554+
int line_count = 0;
25472555
while (fin.good()) {
25482556
getline(fin, line);
2557+
line_count++;
25492558
if (line == "(" || line.empty() || line == ")") {
25502559
continue;
25512560
}
@@ -2580,8 +2589,13 @@ void GlobalRouter::readSegments(const char* file_name)
25802589
layer2->getRoutingLevel());
25812590
routes_[db_net].push_back(segment);
25822591
} else {
2583-
logger_->error(
2584-
GRT, 261, "Error reading global route segments file {}.", file_name);
2592+
logger_->error(GRT,
2593+
261,
2594+
"Error reading global route segments file {} at line {}.\n"
2595+
"\t\t Line content: \"{}\".",
2596+
file_name,
2597+
line_count,
2598+
line);
25852599
}
25862600
}
25872601
for (auto& [db_net, segments] : routes_) {
@@ -4810,6 +4824,11 @@ std::vector<Net*> GlobalRouter::updateDirtyRoutes(bool save_guides)
48104824
{
48114825
std::vector<Net*> dirty_nets;
48124826
if (!dirty_nets_.empty()) {
4827+
std::vector<odb::dbNet*> modified_nets;
4828+
modified_nets.reserve(dirty_nets.size());
4829+
for (const Net* net : dirty_nets) {
4830+
modified_nets.push_back(net->getDbNet());
4831+
}
48134832
fastroute_->setVerbose(false);
48144833
fastroute_->clearNetsToRoute();
48154834

@@ -4887,7 +4906,7 @@ std::vector<Net*> GlobalRouter::updateDirtyRoutes(bool save_guides)
48874906
fastroute_->setCriticalNetsPercentage(old_critical_nets_percentage);
48884907
fastroute_->setCongestionReportIterStep(congestion_report_iter_step_);
48894908
if (save_guides) {
4890-
saveGuides();
4909+
saveGuides(modified_nets);
48914910
}
48924911
}
48934912

src/grt/src/RepairAntennas.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1395,7 +1395,8 @@ int RepairAntennas::addJumperOnSegments(
13951395

13961396
void RepairAntennas::jumperInsertion(NetRouteMap& routing,
13971397
const int& tile_size,
1398-
const int& max_routing_layer)
1398+
const int& max_routing_layer,
1399+
std::vector<odb::dbNet*>& modified_nets)
13991400
{
14001401
// Init jumper size
14011402
tile_size_ = tile_size;
@@ -1452,6 +1453,7 @@ void RepairAntennas::jumperInsertion(NetRouteMap& routing,
14521453
db_net->setJumpers(true);
14531454
net_with_jumpers++;
14541455
total_jumpers += jumper_by_net;
1456+
modified_nets.push_back(db_net);
14551457
}
14561458
}
14571459
}

src/grt/src/RepairAntennas.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,8 @@ class RepairAntennas
123123
bool hasNewViolations() { return has_new_violations_; }
124124
void jumperInsertion(NetRouteMap& routing,
125125
const int& tile_size,
126-
const int& max_routing_layer);
126+
const int& max_routing_layer,
127+
std::vector<odb::dbNet*>& modified_nets);
127128

128129
private:
129130
using coord_type = int;

src/grt/test/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ or_integration_tests(
4848
read_segments_error1
4949
read_segments_error2
5050
read_segments_error3
51+
read_segments_error4
52+
read_segments_error5
5153
region_adjustment
5254
remove_buffers1
5355
remove_buffers2

src/grt/test/read_segments_error4.ok

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
[INFO ODB-0227] LEF file: Nangate45/Nangate45.lef, created 22 layers, 27 vias, 135 library cells
2+
[INFO ODB-0128] Design: gcd
3+
[INFO ODB-0130] Created 54 pins.
4+
[INFO ODB-0131] Created 676 components and 2850 component-terminals.
5+
[INFO ODB-0133] Created 579 nets and 1498 connections.
6+
[ERROR GRT-0261] Error reading global route segments file read_segments_error4.segs at line 166.
7+
Line content: "req_msg [29]".
8+
GRT-0261

0 commit comments

Comments
 (0)