From 9d67bc9d6da7c0e02926da5aedbf63dd6d2f8bed Mon Sep 17 00:00:00 2001 From: Erik Kooistra <kooistra@astron.nl> Date: Tue, 24 Mar 2015 10:03:39 +0000 Subject: [PATCH] Added verify MM access for write and readback rx_steps. --- .../base/diag/tb/vhdl/tb_mms_diag_seq.vhd | 25 ++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/libraries/base/diag/tb/vhdl/tb_mms_diag_seq.vhd b/libraries/base/diag/tb/vhdl/tb_mms_diag_seq.vhd index 2e35b186e7..2a193ebe38 100644 --- a/libraries/base/diag/tb/vhdl/tb_mms_diag_seq.vhd +++ b/libraries/base/diag/tb/vhdl/tb_mms_diag_seq.vhd @@ -23,7 +23,7 @@ -- Purpose: Test bench for mms_diag_tx_seq --> mms_diag_rx_seq -- The tb is self-stopping and self-checking. -- Usage: --- > as 5 +-- > as 10 -- > run -all @@ -43,12 +43,13 @@ USE work.tb_diag_pkg.ALL; ENTITY tb_mms_diag_seq IS GENERIC ( -- general - g_flow_control_verify : t_dp_flow_control_enum := e_active; -- always active or random flow control + g_flow_control_verify : t_dp_flow_control_enum := e_random; -- always active or random flow control -- specific g_nof_streams : NATURAL := 1; + g_use_steps : BOOLEAN := FALSE; -- when TRUE this tb can only verify +1 increment (ie. using c_rx_steps_arr_ones) g_mm_broadcast_tx : BOOLEAN := FALSE; g_data_w : NATURAL := 40; -- >= g_seq_dat_w - g_seq_dat_w : NATURAL := 32 + g_seq_dat_w : NATURAL := 16 ); END ENTITY tb_mms_diag_seq; @@ -57,6 +58,8 @@ ARCHITECTURE str of tb_mms_diag_seq IS CONSTANT mm_clk_period : TIME := 8 ns; -- 125 MHz CONSTANT dp_clk_period : TIME := 5 ns; -- 200 MHz CONSTANT c_random_w : NATURAL := 16; + CONSTANT c_rx_steps_arr_ones : t_integer_arr(c_diag_seq_rx_reg_nof_steps-1 DOWNTO 0) := (1, 1, 1, 1); + CONSTANT c_rx_steps_arr_access : t_integer_arr(c_diag_seq_rx_reg_nof_steps-1 DOWNTO 0) := (1, -2, -3, 4); SIGNAL random : STD_LOGIC_VECTOR(c_random_w-1 DOWNTO 0) := (OTHERS=>'0'); -- use different lengths to have different random sequences SIGNAL ready : STD_LOGIC; @@ -124,6 +127,21 @@ BEGIN proc_common_wait_until_low(mm_clk, mm_rst); proc_common_wait_some_cycles(mm_clk, 10); + ------------------------------------------------------------------------- + -- Verify MM access for write and readback rx_steps + ------------------------------------------------------------------------- + -- . write some arbitrary integer values + proc_diag_seq_rx_write_steps(c_st_0, c_rx_steps_arr_access, mm_clk, dp_clk, reg_tx_miso, reg_tx_mosi, reg_rx_miso, reg_rx_mosi, rd_reg_arr(c_st_0)); + FOR I IN 0 TO c_diag_seq_rx_reg_nof_steps-1 LOOP + ASSERT rd_reg_arr(c_st_0).rx_steps(I)=c_rx_steps_arr_access(I) REPORT "Wrong diag rx_steps read back." SEVERITY ERROR; + END LOOP; + + -- . write default increment +1 to have same behaviour as with g_use_steps=FALSE and diag_sel = "CNTR" + proc_diag_seq_rx_write_steps(c_st_0, c_rx_steps_arr_ones, mm_clk, dp_clk, reg_tx_miso, reg_tx_mosi, reg_rx_miso, reg_rx_mosi, rd_reg_arr(c_st_0)); + FOR I IN 0 TO c_diag_seq_rx_reg_nof_steps-1 LOOP + ASSERT rd_reg_arr(c_st_0).rx_steps(I)=c_rx_steps_arr_ones(I) REPORT "Wrong diag rx_steps read back." SEVERITY ERROR; + END LOOP; + ------------------------------------------------------------------------- -- Verify s_off ------------------------------------------------------------------------- @@ -293,6 +311,7 @@ BEGIN u_mms_diag_rx_seq: ENTITY WORK.mms_diag_rx_seq GENERIC MAP( g_nof_streams => g_nof_streams, + g_use_steps => g_use_steps, g_seq_dat_w => g_seq_dat_w, g_data_w => g_data_w ) -- GitLab