modified turnon bfs condition
diff --git a/vpr/SRC/route/look_ahead_bfs.c b/vpr/SRC/route/look_ahead_bfs.c index cb8322b..6270d4d 100644 --- a/vpr/SRC/route/look_ahead_bfs.c +++ b/vpr/SRC/route/look_ahead_bfs.c
@@ -154,13 +154,29 @@ // start wire is either INC_DIR or BI_DIR if (rr_node[inode].get_direction() == DEC_DIRECTION) continue; - if (rr_indexed_data[rr_node[inode].get_cost_index()].seg_index != i) + int i_seg_index = rr_indexed_data[rr_node[inode].get_cost_index()].seg_index; + if (i_seg_index != i) continue; if (rr_node[inode].type == chan_type[ichan] && rr_node[inode].get_xlow() == 2 && rr_node[inode].get_ylow() == 2) { + /* + if (i_seg_index == 0) { + int num_edges = rr_node[inode].get_num_edges(); + for (int iconn = 0; iconn < num_edges; iconn++) { + int to_node = rr_node[inode].edges[iconn]; + int to_node_seg_index = rr_indexed_data[rr_node[to_node].get_cost_index()].seg_index; + if (to_node_seg_index == 1 || to_node_seg_index == 2) { + start_inode = inode; + inode = num_rr_nodes; + break; + } + } + } else { + */ start_inode = inode; inode = num_rr_nodes; + //} } } // if not found such wire (maybe due to a too small chip size / too long wire)
diff --git a/vpr/SRC/route/route_timing.c b/vpr/SRC/route/route_timing.c index 58de2e2..312d5d8 100755 --- a/vpr/SRC/route/route_timing.c +++ b/vpr/SRC/route/route_timing.c
@@ -204,8 +204,6 @@ #endif acc_route_time = 0.; for (int itry = 1; itry <= router_opts.max_router_iterations; ++itry) { - if (itry > 1 && time_pre_itr > 2 * time_1st_itr) - printf("BFS OFF for itr %d\n", itry); if (itry == 1) crit_threshold = crit_threshold_init; else crit_threshold *= crit_threshold_inc_rate; if (crit_threshold > 0.988) crit_threshold = 0.988; @@ -216,6 +214,10 @@ if (itry > 1) { nodes_expanded_pre_itr = nodes_expanded_cur_itr; nodes_expanded_max_itr = (nodes_expanded_cur_itr > nodes_expanded_max_itr) ? nodes_expanded_cur_itr:nodes_expanded_max_itr; + if (nodes_expanded_pre_itr > 2 * nodes_expanded_1st_itr) { + crit_threshold = (crit_threshold > 0.98) ? crit_threshold : 0.98; + printf("BFS RAISE THRESHOLD to 0.98 for %d\n", itry); + } } nodes_expanded_cur_itr = 0; clock_t begin = clock(); @@ -1047,8 +1049,8 @@ return false; if (itry_share == 1) return true; - if (time_pre_itr > 2 * time_1st_itr) - return false; + //if (nodes_expanded_pre_itr > 2 * nodes_expanded_1st_itr) + // return false; if (criticality > crit_threshold) return true; else return false; //if (nodes_expanded_pre_itr < 2 * nodes_expanded_1st_itr)