Skip to content
Snippets Groups Projects
Commit 3b074870 authored by Eric Kooistra's avatar Eric Kooistra
Browse files

Prepare test support for stream_en_arr.

parent da1f9491
No related branches found
No related tags found
1 merge request!156Added first version of dp_bsn_align_v2.vhd with mmp and tb. This was...
...@@ -77,7 +77,7 @@ ARCHITECTURE tb OF tb_dp_bsn_align_v2 IS ...@@ -77,7 +77,7 @@ ARCHITECTURE tb OF tb_dp_bsn_align_v2 IS
CONSTANT c_total_latency : NATURAL := c_dut_latency + c_align_latency_nof_clk; CONSTANT c_total_latency : NATURAL := c_dut_latency + c_align_latency_nof_clk;
CONSTANT c_verify_nof_blocks : NATURAL := g_tb_nof_blocks - g_bsn_latency_max; -- skip last blocks CONSTANT c_verify_nof_blocks : NATURAL := g_tb_nof_blocks - g_bsn_latency_max; -- skip last blocks
TYPE t_tb_state IS (s_idle, s_start, s_restart, s_lost); TYPE t_tb_state IS (s_idle, s_start, s_restart, s_disable, s_lost);
TYPE t_data_arr IS ARRAY (g_nof_streams-1 DOWNTO 0) OF STD_LOGIC_VECTOR(c_data_w-1 DOWNTO 0); TYPE t_data_arr IS ARRAY (g_nof_streams-1 DOWNTO 0) OF STD_LOGIC_VECTOR(c_data_w-1 DOWNTO 0);
TYPE t_bsn_arr IS ARRAY (g_nof_streams-1 DOWNTO 0) OF STD_LOGIC_VECTOR(c_bsn_w-1 DOWNTO 0); TYPE t_bsn_arr IS ARRAY (g_nof_streams-1 DOWNTO 0) OF STD_LOGIC_VECTOR(c_bsn_w-1 DOWNTO 0);
...@@ -190,6 +190,9 @@ BEGIN ...@@ -190,6 +190,9 @@ BEGIN
-- Begin of stimuli -- Begin of stimuli
FOR S IN 0 TO g_tb_nof_restart-1 LOOP FOR S IN 0 TO g_tb_nof_restart-1 LOOP
v_bsn := c_bsn_init; v_bsn := c_bsn_init;
IF S = 2 THEN
stream_en_arr(1) <= '0';
END IF;
FOR R IN 0 TO g_tb_nof_blocks-1 LOOP FOR R IN 0 TO g_tb_nof_blocks-1 LOOP
v_sync := sel_a_b(v_bsn MOD c_sync_period = c_sync_offset, '1', '0'); v_sync := sel_a_b(v_bsn MOD c_sync_period = c_sync_offset, '1', '0');
proc_dp_gen_block_data(c_rl, TRUE, c_data_w, c_data_w, v_data, 0, 0, g_block_size, v_channel, v_err, v_sync, TO_UVEC(v_bsn, c_bsn_w), clk, stream_en_arr(I), ref_siso_arr(I), ref_sosi_arr(I)); proc_dp_gen_block_data(c_rl, TRUE, c_data_w, c_data_w, v_data, 0, 0, g_block_size, v_channel, v_err, v_sync, TO_UVEC(v_bsn, c_bsn_w), clk, stream_en_arr(I), ref_siso_arr(I), ref_sosi_arr(I));
...@@ -223,7 +226,8 @@ BEGIN ...@@ -223,7 +226,8 @@ BEGIN
tb_state <= s_idle; tb_state <= s_idle;
IF restart_cnt = 0 THEN tb_state <= s_start; END IF; IF restart_cnt = 0 THEN tb_state <= s_start; END IF;
IF restart_cnt = 1 THEN tb_state <= s_restart; END IF; IF restart_cnt = 1 THEN tb_state <= s_restart; END IF;
IF restart_cnt = 2 THEN tb_state <= s_lost; END IF; IF restart_cnt = 3 THEN tb_state <= s_disable; END IF;
IF restart_cnt = 4 THEN tb_state <= s_lost; END IF;
END PROCESS; END PROCESS;
-- Create latency misalignment between the input streams -- Create latency misalignment between the input streams
...@@ -326,9 +330,15 @@ BEGIN ...@@ -326,9 +330,15 @@ BEGIN
ASSERT out_sosi_arr(I).sop = out_sosi_arr_exp(I).sop REPORT "Wrong sop for output " & int_to_str(I) SEVERITY ERROR; ASSERT out_sosi_arr(I).sop = out_sosi_arr_exp(I).sop REPORT "Wrong sop for output " & int_to_str(I) SEVERITY ERROR;
ASSERT out_sosi_arr(I).eop = out_sosi_arr_exp(I).eop REPORT "Wrong eop for output " & int_to_str(I) SEVERITY ERROR; ASSERT out_sosi_arr(I).eop = out_sosi_arr_exp(I).eop REPORT "Wrong eop for output " & int_to_str(I) SEVERITY ERROR;
ASSERT out_sosi_arr(I).valid = out_sosi_arr_exp(I).valid REPORT "Wrong valid for output " & int_to_str(I) SEVERITY ERROR; ASSERT out_sosi_arr(I).valid = out_sosi_arr_exp(I).valid REPORT "Wrong valid for output " & int_to_str(I) SEVERITY ERROR;
ASSERT out_sosi_arr(I).data = out_sosi_arr_exp(I).data REPORT "Wrong data for output " & int_to_str(I) & " : " IF stream_en_arr(I) = '1' THEN
& int_to_str(TO_UINT(out_sosi_arr(I).data)) & " /= " ASSERT out_sosi_arr(I).data = out_sosi_arr_exp(I).data REPORT "Wrong data for output " & int_to_str(I) & " : "
& int_to_str(TO_UINT(out_sosi_arr_exp(I).data)) SEVERITY ERROR; & int_to_str(TO_UINT(out_sosi_arr(I).data)) & " /= "
& int_to_str(TO_UINT(out_sosi_arr_exp(I).data)) SEVERITY ERROR;
ELSE
ASSERT TO_UINT(out_sosi_arr(I).data) = g_replacement_value REPORT "Wrong data for output " & int_to_str(I) & " : "
& int_to_str(TO_UINT(out_sosi_arr(I).data)) & " /= "
& int_to_str(g_replacement_value) SEVERITY ERROR;
END IF;
END IF; END IF;
END IF; END IF;
END PROCESS; END PROCESS;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment