From 0a6099d7e9b8f915a4f06464ea0bb73fd1fce619 Mon Sep 17 00:00:00 2001 From: Erik Kooistra <kooistra@astron.nl> Date: Wed, 2 Nov 2016 08:05:19 +0000 Subject: [PATCH] Added tb_end. Corrected use of sync at sop and then delayed data to have sync before sop. --- .../io/aduh/tb/vhdl/tb_aduh_mean_sum.vhd | 27 ++++++++++++------- .../io/aduh/tb/vhdl/tb_aduh_power_sum.vhd | 26 ++++++++++++------ 2 files changed, 36 insertions(+), 17 deletions(-) diff --git a/libraries/io/aduh/tb/vhdl/tb_aduh_mean_sum.vhd b/libraries/io/aduh/tb/vhdl/tb_aduh_mean_sum.vhd index dc2610cccb..05d7c8765c 100644 --- a/libraries/io/aduh/tb/vhdl/tb_aduh_mean_sum.vhd +++ b/libraries/io/aduh/tb/vhdl/tb_aduh_mean_sum.vhd @@ -35,6 +35,9 @@ USE dp_lib.tb_dp_pkg.ALL; -- > run 1 us -- observe in_sosi, sum and sum_sync in wave window -- expected sum after sum_sync are: 0, 120, 376, ... +-- . sum([ 0:15]) = 120 +-- . sum([16:31]) = 376 +-- . sum([32:47]) = 632 ENTITY tb_aduh_mean_sum IS @@ -64,6 +67,7 @@ ARCHITECTURE tb OF tb_aduh_mean_sum IS CONSTANT c_nof_accumulations : NATURAL := c_nof_symbols_per_sync; -- integration time in symbols + SIGNAL tb_end : STD_LOGIC := '0'; SIGNAL rst : STD_LOGIC; SIGNAL clk : STD_LOGIC := '1'; @@ -71,6 +75,7 @@ ARCHITECTURE tb OF tb_aduh_mean_sum IS SIGNAL st_en : STD_LOGIC := '1'; SIGNAL st_sosi : t_dp_sosi := c_dp_sosi_rst; + SIGNAL st_sosi_dly : t_dp_sosi := c_dp_sosi_rst; SIGNAL st_siso : t_dp_siso := c_dp_siso_rdy; SIGNAL bsn : NATURAL; @@ -83,7 +88,7 @@ ARCHITECTURE tb OF tb_aduh_mean_sum IS BEGIN - clk <= NOT clk AFTER clk_period/2; + clk <= NOT clk OR tb_end AFTER clk_period/2; rst <= '1', '0' AFTER clk_period*5; -- ST domain @@ -101,29 +106,33 @@ BEGIN proc_common_wait_some_cycles(clk, 5); -- Run some sync intervals with DSP counter data for the data field - st_sosi.sync <= '1'; -- first sync - WAIT UNTIL rising_edge(clk); FOR I IN 0 TO c_nof_sync-1 LOOP - FOR J IN 0 TO c_nof_block_per_sync-2 LOOP -- provide sop and eop for block reference + -- Generate st_sosi with sync at sop + proc_dp_gen_block_data(c_rl, TRUE, c_data_w, c_symbol_w, v_symbol, 0, 0, c_nof_symbols_per_block, 0, 0, '1', "0", clk, st_en, st_siso, st_sosi); -- next sync + v_symbol := v_symbol + c_nof_symbols_per_block; + FOR J IN 0 TO c_nof_block_per_sync-2 LOOP proc_dp_gen_block_data(c_rl, TRUE, c_data_w, c_symbol_w, v_symbol, 0, 0, c_nof_symbols_per_block, 0, 0, '0', "0", clk, st_en, st_siso, st_sosi); -- no sync v_symbol := v_symbol + c_nof_symbols_per_block; END LOOP; - proc_dp_gen_block_data(c_rl, TRUE, c_data_w, c_symbol_w, v_symbol, 0, 0, c_nof_symbols_per_block, 0, 0, '1', "0", clk, st_en, st_siso, st_sosi); -- next sync - v_symbol := v_symbol + c_nof_symbols_per_block; END LOOP; st_sosi <= c_dp_sosi_rst; + proc_common_wait_some_cycles(clk, 15); + tb_end <= '1'; WAIT; END PROCESS; + st_sosi_dly <= st_sosi WHEN rising_edge(clk); + -- Time stimuli bsn <= bsn + 1 WHEN rising_edge(clk) AND st_sosi.sync='1'; -- Add BSN to the ST data - p_in_sosi : PROCESS(st_sosi, bsn) + p_in_sosi : PROCESS(st_sosi, st_sosi_dly, bsn) BEGIN - in_sosi <= st_sosi; - in_sosi.bsn <= TO_DP_BSN(bsn); + in_sosi <= st_sosi_dly; -- data + in_sosi.bsn <= TO_DP_BSN(bsn); -- bsn at sop + in_sosi.sync <= st_sosi.sync; -- sync before sop END PROCESS; u_dut : ENTITY work.aduh_mean_sum diff --git a/libraries/io/aduh/tb/vhdl/tb_aduh_power_sum.vhd b/libraries/io/aduh/tb/vhdl/tb_aduh_power_sum.vhd index 2054c37779..bdbf86f000 100644 --- a/libraries/io/aduh/tb/vhdl/tb_aduh_power_sum.vhd +++ b/libraries/io/aduh/tb/vhdl/tb_aduh_power_sum.vhd @@ -35,6 +35,9 @@ USE dp_lib.tb_dp_pkg.ALL; -- > run 1 us -- observe in_sosi, pwr_sum and pwr_sum_sync in wave window -- expected pwr_sum after pwr_sync are: 0, 1240, 9176, ... +-- . sum([ 0:15].^2) = 1240 +-- . sum([16:31].^2) = 9176 +-- . sum([32:47].^2) = 25304 ENTITY tb_aduh_power_sum IS GENERIC ( @@ -63,6 +66,7 @@ ARCHITECTURE tb OF tb_aduh_power_sum IS CONSTANT c_nof_accumulations : NATURAL := c_nof_symbols_per_sync; -- integration time in symbols + SIGNAL tb_end : STD_LOGIC := '0'; SIGNAL rst : STD_LOGIC; SIGNAL clk : STD_LOGIC := '1'; @@ -70,6 +74,7 @@ ARCHITECTURE tb OF tb_aduh_power_sum IS SIGNAL st_en : STD_LOGIC := '1'; SIGNAL st_sosi : t_dp_sosi := c_dp_sosi_rst; + SIGNAL st_sosi_dly : t_dp_sosi := c_dp_sosi_rst; SIGNAL st_siso : t_dp_siso := c_dp_siso_rdy; SIGNAL bsn : NATURAL; @@ -82,7 +87,7 @@ ARCHITECTURE tb OF tb_aduh_power_sum IS BEGIN - clk <= NOT clk AFTER clk_period/2; + clk <= NOT clk OR tb_end AFTER clk_period/2; rst <= '1', '0' AFTER clk_period*5; -- ST domain @@ -100,29 +105,34 @@ BEGIN proc_common_wait_some_cycles(clk, 5); -- Run some sync intervals with DSP counter data for the data field - st_sosi.sync <= '1'; -- first sync WAIT UNTIL rising_edge(clk); FOR I IN 0 TO c_nof_sync-1 LOOP - FOR J IN 0 TO c_nof_block_per_sync-2 LOOP -- provide sop and eop for block reference + -- Generate st_sosi with sync at sop + proc_dp_gen_block_data(c_rl, TRUE, c_data_w, c_symbol_w, v_symbol, 0, 0, c_nof_symbols_per_block, 0, 0, '1', "0", clk, st_en, st_siso, st_sosi); -- next sync + v_symbol := v_symbol + c_nof_symbols_per_block; + FOR J IN 0 TO c_nof_block_per_sync-2 LOOP proc_dp_gen_block_data(c_rl, TRUE, c_data_w, c_symbol_w, v_symbol, 0, 0, c_nof_symbols_per_block, 0, 0, '0', "0", clk, st_en, st_siso, st_sosi); -- no sync v_symbol := v_symbol + c_nof_symbols_per_block; END LOOP; - proc_dp_gen_block_data(c_rl, TRUE, c_data_w, c_symbol_w, v_symbol, 0, 0, c_nof_symbols_per_block, 0, 0, '1', "0", clk, st_en, st_siso, st_sosi); -- next sync - v_symbol := v_symbol + c_nof_symbols_per_block; END LOOP; st_sosi <= c_dp_sosi_rst; + proc_common_wait_some_cycles(clk, 15); + tb_end <= '1'; WAIT; END PROCESS; + + st_sosi_dly <= st_sosi WHEN rising_edge(clk); -- Time stimuli bsn <= bsn + 1 WHEN rising_edge(clk) AND st_sosi.sync='1'; -- Add BSN to the ST data - p_in_sosi : PROCESS(st_sosi, bsn) + p_in_sosi : PROCESS(st_sosi, st_sosi_dly, bsn) BEGIN - in_sosi <= st_sosi; - in_sosi.bsn <= TO_DP_BSN(bsn); + in_sosi <= st_sosi_dly; -- data + in_sosi.bsn <= TO_DP_BSN(bsn); -- bsn at sop + in_sosi.sync <= st_sosi.sync; -- sync before sop END PROCESS; u_dut : ENTITY work.aduh_power_sum -- GitLab