Skip to content

Commit 7811b27

Browse files
committed
Adapt the read_rr_graph_metadata test use reordering
Signed-off-by: Dusty DeWeese <[email protected]>
1 parent 70400be commit 7811b27

File tree

1 file changed

+15
-5
lines changed

1 file changed

+15
-5
lines changed

vpr/test/test_vpr.cpp

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -125,8 +125,7 @@ TEST_CASE("read_rr_graph_metadata", "[vpr]") {
125125
kArchFile,
126126
"wire.eblif",
127127
"--route_chan_width",
128-
"100",
129-
};
128+
"100"};
130129
vpr_init(sizeof(argv) / sizeof(argv[0]), argv,
131130
&options, &vpr_setup, &arch);
132131
vpr_setup.RouterOpts.read_rr_edge_metadata = true;
@@ -165,6 +164,10 @@ TEST_CASE("read_rr_graph_metadata", "[vpr]") {
165164
"wire.eblif",
166165
"--route_chan_width",
167166
"100",
167+
"--reorder_rr_graph_nodes_seed",
168+
"1",
169+
"--reorder_rr_graph_nodes_algorithm",
170+
"random_shuffle", // Tests node reordering with metadata
168171
"--read_rr_graph",
169172
kRrGraphFile,
170173
};
@@ -175,23 +178,30 @@ TEST_CASE("read_rr_graph_metadata", "[vpr]") {
175178
vpr_create_device(vpr_setup, arch);
176179

177180
const auto& device_ctx = g_vpr_ctx.device();
181+
182+
// recompute ordering from 'random_shuffle'
183+
std::vector<int> src_order(device_ctx.rr_nodes.size()); // new id -> old id
184+
std::iota(src_order.begin(), src_order.end(), 0); // Initialize to [0, 1, 2 ...]
185+
std::mt19937 g(1);
186+
std::shuffle(src_order.begin(), src_order.end(), g);
187+
178188
CHECK(device_ctx.rr_node_metadata.size() == 1);
179189
CHECK(device_ctx.rr_edge_metadata.size() == 1);
180190

181191
auto node = arch.strings.intern_string(vtr::string_view("node"));
182192
auto edge = arch.strings.intern_string(vtr::string_view("edge"));
183193

184194
for (const auto& node_meta : device_ctx.rr_node_metadata) {
185-
CHECK(node_meta.first == src_inode);
195+
CHECK(src_order[node_meta.first] == src_inode);
186196
REQUIRE(node_meta.second.has(node));
187197
auto* value = node_meta.second.one(node);
188198
REQUIRE(value != nullptr);
189199
CHECK_THAT(value->as_string().get(&arch.strings), Equals("test node"));
190200
}
191201

192202
for (const auto& edge_meta : device_ctx.rr_edge_metadata) {
193-
CHECK(std::get<0>(edge_meta.first) == src_inode);
194-
CHECK(std::get<1>(edge_meta.first) == sink_inode);
203+
CHECK(src_order[std::get<0>(edge_meta.first)] == src_inode);
204+
CHECK(src_order[std::get<1>(edge_meta.first)] == sink_inode);
195205
CHECK(std::get<2>(edge_meta.first) == switch_id);
196206

197207
REQUIRE(edge_meta.second.has(edge));

0 commit comments

Comments
 (0)