Skip to content

Commit 3113e7b

Browse files
authored
Merge pull request #8852 from gadfort/pdn-correct-min-width
pdn: correct min width estimate during via generation
2 parents 68fcfab + 70cc125 commit 3113e7b

9 files changed

+3689
-3678
lines changed

src/pdn/src/connect.cpp

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -321,15 +321,23 @@ int Connect::getMaxEnclosureFromCutLayer(odb::dbTechLayer* layer,
321321
for (auto* rule : tech_vias_) {
322322
bool use = false;
323323
int max_size = 0;
324+
int max_via_size = 0;
325+
int cnt_vias = 0;
324326
for (auto* box : rule->getBoxes()) {
325-
use |= box->getTechLayer() == layer;
326-
327327
odb::Rect rect = box->getBox();
328-
max_size = std::max(max_size, static_cast<int>(rect.maxDXDY()));
328+
329+
if (box->getTechLayer() == layer) {
330+
use = true;
331+
cnt_vias += 1;
332+
max_via_size = std::max(max_via_size, rect.maxDXDY());
333+
}
334+
335+
max_size = std::max(max_size, rect.maxDXDY());
329336
}
330337

331-
if (use) {
332-
max_enclosure = std::max(max_enclosure, (max_size - min_width) / 2);
338+
if (use && cnt_vias == 1) {
339+
max_enclosure
340+
= std::max(max_enclosure, (max_size - max_via_size - min_width) / 2);
333341
}
334342
}
335343

src/pdn/src/grid.cpp

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1679,10 +1679,13 @@ void InstanceGrid::report() const
16791679
bool InstanceGrid::isValid() const
16801680
{
16811681
if (getNets(startsWithPower()).empty()) {
1682-
getLogger()->warn(utl::PDN,
1683-
231,
1684-
"{} is not connected to any power/ground nets.",
1685-
inst_->getName());
1682+
if (!inst_->getITerms().empty()) {
1683+
// only warn when instance has something that could be connected to
1684+
getLogger()->warn(utl::PDN,
1685+
231,
1686+
"{} is not connected to any power/ground nets.",
1687+
inst_->getName());
1688+
}
16861689
return false;
16871690
}
16881691
return true;

src/pdn/test/power_switch_cut_rows.defok

Lines changed: 847 additions & 847 deletions
Large diffs are not rendered by default.

src/pdn/test/power_switch_daisy.defok

Lines changed: 1153 additions & 1153 deletions
Large diffs are not rendered by default.

src/pdn/test/power_switch_regions.defok

Lines changed: 73 additions & 73 deletions
Large diffs are not rendered by default.

src/pdn/test/power_switch_star.defok

Lines changed: 865 additions & 865 deletions
Large diffs are not rendered by default.

src/pdn/test/power_switch_upf_daisy.defok

Lines changed: 281 additions & 281 deletions
Large diffs are not rendered by default.

src/pdn/test/power_switch_upf_regions.defok

Lines changed: 169 additions & 169 deletions
Large diffs are not rendered by default.

src/pdn/test/power_switch_upf_star.defok

Lines changed: 281 additions & 281 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)