vpr: pass t_placer_opts in binary_search_place_and_route by reference
diff --git a/vpr/src/base/place_and_route.cpp b/vpr/src/base/place_and_route.cpp
index d016375..0f47ebe 100644
--- a/vpr/src/base/place_and_route.cpp
+++ b/vpr/src/base/place_and_route.cpp
@@ -43,7 +43,7 @@
 
 /************************* Subroutine Definitions ****************************/
 
-int binary_search_place_and_route(t_placer_opts placer_opts,
+int binary_search_place_and_route(const t_placer_opts& placer_opts_ref,
                                   const t_annealing_sched& annealing_sched,
                                   const t_router_opts& router_opts,
                                   const t_analysis_opts& analysis_opts,
@@ -76,6 +76,12 @@
 
     t_graph_type graph_type;
 
+    /* We have chosen to pass placer_opts_ref by reference because of its large size. *      
+     * However, since the value is mutated later in the function, we declare a        *
+     * mutable variable called placer_opts equal to placer_opts_ref.                  */
+
+    t_placer_opts placer_opts = placer_opts_ref;
+
     /* Allocate the major routing structures. */
 
     if (router_opts.route_type == GLOBAL) {
diff --git a/vpr/src/base/place_and_route.h b/vpr/src/base/place_and_route.h
index 40d9565..fe37dc0 100644
--- a/vpr/src/base/place_and_route.h
+++ b/vpr/src/base/place_and_route.h
@@ -21,7 +21,7 @@
     t_fmap_cell* next;
 };
 
-int binary_search_place_and_route(t_placer_opts placer_opts,
+int binary_search_place_and_route(const t_placer_opts& placer_opts_ref,
                                   const t_annealing_sched& annealing_sched,
                                   const t_router_opts& router_opts,
                                   const t_analysis_opts& analysis_opts,