From c72935be95f3af4d3198ed568e404223f6a38d08 Mon Sep 17 00:00:00 2001 From: donker <donker@astron.nl> Date: Wed, 3 Feb 2021 17:43:28 +0100 Subject: [PATCH] L2SDP-180, processed review comments 3. --- .../lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd | 2 +- .../sdp/src/vhdl/sdp_statistics_offload.vhd | 7 +++---- .../sdp/tb/vhdl/tb_sdp_statistics_offload.vhd | 13 ++++++------- 3 files changed, 10 insertions(+), 12 deletions(-) diff --git a/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd b/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd index d3b6636991..d20dee52d2 100644 --- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd +++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_pkg.vhd @@ -204,7 +204,7 @@ PACKAGE sdp_pkg is CONSTANT c_sdp_reg_nw_10GbE_mac_addr_w : NATURAL := 13; CONSTANT c_sdp_reg_nw_10GbE_eth10g_addr_w : NATURAL := 1; - -- statistics SST offload + -- statistics offload CONSTANT c_sdp_stat_nof_hdr_fields : NATURAL := 3+12+4+20+1; -- 592b; 9.25 64b words CONSTANT c_sdp_stat_hdr_field_sel : STD_LOGIC_VECTOR(c_sdp_stat_nof_hdr_fields-1 DOWNTO 0) := "101"&"111111111001"&"0111"&"01000000000000000000"&"0"; -- 0=data path, 1=MM controlled TODO diff --git a/applications/lofar2/libraries/sdp/src/vhdl/sdp_statistics_offload.vhd b/applications/lofar2/libraries/sdp/src/vhdl/sdp_statistics_offload.vhd index 7c8a9600e6..582ed069d6 100644 --- a/applications/lofar2/libraries/sdp/src/vhdl/sdp_statistics_offload.vhd +++ b/applications/lofar2/libraries/sdp/src/vhdl/sdp_statistics_offload.vhd @@ -202,9 +202,9 @@ BEGIN -- assign sdp_data_id for different statistic types IF g_statistics_type = "SST" THEN - d.data_id <= x"000000" & TO_UVEC(r.block_count, 8); + d.data_id <= x"000000" & TO_UVEC(r.block_count + c_sdp_S_pn * gn_index, 8); ELSIF g_statistics_type = "BST" THEN - d.data_id <= x"0000" & TO_UVEC(c_beamlet_id, 24); + d.data_id <= x"0000" & TO_UVEC(c_beamlet_id, 16); ELSIF g_statistics_type = "XST" THEN d.data_id <= x"00" & TO_UVEC(0, 8) & TO_UVEC(0, 8) & TO_UVEC(0, 8); -- TODO: fill in right values for XST. ELSE @@ -228,8 +228,7 @@ BEGIN d.start_pulse <= '1'; d.block_count <= r.block_count + 1; ELSE - -- prepare for next trigger interval, this is in fact don't care, because trigger will start - -- next offload interval, but may ease interpretation in the wave window + -- Prepare for next trigger interval. d.start_address <= 0; d.block_count <= 0; END IF; diff --git a/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_statistics_offload.vhd b/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_statistics_offload.vhd index 26c9d34d80..4de55d2595 100644 --- a/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_statistics_offload.vhd +++ b/applications/lofar2/libraries/sdp/tb/vhdl/tb_sdp_statistics_offload.vhd @@ -212,10 +212,9 @@ BEGIN p_in_sosi : PROCESS BEGIN proc_common_wait_until_low(dp_clk, dp_rst); - proc_common_wait_some_cycles(dp_clk, 10); - in_sosi.valid <= '1'; + proc_common_wait_some_cycles(dp_clk, 12); in_sosi.bsn <= TO_DP_BSN(16#10000#); - proc_common_wait_some_cycles(dp_clk, 1); + in_sosi.valid <= '1'; WHILE TRUE LOOP FOR i IN 0 TO c_nof_block_per_sync-1 LOOP FOR j IN 0 TO c_nof_clk_per_block-1 LOOP @@ -315,13 +314,13 @@ BEGIN END PROCESS; -- Count number of blocks in a sync interval, rx_request is used to start counting from 0. - p_rx_block_cnt : PROCESS(dp_clk, test_offload_sosi) + p_rx_block_cnt : PROCESS(dp_clk) BEGIN IF rising_edge(dp_clk) THEN IF test_offload_sosi.sop = '1' THEN IF rx_request = '1' THEN rx_block_cnt <= 0; - rx_request <= '0'; + rx_request <= '0'; ELSE rx_block_cnt <= rx_block_cnt + 1; END IF; @@ -338,7 +337,7 @@ BEGIN rx_prev_bsn <= rx_bsn WHEN rising_edge(dp_clk); -- verify number of blocks between 2 syncs and between 2 changed bsn numbers - p_verify_nof_blocks : PROCESS(dp_clk, in_sosi, rx_block_cnt, rx_prev_bsn, rx_bsn, rx_hdr_fields_raw, test_offload_sosi) + p_verify_nof_blocks : PROCESS(dp_clk) BEGIN IF rising_edge(dp_clk) THEN IF init_ram_done = '1' THEN @@ -355,7 +354,7 @@ BEGIN rx_data_id <= TO_UINT(rx_hdr_fields_raw(field_hi(c_sdp_stat_hdr_field_arr, "sdp_data_id") DOWNTO field_lo(c_sdp_stat_hdr_field_arr, "sdp_data_id"))); IF test_offload_sosi.eop = '1' THEN - ASSERT rx_data_id = rx_block_cnt REPORT "wrong block count number, received data_id not same as counted blocks" SEVERITY ERROR; + ASSERT rx_data_id = rx_block_cnt + c_sdp_S_pn * gn_index REPORT "wrong block count number, received data_id not same as counted blocks" SEVERITY ERROR; END IF; END IF; -- GitLab