diff --git a/vpr/src/device/rr_graph_builder.h b/vpr/src/device/rr_graph_builder.h index bf1f638b5a1..641f06cce81 100644 --- a/vpr/src/device/rr_graph_builder.h +++ b/vpr/src/device/rr_graph_builder.h @@ -37,6 +37,10 @@ class RRGraphBuilder { t_rr_graph_storage& node_storage(); /** @brief Return a writable object for update the fast look-up of rr_node */ RRSpatialLookup& node_lookup(); + /** @brief Set the type of a node with a given valid id */ + inline void set_node_type(RRNodeId id, t_rr_type type) { + node_storage_.set_node_type(id, type); + } /** * @brief Add an existing rr_node in the node storage to the node look-up * diff --git a/vpr/src/route/clock_connection_builders.cpp b/vpr/src/route/clock_connection_builders.cpp index 46a53dc048b..e4a52982fb7 100644 --- a/vpr/src/route/clock_connection_builders.cpp +++ b/vpr/src/route/clock_connection_builders.cpp @@ -110,7 +110,7 @@ RRNodeId RoutingToClockConnection::create_virtual_clock_network_sink_node(int x, rr_graph_builder.set_node_coordinates(node_index, x, y, x, y); rr_graph_builder.set_node_capacity(node_index, 1); rr_graph.set_node_cost_index(node_index, RRIndexedDataId(SINK_COST_INDEX)); - rr_graph.set_node_type(node_index, SINK); + rr_graph_builder.set_node_type(node_index, SINK); float R = 0.; float C = 0.; diff --git a/vpr/src/route/clock_network_builders.cpp b/vpr/src/route/clock_network_builders.cpp index bd5037f5f99..885a7def905 100644 --- a/vpr/src/route/clock_network_builders.cpp +++ b/vpr/src/route/clock_network_builders.cpp @@ -319,8 +319,8 @@ int ClockRib::create_chanx_wire(int x_start, auto node = rr_nodes->back(); RRNodeId chanx_node = RRNodeId(node_index); + rr_graph_builder.set_node_type(chanx_node, CHANX); rr_graph_builder.set_node_coordinates(chanx_node, x_start, y, x_end, y); - node.set_type(CHANX); rr_graph_builder.set_node_capacity(chanx_node, 1); node.set_track_num(ptc_num); node.set_rc_index(find_create_rr_rc_data( @@ -625,8 +625,8 @@ int ClockSpine::create_chany_wire(int y_start, auto node = rr_nodes->back(); RRNodeId chany_node = RRNodeId(node_index); + rr_graph_builder.set_node_type(chany_node, CHANY); rr_graph_builder.set_node_coordinates(chany_node, x, y_start, x, y_end); - node.set_type(CHANY); rr_graph_builder.set_node_capacity(chany_node, 1); node.set_track_num(ptc_num); node.set_rc_index(find_create_rr_rc_data( diff --git a/vpr/src/route/rr_graph.cpp b/vpr/src/route/rr_graph.cpp index 4dc5c50fae3..ba22743f3cc 100644 --- a/vpr/src/route/rr_graph.cpp +++ b/vpr/src/route/rr_graph.cpp @@ -1406,7 +1406,7 @@ static void build_rr_sinks_sources(RRGraphBuilder& rr_graph_builder, } L_rr_node.set_node_cost_index(inode, RRIndexedDataId(SOURCE_COST_INDEX)); - L_rr_node.set_node_type(inode, SOURCE); + rr_graph_builder.set_node_type(inode, SOURCE); } else { /* SINK */ VTR_ASSERT(class_inf[iclass].type == RECEIVER); inode = rr_graph_builder.node_lookup().find_node(i, j, SINK, iclass); @@ -1424,7 +1424,7 @@ static void build_rr_sinks_sources(RRGraphBuilder& rr_graph_builder, * - set_node_type(RRNodeId, t_rr_type); */ L_rr_node.set_node_cost_index(inode, RRIndexedDataId(SINK_COST_INDEX)); - L_rr_node.set_node_type(inode, SINK); + rr_graph_builder.set_node_type(inode, SINK); } /* Things common to both SOURCEs and SINKs. */ @@ -1459,7 +1459,7 @@ static void build_rr_sinks_sources(RRGraphBuilder& rr_graph_builder, rr_edges_to_create.emplace_back(inode, to_node, delayless_switch); L_rr_node.set_node_cost_index(inode, RRIndexedDataId(IPIN_COST_INDEX)); - L_rr_node.set_node_type(inode, IPIN); + rr_graph_builder.set_node_type(inode, IPIN); } } else { VTR_ASSERT(class_inf[iclass].type == DRIVER); @@ -1471,7 +1471,7 @@ static void build_rr_sinks_sources(RRGraphBuilder& rr_graph_builder, if (inode) { //Initially left unconnected L_rr_node.set_node_cost_index(inode, RRIndexedDataId(OPIN_COST_INDEX)); - L_rr_node.set_node_type(inode, OPIN); + rr_graph_builder.set_node_type(inode, OPIN); } } @@ -1672,7 +1672,7 @@ static void build_rr_chan(RRGraphBuilder& rr_graph_builder, L_rr_node.set_node_rc_index(node, find_create_rr_rc_data(R, C)); L_rr_node.set_node_ptc_num(node, track); - L_rr_node.set_node_type(node, chan_type); + rr_graph_builder.set_node_type(node, chan_type); L_rr_node.set_node_direction(node, seg_details[track].direction()); } } diff --git a/vpr/src/route/rr_graph_uxsdcxx_serializer.h b/vpr/src/route/rr_graph_uxsdcxx_serializer.h index 06163dc0415..fea0b7b37d8 100644 --- a/vpr/src/route/rr_graph_uxsdcxx_serializer.h +++ b/vpr/src/route/rr_graph_uxsdcxx_serializer.h @@ -763,8 +763,8 @@ class RrGraphSerializer final : public uxsd::RrGraphBase { auto node = (*rr_nodes_)[id]; RRNodeId node_id = node.id(); + rr_graph_builder_->set_node_type(node_id, from_uxsd_node_type(type)); rr_graph_builder_->set_node_capacity(node_id, capacity); - node.set_type(from_uxsd_node_type(type)); switch (rr_graph.node_type(node.id())) { case CHANX: diff --git a/vpr/src/route/rr_node.cpp b/vpr/src/route/rr_node.cpp index 9af0d809419..4fa478a4c25 100644 --- a/vpr/src/route/rr_node.cpp +++ b/vpr/src/route/rr_node.cpp @@ -51,10 +51,6 @@ bool t_rr_node::validate() const { return true; } -void t_rr_node::set_type(t_rr_type new_type) { - storage_->set_node_type(id_, new_type); -} - void t_rr_node::set_ptc_num(short new_ptc_num) { storage_->set_node_ptc_num(id_, new_ptc_num); } diff --git a/vpr/src/route/rr_node.h b/vpr/src/route/rr_node.h index 4e24b34625a..981fd56411f 100644 --- a/vpr/src/route/rr_node.h +++ b/vpr/src/route/rr_node.h @@ -108,8 +108,6 @@ class t_rr_node { bool validate() const; public: //Mutators - void set_type(t_rr_type new_type); - void set_ptc_num(short); void set_pin_num(short); //Same as set_ptc_num() by checks type() is consistent void set_track_num(short); //Same as set_ptc_num() by checks type() is consistent