Fix for issue #5 (wrong endianness of data stream in test bed)

The 'evr320_data_filter' entity presents data in little-endian format.
However, the test is written for big-endian; set the SWAP generic to
fix this.

Also; once this test passes events won't be detected because the checksum
timeout is not reached. Set to zero.

Last: ghdl complains about mem_data(x) indexing when x > C_MEM_DATA_WIDTH.
Replaced hard-coded statements by a simple loop that runs from
0 to C_MEM_DATA_WIDTH/8 - 1.
This commit is contained in:
till straumann
2021-02-24 11:08:05 +01:00
parent 5bebe6dc41
commit 50860b9e20

View File

@ -176,7 +176,7 @@ begin
evr320_data_filter_inst: entity work.evr320_data_filter
generic map (
SWAP => false,
SWAP => true, -- non-swapped uses LE layout; our check below converts to BE
NUM_BYTES => 8
)
port map (
@ -431,6 +431,7 @@ begin
event_recorder_ctrl.event_number <= std_logic_vector(to_unsigned(g_EVENT_NR_SOS, 8));
evr_params.cs_min_cnt <= X"00000000";
evr_params.cs_min_time <= X"00000000";
evr_params.cs_timeout_cnt <= X"00000000";
mem_addr <= x"000";
await_value(rxlos, '0', 0 ns, 10 us, FAILURE, "wait for release RX LOS");
--wait until (rxlos = '0');
@ -502,14 +503,9 @@ begin
for addr in 0 to 31 loop
mem_addr <= '0' & C_EVENT_REC_FLAGS & std_logic_vector(to_unsigned(addr, 5));
wait_num_rising_edge_plus_margin(usr_clk, 1, 1 ns);
check_value(mem_data(0), all_expected_events(8*addr), ERROR, "Event " & to_string(8*addr) & " Flag");
check_value(mem_data(8), all_expected_events(8*addr + 1), ERROR, "Event " & to_string(8*addr + 1) & " Flag");
check_value(mem_data(16), all_expected_events(8*addr + 2), ERROR, "Event " & to_string(8*addr + 2) & " Flag");
check_value(mem_data(24), all_expected_events(8*addr + 3), ERROR, "Event " & to_string(8*addr + 3) & " Flag");
check_value(mem_data(32), all_expected_events(8*addr + 4), ERROR, "Event " & to_string(8*addr + 4) & " Flag");
check_value(mem_data(40), all_expected_events(8*addr + 5), ERROR, "Event " & to_string(8*addr + 5) & " Flag");
check_value(mem_data(48), all_expected_events(8*addr + 6), ERROR, "Event " & to_string(8*addr + 6) & " Flag");
check_value(mem_data(56), all_expected_events(8*addr + 7), ERROR, "Event " & to_string(8*addr + 7) & " Flag");
for j in 0 to C_MEM_DATA_WIDTH/8 loop
check_value(mem_data(8*j), all_expected_events(8*addr + j), ERROR, "Event " & to_string(8*addr + j) & " Flag");
end loop;
end loop;
else
error("Unsupported width of C_MEM_DATA_WIDTH");