Skip to content

Commit e4c17cd

Browse files
committed
Inline and make const ref some args in the inner loop of the router.
- Avoid copying cost_parameters structure. - Request inline of inner loop functions as they are invoked at few (1-3) callsites, but get called many many times. - Don't get congestion if it won't be used. Useful for accelerating pure expansion. Signed-off-by: Keith Rothman <[email protected]>
1 parent c26370e commit e4c17cd

File tree

1 file changed

+80
-80
lines changed

1 file changed

+80
-80
lines changed

vpr/src/route/route_timing.cpp

Lines changed: 80 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -179,13 +179,13 @@ static std::vector<t_heap> timing_driven_find_all_shortest_paths_from_heap(const
179179
RouterStats& router_stats);
180180

181181
void disable_expansion_and_remove_sink_from_route_tree_nodes(t_rt_node* node);
182-
static void timing_driven_expand_cheapest(t_heap* cheapest,
183-
int target_node,
184-
const t_conn_cost_params cost_params,
185-
t_bb bounding_box,
186-
const RouterLookahead& router_lookahead,
187-
std::vector<int>& modified_rr_node_inf,
188-
RouterStats& router_stats);
182+
static inline void timing_driven_expand_cheapest(t_heap* cheapest,
183+
int target_node,
184+
const t_conn_cost_params cost_params,
185+
t_bb bounding_box,
186+
const RouterLookahead& router_lookahead,
187+
std::vector<int>& modified_rr_node_inf,
188+
RouterStats& router_stats);
189189

190190
static t_rt_node* setup_routing_resources(int itry, ClusterNetId net_id, unsigned num_sinks, float pres_fac, int min_incremental_reroute_fanout, CBRR& incremental_rerouting_res, t_rt_node** rt_node_of_sink);
191191

