Skip to content

Commit 0ea0baf

Browse files
committed
pdn: only count pin area once and adjust warning msg in okfile
Signed-off-by: Peter Gadfort <[email protected]>
1 parent 06466f2 commit 0ea0baf

File tree

3 files changed

+19
-15
lines changed

3 files changed

+19
-15
lines changed

src/pdn/src/grid.cpp

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1698,8 +1698,7 @@ void InstanceGrid::checkSetup() const
16981698

16991699
if (top != nullptr) {
17001700
const int top_idx = top->getNumber();
1701-
int64_t overlap_area = 0;
1702-
int64_t pin_area = 0;
1701+
std::map<odb::Rect, int64_t> overlap_area;
17031702
for (auto* master_obs : inst_->getMaster()->getObstructions()) {
17041703
auto* obs_layer = master_obs->getTechLayer();
17051704
if (obs_layer == nullptr) {
@@ -1726,16 +1725,21 @@ void InstanceGrid::checkSetup() const
17261725
inst_->getName());
17271726
} else {
17281727
const odb::Rect overlap = mobs.intersect(pin);
1729-
overlap_area += overlap.area();
1730-
pin_area += pin.area();
1728+
overlap_area[pin] += overlap.area();
17311729
}
17321730
}
17331731
}
17341732
}
17351733
}
17361734

1737-
if (pin_area > 0 && overlap_area != 0) {
1738-
const float pct = 100 * static_cast<float>(overlap_area) / pin_area;
1735+
if (!overlap_area.empty()) {
1736+
int64_t pin_area = 0;
1737+
int64_t total_overlap = 0;
1738+
for (const auto& [pin, overlap] : overlap_area) {
1739+
total_overlap += overlap;
1740+
pin_area += pin.area();
1741+
}
1742+
const float pct = 100 * static_cast<float>(total_overlap) / pin_area;
17391743
getLogger()->warn(
17401744
utl::PDN,
17411745
7,

src/pdn/test/asap7_failed_macro_covered.ok

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,5 @@
66
[INFO ODB-0131] Created 12240 components and 59302 component-terminals.
77
[INFO ODB-0132] Created 2 special nets and 6030 connections.
88
[INFO ODB-0133] Created 9695 nets and 790 connections.
9-
[ERROR PDN-0006] VSS on M4 are blocked by obstructions on M5 for dmem/dmem0
9+
[ERROR PDN-0006] VSS on M4 is blocked by obstructions on M5 for dmem/dmem0
1010
PDN-0006

src/pdn/test/asap7_macro_covered_partial.ok

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@
66
[INFO ODB-0131] Created 12240 components and 59302 component-terminals.
77
[INFO ODB-0132] Created 2 special nets and 6030 connections.
88
[INFO ODB-0133] Created 9695 nets and 790 connections.
9-
[WARNING PDN-0007] VSS on M4 are partially blocked (9.8%) by obstructions for dmem/dmem0
10-
[WARNING PDN-0007] VDD on M4 are partially blocked (9.8%) by obstructions for dmem/dmem0
11-
[WARNING PDN-0007] VSS on M4 are partially blocked (9.8%) by obstructions for dmem/dmem1
12-
[WARNING PDN-0007] VDD on M4 are partially blocked (9.8%) by obstructions for dmem/dmem1
13-
[WARNING PDN-0007] VSS on M4 are partially blocked (9.8%) by obstructions for dmem/dmem2
14-
[WARNING PDN-0007] VDD on M4 are partially blocked (9.8%) by obstructions for dmem/dmem2
15-
[WARNING PDN-0007] VSS on M4 are partially blocked (9.8%) by obstructions for dmem/dmem3
16-
[WARNING PDN-0007] VDD on M4 are partially blocked (9.8%) by obstructions for dmem/dmem3
9+
[WARNING PDN-0007] VSS on M4 is partially blocked (9.8%) by obstructions for dmem/dmem0
10+
[WARNING PDN-0007] VDD on M4 is partially blocked (9.8%) by obstructions for dmem/dmem0
11+
[WARNING PDN-0007] VSS on M4 is partially blocked (9.8%) by obstructions for dmem/dmem1
12+
[WARNING PDN-0007] VDD on M4 is partially blocked (9.8%) by obstructions for dmem/dmem1
13+
[WARNING PDN-0007] VSS on M4 is partially blocked (9.8%) by obstructions for dmem/dmem2
14+
[WARNING PDN-0007] VDD on M4 is partially blocked (9.8%) by obstructions for dmem/dmem2
15+
[WARNING PDN-0007] VSS on M4 is partially blocked (9.8%) by obstructions for dmem/dmem3
16+
[WARNING PDN-0007] VDD on M4 is partially blocked (9.8%) by obstructions for dmem/dmem3
1717
[INFO PDN-0001] Inserting grid: top
1818
[INFO PDN-0001] Inserting grid: CORE_macro_grid_1 - dmem/dmem0
1919
[INFO PDN-0001] Inserting grid: CORE_macro_grid_1 - dmem/dmem1

0 commit comments

Comments
 (0)