Skip to content

Commit 29bb73b

Browse files
committed
pdn: add edge to pad connect report and sort connects in report
Signed-off-by: Peter Gadfort <[email protected]>
1 parent 182f51b commit 29bb73b

File tree

11 files changed

+112
-23
lines changed

11 files changed

+112
-23
lines changed

src/pdn/src/connect.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -398,14 +398,16 @@ bool Connect::startsBelow(const Connect* other) const
398398
return layer0_->getNumber() < other->getLowerLayer()->getNumber();
399399
}
400400

401-
void Connect::report() const
401+
void Connect::report(const std::optional<int>& order) const
402402
{
403403
auto* logger = grid_->getLogger();
404404
auto* block = grid_->getBlock();
405405
const double dbu_per_micron = block->getDbUnitsPerMicron();
406406

407-
logger->report(
408-
" Connect layers {} -> {}", layer0_->getName(), layer1_->getName());
407+
logger->report(" Connect layers {} -> {}{}",
408+
layer0_->getName(),
409+
layer1_->getName(),
410+
order.has_value() ? fmt::format(" ({})", *order) : "");
409411
if (!fixed_generate_vias_.empty() || !fixed_tech_vias_.empty()) {
410412
std::string vias;
411413
for (auto* via : fixed_generate_vias_) {

src/pdn/src/connect.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
#include <map>
77
#include <memory>
8+
#include <optional>
89
#include <set>
910
#include <string>
1011
#include <tuple>
@@ -49,7 +50,7 @@ class Connect
4950
int getSplitCutPitch(odb::dbTechLayer* layer) const;
5051
bool getSplitCutStagger(odb::dbTechLayer* layer) const;
5152

52-
void report() const;
53+
void report(const std::optional<int>& order = {}) const;
5354

5455
odb::dbTechLayer* getLowerLayer() const { return layer0_; }
5556
odb::dbTechLayer* getUpperLayer() const { return layer1_; }

src/pdn/src/grid.cpp

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -453,9 +453,24 @@ void Grid::report() const
453453
}
454454
}
455455
if (!connect_.empty()) {
456+
std::vector<std::pair<Connect*, int>> connect;
457+
connect.reserve(connect_.size());
458+
for (const auto& conn : connect_) {
459+
connect.emplace_back(conn.get(), connect.size() + 1);
460+
}
461+
std::sort(connect.begin(),
462+
connect.end(),
463+
[](const std::pair<Connect*, int>& l,
464+
const std::pair<Connect*, int>& r) {
465+
int l_lower = l.first->getLowerLayer()->getRoutingLevel();
466+
int l_upper = l.first->getUpperLayer()->getRoutingLevel();
467+
int r_lower = r.first->getLowerLayer()->getRoutingLevel();
468+
int r_upper = r.first->getUpperLayer()->getRoutingLevel();
469+
return std::tie(l_lower, l_upper) < std::tie(r_lower, r_upper);
470+
});
456471
logger->report("Connect:");
457-
for (const auto& connect : connect_) {
458-
connect->report();
472+
for (const auto& [connect, order] : connect) {
473+
connect->report(order);
459474
}
460475
}
461476
if (!pin_layers_.empty()) {

src/pdn/src/straps.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -883,6 +883,9 @@ void PadDirectConnectionStraps::report() const
883883
break;
884884
}
885885
logger->report(" Connection type: {}", connection_type);
886+
if (type_ == ConnectionType::Edge) {
887+
logger->report(" Edge: {}", pad_edge_.getString());
888+
}
886889
}
887890

888891
std::string PadDirectConnectionStraps::getName() const

src/pdn/test/asap7_M1_M3_followpins_staggered.ok

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ Straps:
2525
Offset: 0.0000
2626
Snap to grid: false
2727
Connect:
28-
Connect layers M1 -> M3
28+
Connect layers M1 -> M3 (1)
2929
Split cuts:
3030
Layer: M2 with pitch 1.0000 staggered
3131
[INFO PDN-0001] Inserting grid: Core

src/pdn/test/macros_grid_check.ok

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ Straps:
3535
Offset: 2.5000
3636
Snap to grid: false
3737
Connect:
38-
Connect layers metal1 -> metal4
39-
Connect layers metal4 -> metal7
38+
Connect layers metal1 -> metal4 (1)
39+
Connect layers metal4 -> metal7 (2)
4040
Grid name: sram - dcache.data.data_arrays_0.data_arrays_0_ext.mem
4141
Type: Instance
4242
Halo:

src/pdn/test/power_switch.ok

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ Straps:
4040
Offset: 13.6000
4141
Snap to grid: false
4242
Connect:
43-
Connect layers met1 -> met4
44-
Connect layers met4 -> met5
43+
Connect layers met1 -> met4 (1)
44+
Connect layers met4 -> met5 (2)
4545
Switched power cell: POWER_SWITCH
4646
Control net: nPWRUP
4747
Network type: DAISY

src/pdn/test/region_temp_sensor_different_region_name.ok

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ Straps:
4646
Offset: 13.6000
4747
Snap to grid: false
4848
Connect:
49-
Connect layers met1 -> met4
50-
Connect layers met4 -> met5
49+
Connect layers met1 -> met4 (1)
50+
Connect layers met4 -> met5 (2)
5151
Voltage domain: TemperatureAnalog
5252
Floorplan region: TEMP_ANALOG
5353
Power net: VIN
@@ -89,5 +89,5 @@ Straps:
8989
Offset: 13.6000
9090
Snap to grid: false
9191
Connect:
92-
Connect layers met1 -> met4
93-
Connect layers met4 -> met5
92+
Connect layers met1 -> met4 (1)
93+
Connect layers met4 -> met5 (2)

0 commit comments

Comments
 (0)