Skip to content

Commit f2ae0d8

Browse files
committed
pad: gemini reviews
Signed-off-by: Eder Monteiro <emrmonteiro@precisioninno.com>
1 parent f11f922 commit f2ae0d8

4 files changed

Lines changed: 33 additions & 42 deletions

File tree

src/pad/src/RDLRouter.cpp

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,17 @@ namespace pad {
4141

4242
namespace {
4343

44+
// Order routes by their source terminal id so ripup iteration (and the edge
45+
// re-add order it drives) is deterministic, not heap-address dependent.
46+
struct RDLRoutePtrLess
47+
{
48+
bool operator()(const std::shared_ptr<RDLRoute>& lhs,
49+
const std::shared_ptr<RDLRoute>& rhs) const
50+
{
51+
return lhs->getTerminal()->getId() < rhs->getTerminal()->getId();
52+
}
53+
};
54+
4455
bool compareRouteTargets(const RouteTarget& lhs, const RouteTarget& rhs)
4556
{
4657
if (lhs.center.x() != rhs.center.x()) {
@@ -649,7 +660,7 @@ void RDLRouter::route(const std::vector<odb::dbNet*>& nets)
649660
}
650661

651662
// find routes to ripup
652-
std::set<RDLRoutePtr> ripup;
663+
std::set<RDLRoutePtr, RDLRoutePtrLess> ripup;
653664
for (const auto& failed_route : failed) {
654665
for (const auto& route : routes_) {
655666
if (!route->isRouted()) {
@@ -1185,16 +1196,12 @@ GridGraphEdgeSet RDLRouter::getVertexEdges(const GridGraphVertex& vertex) const
11851196
{
11861197
GridGraphEdgeSet edges;
11871198

1199+
// The graph is undirected, so out_edges already yields every incident edge.
11881200
GridGraph::out_edge_iterator oit, oend;
11891201
std::tie(oit, oend) = boost::out_edges(vertex, graph_);
11901202
for (; oit != oend; oit++) {
11911203
edges.insert(*oit);
11921204
}
1193-
GridGraph::in_edge_iterator iit, iend;
1194-
std::tie(iit, iend) = boost::in_edges(vertex, graph_);
1195-
for (; iit != iend; iit++) {
1196-
edges.insert(*iit);
1197-
}
11981205

11991206
return edges;
12001207
}

src/pad/src/RDLRouter.h

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -74,14 +74,8 @@ struct GridGraphEdgeLess
7474
{
7575
bool operator()(const GridGraphEdge& lhs, const GridGraphEdge& rhs) const
7676
{
77-
const auto lhs_lo = std::min(lhs.m_source, lhs.m_target);
78-
const auto lhs_hi = std::max(lhs.m_source, lhs.m_target);
79-
const auto rhs_lo = std::min(rhs.m_source, rhs.m_target);
80-
const auto rhs_hi = std::max(rhs.m_source, rhs.m_target);
81-
if (lhs_lo != rhs_lo) {
82-
return lhs_lo < rhs_lo;
83-
}
84-
return lhs_hi < rhs_hi;
77+
return std::minmax(lhs.m_source, lhs.m_target)
78+
< std::minmax(rhs.m_source, rhs.m_target);
8579
}
8680
};
8781
using GridGraphEdgeSet = std::set<GridGraphEdge, GridGraphEdgeLess>;

src/pad/test/rdl_route_failed.ok

Lines changed: 18 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -10,54 +10,45 @@
1010
[INFO PAD-0037] End of routing iteration 2: 85.4% complete
1111
[INFO PAD-0037] End of routing iteration 3: 81.9% complete
1212
[INFO PAD-0037] End of routing iteration 4: 84.4% complete
13-
[INFO PAD-0037] End of routing iteration 5: 89.0% complete
14-
[INFO PAD-0037] End of routing iteration 6: 89.9% complete
15-
[INFO PAD-0037] End of routing iteration 7: 89.5% complete
16-
[INFO PAD-0037] End of routing iteration 8: 89.0% complete
17-
[INFO PAD-0037] End of routing iteration 9: 88.8% complete
18-
[INFO PAD-0037] End of routing iteration 10: 88.4% complete
19-
[WARNING PAD-0006] Failed to route the following 17 nets:
13+
[INFO PAD-0037] End of routing iteration 5: 89.2% complete
14+
[INFO PAD-0037] End of routing iteration 6: 90.1% complete
15+
[INFO PAD-0037] End of routing iteration 7: 90.3% complete
16+
[INFO PAD-0037] End of routing iteration 8: 90.3% complete
17+
[INFO PAD-0037] End of routing iteration 9: 89.2% complete
18+
[INFO PAD-0037] End of routing iteration 10: 90.3% complete
19+
[WARNING PAD-0006] Failed to route the following 13 nets:
2020
DVDD
2121
BUMP_11_3/PAD -> u_v18_6/DVDD, u_v18_7/DVDD, u_v18_5/DVDD, u_v18_4/DVDD, u_v18_8/DVDD, ... (67 possible terminals)
2222
BUMP_16_11/PAD -> u_v18_15/DVDD, u_v18_16/DVDD, u_v18_14/DVDD, u_v18_13/DVDD, u_v18_12/DVDD, ... (67 possible terminals)
2323
BUMP_1_13/PAD -> u_v18_26/DVDD, u_v18_27/DVDD, u_v18_28/DVDD, u_v18_25/DVDD, u_v18_29/DVDD, ... (67 possible terminals)
24-
BUMP_4_1/PAD -> u_v18_1/DVDD, u_v18_2/DVDD, u_v18_0/DVDD, u_v18_3/DVDD, u_v18_4/DVDD, ... (67 possible terminals)
2524
DVSS
26-
BUMP_0_8/PAD -> u_vzz_30/DVSS, u_vzz_29/DVSS, u_vzz_31/DVSS, u_vzz_32/DVSS, u_vzz_28/DVSS, ... (67 possible terminals)
2725
BUMP_15_11/PAD -> u_vzz_15/DVSS, u_vzz_16/DVSS, u_vzz_14/DVSS, u_vzz_13/DVSS, u_vzz_12/DVSS, ... (67 possible terminals)
2826
BUMP_15_7/PAD -> u_vzz_12/DVSS, u_vzz_13/DVSS, u_vzz_11/DVSS, u_vzz_14/DVSS, u_vzz_10/DVSS, ... (67 possible terminals)
2927
BUMP_1_9/PAD -> u_vzz_29/DVSS, u_vzz_30/DVSS, u_vzz_28/DVSS, u_vzz_31/DVSS, u_vzz_27/DVSS, ... (67 possible terminals)
30-
BUMP_8_15/PAD -> u_vzz_21/DVSS, u_vzz_22/DVSS, u_vzz_20/DVSS, u_vzz_23/DVSS, u_vzz_24/DVSS, ... (67 possible terminals)
28+
VDD
29+
BUMP_11_12/PAD -> u_vdd_9/VDD, u_vdd_pll/VDD, u_vdd_8/VDD, u_vdd_7/VDD, u_vdd_10/VDD, ... (33 possible terminals)
30+
BUMP_1_10/PAD -> u_vdd_13/VDD, u_vdd_14/VDD, u_vdd_12/VDD, u_vdd_15/VDD, u_vdd_11/VDD, ... (33 possible terminals)
3131
VSS
32+
BUMP_0_10/PAD -> u_vss_13/VSS, u_vss_14/VSS, u_vss_12/VSS, u_vss_15/VSS, u_vss_11/VSS, ... (33 possible terminals)
3233
BUMP_14_9/PAD -> u_vss_6/VSS, u_vss_5/VSS, u_vss_7/VSS, u_vss_4/VSS, u_vss_8/VSS, ... (33 possible terminals)
3334
BUMP_16_6/PAD -> u_vss_5/VSS, u_vss_6/VSS, u_vss_4/VSS, u_vss_7/VSS, u_vss_3/VSS, ... (33 possible terminals)
35+
p_bsg_tag_data_o
36+
BUMP_2_10/PAD -> u_bsg_tag_data_o/PAD
3437
p_clk_A_i
3538
BUMP_7_13/PAD -> u_clk_A_i/PAD
36-
p_clk_async_reset_i
37-
BUMP_9_14/PAD -> u_clk_async_reset_i/PAD
3839
p_co2_v_o
3940
BUMP_0_13/PAD -> u_co2_v_o/PAD
40-
p_ddr_addr_15_o
41-
BUMP_4_0/PAD -> u_ddr_addr_15_o/PAD
4241
p_ddr_addr_2_o
4342
BUMP_8_2/PAD -> u_ddr_addr_2_o/PAD
44-
p_ddr_addr_6_o
45-
BUMP_7_0/PAD -> u_ddr_addr_6_o/PAD
46-
p_ddr_addr_7_o
47-
BUMP_7_1/PAD -> u_ddr_addr_7_o/PAD
43+
p_ddr_addr_4_o
44+
BUMP_7_4/PAD -> u_ddr_addr_4_o/PAD
4845
p_ddr_ck_n_o
4946
BUMP_11_4/PAD -> u_ddr_ck_n_o/PAD
50-
p_ddr_dq_0_io
51-
BUMP_3_7/PAD -> u_ddr_dq_0_io/PAD
52-
p_ddr_dq_11_io
53-
BUMP_4_5/PAD -> u_ddr_dq_11_io/PAD
54-
p_ddr_dq_13_io
55-
BUMP_3_5/PAD -> u_ddr_dq_13_io/PAD
56-
p_ddr_dq_2_io
57-
BUMP_1_8/PAD -> u_ddr_dq_2_io/PAD
47+
p_ddr_dq_7_io
48+
BUMP_4_10/PAD -> u_ddr_dq_7_io/PAD
5849
p_ddr_dq_8_io
5950
BUMP_0_4/PAD -> u_ddr_dq_8_io/PAD
6051
p_ddr_dq_9_io
6152
BUMP_1_4/PAD -> u_ddr_dq_9_io/PAD
62-
[ERROR PAD-0007] Failed to route 17 nets.
53+
[ERROR PAD-0007] Failed to route 13 nets.
6354
pass

src/pad/test/rdl_route_max_iterations.ok

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
[WARNING PAD-0006] Failed to route the following 18 nets:
1414
DVDD
1515
BUMP_11_13/PAD -> u_v18_19/DVDD, u_v18_20/DVDD, u_v18_18/DVDD, u_v18_21/DVDD, u_v18_17/DVDD, ... (67 possible terminals)
16-
BUMP_7_3/PAD -> u_v18_3/DVDD, u_v18_4/DVDD, u_v18_2/DVDD, u_v18_5/DVDD, u_v18_1/DVDD, ... (67 possible terminals)
1716
VSS
1817
BUMP_0_7/PAD -> u_vss_14/VSS, u_vss_13/VSS, u_vss_15/VSS, u_vss_12/VSS, u_vss_0/VSS, ... (33 possible terminals)
1918
BUMP_10_13/PAD -> u_vss_9/VSS, u_vss_pll/VSS, u_vss_10/VSS, u_vss_8/VSS, u_vss_7/VSS, ... (33 possible terminals)

0 commit comments

Comments
 (0)