fpga: sim: Workaround Vivado bug in ChdrIfaceBfm_tb
Original-commit: 9e4de0d0b7a1a35a5b3220a605c329e60f8b5e83
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// Copyright 2020 Ettus Research, A National Instruments Company
|
// Copyright 2022 Ettus Research, A National Instruments Brand
|
||||||
//
|
//
|
||||||
// SPDX-License-Identifier: LGPL-3.0-or-later
|
// SPDX-License-Identifier: LGPL-3.0-or-later
|
||||||
//
|
//
|
||||||
@@ -44,10 +44,19 @@ module ChdrIfaceBfm_all_tb();
|
|||||||
|
|
||||||
genvar i;
|
genvar i;
|
||||||
for (i = 0; i < NUM_TESTS; i++) begin : gen_test_config
|
for (i = 0; i < NUM_TESTS; i++) begin : gen_test_config
|
||||||
|
// There is an internal bug in Vivado 2021.1 that prevents all the tests to
|
||||||
|
// run at the same time. Therefore, we are splitting the ADV tests and
|
||||||
|
// running them separately.
|
||||||
ChdrIfaceBfm_tb #(
|
ChdrIfaceBfm_tb #(
|
||||||
.CHDR_W (tests[i].CHDR_W),
|
.CHDR_W (tests[i].CHDR_W),
|
||||||
.ITEM_W (tests[i].ITEM_W)
|
.ITEM_W (tests[i].ITEM_W),
|
||||||
|
.ADV (0)
|
||||||
) ChdrIfaceBfm_tb_i ();
|
) ChdrIfaceBfm_tb_i ();
|
||||||
|
ChdrIfaceBfm_tb #(
|
||||||
|
.CHDR_W (tests[i].CHDR_W),
|
||||||
|
.ITEM_W (tests[i].ITEM_W),
|
||||||
|
.ADV (1)
|
||||||
|
) ChdrIfaceBfm_tb_adv_i ();
|
||||||
end : gen_test_config
|
end : gen_test_config
|
||||||
|
|
||||||
endmodule : ChdrIfaceBfm_all_tb
|
endmodule : ChdrIfaceBfm_all_tb
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// Copyright 2020 Ettus Research, A National Instruments Company
|
// Copyright 2022 Ettus Research, A National Instruments Brand
|
||||||
//
|
//
|
||||||
// SPDX-License-Identifier: LGPL-3.0-or-later
|
// SPDX-License-Identifier: LGPL-3.0-or-later
|
||||||
//
|
//
|
||||||
@@ -11,7 +11,8 @@
|
|||||||
module ChdrIfaceBfm_tb #(
|
module ChdrIfaceBfm_tb #(
|
||||||
parameter int CHDR_W = 64,
|
parameter int CHDR_W = 64,
|
||||||
parameter int ITEM_W = 32,
|
parameter int ITEM_W = 32,
|
||||||
parameter int SPP = 64
|
parameter int SPP = 64,
|
||||||
|
parameter bit ADV = 0
|
||||||
);
|
);
|
||||||
|
|
||||||
`include "test_exec.svh"
|
`include "test_exec.svh"
|
||||||
@@ -518,49 +519,59 @@ module ChdrIfaceBfm_tb #(
|
|||||||
// Test Sequences
|
// Test Sequences
|
||||||
//-------------------------------------------------------------------------
|
//-------------------------------------------------------------------------
|
||||||
|
|
||||||
test.start_test("Test send() / recv()", 10ms);
|
// There is an internal bug in Vivado 2021.1 that prevents all of these
|
||||||
for (int i = 0; i < 1000; i++) test_send(TEST_RECV);
|
// tests to run at the same time. Therefore, we are splitting the *_adv
|
||||||
test.end_test();
|
// tests and running them separately in the *all_tb file.
|
||||||
|
if (ADV) begin
|
||||||
|
test.start_test("Test send_packets_items() / recv_packets_items_adv(num_items)", 10ms);
|
||||||
|
for (int i = 0; i < 1000; i++) test_recv_packets_items_adv(TEST_NUM_ITEMS);
|
||||||
|
test.end_test();
|
||||||
|
|
||||||
test.start_test("Test send() / recv_adv()", 10ms);
|
test.start_test("Test send_packets_items() / recv_packets_items_adv(num_items)", 10ms);
|
||||||
for (int i = 0; i < 1000; i++) test_send(TEST_RECV_ADV);
|
for (int i = 0; i < 1000; i++) test_recv_packets_items_adv(TEST_NUM_ITEMS);
|
||||||
test.end_test();
|
test.end_test();
|
||||||
|
|
||||||
test.start_test("Test send_items() / recv_items_adv()", 10ms);
|
test.start_test("Test send_packets_items() / recv_packets_items_adv(eob)", 10ms);
|
||||||
for (int i = 0; i < 1000; i++) test_send_items();
|
for (int i = 0; i < 1000; i++) test_recv_packets_items_adv(TEST_EOB);
|
||||||
test.end_test();
|
test.end_test();
|
||||||
|
|
||||||
test.start_test("Test send_packets() / recv_adv()", 10ms);
|
test.start_test("Test send_packets_items() / recv_packets_items_adv(eov)", 10ms);
|
||||||
for (int i = 0; i < 1000; i++) test_send_packets();
|
for (int i = 0; i < 1000; i++) test_recv_packets_items_adv(TEST_EOV);
|
||||||
test.end_test();
|
test.end_test();
|
||||||
|
|
||||||
test.start_test("Test send_packets_items() / recv_items_adv()", 10ms);
|
end else begin
|
||||||
for (int i = 0; i < 1000; i++) test_send_packets_items();
|
test.start_test("Test send() / recv()", 10ms);
|
||||||
test.end_test();
|
for (int i = 0; i < 1000; i++) test_send(TEST_RECV);
|
||||||
|
test.end_test();
|
||||||
|
|
||||||
test.start_test("Test send_packets_items() / recv_packets_items(num_items)", 10ms);
|
test.start_test("Test send() / recv_adv()", 10ms);
|
||||||
for (int i = 0; i < 1000; i++) test_recv_packets_items(TEST_NUM_ITEMS);
|
for (int i = 0; i < 1000; i++) test_send(TEST_RECV_ADV);
|
||||||
test.end_test();
|
test.end_test();
|
||||||
|
|
||||||
test.start_test("Test send_packets_items() / recv_packets_items(eob)", 10ms);
|
test.start_test("Test send_items() / recv_items_adv()", 10ms);
|
||||||
for (int i = 0; i < 1000; i++) test_recv_packets_items(TEST_EOB);
|
for (int i = 0; i < 1000; i++) test_send_items();
|
||||||
test.end_test();
|
test.end_test();
|
||||||
|
|
||||||
test.start_test("Test send_packets_items() / recv_packets_items(eov)", 10ms);
|
test.start_test("Test send_packets() / recv_adv()", 10ms);
|
||||||
for (int i = 0; i < 1000; i++) test_recv_packets_items(TEST_EOV);
|
for (int i = 0; i < 1000; i++) test_send_packets();
|
||||||
test.end_test();
|
test.end_test();
|
||||||
|
|
||||||
test.start_test("Test send_packets_items() / recv_packets_items_adv(num_items)", 10ms);
|
test.start_test("Test send_packets_items() / recv_items_adv()", 10ms);
|
||||||
for (int i = 0; i < 1000; i++) test_recv_packets_items_adv(TEST_NUM_ITEMS);
|
for (int i = 0; i < 1000; i++) test_send_packets_items();
|
||||||
test.end_test();
|
test.end_test();
|
||||||
|
|
||||||
test.start_test("Test send_packets_items() / recv_packets_items_adv(eob)", 10ms);
|
test.start_test("Test send_packets_items() / recv_packets_items(num_items)", 10ms);
|
||||||
for (int i = 0; i < 1000; i++) test_recv_packets_items_adv(TEST_EOB);
|
for (int i = 0; i < 1000; i++) test_recv_packets_items(TEST_NUM_ITEMS);
|
||||||
test.end_test();
|
test.end_test();
|
||||||
|
|
||||||
test.start_test("Test send_packets_items() / recv_packets_items_adv(eov)", 10ms);
|
test.start_test("Test send_packets_items() / recv_packets_items(eob)", 10ms);
|
||||||
for (int i = 0; i < 1000; i++) test_recv_packets_items_adv(TEST_EOV);
|
for (int i = 0; i < 1000; i++) test_recv_packets_items(TEST_EOB);
|
||||||
test.end_test();
|
test.end_test();
|
||||||
|
|
||||||
|
test.start_test("Test send_packets_items() / recv_packets_items(eov)", 10ms);
|
||||||
|
for (int i = 0; i < 1000; i++) test_recv_packets_items(TEST_EOV);
|
||||||
|
test.end_test();
|
||||||
|
end
|
||||||
|
|
||||||
// Make sure we don't get any more packets. Wait for more than a packet of
|
// Make sure we don't get any more packets. Wait for more than a packet of
|
||||||
// worth of time the check if we've received anything.
|
// worth of time the check if we've received anything.
|
||||||
|
|||||||
Reference in New Issue
Block a user