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)