Skip to content

Commit 1a17be2

Browse files
committed
[libs][rr_graph] change rr_node_indices value type to RRNodeId
1 parent 11c9a57 commit 1a17be2

File tree

2 files changed

+11
-10
lines changed

2 files changed

+11
-10
lines changed

libs/librrgraph/src/base/rr_node_types.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#include <cstdint>
1111
#include "vtr_range.h"
1212
#include "vtr_ndmatrix.h"
13+
#include "rr_graph_fwd.h"
1314

1415
/**
1516
* @brief Type of a routing resource node.
@@ -123,6 +124,6 @@ struct t_rr_rc_data {
123124

124125
// This is the data type of fast lookups of an rr-node given an (rr_type, layer, x, y, and the side)
125126
//[0..num_rr_types-1][0..num_layer-1][0..grid_width-1][0..grid_height-1][0..NUM_2D_SIDES-1][0..max_ptc-1]
126-
typedef std::array<vtr::NdMatrix<std::vector<int>, 4>, NUM_RR_TYPES> t_rr_node_indices;
127+
typedef std::array<vtr::NdMatrix<std::vector<RRNodeId>, 4>, NUM_RR_TYPES> t_rr_node_indices;
127128

128129
#endif

libs/librrgraph/src/base/rr_spatial_lookup.cpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ RRNodeId RRSpatialLookup::find_node(int layer,
7575
return RRNodeId::INVALID();
7676
}
7777

78-
return RRNodeId(rr_node_indices_[type][layer][node_x][node_y][node_side][ptc]);
78+
return rr_node_indices_[type][layer][node_x][node_y][node_side][ptc];
7979
}
8080

8181
std::vector<RRNodeId> RRSpatialLookup::find_nodes_in_range(int layer,
@@ -155,14 +155,14 @@ std::vector<RRNodeId> RRSpatialLookup::find_nodes(int layer,
155155
/* Reserve space to avoid memory fragmentation */
156156
size_t num_nodes = 0;
157157
for (const auto& node : rr_node_indices_[type][layer][node_x][node_y][side]) {
158-
if (RRNodeId(node)) {
158+
if (node.is_valid()) {
159159
num_nodes++;
160160
}
161161
}
162162

163163
nodes.reserve(num_nodes);
164164
for (const auto& node : rr_node_indices_[type][layer][node_x][node_y][side]) {
165-
if (RRNodeId(node)) {
165+
if (node.is_valid()) {
166166
nodes.emplace_back(node);
167167
}
168168
}
@@ -272,11 +272,11 @@ void RRSpatialLookup::add_node(RRNodeId node,
272272

273273
if (size_t(ptc) >= rr_node_indices_[type][layer][x][y][side].size()) {
274274
/* Deposit invalid ids to newly allocated elements while original elements are untouched */
275-
rr_node_indices_[type][layer][x][y][side].resize(ptc + 1, int(RRNodeId::INVALID()));
275+
rr_node_indices_[type][layer][x][y][side].resize(ptc + 1, RRNodeId::INVALID());
276276
}
277277

278278
/* Resize on demand finished; Register the node */
279-
rr_node_indices_[type][layer][x][y][side][ptc] = int(node);
279+
rr_node_indices_[type][layer][x][y][side][ptc] = node;
280280
}
281281

282282
bool RRSpatialLookup::remove_node(RRNodeId node,
@@ -302,11 +302,11 @@ bool RRSpatialLookup::remove_node(RRNodeId node,
302302
if ((size_t)y >= rr_node_indices_[type].dim_size(2)) return false;
303303
if (side >= rr_node_indices_[type].dim_size(3)) return false;
304304
if ((size_t)ptc >= rr_node_indices_[type][layer][x][y][side].size()) return false;
305-
if (rr_node_indices_[type][layer][x][y][side][ptc] != int(node)) return false;
305+
if (rr_node_indices_[type][layer][x][y][side][ptc] != node) return false;
306306

307307
// The node was in the spatial lookup; remove it. -1 corresponds to an invalid node id,
308308
// and so is treated as absent in the spatial lookup
309-
rr_node_indices_[type][layer][x][y][side][ptc] = -1;
309+
rr_node_indices_[type][layer][x][y][side][ptc] = RRNodeId::INVALID();
310310
return true;
311311
}
312312

@@ -353,8 +353,8 @@ void RRSpatialLookup::reorder(const vtr::vector<RRNodeId, RRNodeId> dest_order)
353353
for (size_t y = 0; y < grid.dim_size(2); y++) {
354354
for (size_t s = 0; s < grid.dim_size(3); s++) {
355355
for (auto &node: grid[l][x][y][s]) {
356-
if (node != OPEN) {
357-
node = size_t(dest_order[RRNodeId(node)]);
356+
if (node.is_valid()) {
357+
node = dest_order[node];
358358
}
359359
}
360360
}

0 commit comments

Comments
 (0)