From b789855a8ad7e72c111cb1d388ea02609b042656 Mon Sep 17 00:00:00 2001 From: JobvanWee <wee@astron.nl> Date: Thu, 31 Mar 2022 13:28:54 +0200 Subject: [PATCH] Ready for Merge. --- .../libraries/ddrctrl/tb/vhdl/tb_ddrctrl.vhd | 15 ++++----------- .../ddrctrl/tb/vhdl/tb_ddrctrl_input.vhd | 10 +++++----- .../tb/vhdl/tb_ddrctrl_input_address_counter.vhd | 4 ++-- 3 files changed, 11 insertions(+), 18 deletions(-) diff --git a/applications/lofar2/libraries/ddrctrl/tb/vhdl/tb_ddrctrl.vhd b/applications/lofar2/libraries/ddrctrl/tb/vhdl/tb_ddrctrl.vhd index 6c13daed69..ebbc092b4d 100644 --- a/applications/lofar2/libraries/ddrctrl/tb/vhdl/tb_ddrctrl.vhd +++ b/applications/lofar2/libraries/ddrctrl/tb/vhdl/tb_ddrctrl.vhd @@ -37,7 +37,6 @@ ENTITY tb_ddrctrl IS GENERIC ( g_tech_ddr : t_c_tech_ddr := c_tech_ddr4_8g_1600m; -- type of memory - g_sim_model : BOOLEAN := TRUE; -- determens if this is a simulation g_nof_streams : POSITIVE := 12; -- number of input streams g_data_w : NATURAL := 14; -- data with of input data vectors g_sim_length : NATURAL := 16500; -- close to the amount of word that gets put into the memory @@ -50,6 +49,7 @@ END tb_ddrctrl; ARCHITECTURE tb OF tb_ddrctrl IS -- constants for testbench + CONSTANT c_sim_model : BOOLEAN := TRUE; -- determens if this is a simulation CONSTANT c_clk_freq : NATURAL := 200; -- clock frequency in MHz CONSTANT c_clk_period : TIME := (10**6 / c_clk_freq) * 1 ps; -- clock priod, 5 ns CONSTANT c_mm_clk_freq : NATURAL := 100; -- mm clock frequency in MHz @@ -59,7 +59,7 @@ ARCHITECTURE tb OF tb_ddrctrl IS -- Select DDR3 or DDR4 dependent on the technology and sim model CONSTANT c_mem_ddr : t_c_tech_ddr := func_tech_sel_ddr(g_technology, g_tech_ddr3, g_tech_ddr4); CONSTANT c_sim_ddr : t_c_tech_ddr := func_tech_sel_ddr(g_technology, c_tech_ddr3_sim_16k, c_tech_ddr4_sim_16k); - CONSTANT c_tech_ddr : t_c_tech_ddr := func_tech_sel_ddr(g_sim_model, c_sim_ddr, c_mem_ddr); + CONSTANT c_tech_ddr : t_c_tech_ddr := func_tech_sel_ddr(c_sim_model, c_sim_ddr, c_mem_ddr); -- constants for readability @@ -126,16 +126,9 @@ BEGIN wr_not_rd <= '1'; WAIT FOR c_clk_period*1; - make_data_0 : FOR J IN 1 TO 40-1 LOOP - in_data_cnt <= in_data_cnt+1; - fill_in_sosi_arr_rest_0 : FOR I IN 0 TO g_nof_streams-1 LOOP - in_sosi_arr(I).data(g_data_w-1 DOWNTO 0) <= c_total_vector(g_data_w*(I+1)+J*c_in_data_w-1 DOWNTO g_data_w*I+J*c_in_data_w); - END LOOP; - WAIT FOR c_clk_period*1; - END LOOP; -- filling the input data vectors with the corresponding numbers - make_data : FOR J IN 40 TO c_sim_length-1 LOOP + make_data : FOR J IN 0 TO c_sim_length-1 LOOP in_data_cnt <= in_data_cnt+1; fill_in_sosi_arr_rest : FOR I IN 0 TO g_nof_streams-1 LOOP in_sosi_arr(I).data(g_data_w-1 DOWNTO 0) <= c_total_vector(g_data_w*(I+1)+J*c_in_data_w-1 DOWNTO g_data_w*I+J*c_in_data_w); @@ -158,7 +151,7 @@ BEGIN u_ddrctrl : ENTITY work.ddrctrl GENERIC MAP ( g_tech_ddr => c_tech_ddr, - g_sim_model => g_sim_model, + g_sim_model => c_sim_model, g_technology => g_technology, g_nof_streams => g_nof_streams, g_data_w => g_data_w diff --git a/applications/lofar2/libraries/ddrctrl/tb/vhdl/tb_ddrctrl_input.vhd b/applications/lofar2/libraries/ddrctrl/tb/vhdl/tb_ddrctrl_input.vhd index 86316cbb50..1df9277d93 100644 --- a/applications/lofar2/libraries/ddrctrl/tb/vhdl/tb_ddrctrl_input.vhd +++ b/applications/lofar2/libraries/ddrctrl/tb/vhdl/tb_ddrctrl_input.vhd @@ -36,7 +36,6 @@ ENTITY tb_ddrctrl_input IS GENERIC ( g_tech_ddr : t_c_tech_ddr := c_tech_ddr4_8g_1600m; -- type of memory - g_sim_model : BOOLEAN := TRUE; -- determens if this is a simulation g_nof_streams : POSITIVE := 12; -- number of input streams g_data_w : NATURAL := 14; -- data with of input data vectors g_sim_length : NATURAL := 52 @@ -47,6 +46,7 @@ END tb_ddrctrl_input; ARCHITECTURE tb OF tb_ddrctrl_input IS -- constants for testbench + CONSTANT c_sim_model : BOOLEAN := TRUE; -- determens if this is a simulation CONSTANT c_clk_freq : NATURAL := 200; -- clock frequency in MHz CONSTANT c_clk_period : TIME := (10**6 / c_clk_freq) * 1 ps; -- clock priod, 5 ns @@ -58,12 +58,12 @@ ARCHITECTURE tb OF tb_ddrctrl_input IS -- function for making total data vector FUNCTION c_total_vector_init RETURN STD_LOGIC_VECTOR IS - VARIABLE temp : STD_LOGIC_VECTOR(c_in_data_w*g_sim_length-1 DOWNTO 0); + VARIABLE v_total_vector : STD_LOGIC_VECTOR(c_in_data_w*g_sim_length-1 DOWNTO 0); BEGIN FOR I IN 0 TO g_sim_length*g_nof_streams-1 LOOP - temp(g_data_w*(I+1)-1 DOWNTO g_data_w*I) := TO_UVEC(I, g_data_w); + v_total_vector(g_data_w*(I+1)-1 DOWNTO g_data_w*I) := TO_UVEC(I, g_data_w); END LOOP; - RETURN temp; + RETURN v_total_vector; END FUNCTION c_total_vector_init; -- constant for running the test @@ -206,7 +206,7 @@ BEGIN u_ddrctrl_input : ENTITY work.ddrctrl_input GENERIC MAP ( g_tech_ddr => g_tech_ddr, - g_sim_model => g_sim_model, + g_sim_model => c_sim_model, g_nof_streams => g_nof_streams, g_data_w => g_data_w ) diff --git a/applications/lofar2/libraries/ddrctrl/tb/vhdl/tb_ddrctrl_input_address_counter.vhd b/applications/lofar2/libraries/ddrctrl/tb/vhdl/tb_ddrctrl_input_address_counter.vhd index 9f54658dcb..843e6b0e8e 100644 --- a/applications/lofar2/libraries/ddrctrl/tb/vhdl/tb_ddrctrl_input_address_counter.vhd +++ b/applications/lofar2/libraries/ddrctrl/tb/vhdl/tb_ddrctrl_input_address_counter.vhd @@ -146,8 +146,8 @@ BEGIN BEGIN WAIT UNTIL rising_edge(clk); IF rising_edge(clk) THEN - ASSERT q_q_in_data(c_data_w-1 DOWNTO 0) = out_sosi.data(c_data_w-1 DOWNTO 0) REPORT "in_sosi.data does not match out_sosi.wrdata" SEVERITY ERROR; - ASSERT q_q_in_data_enable = out_sosi.valid REPORT "in_sosi.valid does not match out_sosi.wr" SEVERITY ERROR; + ASSERT q_q_in_data(c_data_w-1 DOWNTO 0) = out_sosi.data(c_data_w-1 DOWNTO 0) REPORT "in_sosi.data does not match out_sosi.data" SEVERITY ERROR; + ASSERT q_q_in_data_enable = out_sosi.valid REPORT "in_sosi.valid does not match out_sosi.valid" SEVERITY ERROR; ASSERT q_q_in_of = out_of REPORT "in_of does not match out_of" SEVERITY ERROR; END IF; END PROCESS; -- GitLab