@@ -205,54 +205,54 @@ static t_bb add_high_fanout_route_tree_to_heap(t_rt_node* rt_root,
205205

206206
static t_bb adjust_highfanout_bounding_box(t_bb highfanout_bb);
207207

208-
static void add_route_tree_node_to_heap(t_rt_node* rt_node,
209-
int target_node,
210-
const t_conn_cost_params cost_params,
211-
const RouterLookahead& router_lookahead,
212-
RouterStats& router_stats);
213-
214-
static void timing_driven_expand_neighbours(t_heap* current,
215-
const t_conn_cost_params cost_params,
216-
t_bb bounding_box,
217-
const RouterLookahead& router_lookahead,
218-
int target_node,
219-
RouterStats& router_stats);
220-
221-
static void timing_driven_expand_neighbour(t_heap* current,
222-
const int from_node,
223-
const t_edge_size from_edge,
224-
const int to_node,
225-
const t_conn_cost_params cost_params,
226-
const t_bb bounding_box,
227-
const RouterLookahead& router_lookahead,
228-
int target_node,
229-
const t_bb target_bb,
230-
RouterStats& router_stats);
231-
232-
static void timing_driven_add_to_heap(const t_conn_cost_params cost_params,
233-
const RouterLookahead& router_lookahead,
234-
const t_heap* current,
235-
const int from_node,
236-
const int to_node,
237-
const int iconn,
238-
const int target_node,
239-
RouterStats& router_stats);
240-
241-
static void timing_driven_expand_node(const t_conn_cost_params cost_params,
242-
const RouterLookahead& router_lookahead,
243-
t_heap* current,
244-
const int from_node,
245-
const int to_node,
246-
const int iconn,
247-
const int target_node);
208+
static inline void add_route_tree_node_to_heap(t_rt_node* rt_node,
209+
int target_node,
210+
const t_conn_cost_params cost_params,
211+
const RouterLookahead& router_lookahead,
212+
RouterStats& router_stats);
248213

249-
static void evaluate_timing_driven_node_costs(t_heap* from,
250-
const t_conn_cost_params cost_params,
251-
const RouterLookahead& router_lookahead,
252-
const int from_node,
253-
const int to_node,
254-
const int iconn,
255-
const int target_node);
214+
static inline void timing_driven_expand_neighbours(t_heap* current,
215+
const t_conn_cost_params cost_params,
216+
const t_bb& bounding_box,
217+
const RouterLookahead& router_lookahead,
218+
int target_node,
219+
RouterStats& router_stats);
220+
221+
static inline void timing_driven_expand_neighbour(t_heap* current,
222+
const int from_node,
223+
const t_edge_size from_edge,
224+
const int to_node,
225+
const t_conn_cost_params& cost_params,
226+
const t_bb& bounding_box,
227+
const RouterLookahead& router_lookahead,
228+
int target_node,
229+
const t_bb& target_bb,
230+
RouterStats& router_stats);
231+
232+
static inline void timing_driven_add_to_heap(const t_conn_cost_params& cost_params,
233+
const RouterLookahead& router_lookahead,
234+
const t_heap* current,
235+
const int from_node,
236+
const int to_node,
237+
const int iconn,
238+
const int target_node,
239+
RouterStats& router_stats);
240+
241+
static inline void timing_driven_expand_node(const t_conn_cost_params& cost_params,
242+
const RouterLookahead& router_lookahead,
243+
t_heap* current,
244+
const int from_node,
245+
const int to_node,
246+
const int iconn,
247+
const int target_node);
248+
249+
static inline void evaluate_timing_driven_node_costs(t_heap* from,
250+
const t_conn_cost_params& cost_params,
251+
const RouterLookahead& router_lookahead,
252+
const int from_node,
253+
const int to_node,
254+
const int iconn,
255+
const int target_node);
256256

257257
static bool timing_driven_check_net_delays(vtr::vector<ClusterNetId, float*>& net_delay);
258258

@@ -1961,12 +1961,12 @@ static void add_route_tree_node_to_heap(t_rt_node* rt_node,
19611961
++router_stats.heap_pushes;
19621962
}
19631963

1964-
static void timing_driven_expand_neighbours(t_heap* current,
1965-
const t_conn_cost_params cost_params,
1966-
t_bb bounding_box,
1967-
const RouterLookahead& router_lookahead,
1968-
int target_node,
1969-
RouterStats& router_stats) {
1964+
static inline void timing_driven_expand_neighbours(t_heap* current,
1965+
const t_conn_cost_params cost_params,
1966+
const t_bb& bounding_box,
1967+
const RouterLookahead& router_lookahead,
1968+
int target_node,
1969+
RouterStats& router_stats) {
19701970
/* Puts all the rr_nodes adjacent to current on the heap.
19711971
*/
19721972

@@ -1998,16 +1998,16 @@ static void timing_driven_expand_neighbours(t_heap* current,
19981998
//Conditionally adds to_node to the router heap (via path from from_node via from_edge).
19991999
//RR nodes outside the expanded bounding box specified in bounding_box are not added
20002000
//to the heap.
2001-
static void timing_driven_expand_neighbour(t_heap* current,
2002-
const int from_node,
2003-
const t_edge_size from_edge,
2004-
const int to_node,
2005-
const t_conn_cost_params cost_params,
2006-
const t_bb bounding_box,
2007-
const RouterLookahead& router_lookahead,
2008-
int target_node,
2009-
const t_bb target_bb,
2010-
RouterStats& router_stats) {
2001+
static inline void timing_driven_expand_neighbour(t_heap* current,
2002+
const int from_node,
2003+
const t_edge_size from_edge,
2004+
const int to_node,
2005+
const t_conn_cost_params& cost_params,
2006+
const t_bb& bounding_box,
2007+
const RouterLookahead& router_lookahead,
2008+
int target_node,
2009+
const t_bb& target_bb,
2010+
RouterStats& router_stats) {
20112011
auto& device_ctx = g_vpr_ctx.device();
20122012

20132013
int to_xlow = device_ctx.rr_nodes[to_node].xlow();
@@ -2063,14 +2063,14 @@ static void timing_driven_expand_neighbour(t_heap* current,
20632063
}
20642064

20652065
//Add to_node to the heap, and also add any nodes which are connected by non-configurable edges
2066-
static void timing_driven_add_to_heap(const t_conn_cost_params cost_params,
2067-
const RouterLookahead& router_lookahead,
2068-
const t_heap* current,
2069-
const int from_node,
2070-
const int to_node,
2071-
const int iconn,
2072-
const int target_node,
2073-
RouterStats& router_stats) {
2066+
static inline void timing_driven_add_to_heap(const t_conn_cost_params& cost_params,
2067+
const RouterLookahead& router_lookahead,
2068+
const t_heap* current,
2069+
const int from_node,
2070+
const int to_node,
2071+
const int iconn,
2072+
const int target_node,
2073+
RouterStats& router_stats) {
20742074
t_heap* next = alloc_heap_data();
20752075
next->index = to_node;
20762076

@@ -2107,7 +2107,7 @@ static void timing_driven_add_to_heap(const t_conn_cost_params cost_params,
21072107
}
21082108

21092109
//Updates current (path step and costs) to account for the step taken to reach to_node
2110-
static void timing_driven_expand_node(const t_conn_cost_params cost_params,
2110+
static void timing_driven_expand_node(const t_conn_cost_params& cost_params,
21112111
const RouterLookahead& router_lookahead,
21122112
t_heap* current,
21132113
const int from_node,
@@ -2129,7 +2129,7 @@ static void timing_driven_expand_node(const t_conn_cost_params cost_params,
21292129

21302130
//Calculates the cost of reaching to_node
21312131
static void evaluate_timing_driven_node_costs(t_heap* to,
2132-
const t_conn_cost_params cost_params,
2132+
const t_conn_cost_params& cost_params,
21332133
const RouterLookahead& router_lookahead,
21342134
const int from_node,
21352135
const int to_node,

0 commit comments

Comments
 (0)