Skip to content

Commit 092a7cb

Browse files
committed
[lib][rr_graph] remove template id from graph builder and graph storage
1 parent 4aa07e7 commit 092a7cb

File tree

4 files changed

+8
-50
lines changed

4 files changed

+8
-50
lines changed

libs/librrgraph/src/base/rr_graph_builder.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -179,9 +179,8 @@ void RRGraphBuilder::reorder_nodes(e_rr_node_reorder_algorithm reorder_rr_graph_
179179
void RRGraphBuilder::create_edge_in_cache(RRNodeId src,
180180
RRNodeId dest,
181181
RRSwitchId edge_switch,
182-
bool remapped,
183-
std::optional<std::string> sw_template_id_) {
184-
edges_to_build_.emplace_back(src, dest, size_t(edge_switch), remapped, sw_template_id_);
182+
bool remapped) {
183+
edges_to_build_.emplace_back(src, dest, size_t(edge_switch), remapped);
185184
is_edge_dirty_ = true; // Adding a new edge revokes the flag
186185
is_incoming_edge_dirty_ = true;
187186
}

libs/librrgraph/src/base/rr_graph_builder.h

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -293,8 +293,7 @@ class RRGraphBuilder {
293293
void create_edge_in_cache(RRNodeId src,
294294
RRNodeId dest,
295295
RRSwitchId edge_switch,
296-
bool remapped,
297-
std::optional<std::string> sw_template_id_=std::nullopt);
296+
bool remapped);
298297

299298
/** @brief Add a new edge to the cache of edges to be built
300299
* @note This will not add an edge to storage! You need to call build_edges() after all the edges are cached! */
@@ -340,9 +339,8 @@ class RRGraphBuilder {
340339
inline void emplace_back_edge(RRNodeId src,
341340
RRNodeId dest,
342341
short edge_switch,
343-
bool remapped,
344-
std::optional<std::string> sw_template_id=std::nullopt) {
345-
node_storage_.emplace_back_edge(src, dest, edge_switch, remapped, sw_template_id);
342+
bool remapped) {
343+
node_storage_.emplace_back_edge(src, dest, edge_switch, remapped);
346344
}
347345
/** @brief Append 1 more RR node to the RR graph. */
348346
inline void emplace_back() {

libs/librrgraph/src/base/rr_graph_storage.cpp

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -16,21 +16,18 @@ 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_sw_template_id_.reserve(num_edges);
2019
}
2120

2221
void t_rr_graph_storage::emplace_back_edge(RRNodeId src,
2322
RRNodeId dest,
2423
short edge_switch,
25-
bool remapped,
26-
std::optional<std::string> sw_template_id) {
24+
bool remapped) {
2725
// Cannot mutate edges once edges have been read!
2826
VTR_ASSERT(!edges_read_);
2927
edge_src_node_.emplace_back(src);
3028
edge_dest_node_.emplace_back(dest);
3129
edge_switch_.emplace_back(edge_switch);
3230
edge_remapped_.emplace_back(remapped);
33-
edge_sw_template_id_.emplace_back(std::move(sw_template_id));
3431
}
3532

3633
// Typical node to edge ratio. This allows a preallocation guess for the edges
@@ -55,16 +52,14 @@ void t_rr_graph_storage::alloc_and_load_edges(const t_rr_edge_info_set* rr_edges
5552
edge_dest_node_.reserve(new_capacity);
5653
edge_switch_.reserve(new_capacity);
5754
edge_remapped_.reserve(new_capacity);
58-
edge_sw_template_id_.reserve(new_capacity);
5955
}
6056

6157
for (const t_rr_edge_info& new_edge : *rr_edges_to_create) {
6258
emplace_back_edge(
6359
new_edge.from_node,
6460
new_edge.to_node,
6561
new_edge.switch_type,
66-
new_edge.remapped,
67-
new_edge.sw_template_id);
62+
new_edge.remapped);
6863
}
6964
}
7065

@@ -95,7 +90,6 @@ void t_rr_graph_storage::remove_edges(std::vector<RREdgeId>& rr_edges_to_remove)
9590
edge_src_node_[erase_idx] = edge_src_node_[RREdgeId(edge_list_end)];
9691
edge_switch_[erase_idx] = edge_switch_[RREdgeId(edge_list_end)];
9792
edge_remapped_[erase_idx] = edge_remapped_[RREdgeId(edge_list_end)];
98-
edge_sw_template_id_[erase_idx] = edge_sw_template_id_[RREdgeId(edge_list_end)];
9993

