@@ -16,6 +16,7 @@ void t_rr_graph_storage::reserve_edges(size_t num_edges) {
1616 edge_dest_node_.reserve (num_edges);
1717 edge_switch_.reserve (num_edges);
1818 edge_remapped_.reserve (num_edges);
19+ edge_crr_id_.reserve (num_edges);
1920}
2021
2122void t_rr_graph_storage::emplace_back_edge (RRNodeId src, RRNodeId dest, short edge_switch, bool remapped, std::string crr_id) {
@@ -50,6 +51,7 @@ void t_rr_graph_storage::alloc_and_load_edges(const t_rr_edge_info_set* rr_edges
5051 edge_dest_node_.reserve (new_capacity);
5152 edge_switch_.reserve (new_capacity);
5253 edge_remapped_.reserve (new_capacity);
54+ edge_crr_id_.reserve (new_capacity);
5355 }
5456
5557 for (const t_rr_edge_info& new_edge : *rr_edges_to_create) {
@@ -89,6 +91,7 @@ void t_rr_graph_storage::remove_edges(std::vector<RREdgeId>& rr_edges_to_remove)
8991 edge_src_node_[erase_idx] = edge_src_node_[RREdgeId (edge_list_end)];
9092 edge_switch_[erase_idx] = edge_switch_[RREdgeId (edge_list_end)];
9193 edge_remapped_[erase_idx] = edge_remapped_[RREdgeId (edge_list_end)];
94+ edge_crr_id_[erase_idx] = edge_crr_id_[RREdgeId (edge_list_end)];
9295
9396 // At this point we have no copies of what was at erase_idx and two copies of
9497 // what was at the end of the list. If we make the list one element shorter,
@@ -103,6 +106,7 @@ void t_rr_graph_storage::remove_edges(std::vector<RREdgeId>& rr_edges_to_remove)
103106 edge_src_node_.erase (edge_src_node_.begin () + edge_list_end + 1 , edge_src_node_.end ());
104107 edge_switch_.erase (edge_switch_.begin () + edge_list_end + 1 , edge_switch_.end ());
105108 edge_remapped_.erase (edge_remapped_.begin () + edge_list_end + 1 , edge_remapped_.end ());
109+ edge_crr_id_.erase (edge_crr_id_.begin () + edge_list_end + 1 , edge_crr_id_.end ());
106110
107111 VTR_ASSERT (edge_dest_node_.size () == (starting_edge_count - rr_edges_to_remove.size ()));
108112
@@ -128,6 +132,7 @@ void t_rr_graph_storage::assign_first_edges() {
128132 VTR_ASSERT (edge_dest_node_.size () == num_edges);
129133 VTR_ASSERT (edge_switch_.size () == num_edges);
130134 VTR_ASSERT (edge_remapped_.size () == num_edges);
135+ VTR_ASSERT (edge_crr_id_.size () == num_edges);
131136
132137 while (true ) {
133138 VTR_ASSERT (first_edge_id < num_edges);
@@ -813,6 +818,7 @@ t_rr_graph_view t_rr_graph_storage::view() const {
813818 vtr::make_const_array_view_id (edge_src_node_),
814819 vtr::make_const_array_view_id (edge_dest_node_),
815820 vtr::make_const_array_view_id (edge_switch_),
821+ vtr::make_const_array_view_id (edge_crr_id_),
816822 virtual_clock_network_root_idx_,
817823 vtr::make_const_array_view_id (node_bend_start_),
818824 vtr::make_const_array_view_id (node_bend_end_));
@@ -851,6 +857,7 @@ void t_rr_graph_storage::reorder(const vtr::vector<RRNodeId, RRNodeId>& order,
851857 auto old_edge_dest_node = edge_dest_node_;
852858 auto old_edge_switch = edge_switch_;
853859 auto old_edge_remapped = edge_remapped_;
860+ auto old_edge_crr_id = edge_crr_id_;
854861 RREdgeId cur_edge (0 );
855862
856863 // Reorder edges by source node
@@ -864,6 +871,7 @@ void t_rr_graph_storage::reorder(const vtr::vector<RRNodeId, RRNodeId>& order,
864871 edge_dest_node_[cur_edge] = order[old_edge_dest_node[e]];
865872 edge_switch_[cur_edge] = old_edge_switch[e];
866873 edge_remapped_[cur_edge] = old_edge_remapped[e];
874+ edge_crr_id_[cur_edge] = old_edge_crr_id[e];
867875 cur_edge = RREdgeId (size_t (cur_edge) + 1 );
868876 }
869877 }
0 commit comments