Skip to content

Commit 2e6baa0

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 c0331a0 commit 2e6baa0

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
@@ -168,13 +168,13 @@ static std::vector<t_heap> timing_driven_find_all_shortest_paths_from_heap(const
168168
std::vector<int>& modified_rr_node_inf,
169169
RouterStats& router_stats);
170170

171-
static void timing_driven_expand_cheapest(t_heap* cheapest,
172-
int target_node,
173-
const t_conn_cost_params cost_params,
174-
t_bb bounding_box,
175-
const RouterLookahead& router_lookahead,
176-
std::vector<int>& modified_rr_node_inf,
177-
RouterStats& router_stats);
171+
static inline void timing_driven_expand_cheapest(t_heap* cheapest,
172+
int target_node,
173+
const t_conn_cost_params cost_params,
174+
t_bb bounding_box,
175+
const RouterLookahead& router_lookahead,
176+
std::vector<int>& modified_rr_node_inf,
177+
RouterStats& router_stats);
178178

179179
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);
180180

@@ -194,54 +194,54 @@ static t_bb add_high_fanout_route_tree_to_heap(t_rt_node* rt_root,
194194

195195
static t_bb adjust_highfanout_bounding_box(t_bb highfanout_bb);
196196

197-
static void add_route_tree_node_to_heap(t_rt_node* rt_node,
198-
int target_node,
199-
const t_conn_cost_params cost_params,
200-
const RouterLookahead& router_lookahead,
201-
RouterStats& router_stats);
202-
203-
static void timing_driven_expand_neighbours(t_heap* current,
204-
const t_conn_cost_params cost_params,
205-
t_bb bounding_box,
206-
const RouterLookahead& router_lookahead,
207-
int target_node,
208-
RouterStats& router_stats);
209-
210-
static void timing_driven_expand_neighbour(t_heap* current,
211-
const int from_node,
212-
const t_edge_size from_edge,
213-
const int to_node,
214-
const t_conn_cost_params cost_params,
215-
const t_bb bounding_box,
216-
const RouterLookahead& router_lookahead,
217-
int target_node,
218-
const t_bb target_bb,
219-
RouterStats& router_stats);
220-
221-
static void timing_driven_add_to_heap(const t_conn_cost_params cost_params,
222-
const RouterLookahead& router_lookahead,
223-
const t_heap* current,
224-
const int from_node,
225-
const int to_node,
226-
const int iconn,
227-
const int target_node,
228-
RouterStats& router_stats);
229-
230-
static void timing_driven_expand_node(const t_conn_cost_params cost_params,
231-
const RouterLookahead& router_lookahead,
232-
t_heap* current,
233-
const int from_node,
234-
const int to_node,
235-
const int iconn,
236-
const int target_node);
197+
static inline void add_route_tree_node_to_heap(t_rt_node* rt_node,
198+
int target_node,
199+
const t_conn_cost_params cost_params,
200+
const RouterLookahead& router_lookahead,
201+
RouterStats& router_stats);
237202

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

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

@@ -1800,12 +1800,12 @@ static void add_route_tree_node_to_heap(t_rt_node* rt_node,
18001800
++router_stats.heap_pushes;
18011801
}
18021802

1803-
static void timing_driven_expand_neighbours(t_heap* current,
1804-
const t_conn_cost_params cost_params,
1805-
t_bb bounding_box,
1806-
const RouterLookahead& router_lookahead,
1807-
int target_node,
1808-
RouterStats& router_stats) {
1803+
static inline void timing_driven_expand_neighbours(t_heap* current,
1804+
const t_conn_cost_params cost_params,
1805+
const t_bb& bounding_box,
1806+
const RouterLookahead& router_lookahead,
1807+
int target_node,
1808+
RouterStats& router_stats) {
18091809
/* Puts all the rr_nodes adjacent to current on the heap.
18101810
*/
18111811

@@ -1837,16 +1837,16 @@ static void timing_driven_expand_neighbours(t_heap* current,
18371837
//Conditionally adds to_node to the router heap (via path from from_node via from_edge).
18381838
//RR nodes outside the expanded bounding box specified in bounding_box are not added
18391839
//to the heap.
1840-
static void timing_driven_expand_neighbour(t_heap* current,
1841-
const int from_node,
1842-
const t_edge_size from_edge,
1843-
const int to_node,
1844-
const t_conn_cost_params cost_params,
1845-
const t_bb bounding_box,
1846-
const RouterLookahead& router_lookahead,
1847-
int target_node,
1848-
const t_bb target_bb,
1849-
RouterStats& router_stats) {
1840+
static inline void timing_driven_expand_neighbour(t_heap* current,
1841+
const int from_node,
1842+
const t_edge_size from_edge,
1843+
const int to_node,
1844+
const t_conn_cost_params& cost_params,
1845+
const t_bb& bounding_box,
1846+
const RouterLookahead& router_lookahead,
1847+
int target_node,
1848+
const t_bb& target_bb,
1849+
RouterStats& router_stats) {
18501850
auto& device_ctx = g_vpr_ctx.device();
18511851

18521852
int to_xlow = device_ctx.rr_nodes[to_node].xlow();
@@ -1902,14 +1902,14 @@ static void timing_driven_expand_neighbour(t_heap* current,
19021902
}
19031903

19041904
//Add to_node to the heap, and also add any nodes which are connected by non-configurable edges
1905-
static void timing_driven_add_to_heap(const t_conn_cost_params cost_params,
1906-
const RouterLookahead& router_lookahead,
1907-
const t_heap* current,
1908-
const int from_node,
1909-
const int to_node,
1910-
const int iconn,
1911-
const int target_node,
1912-
RouterStats& router_stats) {
1905+
static inline void timing_driven_add_to_heap(const t_conn_cost_params& cost_params,
1906+
const RouterLookahead& router_lookahead,
1907+
const t_heap* current,
1908+
const int from_node,
1909+
const int to_node,
1910+
const int iconn,
1911+
const int target_node,
1912+
RouterStats& router_stats) {
19131913
t_heap* next = alloc_heap_data();
19141914
next->index = to_node;
19151915

@@ -1943,7 +1943,7 @@ static void timing_driven_add_to_heap(const t_conn_cost_params cost_params,
19431943
}
19441944

19451945
//Updates current (path step and costs) to account for the step taken to reach to_node
1946-
static void timing_driven_expand_node(const t_conn_cost_params cost_params,
1946+
static void timing_driven_expand_node(const t_conn_cost_params& cost_params,
19471947
const RouterLookahead& router_lookahead,
19481948
t_heap* current,
19491949
const int from_node,
@@ -1965,7 +1965,7 @@ static void timing_driven_expand_node(const t_conn_cost_params cost_params,
19651965

19661966
//Calculates the cost of reaching to_node
19671967
static void evaluate_timing_driven_node_costs(t_heap* to,
1968-
const t_conn_cost_params cost_params,
1968+
const t_conn_cost_params& cost_params,
19691969
const RouterLookahead& router_lookahead,
19701970
const int from_node,
19711971
const int to_node,

0 commit comments

Comments
 (0)