Skip to content

Commit 3b9f552

Browse files
committed
[lib][rr_graph] erase node_tilable_track_nums_ when removing a node
1 parent 4830963 commit 3b9f552

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

libs/librrgraph/src/base/rr_graph_storage.cpp

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -707,8 +707,8 @@ void t_rr_graph_storage::remove_nodes(const std::vector<RRNodeId>& nodes) {
707707
// Iterate over the nodes to be removed and adjust the IDs of nodes
708708
// that fall between them.
709709
for (size_t i = 0; i < sorted_nodes.size(); ++i) {
710-
size_t start_rr_node_index = sorted_nodes[i]+1;
711-
size_t end_rr_node_index = (i == sorted_nodes.size() - 1) ? sorted_nodes.size() : sorted_nodes[i + 1];
710+
size_t start_rr_node_index = size_t(sorted_nodes[i]) + 1;
711+
size_t end_rr_node_index = (i == sorted_nodes.size() - 1) ? sorted_nodes.size() : size_t(sorted_nodes[i + 1]);
712712
for (size_t j = start_rr_node_index; j < end_rr_node_index; ++j) {
713713
RRNodeId old_node = RRNodeId(j);
714714
// New node index is equal to the old nodex index minus the number of nodes being removed before it.
@@ -722,6 +722,7 @@ void t_rr_graph_storage::remove_nodes(const std::vector<RRNodeId>& nodes) {
722722
if (is_tileable_) {
723723
node_bend_start_[new_node] = node_bend_start_[old_node];
724724
node_bend_end_[new_node] = node_bend_end_[old_node];
725+
node_tilable_track_nums_[new_node] = node_tilable_track_nums_[old_node];
725726
}
726727
}
727728
}
@@ -734,14 +735,18 @@ void t_rr_graph_storage::remove_nodes(const std::vector<RRNodeId>& nodes) {
734735
node_first_edge_.erase(node_first_edge_.end()-num_nodes_to_remove, node_first_edge_.end());
735736
node_fan_in_.erase(node_fan_in_.end()-num_nodes_to_remove, node_fan_in_.end());
736737
node_layer_.erase(node_layer_.end()-num_nodes_to_remove, node_layer_.end());
737-
node_name_.erase(node_name_.end()-num_nodes_to_remove, node_name_.end());
738+
for (size_t node_index = node_name_.size()-num_nodes_to_remove; node_index < node_name_.size(); ++node_index) {
739+
RRNodeId node = RRNodeId(node_index);
740+
node_name_.erase(node);
741+
}
738742
if (is_tileable_) {
739743
node_bend_start_.erase(node_bend_start_.end()-num_nodes_to_remove, node_bend_start_.end());
740744
node_bend_end_.erase(node_bend_end_.end()-num_nodes_to_remove, node_bend_end_.end());
745+
node_tilable_track_nums_.erase(node_tilable_track_nums_.end()-num_nodes_to_remove, node_tilable_track_nums_.end());
741746
}
742747

743748
std::vector<RREdgeId> removed_edges;
744-
auto adjust_edges = [&](std::vector<RRNodeId>& edge_nodes) {
749+
auto adjust_edges = [&](vtr::vector<RREdgeId, RRNodeId>& edge_nodes) {
745750
for (size_t edge_index = 0; edge_index < edge_nodes.size(); ++edge_index) {
746751
RREdgeId edge_id = RREdgeId(edge_index);
747752
RRNodeId node = edge_nodes[edge_id];

0 commit comments

Comments
 (0)