Skip to content
Snippets Groups Projects
Commit eba962b7 authored by Eric Kooistra's avatar Eric Kooistra
Browse files

Verify g_dump_nof_pages = 0.

parent 200a14a9
Branches
No related tags found
1 merge request!444Resolve L2SDP-1087 "B"
Pipeline #116369 passed
...@@ -98,9 +98,9 @@ entity tb_lofar2_unb2c_sdp_station_tbuf_one is ...@@ -98,9 +98,9 @@ entity tb_lofar2_unb2c_sdp_station_tbuf_one is
g_rs_nof_periods_per_block : real := 1.17; -- number of WG periods per rs_block for WG in g_sp g_rs_nof_periods_per_block : real := 1.17; -- number of WG periods per rs_block for WG in g_sp
g_dump_inter_packet_gap : natural := 0; g_dump_inter_packet_gap : natural := 0;
g_dump_page_offset : natural := 1; -- offset relative to recorded_first_page g_dump_page_offset : natural := 1; -- offset relative to recorded_first_page
g_dump_nof_pages : natural := 2; -- g_dump_page_offset + g_dump_nof_pages <= c_nof_pages_in_buffer, else g_dump_nof_pages : natural := 1; -- g_dump_page_offset + g_dump_nof_pages <= c_nof_pages_in_buffer, else
-- there will occur read RSN errors for pages that are not available -- there will occur read RSN errors for pages that are not available
g_dump_enables : std_logic_vector(c_sdp_A_pn - 1 downto 0) := "000010" g_dump_enables : std_logic_vector(c_sdp_A_pn - 1 downto 0) := "100010"
); );
port ( port (
tb_end : out std_logic tb_end : out std_logic
...@@ -1154,6 +1154,7 @@ begin ...@@ -1154,6 +1154,7 @@ begin
proc_common_wait_cross_clock_domain_latency( proc_common_wait_cross_clock_domain_latency(
c_mm_clk_period, c_ext_clk_period, c_common_cross_clock_domain_latency * 2); c_mm_clk_period, c_ext_clk_period, c_common_cross_clock_domain_latency * 2);
if g_dump_nof_pages > 0 then
-- Time dump begin -- Time dump begin
read_busy <= '1'; read_busy <= '1';
v_Begin := NOW / c_1ns; v_Begin := NOW / c_1ns;
...@@ -1198,6 +1199,7 @@ begin ...@@ -1198,6 +1199,7 @@ begin
end if; end if;
print_str(c_tb_str & "Dump rate = " & real_to_str(v_dump_rate_Gbps, 4, 2) & " Gbps" & print_str(c_tb_str & "Dump rate = " & real_to_str(v_dump_rate_Gbps, 4, 2) & " Gbps" &
" (Expected " & real_to_str(c_exp_dump_rate_Gbps, 4, 2) & " Gbps)"); " (Expected " & real_to_str(c_exp_dump_rate_Gbps, 4, 2) & " Gbps)");
end if;
-- Wait some time for latency in sdp_tbuf_output and 10GbE Tx - Rx network -- Wait some time for latency in sdp_tbuf_output and 10GbE Tx - Rx network
proc_common_wait_some_cycles(ext_clk, g_rs_block_size * 4); proc_common_wait_some_cycles(ext_clk, g_rs_block_size * 4);
...@@ -1327,6 +1329,7 @@ begin ...@@ -1327,6 +1329,7 @@ begin
variable v_bool : boolean; variable v_bool : boolean;
begin begin
wait until rising_edge(ext_clk); wait until rising_edge(ext_clk);
if c_dump_nof_packets_per_ai > 0 then
-- Count rx_dump_sosi packets at sop -- Count rx_dump_sosi packets at sop
if rx_dump_sosi.sop = '1' then if rx_dump_sosi.sop = '1' then
rx_dump_packet_cnt <= rx_dump_packet_cnt + 1; rx_dump_packet_cnt <= rx_dump_packet_cnt + 1;
...@@ -1347,6 +1350,12 @@ begin ...@@ -1347,6 +1350,12 @@ begin
-- View variables in Wave Window -- View variables in Wave Window
dump_index <= v_dump_index; dump_index <= v_dump_index;
time_index <= v_time_index; time_index <= v_time_index;
else
-- Expect no dump packets when g_dump_nof_pages = 0
assert rx_dump_sosi.sop = '0'
report c_tb_str & "Wrong unexpected rx_dump_sosi packet for g_dump_nof_pages = 0"
severity ERROR;
end if;
end process; end process;
----------------------------------------------------------------------------- -----------------------------------------------------------------------------
......
...@@ -35,7 +35,7 @@ end tb_tb_lofar2_unb2c_sdp_station_tbuf_one; ...@@ -35,7 +35,7 @@ end tb_tb_lofar2_unb2c_sdp_station_tbuf_one;
architecture tb of tb_tb_lofar2_unb2c_sdp_station_tbuf_one is architecture tb of tb_tb_lofar2_unb2c_sdp_station_tbuf_one is
-- Multi tb -- Multi tb
constant c_tb_w : natural := 10; -- sufficiently long to fit all tb instances constant c_tb_w : natural := 11; -- sufficiently long to fit all tb instances
constant c_tb_end_vec : std_logic_vector(c_tb_w - 1 downto 0) := (others => '1'); constant c_tb_end_vec : std_logic_vector(c_tb_w - 1 downto 0) := (others => '1');
signal tb_end_vec : std_logic_vector(c_tb_w - 1 downto 0) := c_tb_end_vec; -- best view as hex in Wave Window signal tb_end_vec : std_logic_vector(c_tb_w - 1 downto 0) := c_tb_end_vec; -- best view as hex in Wave Window
...@@ -109,6 +109,10 @@ begin ...@@ -109,6 +109,10 @@ begin
generic map(false, 9, false, false, false, false, 3, 100, 256, 100, 10, 1.17, 0, 6, 1, "000010") generic map(false, 9, false, false, false, false, 3, 100, 256, 100, 10, 1.17, 0, 6, 1, "000010")
port map (tb_end_vec(9)); port map (tb_end_vec(9));
u_dump_zero_pages : entity work.tb_lofar2_unb2c_sdp_station_tbuf_one
generic map(false, 10, false, false, false, false, 3, 100, 256, 102, 10, 1.0, 0, 1, 0, "100010")
port map (tb_end_vec(10));
tb_end <= '1' after 1 us when tb_end_vec = c_tb_end_vec else '0'; tb_end <= '1' after 1 us when tb_end_vec = c_tb_end_vec else '0';
proc_common_stop_simulation(tb_end); proc_common_stop_simulation(tb_end);
end tb; end tb;
...@@ -336,17 +336,17 @@ begin ...@@ -336,17 +336,17 @@ begin
v.dump_done := '0'; v.dump_done := '0';
v.dump_start_rsn := reg_dump_start_rsn_rw; v.dump_start_rsn := reg_dump_start_rsn_rw;
v.dump_start_page := reg_dump_start_page_rw; v.dump_start_page := reg_dump_start_page_rw;
v.dump_nof_pages := reg_dump_nof_pages_rw;
if v.dump_start_page >= c_nof_pages_in_buffer then if v.dump_start_page >= c_nof_pages_in_buffer then
-- Force to recovery value within buffer range, this will lead to read RSN errors due to mismatch with -- Start page not in buffer range, cannot do dump.
-- dump_start_rsn.
v.dump_start_page := 0; v.dump_start_page := 0;
v.dump_nof_pages := 0;
end if; end if;
v.dump_nof_pages := reg_dump_nof_pages_rw;
if v.dump_nof_pages >= c_nof_pages_in_buffer then if v.dump_nof_pages >= c_nof_pages_in_buffer then
-- Limit to buffer size -- Limit nof pages to buffer size
v.dump_nof_pages := c_nof_pages_in_buffer; v.dump_nof_pages := c_nof_pages_in_buffer;
end if; end if;
if dump_en = '1' then if dump_en = '1' and r.dump_nof_pages > 0 then
v.latency_cnt := c_start_latency; v.latency_cnt := c_start_latency;
v.fsm := s_dump_start; v.fsm := s_dump_start;
end if; end if;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment