Skip to content

Commit 7139c9e

Browse files
committed
[vpr][route][crr] init crr data strutures only if crr is created
1 parent 10b0888 commit 7139c9e

File tree

1 file changed

+12
-8
lines changed

1 file changed

+12
-8
lines changed

vpr/src/route/rr_graph_generation/tileable_rr_graph/tileable_rr_graph_edge_builder.cpp

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,7 @@ void build_rr_graph_regular_edges(const RRGraphView& rr_graph,
318318
const bool& opin2all_sides,
319319
const bool& concat_wire,
320320
const bool& wire_opposite_side) {
321-
bool build_crr_edges = crr_opts.sb_templates.empty();
321+
bool build_crr_edges = !crr_opts.sb_templates.empty();
322322
size_t num_edges_to_create = 0;
323323
/* Create edges for SOURCE and SINK nodes for a tileable rr_graph */
324324
build_rr_graph_edges_for_source_nodes(rr_graph, rr_graph_builder, rr_node_driver_switches, grids, layer, num_edges_to_create);
@@ -327,12 +327,16 @@ void build_rr_graph_regular_edges(const RRGraphView& rr_graph,
327327
vtr::Point<size_t> gsb_range(grids.width() - 1, grids.height() - 1);
328328

329329
// Building CRR Graph
330-
crrgenerator::SwitchBlockManager sb_manager;
331-
sb_manager.initialize(crr_opts.sb_maps, crr_opts.sb_templates, crr_opts.annotated_rr_graph);
332-
crrgenerator::NodeLookupManager node_lookup(rr_graph, grids.width(), grids.height());
333-
node_lookup.initialize();
334-
crrgenerator::CRRGraphGenerator parser(crr_opts, rr_graph, node_lookup, sb_manager, "vpr_custom_rr_graph.xml");
335-
parser.run();
330+
const crrgenerator::CRRConnectionBuilder* crr_connection_builder = nullptr;
331+
if (build_crr_edges) {
332+
crrgenerator::SwitchBlockManager sb_manager;
333+
sb_manager.initialize(crr_opts.sb_maps, crr_opts.sb_templates, crr_opts.annotated_rr_graph);
334+
crrgenerator::NodeLookupManager node_lookup(rr_graph, grids.width(), grids.height());
335+
node_lookup.initialize();
336+
crrgenerator::CRRGraphGenerator parser(crr_opts, rr_graph, node_lookup, sb_manager, "vpr_custom_rr_graph.xml");
337+
parser.run();
338+
crr_connection_builder = parser.get_connection_builder();
339+
}
336340

337341
/* Go Switch Block by Switch Block */
338342
for (size_t ix = 0; ix <= gsb_range.x(); ++ix) {
@@ -360,7 +364,7 @@ void build_rr_graph_regular_edges(const RRGraphView& rr_graph,
360364
/* adapt the switch_block_conn for the GSB nodes */
361365
t_track2track_map sb_conn; /* [0..from_gsb_side][0..chan_width-1][track_indices] */
362366
if (build_crr_edges) {
363-
build_crr_gsb_track_to_track_edges(rr_graph_builder, rr_gsb, *parser.get_connection_builder());
367+
build_crr_gsb_track_to_track_edges(rr_graph_builder, rr_gsb, *crr_connection_builder);
364368
} else {
365369
sb_conn = build_gsb_track_to_track_map(rr_graph,
366370
rr_gsb,

0 commit comments

Comments
 (0)