@@ -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