From a0d755258bc8cc037a16ae0f0949927901bf71ec Mon Sep 17 00:00:00 2001 From: JobvanWee <wee@astron.nl> Date: Tue, 1 Mar 2022 11:23:47 +0100 Subject: [PATCH] ready for review? --- .../tb/vhdl/tb_ddrctrl_address_counter.vhd | 33 ++++++++++++------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/applications/lofar2/libraries/ddrctrl/tb/vhdl/tb_ddrctrl_address_counter.vhd b/applications/lofar2/libraries/ddrctrl/tb/vhdl/tb_ddrctrl_address_counter.vhd index 7ada49aadd..079a5d2144 100644 --- a/applications/lofar2/libraries/ddrctrl/tb/vhdl/tb_ddrctrl_address_counter.vhd +++ b/applications/lofar2/libraries/ddrctrl/tb/vhdl/tb_ddrctrl_address_counter.vhd @@ -47,8 +47,7 @@ ARCHITECTURE tb OF tb_ddrctrl_address_counter IS CONSTANT c_data_w : NATURAL := func_tech_ddr_ctlr_data_w( g_tech_ddr ); -- 576 CONSTANT c_adr_w : NATURAL := 4; CONSTANT c_max_adr : NATURAL := 2**c_adr_w; - k - k + SIGNAL tb_end : STD_LOGIC := '0'; SIGNAL clk : STD_LOGIC := '1'; @@ -62,11 +61,15 @@ ARCHITECTURE tb OF tb_ddrctrl_address_counter IS BEGIN - in_sosi.data(c_data_w - 1 DOWNTO 0) <= in_data(c_data_w - 1 DOWNTO 0); - in_sosi.valid <= in_data_enable; - + -- if these ASSERT's get uncommented u can see that modelsim does take a few itteration before the warning gets asserted. These asserts are also present in p_verify + --ASSERT in_sosi.data(c_data_w - 1 DOWNTO 0) = out_mosi.wrdata(c_data_w - 1 DOWNTO 0) REPORT "in_sosi.data does not match out_mosi.wrdata" SEVERITY ERROR; -- gives error if in_sosi and out_mosi do not match + --ASSERT in_sosi.valid = out_mosi.wr REPORT "in_sosi.valid does not match out_mosi.wr" SEVERITY ERROR; + --ASSERT in_sosi.data(c_data_w - 1 DOWNTO 0) /= out_mosi.wrdata(c_data_w - 1 DOWNTO 0) REPORT "in_sosi.data does match out_mosi.wrdata" SEVERITY WARNING; -- gives warning if in_sosi and out_mosi do match + --ASSERT in_sosi.valid /= out_mosi.wr REPORT "in_sosi.valid does match out_mosi.wr" SEVERITY WARNING; + in_sosi.data(c_data_w - 1 DOWNTO 0) <= in_data(c_data_w - 1 DOWNTO 0); + in_sosi.valid <= in_data_enable; clk <= NOT clk OR tb_end AFTER c_clk_period/2; @@ -82,13 +85,10 @@ BEGIN WAIT UNTIL rising_edge(clk); -- align to rising edge WAIT FOR c_clk_period*10; - ASSERT in_sosi.data(c_data_w - 1 DOWNTO 0) = out_mosi.wrdata(c_data_w - 1 DOWNTO 0) REPORT "Wrong wrdata 1" SEVERITY ERROR; - ASSERT in_sosi.valid = out_mosi.wr REPORT "Wrong wr 1" SEVERITY ERROR; - FOR I IN 0 TO 6 LOOP in_data_enable <= '1'; in_data <= NOT in_data; - ASSERT I = TO_UINT(out_mosi.address) REPORT "Wrong address 1" SEVERITY ERROR; + ASSERT I = TO_UINT(out_mosi.address) REPORT "Wrong address, I = " & NATURAL'image(I) SEVERITY ERROR; WAIT FOR c_clk_period*1; in_data_enable <= '0'; WAIT FOR c_clk_period*2; @@ -101,7 +101,7 @@ BEGIN WAIT FOR c_clk_period*1; FOR I IN 0 TO 20 LOOP - ASSERT I = TO_UINT(out_mosi.address) OR I - c_max_adr = TO_UINT(out_mosi.address) REPORT "Wrong address, I = " & NATURAL'image(I) SEVERITY ERROR; + ASSERT I = TO_UINT(out_mosi.address) OR I - c_max_adr = TO_UINT(out_mosi.address) REPORT "Wrong address, I = " & NATURAL'image(I) SEVERITY ERROR; in_data_enable <= '1'; in_data <= NOT in_data; WAIT FOR c_clk_period*1; @@ -112,8 +112,19 @@ BEGIN WAIT FOR c_clk_period*20; tb_end <= '1'; - WAIT; + + END PROCESS; + + p_verify : PROCESS + BEGIN + WAIT UNTIL rising_edge(clk); + IF rising_edge(clk) THEN + ASSERT in_sosi.data(c_data_w - 1 DOWNTO 0) = out_mosi.wrdata(c_data_w - 1 DOWNTO 0) REPORT "in_sosi.data does not match out_mosi.wrdata" SEVERITY ERROR; -- gives error if in_sosi and out_mosi do not match + ASSERT in_sosi.valid = out_mosi.wr REPORT "in_sosi.valid does not match out_mosi.wr" SEVERITY ERROR; + --ASSERT in_sosi.data(c_data_w - 1 DOWNTO 0) /= out_mosi.wrdata(c_data_w - 1 DOWNTO 0) REPORT "in_sosi.data does match out_mosi.wrdata" SEVERITY WARNING; -- gives warning if in_sosi and out_mosi do match + --ASSERT in_sosi.valid /= out_mosi.wr REPORT "in_sosi.valid does match out_mosi.wr" SEVERITY WARNING; + END IF; END PROCESS; u_address_counter : ENTITY work.ddrctrl_address_counter -- GitLab