Skip to content

Commit b2d8057

Browse files
committed
[lib][rr_graph][storage] add edge_crr_id
1 parent f35cde6 commit b2d8057

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

libs/librrgraph/src/base/rr_graph_storage.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

2122
void 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
}

libs/librrgraph/src/base/rr_graph_storage.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -631,6 +631,7 @@ class t_rr_graph_storage {
631631
edge_dest_node_.clear();
632632
edge_switch_.clear();
633633
edge_remapped_.clear();
634+
edge_crr_id_.clear();
634635
edges_read_ = false;
635636
partitioned_ = false;
636637
remapped_edges_ = false;
@@ -667,6 +668,7 @@ class t_rr_graph_storage {
667668
edge_dest_node_.shrink_to_fit();
668669
edge_switch_.shrink_to_fit();
669670
edge_remapped_.shrink_to_fit();
671+
edge_crr_id_.shrink_to_fit();
670672
}
671673

672674
/** @brief Append 1 more RR node to the RR graph.*/
@@ -931,6 +933,7 @@ class t_rr_graph_storage {
931933
array_rearrange(edge_src_node_, RRNodeId::INVALID());
932934
array_rearrange(edge_dest_node_, RRNodeId::INVALID());
933935
array_rearrange(edge_switch_, LIBRRGRAPH_UNDEFINED_VAL);
936+
array_rearrange(edge_crr_id_, "");
934937
array_rearrange(edge_remapped_, false);
935938
}
936939

@@ -1164,6 +1167,7 @@ class t_rr_graph_view {
11641167
const vtr::array_view_id<RREdgeId, const RRNodeId> edge_src_node,
11651168
const vtr::array_view_id<RREdgeId, const RRNodeId> edge_dest_node,
11661169
const vtr::array_view_id<RREdgeId, const short> edge_switch,
1170+
const vtr::array_view_id<RREdgeId, const std::string> edge_crr_id,
11671171
const std::unordered_map<std::string, RRNodeId>& virtual_clock_network_root_idx,
11681172
const vtr::array_view_id<RRNodeId, const int16_t> node_bend_start,
11691173
const vtr::array_view_id<RRNodeId, const int16_t> node_bend_end)
@@ -1176,6 +1180,7 @@ class t_rr_graph_view {
11761180
, edge_src_node_(edge_src_node)
11771181
, edge_dest_node_(edge_dest_node)
11781182
, edge_switch_(edge_switch)
1183+
, edge_crr_id_(edge_crr_id)
11791184
, virtual_clock_network_root_idx_(virtual_clock_network_root_idx)
11801185
, node_bend_start_(node_bend_start)
11811186
, node_bend_end_(node_bend_end) {}
@@ -1364,6 +1369,10 @@ class t_rr_graph_view {
13641369
return edge_switch_[edge];
13651370
}
13661371

1372+
std::string edge_crr_id(RREdgeId edge) const {
1373+
return edge_crr_id_[edge];
1374+
}
1375+
13671376
private:
13681377
RREdgeId first_edge(RRNodeId id) const {
13691378
return node_first_edge_[id];
@@ -1382,6 +1391,7 @@ class t_rr_graph_view {
13821391
vtr::array_view_id<RREdgeId, const RRNodeId> edge_src_node_;
13831392
vtr::array_view_id<RREdgeId, const RRNodeId> edge_dest_node_;
13841393
vtr::array_view_id<RREdgeId, const short> edge_switch_;
1394+
vtr::array_view_id<RREdgeId, const std::string> edge_crr_id_;
13851395
const std::unordered_map<std::string, RRNodeId>& virtual_clock_network_root_idx_;
13861396

13871397
vtr::array_view_id<RRNodeId, const int16_t> node_bend_start_;

0 commit comments

Comments
 (0)