Skip to content

Commit 99b9c99

Browse files
authored
Merge pull request #2794 from verilog-to-routing/debug_3d_sw
3D SB
2 parents eb8c186 + c904a7a commit 99b9c99

File tree

13 files changed

+178
-12
lines changed

13 files changed

+178
-12
lines changed

libs/librrgraph/src/base/rr_graph_view.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -345,7 +345,7 @@ class RRGraphView {
345345
coordinate_string += " length:" + std::to_string(node_length(node)); //add the length of the segment
346346
//Figure out the starting and ending coordinate of the segment depending on the direction
347347

348-
arrow = "->"; //we will point the coordinates from start to finish, left to right
348+
arrow = " ->"; //we will point the coordinates from start to finish, left to right
349349

350350
if (node_direction(node) == Direction::DEC) { //signal travels along decreasing direction
351351

@@ -365,7 +365,7 @@ class RRGraphView {
365365
end_y = std::to_string(node_yhigh(node)) + ",";
366366
end_layer_str = std::to_string(node_layer_num) + ")"; //layer number
367367
if (node_direction(node) == Direction::BIDIR) {
368-
arrow = "<->"; //indicate that signal can travel both direction
368+
arrow = " <->"; //indicate that signal can travel both direction
369369
}
370370
}
371371
}

libs/librrgraph/src/utils/alloc_and_load_rr_indexed_data.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -550,10 +550,10 @@ static void load_rr_indexed_data_T_values(const RRGraphView& rr_graph,
550550
calculate_average_switch(rr_graph, (size_t)rr_id, avg_switch_R, avg_switch_T, avg_switch_Cinternal, num_switches, buffered, fan_in_list);
551551

552552
if (num_switches == 0) {
553-
VTR_LOG_WARN("Node: %d with RR_type: %s at Location:%s, had no out-going switches\n", rr_id,
553+
VTR_LOG_WARN("Node: %d with RR_type: %s at Location:%s, had no incoming switches\n", rr_id,
554554
rr_graph.node_type_string(rr_id), node_cords.c_str());
555555
continue;
556-
}
556+
}
557557
VTR_ASSERT(num_switches > 0);
558558

559559
num_nodes_of_index[cost_index]++;

vpr/src/route/overuse_report.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ static void report_overused_ipin_opin(std::ostream& os,
256256

257257
//Print out the block index, name and type
258258
// TODO: Needs to be updated when RR Graph Nodes know their layer_num
259-
ClusterBlockId block_id = grid_info.block_at_location({grid_x, grid_y, isubtile, 0});
259+
ClusterBlockId block_id = grid_info.block_at_location({grid_x, grid_y, isubtile, grid_layer});
260260
os << "Block #" << iblock << ": ";
261261
os << "Block name = " << clb_nlist.block_pb(block_id)->name << ", ";
262262
os << "Block type = " << clb_nlist.block_type(block_id)->name << '\n';

vpr/src/route/router_lookahead_map.cpp

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -330,11 +330,23 @@ std::pair<float, float> MapLookahead::get_expected_delay_and_cong(RRNodeId from_
330330

331331
auto from_ptc = rr_graph.node_ptc_num(from_node);
332332

333-
std::tie(expected_delay_cost, expected_cong_cost) = util::get_cost_from_src_opin(src_opin_delays[from_layer_num][from_tile_index][from_ptc][to_layer_num],
334-
delta_x,
335-
delta_y,
336-
to_layer_num,
337-
get_wire_cost_entry);
333+
/* We could reach the sink by using an intermediate wire on any reachable layer. We consider all these options and return the minimum cost one.
334+
* get_cost_from_src_opin iterates over all routing segments passed to it (the first argument) and returns
335+
* the minimum cost among them. In the following for loop, we iterate over each layer and pass it the
336+
* routing segments on that layer reachable from the OPIN/SOURCE to segments on that layer. This for loop then calculates and returns
337+
* the minimum cost from the given OPIN/SOURCE to the specified SINK considering routing options across all layers.
338+
*/
339+
for (int layer_num = 0; layer_num < device_ctx.grid.get_num_layers(); layer_num++) {
340+
float this_delay_cost;
341+
float this_cong_cost;
342+
std::tie(this_delay_cost, this_cong_cost) = util::get_cost_from_src_opin(src_opin_delays[from_layer_num][from_tile_index][from_ptc][layer_num],
343+
delta_x,
344+
delta_y,
345+
to_layer_num,
346+
get_wire_cost_entry);
347+
expected_delay_cost = std::min(expected_delay_cost, this_delay_cost);
348+
expected_cong_cost = std::min(expected_cong_cost, this_cong_cost);
349+
}
338350

339351
expected_delay_cost *= params.criticality;
340352
expected_cong_cost *= (1 - params.criticality);
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
#
2+
############################################
3+
# Configuration file for running experiments
4+
##############################################
5+
6+
# Path to directory of circuits to use
7+
circuits_dir=benchmarks/titan_blif/other_benchmarks/stratixiv
8+
9+
# Path to directory of SDC files
10+
sdc_dir=benchmarks/titan_blif/other_benchmarks/stratixiv
11+
12+
# Path to directory of architectures to use
13+
archs_dir=arch/multi_die/stratixiv_3d
14+
15+
# Add circuits to list to sweep
16+
circuit_list_add=carpat_stratixiv_arch_timing.blif
17+
circuit_list_add=CH_DFSIN_stratixiv_arch_timing.blif
18+
circuit_list_add=CHERI_stratixiv_arch_timing.blif
19+
circuit_list_add=EKF-SLAM_Jacobians_stratixiv_arch_timing.blif
20+
circuit_list_add=fir_cascade_stratixiv_arch_timing.blif
21+
circuit_list_add=jacobi_stratixiv_arch_timing.blif
22+
circuit_list_add=JPEG_stratixiv_arch_timing.blif
23+
circuit_list_add=leon2_stratixiv_arch_timing.blif
24+
circuit_list_add=leon3mp_stratixiv_arch_timing.blif
25+
circuit_list_add=MCML_stratixiv_arch_timing.blif
26+
circuit_list_add=MMM_stratixiv_arch_timing.blif
27+
circuit_list_add=radar20_stratixiv_arch_timing.blif
28+
circuit_list_add=random_stratixiv_arch_timing.blif
29+
circuit_list_add=Reed_Solomon_stratixiv_arch_timing.blif
30+
circuit_list_add=smithwaterman_stratixiv_arch_timing.blif
31+
circuit_list_add=stap_steering_stratixiv_arch_timing.blif
32+
circuit_list_add=sudoku_check_stratixiv_arch_timing.blif
33+
circuit_list_add=SURF_desc_stratixiv_arch_timing.blif
34+
circuit_list_add=ucsb_152_tap_fir_stratixiv_arch_timing.blif
35+
circuit_list_add=uoft_raytracer_stratixiv_arch_timing.blif
36+
circuit_list_add=wb_conmax_stratixiv_arch_timing.blif
37+
circuit_list_add=picosoc_stratixiv_arch_timing.blif
38+
circuit_list_add=murax_stratixiv_arch_timing.blif
39+
40+
# Add architectures to list to sweep
41+
arch_list_add=3d_SB_inter_die_stratixiv_arch.timing.xml
42+
43+
# Parse info and how to parse
44+
parse_file=vpr_titan.txt
45+
46+
# How to parse QoR info
47+
qor_parse_file=qor_vpr_titan.txt
48+
49+
# Pass requirements
50+
pass_requirements_file=pass_requirements_vpr_titan.txt
51+
52+
script_params=-starting_stage vpr --route_chan_width 300 --max_router_iterations 400 --custom_3d_sb_fanin_fanout 60 --router_lookahead map

0 commit comments

Comments
 (0)