Skip to content
Snippets Groups Projects
Commit 9deeced0 authored by Reinier van der Walle's avatar Reinier van der Walle
Browse files

corrected rd_latency of mm_mux in st_xsq and added tb_tb for

sdp_statistics_offload
parent 20a08398
No related branches found
No related tags found
1 merge request!119L2SDP-289
......@@ -91,7 +91,7 @@ ARCHITECTURE tb OF tb_lofar2_unb2b_sdp_station_xsub_one_xst_offload IS
CONSTANT c_eth_check_nof_packets : NATURAL := 1; -- received packets in 1 sync period
CONSTANT c_eth_header_size : NATURAL := 19; -- words
CONSTANT c_eth_crc_size : NATURAL := 1; -- word
CONSTANT c_eth_packet_size : NATURAL := c_eth_header_size + c_eth_crc_size + (c_sdp_W_statistic / c_word_w) * c_sdp_S_pn * c_sdp_S_pn; -- 20 + 2 * 12 * 12 = 308
CONSTANT c_eth_packet_size : NATURAL := c_eth_header_size + c_eth_crc_size + (c_sdp_W_statistic / c_word_w) * c_sdp_S_pn * c_sdp_S_pn * c_nof_complex; -- 20 + 2 * 12 * 12 * 2 = 596
CONSTANT c_eth_check_nof_valid : NATURAL := c_eth_check_nof_packets * c_eth_packet_size;
CONSTANT c_eth_runtime_timeout : TIME := 2 * c_nof_clk_per_sync * c_ext_clk_period; -- eth statistics should be done at the second sync interval
......
......@@ -23,11 +23,13 @@ synth_files =
test_bench_files =
tb/vhdl/tb_sdp_info.vhd
tb/vhdl/tb_sdp_statistics_offload.vhd
tb/vhdl/tb_tb_sdp_statistics_offload.vhd
tb/vhdl/tb_sdp_crosslets_subband_select.vhd
regression_test_vhdl =
tb/vhdl/tb_sdp_info.vhd
tb/vhdl/tb_sdp_statistics_offload.vhd
tb/vhdl/tb_tb_sdp_statistics_offload.vhd
tb/vhdl/tb_sdp_crosslets_subband_select.vhd
[modelsim_project_file]
......
......@@ -276,7 +276,7 @@ BEGIN
g_data_size => c_data_size,
g_step_size => c_step_size,
g_nof_data => c_nof_data,
g_reverse_word_order => FALSE -- default word order is MSB after LSB, we need to stream LSB after MSB.
g_reverse_word_order => TRUE -- default word order is MSB after LSB, we need to stream LSB after MSB.
)
PORT MAP(
dp_rst => dp_rst,
......
......@@ -49,8 +49,9 @@ USE work.sdp_pkg.ALL;
ENTITY tb_sdp_statistics_offload IS
GENERIC (
g_statistics_type : STRING := "SST";
g_nof_signal_inputs_per_pn : NATURAL := 12;
g_offload_time : NATURAL := 500
g_offload_time : NATURAL := 500;
g_beamset_id : NATURAL := 0;
g_P_sq : NATURAL := c_sdp_P_sq
);
END tb_sdp_statistics_offload;
......@@ -82,14 +83,20 @@ ARCHITECTURE tb OF tb_sdp_statistics_offload IS
CONSTANT c_nof_data : NATURAL := sel_a_b(g_statistics_type="BST", c_sdp_N_pol * c_sdp_S_sub_bf,
sel_a_b(g_statistics_type="XST", c_sdp_S_pn * c_sdp_S_pn * c_nof_complex,
c_sdp_N_sub)); -- SST
-- Define SST RAM size for g_nof_signal_inputs_per_pn.
CONSTANT c_ram_size : NATURAL := c_nof_data * c_data_size * g_nof_signal_inputs_per_pn;
CONSTANT c_nof_packets : NATURAL := sel_a_b(g_statistics_type="BST", 1,
sel_a_b(g_statistics_type="XST", g_P_sq,
c_sdp_S_pn)); -- SST
-- Define SST RAM size for c_nof_packets.
CONSTANT c_ram_size : NATURAL := c_nof_data * c_data_size * c_nof_packets;
CONSTANT c_ram_w : NATURAL := ceil_log2(c_ram_size);
--CONSTANT c_ram_buf : t_c_mem := (c_mem_ram_rd_latency, c_ram_w, 32, 2**c_ram_w, 'X');
CONSTANT c_ram_buf : t_c_mem := (1, c_ram_w, 32, 2**c_ram_w, 'X');
-- Define block timing.
CONSTANT c_nof_block_per_sync : NATURAL := 80; -- Sufficient to fit more than g_nof_signal_inputs_per_pn offload packets per sync interval.
CONSTANT c_nof_block_per_sync : NATURAL := 80; -- Sufficient to fit more than c_nof_packets offload packets per sync interval.
CONSTANT c_nof_clk_per_block : NATURAL := c_nof_data * c_data_size;
-- Based on g_statistics_type: 'S'=0x53="SST", 'B'=0x42="BST", 'X'=0x58="XST".
......@@ -101,10 +108,12 @@ ARCHITECTURE tb OF tb_sdp_statistics_offload IS
sel_a_b(g_statistics_type="XST", c_sdp_S_pn,
1)); -- SST
CONSTANT c_nof_statistics_per_packet : NATURAL := sel_a_b(g_statistics_type="BST", c_sdp_S_sub_bf,
CONSTANT c_nof_statistics_per_packet : NATURAL := sel_a_b(g_statistics_type="BST", c_sdp_N_pol * c_sdp_S_sub_bf,
sel_a_b(g_statistics_type="XST", (c_sdp_S_pn * c_sdp_S_pn * c_nof_complex),
c_sdp_N_sub)); -- SST
CONSTANT c_beamlet_id : NATURAL := g_beamset_id * c_sdp_S_sub_bf;
CONSTANT c_nof_valid_per_block : NATURAL := c_nof_data * c_data_size;
CONSTANT c_nof_sync : NATURAL := 5;
CONSTANT c_nof_clk_per_sync : NATURAL := c_nof_block_per_sync * c_nof_clk_per_block;
......@@ -314,8 +323,14 @@ BEGIN
REPORT "wrong sdp_block_period" SEVERITY ERROR;
-- Check variable header info.
IF g_statistics_type = "SST" THEN
ASSERT 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")) = TO_UVEC(rx_block_cnt + c_sdp_S_pn * gn_index, 32)
REPORT "wrong block count number, received data_id not same as counted blocks" SEVERITY ERROR;
REPORT "wront SST sdp_data_id" SEVERITY ERROR;
ELSIF g_statistics_type = "BST" THEN
ASSERT 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")) = TO_UVEC(c_beamlet_id, 32)
REPORT "wront BST sdp_data_id" SEVERITY ERROR;
--ELSIF g_statistics_type = "XST" THEN --TODO: RW define check
END IF;
END IF;
END PROCESS;
......@@ -351,7 +366,7 @@ BEGIN
IF init_ram_done = '1' THEN
IF in_sosi.sync = '1' AND rx_block_cnt > 0 THEN
ASSERT rx_block_cnt = g_nof_signal_inputs_per_pn-1 REPORT "wrong number of blocks between 2 sync" SEVERITY ERROR;
ASSERT rx_block_cnt = c_nof_packets-1 REPORT "wrong number of blocks between 2 sync" SEVERITY ERROR;
END IF;
-- rx_prev_bsn > 0 is needed for the first time, when there is no previous BSN.
......@@ -453,9 +468,10 @@ BEGIN
-- SDP info
u_dut: ENTITY work.sdp_statistics_offload
GENERIC MAP (
g_statistics_type => "SST",
g_statistics_type => g_statistics_type,
g_offload_time => g_offload_time,
g_beamset_id => 0
g_beamset_id => g_beamset_id,
g_P_sq => g_P_sq
)
PORT MAP (
mm_clk => mm_clk,
......
-------------------------------------------------------------------------------
--
-- Copyright 2021
-- ASTRON (Netherlands Institute for Radio Astronomy) <http://www.astron.nl/>
-- P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
--
-- Licensed under the Apache License, Version 2.0 (the "License");
-- you may not use this file except in compliance with the License.
-- You may obtain a copy of the License at
--
-- http://www.apache.org/licenses/LICENSE-2.0
--
-- Unless required by applicable law or agreed to in writing, software
-- distributed under the License is distributed on an "AS IS" BASIS,
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- See the License for the specific language governing permissions and
-- limitations under the License.
--
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
-- Author : R vd Walle
-- Purpose: Verify multiple variations of tb_sdp_statistics_offload
-- Description:
-- Usage:
-- > as 3
-- > run -all
-------------------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;
ENTITY tb_tb_sdp_statistics_offload IS
END tb_tb_sdp_statistics_offload;
ARCHITECTURE tb OF tb_tb_sdp_statistics_offload IS
SIGNAL tb_end : STD_LOGIC := '0'; -- declare tb_end to avoid 'No objects found' error on 'when -label tb_end'
BEGIN
-- g_statistics_type : STRING := "SST";
-- g_offload_time : NATURAL := 500;
-- g_beamset_id : NATURAL := 0;
-- g_P_sq : NATURAL := c_sdp_P_sq
u_sst : ENTITY work.tb_sdp_statistics_offload GENERIC MAP("SST");
u_bst_0 : ENTITY work.tb_sdp_statistics_offload GENERIC MAP("BST");
u_bst_1 : ENTITY work.tb_sdp_statistics_offload GENERIC MAP("BST", 500, 1);
u_xst_1 : ENTITY work.tb_sdp_statistics_offload GENERIC MAP("XST", 500, 0, 1);
u_xst_P_sq : ENTITY work.tb_sdp_statistics_offload GENERIC MAP("XST");
END tb;
......@@ -185,9 +185,11 @@ BEGIN
u_mem_mux_select : entity common_lib.common_mem_mux
generic map (
g_nof_mosi => c_nof_complex,
g_mult_addr_w => c_nof_word_w
g_mult_addr_w => c_nof_word_w,
g_rd_latency => 1
)
port map (
clk => mm_clk,
mosi => remapped_ram_st_xsq_mosi,
miso => ram_st_xsq_miso,
mosi_arr => ram_st_xsq_mosi_arr,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment