Skip to content

Commit e7ec219

Browse files
authored
Merge pull request #2626 from verilog-to-routing/remove_has_path_to_sink
Remove `has_path_to_sink`
2 parents 08d886c + 4293461 commit e7ec219

File tree

1 file changed

+0
-47
lines changed

1 file changed

+0
-47
lines changed

vpr/src/route/connection_router.cpp

Lines changed: 0 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,6 @@
66
#include "bucket.h"
77
#include "rr_graph_fwd.h"
88

9-
/**
10-
* @brief This function is relevant when the architecture is 3D. If inter-layer connections are only from OPINs (determine by is_inter_layer_opin_connection),
11-
* then nodes (other that OPINs) which are on the other layer than sink's layer, don't need to be pushed back to the heap.
12-
* @param rr_nodes
13-
* @param rr_graph
14-
* @param from_node
15-
* @param sink_node
16-
* @param is_inter_layer_opin_connection It is true if the architecture is 3D and inter-layer connections are only from OPINs.
17-
* @return
18-
*/
19-
static bool has_path_to_sink(const t_rr_graph_view& rr_nodes,
20-
const RRGraphView* rr_graph,
21-
RRNodeId from_node,
22-
RRNodeId sink_node,
23-
bool is_inter_layer_opin_connection);
24-
259
static bool relevant_node_to_target(const RRGraphView* rr_graph,
2610
RRNodeId node_to_add,
2711
RRNodeId target_node);
@@ -852,9 +836,6 @@ void ConnectionRouter<Heap>::add_route_tree_to_heap(
852836
/* Pre-order depth-first traversal */
853837
// IPINs and SINKS are not re_expanded
854838
if (rt_node.re_expand) {
855-
if (target_node.is_valid() && !has_path_to_sink(rr_nodes_, rr_graph_, RRNodeId(rt_node.inode), RRNodeId(target_node), only_opin_inter_layer)) {
856-
return;
857-
}
858839
add_route_tree_node_to_heap(rt_node,
859840
target_node,
860841
cost_params,
@@ -1020,9 +1001,6 @@ t_bb ConnectionRouter<Heap>::add_high_fanout_route_tree_to_heap(
10201001
if (!inside_bb(rr_node_to_add, net_bounding_box))
10211002
continue;
10221003

1023-
if (!has_path_to_sink(rr_nodes_, rr_graph_, RRNodeId(rt_node.inode), target_node, only_opin_inter_layer)) {
1024-
continue;
1025-
}
10261004
// Put the node onto the heap
10271005
add_route_tree_node_to_heap(rt_node, target_node, cost_params, net_bounding_box);
10281006

@@ -1059,31 +1037,6 @@ t_bb ConnectionRouter<Heap>::add_high_fanout_route_tree_to_heap(
10591037
}
10601038
}
10611039

1062-
static inline bool has_path_to_sink(const t_rr_graph_view& rr_nodes,
1063-
const RRGraphView* rr_graph,
1064-
RRNodeId from_node,
1065-
RRNodeId sink_node,
1066-
bool is_inter_layer_opin_connection) {
1067-
int sink_layer = rr_graph->node_layer(sink_node);
1068-
1069-
if (rr_graph->node_layer(from_node) == sink_layer || rr_graph->node_type(from_node) == SOURCE || !is_inter_layer_opin_connection) {
1070-
return true;
1071-
} else if (rr_graph->node_type(from_node) == CHANX || rr_graph->node_type(from_node) == CHANY || rr_graph->node_type(from_node) == IPIN) {
1072-
return false;
1073-
} else {
1074-
VTR_ASSERT(rr_graph->node_type(from_node) == OPIN && is_inter_layer_opin_connection);
1075-
auto edges = rr_nodes.edge_range(from_node);
1076-
1077-
for (RREdgeId from_edge : edges) {
1078-
RRNodeId to_node = rr_nodes.edge_sink_node(from_edge);
1079-
if (rr_graph->node_layer(to_node) == sink_layer) {
1080-
return true;
1081-
}
1082-
}
1083-
return false;
1084-
}
1085-
}
1086-
10871040
static inline bool relevant_node_to_target(const RRGraphView* rr_graph,
10881041
RRNodeId node_to_add,
10891042
RRNodeId target_node) {

0 commit comments

Comments
 (0)