From 1744d6c919ab7a5e6526301efbbac47f5144e415 Mon Sep 17 00:00:00 2001 From: amin1377 Date: Wed, 27 Mar 2024 14:18:12 -0400 Subject: [PATCH 01/15] vpr: router: cap pres_fac to 1000 --- vpr/src/route/route.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vpr/src/route/route.cpp b/vpr/src/route/route.cpp index dbf07569250..4dfecc21b00 100644 --- a/vpr/src/route/route.cpp +++ b/vpr/src/route/route.cpp @@ -442,7 +442,7 @@ bool route(const Netlist<>& net_list, pres_fac *= router_opts.pres_fac_mult; /* Avoid overflow for high iteration counts, even if acc_cost is big */ - pres_fac = update_draw_pres_fac(std::min(pres_fac, static_cast(HUGE_POSITIVE_FLOAT / 1e5))); + pres_fac = update_draw_pres_fac(std::min(pres_fac, static_cast(1000))); // Increase short path criticality if it's having a hard time resolving hold violations due to congestion if (budgeting_inf.if_set()) { From c9da9d4e3a38de8507a1d8e4bced127ec532c7a3 Mon Sep 17 00:00:00 2001 From: amin1377 Date: Mon, 1 Apr 2024 19:10:10 -0400 Subject: [PATCH 02/15] vpr: add max_pres_fac to command line argument --- vpr/src/base/SetupVPR.cpp | 1 + vpr/src/base/read_options.cpp | 5 +++++ vpr/src/base/read_options.h | 1 + vpr/src/base/vpr_types.h | 1 + 4 files changed, 8 insertions(+) diff --git a/vpr/src/base/SetupVPR.cpp b/vpr/src/base/SetupVPR.cpp index a93b648f87b..f359139c6ce 100644 --- a/vpr/src/base/SetupVPR.cpp +++ b/vpr/src/base/SetupVPR.cpp @@ -419,6 +419,7 @@ static void SetupRouterOpts(const t_options& Options, t_router_opts* RouterOpts) RouterOpts->min_incremental_reroute_fanout = Options.min_incremental_reroute_fanout; RouterOpts->incr_reroute_delay_ripup = Options.incr_reroute_delay_ripup; RouterOpts->pres_fac_mult = Options.pres_fac_mult; + RouterOpts->max_pres_fac = Options.max_pres_fac; RouterOpts->route_type = Options.RouteType; RouterOpts->full_stats = Options.full_stats; diff --git a/vpr/src/base/read_options.cpp b/vpr/src/base/read_options.cpp index fc01cd4bb96..9a988b4be20 100644 --- a/vpr/src/base/read_options.cpp +++ b/vpr/src/base/read_options.cpp @@ -2340,6 +2340,11 @@ argparse::ArgumentParser create_arg_parser(std::string prog_name, t_options& arg .default_value("1.3") .show_in(argparse::ShowIn::HELP_ONLY); + route_grp.add_argument(args.max_pres_fac, "-max_pres_fac") + .help("Sets the maximum present overuse penalty factor") + .default_value("1000.0") + .show_in(argparse::ShowIn::HELP_ONLY); + route_grp.add_argument(args.acc_fac, "--acc_fac") .help("Specifies the accumulated overuse factor (historical congestion cost factor)") .default_value("1.0") diff --git a/vpr/src/base/read_options.h b/vpr/src/base/read_options.h index e6476ba151e..66c53065859 100644 --- a/vpr/src/base/read_options.h +++ b/vpr/src/base/read_options.h @@ -182,6 +182,7 @@ struct t_options { argparse::ArgValue first_iter_pres_fac; argparse::ArgValue initial_pres_fac; argparse::ArgValue pres_fac_mult; + argparse::ArgValue max_pres_fac; argparse::ArgValue acc_fac; argparse::ArgValue bb_factor; argparse::ArgValue base_cost_type; diff --git a/vpr/src/base/vpr_types.h b/vpr/src/base/vpr_types.h index f0e7c1b258a..b92fb1caa64 100644 --- a/vpr/src/base/vpr_types.h +++ b/vpr/src/base/vpr_types.h @@ -1407,6 +1407,7 @@ struct t_router_opts { float first_iter_pres_fac; float initial_pres_fac; float pres_fac_mult; + float max_pres_fac; float acc_fac; float bend_cost; int max_router_iterations; From 8f86b048448529fdf992d619fe6baae78c6d549d Mon Sep 17 00:00:00 2001 From: amin1377 Date: Mon, 1 Apr 2024 19:11:49 -0400 Subject: [PATCH 03/15] vpr: show max_pres_fac in log --- vpr/src/base/ShowSetup.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/vpr/src/base/ShowSetup.cpp b/vpr/src/base/ShowSetup.cpp index fbb574a8e9b..8490ab3e6c5 100644 --- a/vpr/src/base/ShowSetup.cpp +++ b/vpr/src/base/ShowSetup.cpp @@ -328,6 +328,7 @@ static void ShowRouterOpts(const t_router_opts& RouterOpts) { VTR_LOG("RouterOpts.first_iter_pres_fac: %f\n", RouterOpts.first_iter_pres_fac); VTR_LOG("RouterOpts.initial_pres_fac: %f\n", RouterOpts.initial_pres_fac); VTR_LOG("RouterOpts.pres_fac_mult: %f\n", RouterOpts.pres_fac_mult); + VTR_LOG("RouterOpts.max_pres_fac: %f\n", RouterOpts.max_pres_fac); VTR_LOG("RouterOpts.max_router_iterations: %d\n", RouterOpts.max_router_iterations); VTR_LOG("RouterOpts.min_incremental_reroute_fanout: %d\n", RouterOpts.min_incremental_reroute_fanout); VTR_LOG("RouterOpts.do_check_rr_graph: %s\n", RouterOpts.do_check_rr_graph ? "true" : "false"); @@ -473,6 +474,7 @@ static void ShowRouterOpts(const t_router_opts& RouterOpts) { VTR_LOG("RouterOpts.first_iter_pres_fac: %f\n", RouterOpts.first_iter_pres_fac); VTR_LOG("RouterOpts.initial_pres_fac: %f\n", RouterOpts.initial_pres_fac); VTR_LOG("RouterOpts.pres_fac_mult: %f\n", RouterOpts.pres_fac_mult); + VTR_LOG("RouterOpts.max_pres_fac: %f\n", RouterOpts.max_pres_fac); VTR_LOG("RouterOpts.max_router_iterations: %d\n", RouterOpts.max_router_iterations); VTR_LOG("RouterOpts.min_incremental_reroute_fanout: %d\n", RouterOpts.min_incremental_reroute_fanout); VTR_LOG("RouterOpts.do_check_rr_graph: %s\n", RouterOpts.do_check_rr_graph ? "true" : "false"); From 3efa8a247eedccc5faf753454bd04e79f8b917c0 Mon Sep 17 00:00:00 2001 From: amin1377 Date: Mon, 1 Apr 2024 19:13:32 -0400 Subject: [PATCH 04/15] vpr: set the max pres fac of router to the value pass through the command lind --- vpr/src/route/route.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vpr/src/route/route.cpp b/vpr/src/route/route.cpp index 4dfecc21b00..e6b4dbf81d7 100644 --- a/vpr/src/route/route.cpp +++ b/vpr/src/route/route.cpp @@ -441,8 +441,8 @@ bool route(const Netlist<>& net_list, } else { pres_fac *= router_opts.pres_fac_mult; - /* Avoid overflow for high iteration counts, even if acc_cost is big */ - pres_fac = update_draw_pres_fac(std::min(pres_fac, static_cast(1000))); + /* Set the maximum pres_fac to the value passed by the command line argument */ + pres_fac = update_draw_pres_fac(std::min(pres_fac, router_opts.pres_fac_mult)); // Increase short path criticality if it's having a hard time resolving hold violations due to congestion if (budgeting_inf.if_set()) { From 9855a8eda5d85b7be8c0762314dee716b1e3fd76 Mon Sep 17 00:00:00 2001 From: amin1377 Date: Mon, 1 Apr 2024 19:16:22 -0400 Subject: [PATCH 05/15] document: add max_pres_fac to online document --- doc/src/vpr/command_line_usage.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/doc/src/vpr/command_line_usage.rst b/doc/src/vpr/command_line_usage.rst index 692098afadc..32530d84308 100644 --- a/doc/src/vpr/command_line_usage.rst +++ b/doc/src/vpr/command_line_usage.rst @@ -1163,6 +1163,12 @@ VPR uses a negotiated congestion algorithm (based on Pathfinder) to perform rout **Default:** ``1.3`` +.. option:: --max_pres_fac + + Sets the maximum present overuse penalty factor. + + **Default:** ``1000.0`` + .. option:: --acc_fac Specifies the accumulated overuse factor (historical congestion cost factor). From a472c968961fb51b0d53ff7ca33dc43c73a51328 Mon Sep 17 00:00:00 2001 From: amin1377 Date: Mon, 1 Apr 2024 19:17:24 -0400 Subject: [PATCH 06/15] make format --- .../src/read_fpga_interchange_arch.cpp | 51 ++++++------ .../src/read_fpga_interchange_arch.h | 16 ++-- vpr/src/base/read_interchange_netlist.cpp | 60 +++++++------- vpr/src/noc/noc_link.cpp | 2 +- vpr/src/noc/noc_link.h | 3 +- vpr/src/noc/noc_storage.cpp | 2 +- vpr/src/noc/noc_storage.h | 2 +- vpr/src/place/initial_noc_placement.cpp | 1 - vpr/src/place/noc_place_utils.cpp | 38 ++++----- vpr/src/place/noc_place_utils.h | 4 +- vpr/src/place/place.cpp | 16 ++-- vpr/src/place/place_util.cpp | 1 - vpr/src/place/place_util.h | 82 +++++++++---------- .../route/router_lookahead_extended_map.cpp | 9 +- vpr/src/route/router_lookahead_map_utils.cpp | 2 +- vpr/test/test_noc_place_utils.cpp | 5 +- vpr/test/test_xy_routing.cpp | 12 +-- 17 files changed, 145 insertions(+), 161 deletions(-) diff --git a/libs/libarchfpga/src/read_fpga_interchange_arch.cpp b/libs/libarchfpga/src/read_fpga_interchange_arch.cpp index 38066842db5..828f935369f 100644 --- a/libs/libarchfpga/src/read_fpga_interchange_arch.cpp +++ b/libs/libarchfpga/src/read_fpga_interchange_arch.cpp @@ -5,29 +5,28 @@ #ifdef VTR_ENABLE_CAPNPROTO -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "vtr_assert.h" -#include "vtr_digest.h" -#include "vtr_log.h" -#include "vtr_memory.h" -#include "vtr_util.h" - -#include "arch_check.h" -#include "arch_error.h" -#include "arch_util.h" -#include "arch_types.h" - +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include + +# include "vtr_assert.h" +# include "vtr_digest.h" +# include "vtr_log.h" +# include "vtr_memory.h" +# include "vtr_util.h" + +# include "arch_check.h" +# include "arch_error.h" +# include "arch_util.h" +# include "arch_types.h" /* * FPGA Interchange Device frontend @@ -2503,7 +2502,7 @@ struct ArchReader { } }; -#endif // VTR_ENABLE_CAPNPROTO +#endif // VTR_ENABLE_CAPNPROTO void FPGAInterchangeReadArch(const char* FPGAInterchangeDeviceFile, const bool /*timing_enabled*/, @@ -2551,12 +2550,12 @@ void FPGAInterchangeReadArch(const char* FPGAInterchangeDeviceFile, ArchReader reader(arch, device_reader, FPGAInterchangeDeviceFile, PhysicalTileTypes, LogicalBlockTypes); reader.read_arch(); -#else // VTR_ENABLE_CAPNPROTO +#else // VTR_ENABLE_CAPNPROTO // If CAPNPROTO is disabled, throw an error. (void)FPGAInterchangeDeviceFile; (void)arch; (void)PhysicalTileTypes; (void)LogicalBlockTypes; throw vtr::VtrError("Unable to read FPGA interchange if CAPNPROTO is not enabled", __FILE__, __LINE__); -#endif // VTR_ENABLE_CAPNPROTO +#endif // VTR_ENABLE_CAPNPROTO } diff --git a/libs/libarchfpga/src/read_fpga_interchange_arch.h b/libs/libarchfpga/src/read_fpga_interchange_arch.h index 3853ce93799..c859f97a002 100644 --- a/libs/libarchfpga/src/read_fpga_interchange_arch.h +++ b/libs/libarchfpga/src/read_fpga_interchange_arch.h @@ -5,14 +5,14 @@ #ifdef VTR_ENABLE_CAPNPROTO -#include "DeviceResources.capnp.h" -#include "LogicalNetlist.capnp.h" -#include "capnp/serialize.h" -#include "capnp/serialize-packed.h" -#include -#include - -#endif // VTR_ENABLE_CAPNPROTO +# include "DeviceResources.capnp.h" +# include "LogicalNetlist.capnp.h" +# include "capnp/serialize.h" +# include "capnp/serialize-packed.h" +# include +# include + +#endif // VTR_ENABLE_CAPNPROTO #ifdef __cplusplus extern "C" { diff --git a/vpr/src/base/read_interchange_netlist.cpp b/vpr/src/base/read_interchange_netlist.cpp index d584a1c6893..c29cea8326d 100644 --- a/vpr/src/base/read_interchange_netlist.cpp +++ b/vpr/src/base/read_interchange_netlist.cpp @@ -13,33 +13,33 @@ #ifdef VTR_ENABLE_CAPNPROTO -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "LogicalNetlist.capnp.h" -#include "capnp/serialize.h" -#include "capnp/serialize-packed.h" - -#include "vtr_assert.h" -#include "vtr_hash.h" -#include "vtr_util.h" -#include "vtr_log.h" -#include "vtr_logic.h" -#include "vtr_time.h" -#include "vtr_digest.h" - -#include "vpr_types.h" -#include "vpr_error.h" -#include "globals.h" -#include "arch_types.h" +# include +# include +# include +# include +# include +# include +# include +# include +# include +# include + +# include "LogicalNetlist.capnp.h" +# include "capnp/serialize.h" +# include "capnp/serialize-packed.h" + +# include "vtr_assert.h" +# include "vtr_hash.h" +# include "vtr_util.h" +# include "vtr_log.h" +# include "vtr_logic.h" +# include "vtr_time.h" +# include "vtr_digest.h" + +# include "vpr_types.h" +# include "vpr_error.h" +# include "globals.h" +# include "arch_types.h" struct NetlistReader { public: @@ -524,7 +524,7 @@ struct NetlistReader { } }; -#endif // VTR_ENABLE_CAPNPROTO +#endif // VTR_ENABLE_CAPNPROTO AtomNetlist read_interchange_netlist(const char* ic_netlist_file, t_arch& arch) { @@ -572,12 +572,12 @@ AtomNetlist read_interchange_netlist(const char* ic_netlist_file, return netlist; -#else // VTR_ENABLE_CAPNPROTO +#else // VTR_ENABLE_CAPNPROTO // If CAPNPROTO is not enabled, throw an error (void)ic_netlist_file; (void)arch; throw vtr::VtrError("Unable to read interchange netlist with CAPNPROTO disabled", __FILE__, __LINE__); -#endif // VTR_ENABLE_CAPNPROTO +#endif // VTR_ENABLE_CAPNPROTO } diff --git a/vpr/src/noc/noc_link.cpp b/vpr/src/noc/noc_link.cpp index 4407642ddae..59619418ca2 100644 --- a/vpr/src/noc/noc_link.cpp +++ b/vpr/src/noc/noc_link.cpp @@ -6,7 +6,7 @@ NocLink::NocLink(NocLinkId link_id, NocRouterId source, NocRouterId sink, double , source_router(source) , sink_router(sink) , bandwidth_usage(0.0) - , bandwidth(bw) { } + , bandwidth(bw) {} // getters NocRouterId NocLink::get_source_router(void) const { diff --git a/vpr/src/noc/noc_link.h b/vpr/src/noc/noc_link.h index 2aa5d55cd67..8f940d269c2 100644 --- a/vpr/src/noc/noc_link.h +++ b/vpr/src/noc/noc_link.h @@ -50,7 +50,7 @@ class NocLink { NocRouterId sink_router; /*!< The router which uses this link as an incoming edge*/ double bandwidth_usage; /*!< Represents the bandwidth of the data being transmitted on the link. Units in bits-per-second(bps)*/ - double bandwidth; /*!< Represents the maximum bits per second that can be transmitted over the link without causing congestion*/ + double bandwidth; /*!< Represents the maximum bits per second that can be transmitted over the link without causing congestion*/ public: NocLink(NocLinkId link_id, NocRouterId source_router, NocRouterId sink_router, double bw); @@ -135,7 +135,6 @@ class NocLink { */ void set_bandwidth(double new_bandwidth); - /** * @brief Returns the unique link ID. The ID can be used to index * vtr::vector instances. diff --git a/vpr/src/noc/noc_storage.cpp b/vpr/src/noc/noc_storage.cpp index 8438838c1f9..f4b0c1827ed 100644 --- a/vpr/src/noc/noc_storage.cpp +++ b/vpr/src/noc/noc_storage.cpp @@ -56,7 +56,7 @@ const NocLink& NocStorage::get_single_noc_link(NocLinkId id) const { return link_storage[id]; } -NocLinkId NocStorage::get_single_noc_link_id(NocRouterId src_router, NocRouterId dst_router) const { +NocLinkId NocStorage::get_single_noc_link_id(NocRouterId src_router, NocRouterId dst_router) const { NocLinkId link_id = NocLinkId::INVALID(); for (const auto& link : link_storage) { diff --git a/vpr/src/noc/noc_storage.h b/vpr/src/noc/noc_storage.h index 637d9f52126..022471c21b1 100644 --- a/vpr/src/noc/noc_storage.h +++ b/vpr/src/noc/noc_storage.h @@ -282,7 +282,7 @@ class NocStorage { * to the destination router. NocLinkId::INVALID() is such a link is not * found. */ - NocLinkId get_single_noc_link_id(NocRouterId src_router, NocRouterId dst_router) const; + NocLinkId get_single_noc_link_id(NocRouterId src_router, NocRouterId dst_router) const; /** * @brief Given a unique link identifier, get the corresponding link diff --git a/vpr/src/place/initial_noc_placement.cpp b/vpr/src/place/initial_noc_placement.cpp index 9294f3b291b..603860b3d22 100644 --- a/vpr/src/place/initial_noc_placement.cpp +++ b/vpr/src/place/initial_noc_placement.cpp @@ -187,7 +187,6 @@ static void noc_routers_anneal(const t_noc_opts& noc_opts) { const double starting_prob = 0.5; const double prob_step = starting_prob / N_MOVES; - // The checkpoint stored the placement with the lowest cost. NoCPlacementCheckpoint checkpoint; diff --git a/vpr/src/place/noc_place_utils.cpp b/vpr/src/place/noc_place_utils.cpp index a228cd1836e..8b724ff9637 100644 --- a/vpr/src/place/noc_place_utils.cpp +++ b/vpr/src/place/noc_place_utils.cpp @@ -9,7 +9,7 @@ static vtr::vector traffic_flow_costs, p static std::vector affected_traffic_flows; /* Proposed and actual congestion cost of a NoC link used for each move assessment */ -static vtr::vector link_congestion_costs, proposed_link_congestion_costs; +static vtr::vector link_congestion_costs, proposed_link_congestion_costs; /* Keeps track of NoC links whose bandwidth usage have been updated at each attempted placement move*/ static std::unordered_set affected_noc_links; @@ -57,7 +57,7 @@ void initial_noc_routing(void) { const t_noc_traffic_flow& curr_traffic_flow = noc_traffic_flows_storage.get_single_noc_traffic_flow(traffic_flow_id); // update the traffic flow route based on where the router cluster blocks are placed - std::vector& curr_traffic_flow_route = route_traffic_flow(traffic_flow_id, noc_ctx.noc_model,noc_traffic_flows_storage, *noc_ctx.noc_flows_router); + std::vector& curr_traffic_flow_route = route_traffic_flow(traffic_flow_id, noc_ctx.noc_model, noc_traffic_flows_storage, *noc_ctx.noc_flows_router); // update the links used in the found traffic flow route, links' bandwidth should be incremented since the traffic flow is routed update_traffic_flow_link_usage(curr_traffic_flow_route, noc_ctx.noc_model, 1, curr_traffic_flow.traffic_flow_bandwidth); @@ -126,7 +126,8 @@ void find_affected_noc_routers_and_update_noc_costs(const t_pl_blocks_to_be_move // calculate the new aggregate bandwidth and latency costs for the affected traffic flow proposed_traffic_flow_costs[traffic_flow_id].aggregate_bandwidth = calculate_traffic_flow_aggregate_bandwidth_cost(traffic_flow_route, curr_traffic_flow); std::tie(proposed_traffic_flow_costs[traffic_flow_id].latency, - proposed_traffic_flow_costs[traffic_flow_id].latency_overrun) = calculate_traffic_flow_latency_cost(traffic_flow_route, noc_ctx.noc_model, curr_traffic_flow); + proposed_traffic_flow_costs[traffic_flow_id].latency_overrun) + = calculate_traffic_flow_latency_cost(traffic_flow_route, noc_ctx.noc_model, curr_traffic_flow); // compute how much the aggregate bandwidth and latency costs change with this swap delta_c.aggregate_bandwidth += proposed_traffic_flow_costs[traffic_flow_id].aggregate_bandwidth - traffic_flow_costs[traffic_flow_id].aggregate_bandwidth; @@ -163,7 +164,7 @@ void commit_noc_costs() { } // Iterate over all the NoC links whose bandwidth utilization was affected by the proposed move - for(auto link_id : affected_noc_links) { + for (auto link_id : affected_noc_links) { // get the affected link const auto& link = noc_ctx.noc_model.get_single_noc_link(link_id); @@ -458,7 +459,7 @@ int check_noc_placement_costs(const t_placer_costs& costs, double error_toleranc vtr::vector temp_noc_link_storage = noc_model.get_noc_links(); // reset bandwidth utilization for all links - std::for_each(temp_noc_link_storage.begin(), temp_noc_link_storage.end(), [](NocLink& link) {link.set_bandwidth_usage(0.0); }); + std::for_each(temp_noc_link_storage.begin(), temp_noc_link_storage.end(), [](NocLink& link) { link.set_bandwidth_usage(0.0); }); // need to create a temporary noc routing algorithm std::unique_ptr temp_noc_routing_algorithm = NocRoutingAlgorithmCreator::create_routing_algorithm(noc_opts.noc_routing_algorithm); @@ -503,7 +504,7 @@ int check_noc_placement_costs(const t_placer_costs& costs, double error_toleranc } // Iterate over all NoC links and accumulate congestion cost - for(const auto& link : temp_noc_link_storage) { + for (const auto& link : temp_noc_link_storage) { cost_check.congestion += calculate_link_congestion_cost(link); } @@ -590,10 +591,7 @@ double calculate_link_congestion_cost(const NocLink& link) { } void normalize_noc_cost_weighting_factor(t_noc_opts& noc_opts) { - - double weighting_factor_sum = noc_opts.noc_latency_weighting + - noc_opts.noc_latency_constraints_weighting + - noc_opts.noc_congestion_weighting; + double weighting_factor_sum = noc_opts.noc_latency_weighting + noc_opts.noc_latency_constraints_weighting + noc_opts.noc_congestion_weighting; VTR_ASSERT(weighting_factor_sum <= 1.0 && weighting_factor_sum >= 0.0); @@ -617,11 +615,7 @@ double calculate_noc_cost(const NocCostTerms& cost_terms, * is computed. Weighting factors determine the contribution of each * normalized term to the sum. */ - cost = noc_opts.noc_placement_weighting * ( - cost_terms.aggregate_bandwidth * norm_factors.aggregate_bandwidth * noc_opts.noc_aggregate_bandwidth_weighting + - cost_terms.latency * norm_factors.latency * noc_opts.noc_latency_weighting + - cost_terms.latency_overrun * norm_factors.latency_overrun * noc_opts.noc_latency_constraints_weighting + - cost_terms.congestion * norm_factors.congestion * noc_opts.noc_congestion_weighting); + cost = noc_opts.noc_placement_weighting * (cost_terms.aggregate_bandwidth * norm_factors.aggregate_bandwidth * noc_opts.noc_aggregate_bandwidth_weighting + cost_terms.latency * norm_factors.latency * noc_opts.noc_latency_weighting + cost_terms.latency_overrun * norm_factors.latency_overrun * noc_opts.noc_latency_constraints_weighting + cost_terms.congestion * norm_factors.congestion * noc_opts.noc_congestion_weighting); return cost; } @@ -668,11 +662,11 @@ int get_number_of_congested_noc_links(void) { // Iterate over all NoC links and count the congested ones for (const auto& link : noc_links) { - double congested_bw_ratio = link.get_congested_bandwidth_ratio(); + double congested_bw_ratio = link.get_congested_bandwidth_ratio(); - if (congested_bw_ratio > MIN_EXPECTED_NOC_CONGESTION_COST) { + if (congested_bw_ratio > MIN_EXPECTED_NOC_CONGESTION_COST) { num_congested_links++; - } + } } return num_congested_links; @@ -686,8 +680,8 @@ double get_total_congestion_bandwidth_ratio(void) { // Iterate over all NoC links and count the congested ones for (const auto& link : noc_links) { - double congested_bw_ratio = link.get_congested_bandwidth_ratio(); - accum_congestion_ratio += congested_bw_ratio; + double congested_bw_ratio = link.get_congested_bandwidth_ratio(); + accum_congestion_ratio += congested_bw_ratio; } return accum_congestion_ratio; @@ -701,8 +695,8 @@ std::vector get_top_n_congested_links(int n) { // stable_sort is used to make sure the order is the same across different machines/compilers // Note that when the vector is sorted, indexing it with NocLinkId does return the corresponding link std::stable_sort(noc_links.begin(), noc_links.end(), [](const NocLink& l1, const NocLink& l2) { - return l1.get_congested_bandwidth_ratio() > l2.get_congested_bandwidth_ratio(); - }); + return l1.get_congested_bandwidth_ratio() > l2.get_congested_bandwidth_ratio(); + }); int pick_n = std::min((int)noc_links.size(), n); diff --git a/vpr/src/place/noc_place_utils.h b/vpr/src/place/noc_place_utils.h index 24926c48925..83dcddc9156 100644 --- a/vpr/src/place/noc_place_utils.h +++ b/vpr/src/place/noc_place_utils.h @@ -210,7 +210,8 @@ void update_traffic_flow_link_usage(const std::vector& traffic_flow_r */ void re_route_associated_traffic_flows(ClusterBlockId moved_router_block_id, NocTrafficFlows& noc_traffic_flows_storage, - NocStorage& noc_model, NocRouting& noc_flows_router, + NocStorage& noc_model, + NocRouting& noc_flows_router, std::unordered_set& updated_traffic_flows); /** @@ -462,7 +463,6 @@ double get_total_congestion_bandwidth_ratio(void); */ std::vector get_top_n_congested_links(int n); - /** * @brief Goes through all NoC links and determines whether they * are congested or not. Then finds n links that are most congested. diff --git a/vpr/src/place/place.cpp b/vpr/src/place/place.cpp index 68027a2b706..880b1da518c 100644 --- a/vpr/src/place/place.cpp +++ b/vpr/src/place/place.cpp @@ -826,7 +826,8 @@ void try_place(const Netlist<>& net_list, VTR_LOG("Initial placement cost: %g bb_cost: %g td_cost: %g\n", costs.cost, costs.bb_cost, costs.timing_cost); if (noc_opts.noc) { - VTR_LOG("NoC Placement Costs. " + VTR_LOG( + "NoC Placement Costs. " "cost: %g, " "aggregate_bandwidth_cost: %g, " "latency_cost: %g, " @@ -893,9 +894,6 @@ void try_place(const Netlist<>& net_list, costs.noc_cost_terms.congestion, get_total_congestion_bandwidth_ratio(), get_number_of_congested_noc_links()); - - - } //Draw the initial placement update_screen(ScreenUpdatePriority::MAJOR, msg, PLACEMENT, timing_info); @@ -1224,7 +1222,8 @@ void try_place(const Netlist<>& net_list, get_total_congestion_bandwidth_ratio(), get_number_of_congested_noc_links()); - VTR_LOG("\nNoC Placement Costs. " + VTR_LOG( + "\nNoC Placement Costs. " "cost: %g, " "aggregate_bandwidth_cost: %g, " "latency_cost: %g, " @@ -1481,7 +1480,6 @@ static void recompute_costs_from_scratch(const t_placer_opts& placer_opts, "noc_congestion_cost"); } costs->noc_cost_terms.congestion = new_noc_cost.congestion; - } } @@ -1711,8 +1709,8 @@ static e_move_result try_swap(const t_annealing_state* state, if (manual_move_enabled) { #ifndef NO_GRAPHICS create_move_outcome = manual_move_display_and_propose(manual_move_generator, blocks_affected, proposed_action.move_type, rlim, placer_opts, criticalities); -#else //NO_GRAPHICS - // Cast to void to explicitly avoid warning. +#else //NO_GRAPHICS \ + // Cast to void to explicitly avoid warning. (void)manual_move_generator; #endif //NO_GRAPHICS } else if (router_block_move) { @@ -1821,7 +1819,6 @@ static e_move_result try_swap(const t_annealing_state* state, delta_c = bb_delta_c * costs->bb_cost_norm; } - NocCostTerms noc_delta_c; // change in NoC cost /* Update the NoC datastructure and costs*/ if (noc_opts.noc) { @@ -4249,7 +4246,6 @@ static void print_place_status_header(bool noc_enabled) { VTR_LOG( "---- ------ ------- ------- ---------- ---------- ------- ---------- -------- ------- ------- ------ -------- --------- ------ -------- -------- --------- ---------\n"); } - } static void print_place_status(const t_annealing_state& state, diff --git a/vpr/src/place/place_util.cpp b/vpr/src/place/place_util.cpp index 6c7f506ee3e..52b9fdeb3d1 100644 --- a/vpr/src/place/place_util.cpp +++ b/vpr/src/place/place_util.cpp @@ -493,4 +493,3 @@ NocCostTerms& NocCostTerms::operator+=(const NocCostTerms& noc_delta_cost) { return *this; } - diff --git a/vpr/src/place/place_util.h b/vpr/src/place/place_util.h index 12bd6ce745b..d65d460446c 100644 --- a/vpr/src/place/place_util.h +++ b/vpr/src/place/place_util.h @@ -98,18 +98,18 @@ class t_placer_costs { public: //Mutator /** - * @brief Mutator: updates the norm factors in the outer loop iteration. - * - * At each temperature change we update these values to be used - * for normalizing the trade-off between timing and wirelength (bb) - */ + * @brief Mutator: updates the norm factors in the outer loop iteration. + * + * At each temperature change we update these values to be used + * for normalizing the trade-off between timing and wirelength (bb) + */ void update_norm_factors(); /** - * @brief Accumulates NoC cost difference terms - * - * @param noc_delta_cost Cost difference for NoC-related costs terms - */ + * @brief Accumulates NoC cost difference terms + * + * @param noc_delta_cost Cost difference for NoC-related costs terms + */ t_placer_costs& operator+=(const NocCostTerms& noc_delta_cost); private: @@ -193,15 +193,15 @@ class t_annealing_state { public: //Mutator /** - * @brief Update the annealing state according to the annealing schedule selected. - * - * USER_SCHED: A manual fixed schedule with fixed alpha and exit criteria. - * AUTO_SCHED: A more sophisticated schedule where alpha varies based on success ratio. - * DUSTY_SCHED: This schedule jumps backward and slows down in response to success ratio. - * See doc/src/vpr/dusty_sa.rst for more details. - * - * @return True->continues the annealing. False->exits the annealing. - */ + * @brief Update the annealing state according to the annealing schedule selected. + * + * USER_SCHED: A manual fixed schedule with fixed alpha and exit criteria. + * AUTO_SCHED: A more sophisticated schedule where alpha varies based on success ratio. + * DUSTY_SCHED: This schedule jumps backward and slows down in response to success ratio. + * See doc/src/vpr/dusty_sa.rst for more details. + * + * @return True->continues the annealing. False->exits the annealing. + */ bool outer_loop_update(float success_rate, const t_placer_costs& costs, const t_placer_opts& placer_opts, @@ -209,35 +209,35 @@ class t_annealing_state { private: //Mutator /** - * @brief Update the range limiter to keep acceptance prob. near 0.44. - * - * Use a floating point rlim to allow gradual transitions at low temps. - * The range is bounded by 1 (FINAL_RLIM) and the grid size (UPPER_RLIM). - */ + * @brief Update the range limiter to keep acceptance prob. near 0.44. + * + * Use a floating point rlim to allow gradual transitions at low temps. + * The range is bounded by 1 (FINAL_RLIM) and the grid size (UPPER_RLIM). + */ inline void update_rlim(float success_rate); /** - * @brief Update the criticality exponent. - * - * When rlim shrinks towards the FINAL_RLIM value (indicating - * that we are fine-tuning a more optimized placement), we can - * focus more on a smaller number of critical connections. - * To achieve this, we make the crit_exponent sharper, so that - * critical connections would become more critical than before. - * - * We calculate how close rlim is to its final value comparing - * to its initial value. Then, we apply the same scaling factor - * on the crit_exponent so that it lands on the suitable value - * between td_place_exp_first and td_place_exp_last. The scaling - * factor is calculated and applied linearly. - */ + * @brief Update the criticality exponent. + * + * When rlim shrinks towards the FINAL_RLIM value (indicating + * that we are fine-tuning a more optimized placement), we can + * focus more on a smaller number of critical connections. + * To achieve this, we make the crit_exponent sharper, so that + * critical connections would become more critical than before. + * + * We calculate how close rlim is to its final value comparing + * to its initial value. Then, we apply the same scaling factor + * on the crit_exponent so that it lands on the suitable value + * between td_place_exp_first and td_place_exp_last. The scaling + * factor is calculated and applied linearly. + */ inline void update_crit_exponent(const t_placer_opts& placer_opts); /** - * @brief Update the move limit based on the success rate. - * - * The value is bounded between 1 and move_lim_max. - */ + * @brief Update the move limit based on the success rate. + * + * The value is bounded between 1 and move_lim_max. + */ inline void update_move_lim(float success_target, float success_rate); }; diff --git a/vpr/src/route/router_lookahead_extended_map.cpp b/vpr/src/route/router_lookahead_extended_map.cpp index 6db4c4ff7bc..d72f5471130 100644 --- a/vpr/src/route/router_lookahead_extended_map.cpp +++ b/vpr/src/route/router_lookahead_extended_map.cpp @@ -611,18 +611,17 @@ void ExtendedMapLookahead::read(const std::string& file) { this->src_opin_delays = util::compute_router_src_opin_lookahead(is_flat_); this->chan_ipins_delays = util::compute_router_chan_ipin_lookahead(); -#else // VTR_ENABLE_CAPNPROTO +#else // VTR_ENABLE_CAPNPROTO (void)file; VPR_THROW(VPR_ERROR_ROUTE, "MapLookahead::read not implemented"); -#endif // VTR_ENABLE_CAPNPROTO +#endif // VTR_ENABLE_CAPNPROTO } void ExtendedMapLookahead::write(const std::string& file) const { #ifndef VTR_ENABLE_CAPNPROTO cost_map_.write(file); -#else // VTR_ENABLE_CAPNPROTO +#else // VTR_ENABLE_CAPNPROTO (void)file; VPR_THROW(VPR_ERROR_ROUTE, "MapLookahead::write not implemented"); -#endif // VTR_ENABLE_CAPNPROTO +#endif // VTR_ENABLE_CAPNPROTO } - diff --git a/vpr/src/route/router_lookahead_map_utils.cpp b/vpr/src/route/router_lookahead_map_utils.cpp index 3094c97e4d5..4b61758db9d 100644 --- a/vpr/src/route/router_lookahead_map_utils.cpp +++ b/vpr/src/route/router_lookahead_map_utils.cpp @@ -1120,7 +1120,7 @@ static int get_tile_src_opin_max_ptc(int itile) { int max_ptc = 0; // Output pin - for (const auto& class_inf: physical_tile.class_inf) { + for (const auto& class_inf : physical_tile.class_inf) { if (class_inf.type != e_pin_type::DRIVER) { continue; } diff --git a/vpr/test/test_noc_place_utils.cpp b/vpr/test/test_noc_place_utils.cpp index 8e53ec68ed9..e461c319e0a 100644 --- a/vpr/test/test_noc_place_utils.cpp +++ b/vpr/test/test_noc_place_utils.cpp @@ -1182,7 +1182,7 @@ TEST_CASE("test_find_affected_noc_routers_and_update_noc_costs, test_commit_noc_ // now check whether the expected noc costs that we manually calculated above match the noc costs found through the test function (we allow for a tolerance of difference) REQUIRE(vtr::isclose(golden_total_noc_aggr_bandwidth_cost, test_noc_costs.aggregate_bandwidth)); REQUIRE(vtr::isclose(golden_total_noc_latency_cost, test_noc_costs.latency)); - std::cout << golden_total_noc_latency_overrun_cost << " " << test_noc_costs.latency_overrun << std::endl; + std::cout << golden_total_noc_latency_overrun_cost << " " << test_noc_costs.latency_overrun << std::endl; REQUIRE(vtr::isclose(golden_total_noc_latency_overrun_cost, test_noc_costs.latency_overrun)); REQUIRE(vtr::isclose(golden_total_noc_congestion_cost, test_noc_costs.congestion)); @@ -1614,7 +1614,7 @@ TEST_CASE("test_revert_noc_traffic_flow_routes", "[noc_place_utils]") { } // re-route the traffic flow - noc_ctx.noc_flows_router->route_flow(router_where_cluster_is_placed[curr_traffic_flow.source_router_cluster_id],router_where_cluster_is_placed[curr_traffic_flow.sink_router_cluster_id], golden_traffic_flow_routes[traffic_flow], noc_ctx.noc_model); + noc_ctx.noc_flows_router->route_flow(router_where_cluster_is_placed[curr_traffic_flow.source_router_cluster_id], router_where_cluster_is_placed[curr_traffic_flow.sink_router_cluster_id], golden_traffic_flow_routes[traffic_flow], noc_ctx.noc_model); // go through the current traffic flow and reduce the bandwidths of the links (we only update this in the NoC, since these changes should be rectified by the test function) // This shouldn't be updated in the golden bandwidths since we are imitating a swap of blocks and not having a real swap of blocks @@ -1642,7 +1642,6 @@ TEST_CASE("test_revert_noc_traffic_flow_routes", "[noc_place_utils]") { const NocLink& current_link = noc_ctx.noc_model.get_single_noc_link(current_link_id); REQUIRE(golden_link_bandwidths[current_link_id] == current_link.get_bandwidth_usage()); - } for (int traffic_flow_number = 0; traffic_flow_number < NUM_OF_TRAFFIC_FLOWS_NOC_PLACE_UTILS_TEST; traffic_flow_number++) { diff --git a/vpr/test/test_xy_routing.cpp b/vpr/test/test_xy_routing.cpp index 49b58662ca2..09fbe80e3bd 100644 --- a/vpr/test/test_xy_routing.cpp +++ b/vpr/test/test_xy_routing.cpp @@ -109,7 +109,7 @@ TEST_CASE("test_route_flow", "[vpr_noc_xy_routing]") { std::vector golden_path; for (int current_router = 7; current_router != 4; current_router--) { - NocLinkId link_id = noc_model.get_single_noc_link_id(NocRouterId(current_router), NocRouterId(current_router - 1)); + NocLinkId link_id = noc_model.get_single_noc_link_id(NocRouterId(current_router), NocRouterId(current_router - 1)); const auto& link = noc_model.get_single_noc_link(link_id); golden_path.push_back(link); } @@ -133,7 +133,7 @@ TEST_CASE("test_route_flow", "[vpr_noc_xy_routing]") { std::vector golden_path; for (int current_row = 0; current_row < 3; current_row++) { - NocLinkId link_id = noc_model.get_single_noc_link_id(NocRouterId(current_row * 4 + 2), NocRouterId((current_row + 1) * 4 + 2)); + NocLinkId link_id = noc_model.get_single_noc_link_id(NocRouterId(current_row * 4 + 2), NocRouterId((current_row + 1) * 4 + 2)); const auto& link = noc_model.get_single_noc_link(link_id); golden_path.push_back(link); } @@ -158,14 +158,14 @@ TEST_CASE("test_route_flow", "[vpr_noc_xy_routing]") { // generate the horizontal path first for (int current_router = 3; current_router != 0; current_router--) { - NocLinkId link_id = noc_model.get_single_noc_link_id(NocRouterId(current_router), NocRouterId(current_router - 1)); + NocLinkId link_id = noc_model.get_single_noc_link_id(NocRouterId(current_router), NocRouterId(current_router - 1)); const auto& link = noc_model.get_single_noc_link(link_id); golden_path.push_back(link); } // generate the vertical path next for (int current_row = 0; current_row < 3; current_row++) { - NocLinkId link_id = noc_model.get_single_noc_link_id(NocRouterId(current_row * 4), NocRouterId((current_row + 1) * 4)); + NocLinkId link_id = noc_model.get_single_noc_link_id(NocRouterId(current_row * 4), NocRouterId((current_row + 1) * 4)); const auto& link = noc_model.get_single_noc_link(link_id); golden_path.push_back(link); } @@ -193,14 +193,14 @@ TEST_CASE("test_route_flow", "[vpr_noc_xy_routing]") { // generate the horizontal path first for (int current_router = 12; current_router != 15; current_router++) { - NocLinkId link_id = noc_model.get_single_noc_link_id(NocRouterId(current_router), NocRouterId(current_router + 1)); + NocLinkId link_id = noc_model.get_single_noc_link_id(NocRouterId(current_router), NocRouterId(current_router + 1)); const auto& link = noc_model.get_single_noc_link(link_id); golden_path.push_back(link); } // generate the vertical path next for (int current_row = 3; current_row > 0; current_row--) { - NocLinkId link_id = noc_model.get_single_noc_link_id(NocRouterId(current_row * 4 + 3), NocRouterId((current_row - 1) * 4 + 3)); + NocLinkId link_id = noc_model.get_single_noc_link_id(NocRouterId(current_row * 4 + 3), NocRouterId((current_row - 1) * 4 + 3)); const auto& link = noc_model.get_single_noc_link(link_id); golden_path.push_back(link); } From 5276017f35ae1e26c43ce8009764b32f8496b8dd Mon Sep 17 00:00:00 2001 From: amin1377 Date: Tue, 2 Apr 2024 10:35:57 -0400 Subject: [PATCH 07/15] vpr: fix a type. set max pres fac --- vpr/src/route/route.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vpr/src/route/route.cpp b/vpr/src/route/route.cpp index e6b4dbf81d7..b39e055e56c 100644 --- a/vpr/src/route/route.cpp +++ b/vpr/src/route/route.cpp @@ -442,7 +442,7 @@ bool route(const Netlist<>& net_list, pres_fac *= router_opts.pres_fac_mult; /* Set the maximum pres_fac to the value passed by the command line argument */ - pres_fac = update_draw_pres_fac(std::min(pres_fac, router_opts.pres_fac_mult)); + pres_fac = update_draw_pres_fac(std::min(pres_fac, router_opts.max_pres_fac)); // Increase short path criticality if it's having a hard time resolving hold violations due to congestion if (budgeting_inf.if_set()) { From e6af24c460617f411da38ade79e779a7dd0b36e5 Mon Sep 17 00:00:00 2001 From: amin1377 Date: Thu, 16 May 2024 09:42:10 -0400 Subject: [PATCH 08/15] [CLI] add doc for max_pres_fac --- doc/src/vpr/command_line_usage.rst | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/src/vpr/command_line_usage.rst b/doc/src/vpr/command_line_usage.rst index 90afebc9ccd..9647dcfe496 100644 --- a/doc/src/vpr/command_line_usage.rst +++ b/doc/src/vpr/command_line_usage.rst @@ -1165,7 +1165,9 @@ VPR uses a negotiated congestion algorithm (based on Pathfinder) to perform rout .. option:: --max_pres_fac - Sets the maximum present overuse penalty factor. + Sets the maximum present overuse penalty factor that can ever result during routing. Should always be less than 1e25 or so to prevent overflow. + Smaller values may help prevent circuitous routing in difficult routing problems, but may increase + the number of routing iterations needed and hence runtime. **Default:** ``1000.0`` From 33ea049d4e31732190e372bca00f48b3c686b969 Mon Sep 17 00:00:00 2001 From: amin1377 Date: Thu, 16 May 2024 10:54:37 -0400 Subject: [PATCH 09/15] [vpr][route] set pres fac before calling update_draw_pres_fac --- vpr/src/route/route.cpp | 13 ++++++++----- vpr/src/route/route_utils.cpp | 4 +--- vpr/src/route/route_utils.h | 6 ++---- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/vpr/src/route/route.cpp b/vpr/src/route/route.cpp index b39e055e56c..14296adfcf8 100644 --- a/vpr/src/route/route.cpp +++ b/vpr/src/route/route.cpp @@ -357,7 +357,8 @@ bool route(const Netlist<>& net_list, //Decrease pres_fac so that critical connections will take more direct routes //Note that we use first_iter_pres_fac here (typically zero), and switch to //use initial_pres_fac on the next iteration. - pres_fac = update_draw_pres_fac(router_opts.first_iter_pres_fac); + pres_fac = router_opts.first_iter_pres_fac; + update_draw_pres_fac(pres_fac); //Reduce timing tolerances to re-route more delay-suboptimal signals connections_inf.set_connection_criticality_tolerance(0.7); @@ -374,7 +375,8 @@ bool route(const Netlist<>& net_list, //after the first routing convergence. Since that is often zero, //we want to set pres_fac to a reasonable (i.e. typically non-zero) //value afterwards -- so it grows when multiplied by pres_fac_mult - pres_fac = update_draw_pres_fac(router_opts.initial_pres_fac); + pres_fac = router_opts.initial_pres_fac + update_draw_pres_fac(pres_fac); } //Have we converged the maximum number of times, did not make any changes, or does it seem @@ -437,12 +439,13 @@ bool route(const Netlist<>& net_list, //Update pres_fac if (itry == 1) { - pres_fac = update_draw_pres_fac(router_opts.initial_pres_fac); + pres_fac = router_opts.initial_pres_fac; + update_draw_pres_fac(pres_fac); } else { pres_fac *= router_opts.pres_fac_mult; - + pres_fac = std::min(pres_fac, router_opts.max_pres_fac); /* Set the maximum pres_fac to the value passed by the command line argument */ - pres_fac = update_draw_pres_fac(std::min(pres_fac, router_opts.max_pres_fac)); + update_draw_pres_fac(pres_fac)); // Increase short path criticality if it's having a hard time resolving hold violations due to congestion if (budgeting_inf.if_set()) { diff --git a/vpr/src/route/route_utils.cpp b/vpr/src/route/route_utils.cpp index f90789e5250..00cb0aabf87 100644 --- a/vpr/src/route/route_utils.cpp +++ b/vpr/src/route/route_utils.cpp @@ -507,15 +507,13 @@ void try_graph(int width_fac, is_flat); } -float update_draw_pres_fac(float new_pres_fac) { +void update_draw_pres_fac(const float new_pres_fac) { #ifndef NO_GRAPHICS // Only updates the drawing pres_fac if graphics is enabled get_draw_state_vars()->pres_fac = new_pres_fac; #endif // NO_GRAPHICS - - return new_pres_fac; } #ifndef NO_GRAPHICS diff --git a/vpr/src/route/route_utils.h b/vpr/src/route/route_utils.h index 8b86f230290..fddad8247dd 100644 --- a/vpr/src/route/route_utils.h +++ b/vpr/src/route/route_utils.h @@ -136,10 +136,8 @@ void try_graph(int width_fac, int num_directs, bool is_flat); -/* This routine should take the new value of the present congestion factor - * and propagate it to all the relevant data fields in the vpr flow. - * Currently, it only updates the pres_fac used by the drawing functions */ -float update_draw_pres_fac(float new_pres_fac); +/* This routine updates the pres_fac used by the drawing functions */ +void update_draw_pres_fac(const float new_pres_fac); #ifndef NO_GRAPHICS /** Updates router iteration information and checks for router iteration and net id breakpoints From 81604de782000a9499fbdb5b76e9fafd2aafe352 Mon Sep 17 00:00:00 2001 From: amin1377 Date: Wed, 22 May 2024 18:12:10 -0400 Subject: [PATCH 10/15] [vpr][router] solve the bug with update_draw_pres_fac --- vpr/src/route/route.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/vpr/src/route/route.cpp b/vpr/src/route/route.cpp index 14296adfcf8..2d8db77c13d 100644 --- a/vpr/src/route/route.cpp +++ b/vpr/src/route/route.cpp @@ -155,7 +155,8 @@ bool route(const Netlist<>& net_list, VTR_ASSERT(router_lookahead != nullptr); /* Routing parameters */ - float pres_fac = update_draw_pres_fac(router_opts.first_iter_pres_fac); /* Typically 0 -> ignore cong. */ + float pres_fac = router_opts.first_iter_pres_fac; + update_draw_pres_fac(pres_fac); /* Typically 0 -> ignore cong. */ int bb_fac = router_opts.bb_factor; /* When routing conflicts are detected the bounding boxes are scaled @@ -375,7 +376,7 @@ bool route(const Netlist<>& net_list, //after the first routing convergence. Since that is often zero, //we want to set pres_fac to a reasonable (i.e. typically non-zero) //value afterwards -- so it grows when multiplied by pres_fac_mult - pres_fac = router_opts.initial_pres_fac + pres_fac = router_opts.initial_pres_fac; update_draw_pres_fac(pres_fac); } @@ -445,7 +446,7 @@ bool route(const Netlist<>& net_list, pres_fac *= router_opts.pres_fac_mult; pres_fac = std::min(pres_fac, router_opts.max_pres_fac); /* Set the maximum pres_fac to the value passed by the command line argument */ - update_draw_pres_fac(pres_fac)); + update_draw_pres_fac(pres_fac); // Increase short path criticality if it's having a hard time resolving hold violations due to congestion if (budgeting_inf.if_set()) { From ba8c4550232707875988e321eeb3e66ee9271d4a Mon Sep 17 00:00:00 2001 From: amin1377 Date: Thu, 23 May 2024 08:14:29 -0400 Subject: [PATCH 11/15] [vpr][placement] fix comment --- vpr/src/place/place.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vpr/src/place/place.cpp b/vpr/src/place/place.cpp index e1a9fe77868..2a950801061 100644 --- a/vpr/src/place/place.cpp +++ b/vpr/src/place/place.cpp @@ -1708,8 +1708,8 @@ static e_move_result try_swap(const t_annealing_state* state, if (manual_move_enabled) { #ifndef NO_GRAPHICS create_move_outcome = manual_move_display_and_propose(manual_move_generator, blocks_affected, proposed_action.move_type, rlim, placer_opts, criticalities); -#else //NO_GRAPHICS \ - // Cast to void to explicitly avoid warning. +#else //NO_GRAPHICS + //Cast to void to explicitly avoid warning. (void)manual_move_generator; #endif //NO_GRAPHICS } else if (router_block_move) { From a66176c415b1d4e80199e39931a7f0ea38894a88 Mon Sep 17 00:00:00 2001 From: amin1377 Date: Thu, 23 May 2024 08:17:31 -0400 Subject: [PATCH 12/15] [test] update nightly_test_2 golden results --- .../vtr_reg_nightly_test2/vtr_bidir/config/golden_results.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vtr_flow/tasks/regression_tests/vtr_reg_nightly_test2/vtr_bidir/config/golden_results.txt b/vtr_flow/tasks/regression_tests/vtr_reg_nightly_test2/vtr_bidir/config/golden_results.txt index 0b79ca95a28..cbf603eb7e4 100644 --- a/vtr_flow/tasks/regression_tests/vtr_reg_nightly_test2/vtr_bidir/config/golden_results.txt +++ b/vtr_flow/tasks/regression_tests/vtr_reg_nightly_test2/vtr_bidir/config/golden_results.txt @@ -1,5 +1,5 @@ arch circuit script_params vtr_flow_elapsed_time vtr_max_mem_stage vtr_max_mem error odin_synth_time max_odin_mem parmys_synth_time max_parmys_mem abc_depth abc_synth_time abc_cec_time abc_sec_time max_abc_mem ace_time max_ace_mem num_clb num_io num_memories num_mult vpr_status vpr_revision vpr_build_info vpr_compiler vpr_compiled hostname rundir max_vpr_mem num_primary_inputs num_primary_outputs num_pre_packed_nets num_pre_packed_blocks num_netlist_clocks num_post_packed_nets num_post_packed_blocks device_width device_height device_grid_tiles device_limiting_resources device_name pack_mem pack_time placed_wirelength_est place_mem place_time place_quench_time placed_CPD_est placed_setup_TNS_est placed_setup_WNS_est placed_geomean_nonvirtual_intradomain_critical_path_delay_est place_delay_matrix_lookup_time place_quench_timing_analysis_time place_quench_sta_time place_total_timing_analysis_time place_total_sta_time min_chan_width routed_wirelength min_chan_width_route_success_iteration logic_block_area_total logic_block_area_used min_chan_width_routing_area_total min_chan_width_routing_area_per_tile min_chan_width_route_time min_chan_width_total_timing_analysis_time min_chan_width_total_sta_time crit_path_num_rr_graph_nodes crit_path_num_rr_graph_edges crit_path_collapsed_nodes crit_path_routed_wirelength crit_path_route_success_iteration crit_path_total_nets_routed crit_path_total_connections_routed crit_path_total_heap_pushes crit_path_total_heap_pops crit_path_total_internal_heap_pushes crit_path_total_internal_heap_pops crit_path_total_external_heap_pushes crit_path_total_external_heap_pops crit_path_total_external_SOURCE_pushes crit_path_total_external_SOURCE_pops crit_path_total_internal_SOURCE_pushes crit_path_total_internal_SOURCE_pops crit_path_total_external_SINK_pushes crit_path_total_external_SINK_pops crit_path_total_internal_SINK_pushes crit_path_total_internal_SINK_pops crit_path_total_external_IPIN_pushes crit_path_total_external_IPIN_pops crit_path_total_internal_IPIN_pushes crit_path_total_internal_IPIN_pops crit_path_total_external_OPIN_pushes crit_path_total_external_OPIN_pops crit_path_total_internal_OPIN_pushes crit_path_total_internal_OPIN_pops crit_path_total_external_CHANX_pushes crit_path_total_external_CHANX_pops crit_path_total_internal_CHANX_pushes crit_path_total_internal_CHANX_pops crit_path_total_external_CHANY_pushes crit_path_total_external_CHANY_pops crit_path_total_internal_CHANY_pushes crit_path_total_internal_CHANY_pops crit_path_rt_node_SOURCE_pushes crit_path_rt_node_SINK_pushes crit_path_rt_node_IPIN_pushes crit_path_rt_node_OPIN_pushes crit_path_rt_node_CHANX_pushes crit_path_rt_node_CHANY_pushes crit_path_adding_all_rt crit_path_adding_high_fanout_rt crit_path_total_number_of_adding_all_rt_from_calling_high_fanout_rt critical_path_delay geomean_nonvirtual_intradomain_critical_path_delay setup_TNS setup_WNS hold_TNS hold_WNS crit_path_routing_area_total crit_path_routing_area_per_tile router_lookahead_computation_time crit_path_route_time crit_path_create_rr_graph_time crit_path_create_intra_cluster_rr_graph_time crit_path_tile_lookahead_computation_time crit_path_router_lookahead_computation_time crit_path_total_timing_analysis_time crit_path_total_sta_time -k4_n4_v7_bidir.xml alu4.blif common 17.97 vpr 69.13 MiB -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 475 14 -1 -1 success a1966c4-dirty release IPO VTR_ASSERT_LEVEL=2 GNU 9.5.0 on Linux-5.10.35-v8 x86_64 2023-08-16T20:55:46 gh-actions-runner-vtr-auto-spawned4 /root/vtr-verilog-to-routing/vtr-verilog-to-routing 70788 14 8 1536 1544 0 1091 497 24 24 576 clb auto 31.6 MiB 0.29 14174 69.1 MiB 1.05 0.01 13.4464 -91.906 -13.4464 nan 1.36 0.00347385 0.00290782 0.247999 0.211234 28 20910 32 1.452e+07 1.425e+07 -1 -1 10.82 1.44391 1.22437 21174 279108 -1 19878 20 7201 27995 2276505 212795 0 0 2276505 212795 16951 11554 0 0 31392 28016 0 0 50562 32519 0 0 53034 24138 0 0 1089394 57817 0 0 1035172 58751 0 0 16951 0 0 12554 113703 115472 357504 11933 2267 16.2487 nan -109.749 -16.2487 0 0 -1 -1 0.57 0.72 0.17 -1 -1 0.57 0.18904 0.168713 +k4_n4_v7_bidir.xml alu4.blif common 17.97 vpr 69.13 MiB -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 475 14 -1 -1 success a1966c4-dirty release IPO VTR_ASSERT_LEVEL=2 GNU 9.5.0 on Linux-5.10.35-v8 x86_64 2023-08-16T20:55:46 gh-actions-runner-vtr-auto-spawned4 /root/vtr-verilog-to-routing/vtr-verilog-to-routing 70788 14 8 1536 1544 0 1091 497 24 24 576 clb auto 31.6 MiB 0.29 14174 69.1 MiB 1.05 0.01 13.4464 -91.906 -13.4464 nan 1.36 0.00347385 0.00290782 0.247999 0.211234 28 20910 32 1.452e+07 1.425e+07 -1 -1 10.82 1.44391 1.22437 21174 279108 -1 19878 20 7201 27995 2276505 212795 0 0 2276505 212795 16951 11554 0 0 31392 28016 0 0 50562 32519 0 0 53034 24138 0 0 1089394 57817 0 0 1035172 58751 0 0 16951 0 0 12554 113703 115472 357504 11933 2267 18 nan -109.749 -18 0 0 -1 -1 0.57 0.72 0.17 -1 -1 0.57 0.18904 0.168713 k4_n4_v7_bidir.xml apex2.blif common 22.29 vpr 72.88 MiB -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 600 38 -1 -1 success a1966c4-dirty release IPO VTR_ASSERT_LEVEL=2 GNU 9.5.0 on Linux-5.10.35-v8 x86_64 2023-08-16T20:55:46 gh-actions-runner-vtr-auto-spawned4 /root/vtr-verilog-to-routing/vtr-verilog-to-routing 74632 38 3 1916 1919 0 1509 641 27 27 729 clb auto 35.0 MiB 0.38 19839 72.9 MiB 1.44 0.02 14.9286 -44.0658 -14.9286 nan 1.71 0.00447423 0.0037738 0.318034 0.271255 31 29152 43 1.875e+07 1.8e+07 -1 -1 13.08 1.89132 1.61731 28210 394495 -1 28088 18 10308 35327 3215747 279851 0 0 3215747 279851 29720 16267 0 0 39742 35335 0 0 61341 40948 0 0 80107 33828 0 0 1543669 76168 0 0 1461168 77305 0 0 29720 0 0 24742 194098 209672 870568 6388 201 17.3073 nan -51.5022 -17.3073 0 0 -1 -1 0.80 0.88 0.22 -1 -1 0.80 0.204316 0.178519 k4_n4_v7_bidir.xml apex4.blif common 20.47 vpr 67.20 MiB -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 408 9 -1 -1 success a1966c4-dirty release IPO VTR_ASSERT_LEVEL=2 GNU 9.5.0 on Linux-5.10.35-v8 x86_64 2023-08-16T20:55:46 gh-actions-runner-vtr-auto-spawned4 /root/vtr-verilog-to-routing/vtr-verilog-to-routing 68812 9 19 1271 1290 0 990 436 23 23 529 clb auto 29.6 MiB 0.24 13522 67.2 MiB 0.88 0.01 12.9459 -210.249 -12.9459 nan 1.31 0.00304529 0.00263188 0.202833 0.176455 31 21733 44 1.323e+07 1.224e+07 -1 -1 13.75 1.2743 1.09421 20514 283063 -1 19523 24 8011 29398 3111419 256159 0 0 3111419 256159 27108 14933 0 0 33129 29452 0 0 53736 33902 0 0 81514 31763 0 0 1464504 74767 0 0 1451428 71342 0 0 27108 0 0 31372 225582 235236 1191218 2710 504 24.98505 nan -264.732 -24.98505 0 0 -1 -1 0.57 0.82 0.17 -1 -1 0.57 0.173296 0.153258 k4_n4_v7_bidir.xml bigkey.blif common 26.60 vpr 73.27 MiB -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 456 229 -1 -1 success a1966c4-dirty release IPO VTR_ASSERT_LEVEL=2 GNU 9.5.0 on Linux-5.10.35-v8 x86_64 2023-08-16T20:55:46 gh-actions-runner-vtr-auto-spawned4 /root/vtr-verilog-to-routing/vtr-verilog-to-routing 75028 229 197 2152 2349 1 1587 882 29 29 841 io auto 35.1 MiB 0.30 12959 73.3 MiB 2.51 0.02 7.48553 -1803.94 -7.48553 7.48553 2.28 0.00469204 0.00410364 0.51071 0.442793 18 20371 48 2.187e+07 1.368e+07 -1 -1 15.57 1.94898 1.6994 25794 279159 -1 18368 19 8448 24780 1743257 182995 0 0 1743257 182995 13766 10049 0 0 30505 25889 0 0 47823 31434 0 0 40964 21410 0 0 806666 46627 0 0 803533 47586 0 0 13766 0 0 6197 80865 80423 213680 11837 3693 9.06144 9.06144 -2390.66 -9.06144 0 0 -1 -1 0.61 0.68 0.17 -1 -1 0.61 0.253486 0.225627 From 27839bdc99e8f85967b08c69e887448e0cc18de7 Mon Sep 17 00:00:00 2001 From: amin1377 Date: Wed, 29 May 2024 08:10:15 -0400 Subject: [PATCH 13/15] [test] update nightly_test_1 golden result --- .../arithmetic_tasks/FIR_filters_frac/config/golden_results.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vtr_flow/tasks/regression_tests/vtr_reg_nightly_test1_odin/arithmetic_tasks/FIR_filters_frac/config/golden_results.txt b/vtr_flow/tasks/regression_tests/vtr_reg_nightly_test1_odin/arithmetic_tasks/FIR_filters_frac/config/golden_results.txt index 86e5238f5f4..0606a6ee1c9 100644 --- a/vtr_flow/tasks/regression_tests/vtr_reg_nightly_test1_odin/arithmetic_tasks/FIR_filters_frac/config/golden_results.txt +++ b/vtr_flow/tasks/regression_tests/vtr_reg_nightly_test1_odin/arithmetic_tasks/FIR_filters_frac/config/golden_results.txt @@ -133,7 +133,7 @@ k6_frac_2uripple_N8_22nm.xml fir_nopipe_27.v common 21.80 vpr 75.34 MiB 0.13 12 k6_frac_2uripple_N8_22nm.xml fir_nopipe_28.v common 27.61 vpr 75.93 MiB 0.13 12672 -1 -1 1 0.42 -1 -1 39444 -1 -1 83 22 0 8 success 3634420-dirty release IPO VTR_ASSERT_LEVEL=2 GNU 9.5.0 on Linux-5.10.35-v8 x86_64 2023-11-11T22:36:55 gh-actions-runner-vtr-auto-spawned38 /root/vtr-verilog-to-routing/vtr-verilog-to-routing 77752 22 19 2459 1781 1 1417 132 18 18 324 mult_36 auto 38.4 MiB 0.91 8901 22577 4985 14993 2599 75.9 MiB 0.76 0.01 7.8713 -549.689 -7.8713 7.8713 1.41 0.0044721 0.00400453 0.37567 0.335486 70 15022 26 8.18539e+06 4.3894e+06 1.34436e+06 4149.26 18.64 2.63309 2.3407 37264 347768 -1 13242 23 9518 11089 1869023 398865 0 0 1869023 398865 10194 9636 0 0 76816 71405 0 0 102665 82788 0 0 10196 9695 0 0 837549 113400 0 0 831603 111941 0 0 10194 0 0 701 5045 4474 13769 940 130 8.87728 8.87728 -957.043 -8.87728 0 0 1.69344e+06 5226.66 0.81 0.83 0.44 -1 -1 0.81 0.299514 0.271162 594 551 513 19 0 0 k6_frac_2uripple_N8_22nm.xml fir_nopipe_29.v common 27.15 vpr 76.10 MiB 0.14 12824 -1 -1 1 0.46 -1 -1 40700 -1 -1 85 22 0 9 success 3634420-dirty release IPO VTR_ASSERT_LEVEL=2 GNU 9.5.0 on Linux-5.10.35-v8 x86_64 2023-11-11T22:36:55 gh-actions-runner-vtr-auto-spawned38 /root/vtr-verilog-to-routing/vtr-verilog-to-routing 77928 22 19 2565 1853 1 1485 135 22 22 484 mult_36 auto 38.7 MiB 0.98 9689 25047 6275 16269 2503 76.1 MiB 0.94 0.01 7.43624 -544.661 -7.43624 7.43624 2.37 0.00627739 0.005399 0.475538 0.415759 70 16428 27 1.33067e+07 4.81483e+06 2.06816e+06 4273.05 14.91 2.30064 2.03522 56434 539830 -1 14001 25 11439 13263 2233851 474457 0 0 2233851 474457 12595 11730 0 0 97078 90555 0 0 128940 103685 0 0 12598 11816 0 0 988671 129989 0 0 993969 126682 0 0 12595 0 0 1181 5046 6091 28215 698 2 8.73683 8.73683 -847.048 -8.73683 0 0 2.60483e+06 5381.88 1.40 1.01 0.68 -1 -1 1.40 0.349618 0.316208 619 570 532 19 0 0 k6_frac_2uripple_N8_22nm.xml fir_nopipe_30.v common 25.19 vpr 76.62 MiB 0.14 12956 -1 -1 1 0.47 -1 -1 39948 -1 -1 89 22 0 9 success 3634420-dirty release IPO VTR_ASSERT_LEVEL=2 GNU 9.5.0 on Linux-5.10.35-v8 x86_64 2023-11-11T22:36:55 gh-actions-runner-vtr-auto-spawned38 /root/vtr-verilog-to-routing/vtr-verilog-to-routing 78460 22 19 2639 1910 1 1523 139 22 22 484 mult_36 auto 39.2 MiB 1.02 9640 28859 6707 18502 3650 76.6 MiB 1.13 0.01 7.43624 -520.251 -7.43624 7.43624 2.32 0.00629213 0.00540153 0.557969 0.48787 70 16649 34 1.33067e+07 4.87369e+06 2.06816e+06 4273.05 12.67 2.06295 1.82406 56434 539830 -1 14184 24 12418 14250 2862133 602975 0 0 2862133 602975 13565 12580 0 0 104860 98182 0 0 141217 112467 0 0 13569 12703 0 0 1300740 182621 0 0 1288182 184422 0 0 13565 0 0 1174 4689 4837 20323 761 3 8.95347 8.95347 -846.506 -8.95347 0 0 2.60483e+06 5381.88 1.35 1.16 0.68 -1 -1 1.35 0.337838 0.304321 639 589 551 19 0 0 -k6_frac_2uripple_N8_22nm.xml fir_nopipe_31.v common 29.27 vpr 77.28 MiB 0.15 13268 -1 -1 1 0.50 -1 -1 40004 -1 -1 93 22 0 9 success 3634420-dirty release IPO VTR_ASSERT_LEVEL=2 GNU 9.5.0 on Linux-5.10.35-v8 x86_64 2023-11-11T22:36:55 gh-actions-runner-vtr-auto-spawned38 /root/vtr-verilog-to-routing/vtr-verilog-to-routing 79136 22 19 2744 1981 1 1590 143 22 22 484 mult_36 auto 39.9 MiB 1.02 10213 28491 6600 18816 3075 77.3 MiB 1.04 0.01 7.49539 -582.535 -7.49539 7.49539 2.26 0.00571464 0.00518578 0.46636 0.42051 66 19056 43 1.33067e+07 4.93255e+06 1.96511e+06 4060.15 17.03 2.09287 1.85069 54986 507526 -1 15439 26 13348 15703 3065311 631596 0 0 3065311 631596 14541 13592 0 0 110840 103858 0 0 151041 119264 0 0 14544 13652 0 0 1379224 189774 0 0 1395121 191456 0 0 14541 0 0 1223 6898 7095 21649 1209 28 9.15632 9.15632 -1101.43 -9.15632 0 0 2.45963e+06 5081.88 1.27 1.24 0.60 -1 -1 1.27 0.360304 0.325056 665 608 570 19 0 0 +k6_frac_2uripple_N8_22nm.xml fir_nopipe_31.v common 29.27 vpr 77.28 MiB 0.15 13268 -1 -1 1 0.50 -1 -1 40004 -1 -1 93 22 0 9 success 3634420-dirty release IPO VTR_ASSERT_LEVEL=2 GNU 9.5.0 on Linux-5.10.35-v8 x86_64 2023-11-11T22:36:55 gh-actions-runner-vtr-auto-spawned38 /root/vtr-verilog-to-routing/vtr-verilog-to-routing 79136 22 19 2744 1981 1 1590 143 22 22 484 mult_36 auto 39.9 MiB 1.02 10213 28491 6600 18816 3075 77.3 MiB 1.04 0.01 7.49539 -582.535 -7.49539 7.49539 2.26 0.00571464 0.00518578 0.46636 0.42051 70 19056 43 1.33067e+07 4.93255e+06 1.96511e+06 4060.15 17.03 2.09287 1.85069 54986 507526 -1 15439 26 13348 15703 3065311 631596 0 0 3065311 631596 14541 13592 0 0 110840 103858 0 0 151041 119264 0 0 14544 13652 0 0 1379224 189774 0 0 1395121 191456 0 0 14541 0 0 1223 6898 7095 21649 1209 28 9.15632 9.15632 -1101.43 -9.15632 0 0 2.45963e+06 5081.88 1.27 1.24 0.60 -1 -1 1.27 0.360304 0.325056 665 608 570 19 0 0 k6_frac_2uripple_N8_22nm.xml fir_nopipe_32.v common 91.23 vpr 77.48 MiB 0.15 13384 -1 -1 1 0.55 -1 -1 40200 -1 -1 96 22 0 9 success 3634420-dirty release IPO VTR_ASSERT_LEVEL=2 GNU 9.5.0 on Linux-5.10.35-v8 x86_64 2023-11-11T22:36:55 gh-actions-runner-vtr-auto-spawned38 /root/vtr-verilog-to-routing/vtr-verilog-to-routing 79340 22 19 2818 2038 1 1627 146 22 22 484 mult_36 auto 40.3 MiB 1.09 10325 30482 7786 19419 3277 77.5 MiB 1.10 0.01 7.52039 -582.013 -7.52039 7.52039 2.22 0.00673795 0.00600573 0.559271 0.496011 66 18458 33 1.33067e+07 4.9767e+06 1.96511e+06 4060.15 78.92 4.50174 3.97192 54986 507526 -1 15293 24 12697 14781 2882895 607845 0 0 2882895 607845 13913 12967 0 0 106785 100349 0 0 141821 114087 0 0 13919 13073 0 0 1294441 181143 0 0 1312016 186226 0 0 13913 0 0 1241 5665 5902 20707 932 59 9.34202 9.34202 -1030.73 -9.34202 0 0 2.45963e+06 5081.88 1.31 1.11 0.62 -1 -1 1.31 0.310599 0.281128 684 627 589 19 0 0 k6_frac_2uripple_N8_22nm.xml fir_nopipe_33.v common 26.53 vpr 78.12 MiB 0.16 13808 -1 -1 1 0.56 -1 -1 40348 -1 -1 100 22 0 10 success 3634420-dirty release IPO VTR_ASSERT_LEVEL=2 GNU 9.5.0 on Linux-5.10.35-v8 x86_64 2023-11-11T22:36:55 gh-actions-runner-vtr-auto-spawned38 /root/vtr-verilog-to-routing/vtr-verilog-to-routing 79992 22 19 2923 2109 1 1695 151 22 22 484 mult_36 auto 40.9 MiB 0.97 10491 33835 8574 21105 4156 78.1 MiB 1.20 0.01 7.94064 -597.141 -7.94064 7.94064 2.29 0.00674974 0.00577428 0.614694 0.531941 64 19070 50 1.33067e+07 5.43155e+06 1.90554e+06 3937.06 14.02 2.63693 2.32895 54502 494576 -1 15787 25 13858 15489 2824485 600452 0 0 2824485 600452 14633 14088 0 0 112285 105253 0 0 152161 121338 0 0 14640 14194 0 0 1278006 170780 0 0 1252760 174799 0 0 14633 0 0 801 4949 5286 21186 894 34 9.95291 9.95291 -1096.7 -9.95291 0 0 2.40101e+06 4960.76 1.27 1.19 0.59 -1 -1 1.27 0.380018 0.342807 710 646 608 19 0 0 k6_frac_2uripple_N8_22nm.xml fir_nopipe_34.v common 38.28 vpr 78.56 MiB 0.16 14048 -1 -1 1 0.58 -1 -1 40192 -1 -1 101 22 0 10 success 3634420-dirty release IPO VTR_ASSERT_LEVEL=2 GNU 9.5.0 on Linux-5.10.35-v8 x86_64 2023-11-11T22:36:55 gh-actions-runner-vtr-auto-spawned38 /root/vtr-verilog-to-routing/vtr-verilog-to-routing 80444 22 19 2997 2166 1 1734 152 22 22 484 mult_36 auto 41.4 MiB 1.33 10939 30122 6941 19995 3186 78.6 MiB 1.07 0.01 7.88963 -601.708 -7.88963 7.88963 2.34 0.00551573 0.0049006 0.494171 0.437728 66 19440 28 1.33067e+07 5.44627e+06 1.96511e+06 4060.15 25.16 3.23147 2.86271 54986 507526 -1 16262 25 13499 15395 2906042 608239 0 0 2906042 608239 14574 13765 0 0 115250 108127 0 0 152837 123878 0 0 14585 13883 0 0 1312936 172636 0 0 1295860 175950 0 0 14574 0 0 1098 5319 5331 20493 889 64 9.72351 9.72351 -1073.66 -9.72351 0 0 2.45963e+06 5081.88 1.32 1.22 0.63 -1 -1 1.32 0.385734 0.348973 729 665 627 19 0 0 From 7bea33f0b22db27ba668f7452da4fe0ba05e3619 Mon Sep 17 00:00:00 2001 From: amin1377 Date: Wed, 29 May 2024 08:15:55 -0400 Subject: [PATCH 14/15] [vpr][router] fix fuction signiture --- vpr/src/route/route_utils.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/vpr/src/route/route_utils.cpp b/vpr/src/route/route_utils.cpp index 00cb0aabf87..a59be4a63af 100644 --- a/vpr/src/route/route_utils.cpp +++ b/vpr/src/route/route_utils.cpp @@ -507,7 +507,11 @@ void try_graph(int width_fac, is_flat); } +#ifndef NO_GRAPHICS void update_draw_pres_fac(const float new_pres_fac) { +#else +void update_draw_pres_fac(const float /*new_pres_fac*/) +#endif #ifndef NO_GRAPHICS // Only updates the drawing pres_fac if graphics is enabled From 313eb0277dd1865f3adc61f123ec33ced22c8666 Mon Sep 17 00:00:00 2001 From: amin1377 Date: Wed, 29 May 2024 14:31:16 -0400 Subject: [PATCH 15/15] fix a typo --- vpr/src/route/route_utils.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/vpr/src/route/route_utils.cpp b/vpr/src/route/route_utils.cpp index a59be4a63af..21e0b52bbef 100644 --- a/vpr/src/route/route_utils.cpp +++ b/vpr/src/route/route_utils.cpp @@ -510,10 +510,9 @@ void try_graph(int width_fac, #ifndef NO_GRAPHICS void update_draw_pres_fac(const float new_pres_fac) { #else -void update_draw_pres_fac(const float /*new_pres_fac*/) +void update_draw_pres_fac(const float /*new_pres_fac*/) { #endif #ifndef NO_GRAPHICS - // Only updates the drawing pres_fac if graphics is enabled get_draw_state_vars()->pres_fac = new_pres_fac;