10094
// At this point we have no copies of what was at erase_idx and two copies of
10195
// what was at the end of the list. If we make the list one element shorter,
@@ -110,7 +104,6 @@ void t_rr_graph_storage::remove_edges(std::vector<RREdgeId>& rr_edges_to_remove)
110104
edge_src_node_.erase(edge_src_node_.begin() + edge_list_end + 1, edge_src_node_.end());
111105
edge_switch_.erase(edge_switch_.begin() + edge_list_end + 1, edge_switch_.end());
112106
edge_remapped_.erase(edge_remapped_.begin() + edge_list_end + 1, edge_remapped_.end());
113-
edge_sw_template_id_.erase(edge_sw_template_id_.begin() + edge_list_end + 1, edge_sw_template_id_.end());
114107

115108
VTR_ASSERT(edge_dest_node_.size() == (starting_edge_count - rr_edges_to_remove.size()));
116109

@@ -136,7 +129,6 @@ void t_rr_graph_storage::assign_first_edges() {
136129
VTR_ASSERT(edge_dest_node_.size() == num_edges);
137130
VTR_ASSERT(edge_switch_.size() == num_edges);
138131
VTR_ASSERT(edge_remapped_.size() == num_edges);
139-
VTR_ASSERT(edge_sw_template_id_.size() == num_edges);
140132

141133
while (true) {
142134
VTR_ASSERT(first_edge_id < num_edges);
@@ -819,7 +811,6 @@ t_rr_graph_view t_rr_graph_storage::view() const {
819811
vtr::make_const_array_view_id(edge_src_node_),
820812
vtr::make_const_array_view_id(edge_dest_node_),
821813
vtr::make_const_array_view_id(edge_switch_),
822-
vtr::make_const_array_view_id(edge_sw_template_id_),
823814
virtual_clock_network_root_idx_,
824815
vtr::make_const_array_view_id(node_bend_start_),
825816
vtr::make_const_array_view_id(node_bend_end_));
@@ -858,7 +849,6 @@ void t_rr_graph_storage::reorder(const vtr::vector<RRNodeId, RRNodeId>& order,
858849
auto old_edge_dest_node = edge_dest_node_;
859850
auto old_edge_switch = edge_switch_;
860851
auto old_edge_remapped = edge_remapped_;
861-
auto old_edge_sw_template_id = edge_sw_template_id_;
862852
RREdgeId cur_edge(0);
863853

864854
// Reorder edges by source node
@@ -872,7 +862,6 @@ void t_rr_graph_storage::reorder(const vtr::vector<RRNodeId, RRNodeId>& order,
872862
edge_dest_node_[cur_edge] = order[old_edge_dest_node[e]];
873863
edge_switch_[cur_edge] = old_edge_switch[e];
874864
edge_remapped_[cur_edge] = old_edge_remapped[e];
875-
edge_sw_template_id_[cur_edge] = old_edge_sw_template_id[e];
876865
cur_edge = RREdgeId(size_t(cur_edge) + 1);
877866
}
878867
}

libs/librrgraph/src/base/rr_graph_storage.h

Lines changed: 1 addition & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -485,10 +485,6 @@ class t_rr_graph_storage {
485485
return edge_source_node(edge_id(id, iedge));
486486
}
487487

488-
const std::optional<std::string>& edge_sw_template_id(RREdgeId edge) const {
489-
return edge_sw_template_id_[edge];
490-
}
491-
492488
/**
493489
* @brief Get the switch used for the specified edge.
494490
*/
@@ -631,7 +627,6 @@ class t_rr_graph_storage {
631627
edge_dest_node_.clear();
632628
edge_switch_.clear();
633629
edge_remapped_.clear();
634-
edge_sw_template_id_.clear();
635630
edges_read_ = false;
636631
partitioned_ = false;
637632
remapped_edges_ = false;
@@ -668,7 +663,6 @@ class t_rr_graph_storage {
668663
edge_dest_node_.shrink_to_fit();
669664
edge_switch_.shrink_to_fit();
670665
edge_remapped_.shrink_to_fit();
671-
edge_sw_template_id_.shrink_to_fit();
672666
}
673667

674668
/** @brief Append 1 more RR node to the RR graph.*/
@@ -836,8 +830,7 @@ class t_rr_graph_storage {
836830
void emplace_back_edge(RRNodeId src,
837831
RRNodeId dest,
838832
short edge_switch,
839-
bool remapped,
840-
std::optional<std::string> sw_template_id);
833+
bool remapped);
841834

842835
/** @brief Adds a batch of edges.*/
843836
void alloc_and_load_edges(const t_rr_edge_info_set* rr_edges_to_create);
@@ -937,7 +930,6 @@ class t_rr_graph_storage {
937930
array_rearrange(edge_src_node_, RRNodeId::INVALID());
938931
array_rearrange(edge_dest_node_, RRNodeId::INVALID());
939932
array_rearrange(edge_switch_, LIBRRGRAPH_UNDEFINED_VAL);
940-
array_rearrange(edge_sw_template_id_, std::nullopt);
941933
array_rearrange(edge_remapped_, false);
942934
}
943935

@@ -1105,19 +1097,6 @@ class t_rr_graph_storage {
11051097
*/
11061098
vtr::vector<RREdgeId, bool> edge_remapped_;
11071099

1108-
/** @brief
1109-
* This vector stores the template ID corresponding to each edge.
1110-
* It is primarily used for the tileable RR Graph. In a tileable RR Graph,
1111-
* we have a limited set of unique switch block patterns that are
1112-
* instantiated across the FPGA array. Each edge in a pattern has an ID.
1113-
* This data structure stores the ID of the pattern edge associated with
1114-
* each RR edge (i.e., the instantiated edge).
1115-
*
1116-
* This information can be used for various analyses, such as identifying
1117-
* which edges within each pattern are used most or least frequently.
1118-
*/
1119-
vtr::vector<RREdgeId, std::optional<std::string>> edge_sw_template_id_;
1120-
11211100
/** @brief
11221101
* The following data structures are only used for tileable routing resource graph.
11231102
* The tileable flag is set to true by tileable routing resource graph builder.
@@ -1182,7 +1161,6 @@ class t_rr_graph_view {
11821161
const vtr::array_view_id<RREdgeId, const RRNodeId> edge_src_node,
11831162
const vtr::array_view_id<RREdgeId, const RRNodeId> edge_dest_node,
11841163
const vtr::array_view_id<RREdgeId, const short> edge_switch,
1185-
const vtr::array_view_id<RREdgeId, const std::optional<std::string>> edge_sw_template_id,
11861164
const std::unordered_map<std::string, RRNodeId>& virtual_clock_network_root_idx,
11871165
const vtr::array_view_id<RRNodeId, const int16_t> node_bend_start,
11881166
const vtr::array_view_id<RRNodeId, const int16_t> node_bend_end)
@@ -1195,7 +1173,6 @@ class t_rr_graph_view {
11951173
, edge_src_node_(edge_src_node)
11961174
, edge_dest_node_(edge_dest_node)
11971175
, edge_switch_(edge_switch)
1198-
, edge_sw_template_id_(edge_sw_template_id)
11991176
, virtual_clock_network_root_idx_(virtual_clock_network_root_idx)
12001177
, node_bend_start_(node_bend_start)
12011178
, node_bend_end_(node_bend_end) {}
@@ -1384,10 +1361,6 @@ class t_rr_graph_view {
13841361
return edge_switch_[edge];
13851362
}
13861363

1387-
std::optional<std::string> edge_sw_template_id(RREdgeId edge) const {
1388-
return edge_sw_template_id_[edge];
1389-
}
1390-
13911364
private:
13921365
RREdgeId first_edge(RRNodeId id) const {
13931366
return node_first_edge_[id];
@@ -1406,7 +1379,6 @@ class t_rr_graph_view {
14061379
vtr::array_view_id<RREdgeId, const RRNodeId> edge_src_node_;
14071380
vtr::array_view_id<RREdgeId, const RRNodeId> edge_dest_node_;
14081381
vtr::array_view_id<RREdgeId, const short> edge_switch_;
1409-
vtr::array_view_id<RREdgeId, const std::optional<std::string>> edge_sw_template_id_;
14101382
const std::unordered_map<std::string, RRNodeId>& virtual_clock_network_root_idx_;
14111383

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

0 commit comments

Comments
 (0)