Skip to content

VPR Test test_odd_even_routing Failed #2753

Closed
@ueqri

Description

@ueqri

The VPR test test_odd_even_routing (as shown below) has consistently failed in CI (U: C++ Unit Tests) since 2b6a935 (included) in the master branch.

SECTION("Test case where multiple traffic flows are router, and routes are checked for turn legality and deadlock freedom.") {
std::random_device device;
std::mt19937 rand_num_gen(device());
std::uniform_int_distribution<std::mt19937::result_type> dist(0, 99);
NocTrafficFlows traffic_flow_storage;
for (int i = 0; i < 100; i++) {
auto src_blk_id = (ClusterBlockId)dist(rand_num_gen);
ClusterBlockId dst_blk_id;
do {
dst_blk_id = (ClusterBlockId)dist(rand_num_gen);
} while (src_blk_id == dst_blk_id);
traffic_flow_storage.create_noc_traffic_flow("dummy_name_1", "dummy_name_2", src_blk_id, dst_blk_id, 1, 1, 1);
}
traffic_flow_storage.finished_noc_traffic_flows_setup();
vtr::vector<NocTrafficFlowId, std::vector<NocLinkId>> traffic_flow_routes(traffic_flow_storage.get_number_of_traffic_flows());
for (const auto& [id, traffic_flow] : traffic_flow_storage.get_all_traffic_flows().pairs()) {
NocRouterId src_router_id = noc_model.get_router_at_grid_location(block_locs[traffic_flow.source_router_cluster_id].loc);
NocRouterId dst_router_id = noc_model.get_router_at_grid_location(block_locs[traffic_flow.sink_router_cluster_id].loc);
REQUIRE_NOTHROW(routing_algorithm.route_flow(src_router_id, dst_router_id,
id, traffic_flow_routes[id], noc_model));
}
ChannelDependencyGraph cdg(noc_model, traffic_flow_storage, traffic_flow_routes, block_locs);
REQUIRE(cdg.has_cycles() == false);
check_turn_legality(traffic_flow_routes, noc_model, routing_algorithm);
}

@AlexandreSinger @soheilshahrouz It seems that Alex's commit 2b6a935 has nothing to do with either NoC (or odd even routing). I am not sure why this test started failing since then.

The corresponding logs are here:

-------------------------------------------------------------------------------
test_route_flow
  Test case where multiple traffic flows are router, and routes are checked for
  turn legality and deadlock freedom.
-------------------------------------------------------------------------------
/home/runner/work/vtr-verilog-to-routing/vtr-verilog-to-routing/vpr/test/test_odd_even_routing.cpp:228
...............................................................................

/home/runner/work/vtr-verilog-to-routing/vtr-verilog-to-routing/vpr/test/test_odd_even_routing.cpp:228: FAILED:
due to a fatal error condition:
  SIGSEGV - Segmentation violation signal

Showed in https://github.com/verilog-to-routing/vtr-verilog-to-routing/actions/runs/11077555018/job/30783077163?pr=2720.

-------------------------------------------------------------------------------
test_route_flow
  Test case where multiple traffic flows are router, and routes are checked for
  turn legality and deadlock freedom.
-------------------------------------------------------------------------------
/home/runner/work/vtr-verilog-to-routing/vtr-verilog-to-routing/vpr/test/test_odd_even_routing.cpp:228
...............................................................................

/home/runner/work/vtr-verilog-to-routing/vtr-verilog-to-routing/vpr/test/test_odd_even_routing.cpp:228: FAILED:
due to unexpected exception with message:
  std::bad_alloc

Showed in https://github.com/verilog-to-routing/vtr-verilog-to-routing/actions/runs/11072279016/job/30766140332 and same in https://github.com/verilog-to-routing/vtr-verilog-to-routing/actions/runs/11070489508/job/30760275852.

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions