|
6 | 6 | #include "bucket.h"
|
7 | 7 | #include "rr_graph_fwd.h"
|
8 | 8 |
|
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 |
| - |
25 | 9 | static bool relevant_node_to_target(const RRGraphView* rr_graph,
|
26 | 10 | RRNodeId node_to_add,
|
27 | 11 | RRNodeId target_node);
|
@@ -852,9 +836,6 @@ void ConnectionRouter<Heap>::add_route_tree_to_heap(
|
852 | 836 | /* Pre-order depth-first traversal */
|
853 | 837 | // IPINs and SINKS are not re_expanded
|
854 | 838 | 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 |
| - } |
858 | 839 | add_route_tree_node_to_heap(rt_node,
|
859 | 840 | target_node,
|
860 | 841 | cost_params,
|
@@ -1020,9 +1001,6 @@ t_bb ConnectionRouter<Heap>::add_high_fanout_route_tree_to_heap(
|
1020 | 1001 | if (!inside_bb(rr_node_to_add, net_bounding_box))
|
1021 | 1002 | continue;
|
1022 | 1003 |
|
1023 |
| - if (!has_path_to_sink(rr_nodes_, rr_graph_, RRNodeId(rt_node.inode), target_node, only_opin_inter_layer)) { |
1024 |
| - continue; |
1025 |
| - } |
1026 | 1004 | // Put the node onto the heap
|
1027 | 1005 | add_route_tree_node_to_heap(rt_node, target_node, cost_params, net_bounding_box);
|
1028 | 1006 |
|
@@ -1059,31 +1037,6 @@ t_bb ConnectionRouter<Heap>::add_high_fanout_route_tree_to_heap(
|
1059 | 1037 | }
|
1060 | 1038 | }
|
1061 | 1039 |
|
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 |
| - |
1087 | 1040 | static inline bool relevant_node_to_target(const RRGraphView* rr_graph,
|
1088 | 1041 | RRNodeId node_to_add,
|
1089 | 1042 | RRNodeId target_node) {
|
|
0 commit comments