|
53 | 53 | #include "pb_type_graph.h" |
54 | 54 | #include "route_common.h" |
55 | 55 | #include "timing_place_lookup.h" |
| 56 | +#include "route.h" |
56 | 57 | #include "route_export.h" |
57 | 58 | #include "vpr_api.h" |
58 | 59 | #include "read_sdc.h" |
|
61 | 62 | #include "lb_type_rr_graph.h" |
62 | 63 | #include "read_activity.h" |
63 | 64 | #include "net_delay.h" |
64 | | -#include "AnalysisDelayCalculator.h" |
65 | 65 | #include "concrete_timing_info.h" |
66 | 66 | #include "netlist_writer.h" |
| 67 | +#include "AnalysisDelayCalculator.h" |
67 | 68 | #include "RoutingDelayCalculator.h" |
68 | 69 | #include "check_route.h" |
69 | 70 | #include "constant_nets.h" |
@@ -367,7 +368,6 @@ bool vpr_flow(t_vpr_setup& vpr_setup, t_arch& arch) { |
367 | 368 | } |
368 | 369 |
|
369 | 370 | #ifdef VPR_USE_TBB |
370 | | - |
371 | 371 | /* Set this here, because tbb::global_control doesn't control anything once it's out of scope |
372 | 372 | * (contrary to the name). */ |
373 | 373 | tbb::global_control c(tbb::global_control::max_allowed_parallelism, vpr_setup.num_workers); |
@@ -805,10 +805,11 @@ RouteStatus vpr_route_flow(const Netlist<>& net_list, |
805 | 805 | std::shared_ptr<RoutingDelayCalculator> routing_delay_calc = nullptr; |
806 | 806 | if (vpr_setup.Timing.timing_analysis_enabled) { |
807 | 807 | auto& atom_ctx = g_vpr_ctx.atom(); |
808 | | - |
809 | 808 | routing_delay_calc = std::make_shared<RoutingDelayCalculator>(atom_ctx.nlist, atom_ctx.lookup, net_delay, is_flat); |
810 | | - |
811 | 809 | timing_info = make_setup_hold_timing_info(routing_delay_calc, router_opts.timing_update_type); |
| 810 | + } else { |
| 811 | + /* No delay calculator (segfault if the code calls into it) and wirelength driven routing */ |
| 812 | + timing_info = make_constant_timing_info(0); |
812 | 813 | } |
813 | 814 |
|
814 | 815 | if (router_opts.doRouting == STAGE_DO) { |
@@ -922,20 +923,20 @@ RouteStatus vpr_route_fixed_W(const Netlist<>& net_list, |
922 | 923 | VPR_FATAL_ERROR(VPR_ERROR_ROUTE, "Fixed channel width must be specified when routing at fixed channel width (was %d)", fixed_channel_width); |
923 | 924 | } |
924 | 925 | bool status = false; |
925 | | - status = try_route(net_list, |
926 | | - fixed_channel_width, |
927 | | - vpr_setup.RouterOpts, |
928 | | - vpr_setup.AnalysisOpts, |
929 | | - &vpr_setup.RoutingArch, |
930 | | - vpr_setup.Segments, |
931 | | - net_delay, |
932 | | - timing_info, |
933 | | - delay_calc, |
934 | | - arch.Chans, |
935 | | - arch.Directs, |
936 | | - arch.num_directs, |
937 | | - ScreenUpdatePriority::MAJOR, |
938 | | - is_flat); |
| 926 | + status = route(net_list, |
| 927 | + fixed_channel_width, |
| 928 | + vpr_setup.RouterOpts, |
| 929 | + vpr_setup.AnalysisOpts, |
| 930 | + &vpr_setup.RoutingArch, |
| 931 | + vpr_setup.Segments, |
| 932 | + net_delay, |
| 933 | + timing_info, |
| 934 | + delay_calc, |
| 935 | + arch.Chans, |
| 936 | + arch.Directs, |
| 937 | + arch.num_directs, |
| 938 | + ScreenUpdatePriority::MAJOR, |
| 939 | + is_flat); |
939 | 940 |
|
940 | 941 | return RouteStatus(status, fixed_channel_width); |
941 | 942 | } |
|
0 commit comments