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

Verify total counts.

parent 4d49388d
No related branches found
No related tags found
1 merge request!288Resolve L2SDP-836
-------------------------------------------------------------------------------
--
-- Copyright 2020
-- Copyright 2022
-- ASTRON (Netherlands Institute for Radio Astronomy) <http://www.astron.nl/>
-- P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
--
......@@ -20,7 +20,8 @@
-- AUthor: E. Kooistra
-- Purpose: Test bench for eth_tester
-- Description: See detailed design in [1]
-- The g_nof_streams >= 1 are tested independently.
-- The g_nof_streams >= 1 are tested independently, using g_bg_ctrl_first for
-- BG in stream 0 and g_bg_ctrl_others for all other streams.
-- Usage:
-- > as 8
-- > run -a
......@@ -44,19 +45,20 @@ USE work.tb_eth_tester_pkg.ALL;
ENTITY tb_eth_tester IS
GENERIC (
g_tb_str : STRING := "";
g_nof_streams : NATURAL := 2;
-- sl: enable
-- sl: enable_sync
-- nat: samples_per_packet
-- nat: blocks_per_sync
-- nat: gapsize
-- nat: mem_low_adrs
-- nat: mem_high_adrs
-- nat: bsn_init
g_bg_ctrl_first : t_diag_block_gen_integer := ('1', '1', 50, 8, 100, 0, 30, 0); -- for first stream
g_bg_ctrl_others : t_diag_block_gen_integer := ('1', '1', 30, 8, 10, 0, 30, 0) -- for other streams
g_tb_str : STRING := ""; -- use to distinguish logging from tb instances in tb_tb
g_nof_streams : NATURAL := 1;
-- t_diag_block_gen_integer =
-- sl: enable
-- sl: enable_sync
-- nat: samples_per_packet
-- nat: blocks_per_sync
-- nat: gapsize
-- nat: mem_low_adrs
-- nat: mem_high_adrs
-- nat: bsn_init
g_bg_ctrl_first : t_diag_block_gen_integer := ('1', '1', 50, 8, 100, 0, c_diag_bg_mem_max_adr, 0); -- for first stream
g_bg_ctrl_others : t_diag_block_gen_integer := ('1', '1', 30, 8, 10, 0, c_diag_bg_mem_max_adr, 0) -- for other streams
);
END tb_eth_tester;
......@@ -71,15 +73,18 @@ ARCHITECTURE tb OF tb_eth_tester IS
CONSTANT c_sync_period_first : NATURAL := c_slot_len_first * g_bg_ctrl_first.blocks_per_sync;
CONSTANT c_sync_period_others : NATURAL := c_slot_len_others * g_bg_ctrl_others.blocks_per_sync;
CONSTANT c_sync_period_max : NATURAL := largest(c_sync_period_first, c_sync_period_others);
CONSTANT c_nof_sync : NATURAL := 3;
CONSTANT c_run_time : NATURAL := c_nof_sync * largest(c_sync_period_first, c_sync_period_others);
CONSTANT c_run_time : NATURAL := c_nof_sync * c_sync_period_max;
CONSTANT c_nof_sync_first : NATURAL := c_run_time / c_sync_period_first;
CONSTANT c_nof_sync_others : NATURAL := c_run_time / c_sync_period_others;
CONSTANT c_nof_sop_first : NATURAL := g_bg_ctrl_first.blocks_per_sync;
CONSTANT c_nof_sop_others : NATURAL := g_bg_ctrl_others.blocks_per_sync;
CONSTANT c_nof_valid_first : NATURAL := c_nof_sop_first * ceil_div(g_bg_ctrl_first.samples_per_packet * c_octet_w, c_word_w);
CONSTANT c_nof_valid_others : NATURAL := c_nof_sop_others * ceil_div(g_bg_ctrl_others.samples_per_packet * c_octet_w, c_word_w);
CONSTANT c_mon_nof_sop_first : NATURAL := g_bg_ctrl_first.blocks_per_sync;
CONSTANT c_mon_nof_sop_others : NATURAL := g_bg_ctrl_others.blocks_per_sync;
CONSTANT c_mon_nof_valid_first_tx : NATURAL := c_mon_nof_sop_first * ceil_div(g_bg_ctrl_first.samples_per_packet * c_octet_w, c_word_w);
CONSTANT c_mon_nof_valid_first_rx : NATURAL := c_mon_nof_sop_first * g_bg_ctrl_first.samples_per_packet;
CONSTANT c_mon_nof_valid_others_tx : NATURAL := c_mon_nof_sop_others * ceil_div(g_bg_ctrl_others.samples_per_packet * c_octet_w, c_word_w);
CONSTANT c_mon_nof_valid_others_rx : NATURAL := c_mon_nof_sop_others * g_bg_ctrl_others.samples_per_packet;
-- Use sim default src MAC, IP, UDP port from eth_tester_pkg.vhd and based on c_gn_index
CONSTANT c_gn_index : NATURAL := 17; -- global node index
......@@ -93,10 +98,8 @@ ARCHITECTURE tb OF tb_eth_tester IS
SIGNAL st_rst : STD_LOGIC := '1';
SIGNAL st_clk : STD_LOGIC := '1';
SIGNAL st_pps : STD_LOGIC := '0';
SIGNAL stimuli_end : STD_LOGIC := '0';
SIGNAL tb_end : STD_LOGIC := '0';
SIGNAL first_end : STD_LOGIC := '0';
SIGNAL others_end : STD_LOGIC := '0';
-- Use same bg_ctrl for all streams, this provides sufficient test coverage
SIGNAL bg_ctrl_arr : t_diag_block_gen_integer_arr(g_nof_streams-1 DOWNTO 0);
......@@ -122,17 +125,31 @@ ARCHITECTURE tb OF tb_eth_tester IS
SIGNAL reg_strobe_total_count_rx_cipo : t_mem_cipo;
-- . reg_strobe_total_count
SIGNAL tx_count_arr : t_natural_arr(g_nof_streams-1 DOWNTO 0);
SIGNAL rx_count_arr : t_natural_arr(g_nof_streams-1 DOWNTO 0);
SIGNAL exp_count_arr : t_natural_arr(g_nof_streams-1 DOWNTO 0);
SIGNAL tx_total_count_nof_packets_arr : t_natural_arr(g_nof_streams-1 DOWNTO 0);
SIGNAL rx_total_count_nof_packets_arr : t_natural_arr(g_nof_streams-1 DOWNTO 0);
SIGNAL exp_total_count_nof_packets_arr : t_natural_arr(g_nof_streams-1 DOWNTO 0); -- same for both tx and rx
SIGNAL rx_total_count_nof_valids_arr : t_natural_arr(g_nof_streams-1 DOWNTO 0);
SIGNAL rx_exp_total_count_nof_valids_arr : t_natural_arr(g_nof_streams-1 DOWNTO 0);
SIGNAL rx_total_count_nof_corrupted_arr : t_natural_arr(g_nof_streams-1 DOWNTO 0);
SIGNAL rx_exp_total_count_nof_corrupted_arr : t_natural_arr(g_nof_streams-1 DOWNTO 0);
-- . reg_bsn_monitor_v2
SIGNAL tx_nof_sop_arr : t_natural_arr(g_nof_streams-1 DOWNTO 0);
SIGNAL tx_nof_valid_arr : t_natural_arr(g_nof_streams-1 DOWNTO 0);
SIGNAL tx_latency_arr : t_natural_arr(g_nof_streams-1 DOWNTO 0);
SIGNAL rx_nof_sop_arr : t_natural_arr(g_nof_streams-1 DOWNTO 0);
SIGNAL rx_nof_valid_arr : t_natural_arr(g_nof_streams-1 DOWNTO 0);
SIGNAL rx_latency_arr : t_natural_arr(g_nof_streams-1 DOWNTO 0);
SIGNAL tx_mon_nof_sop_arr : t_natural_arr(g_nof_streams-1 DOWNTO 0);
SIGNAL tx_mon_nof_valid_arr : t_natural_arr(g_nof_streams-1 DOWNTO 0);
SIGNAL tx_mon_latency_arr : t_natural_arr(g_nof_streams-1 DOWNTO 0);
SIGNAL rx_mon_nof_sop_arr : t_natural_arr(g_nof_streams-1 DOWNTO 0);
SIGNAL rx_mon_nof_valid_arr : t_natural_arr(g_nof_streams-1 DOWNTO 0);
SIGNAL rx_mon_latency_arr : t_natural_arr(g_nof_streams-1 DOWNTO 0);
-- View in Wave window
SIGNAL dbg_c_mon_nof_sop_first : NATURAL := c_mon_nof_sop_first;
SIGNAL dbg_c_mon_nof_sop_others : NATURAL := c_mon_nof_sop_others;
SIGNAL dbg_c_mon_nof_valid_first_tx : NATURAL := c_mon_nof_valid_first_tx;
SIGNAL dbg_c_mon_nof_valid_first_rx : NATURAL := c_mon_nof_valid_first_rx;
SIGNAL dbg_c_mon_nof_valid_others_tx : NATURAL := c_mon_nof_valid_others_tx;
SIGNAL dbg_c_mon_nof_valid_others_rx : NATURAL := c_mon_nof_valid_others_rx;
BEGIN
......@@ -142,7 +159,7 @@ BEGIN
st_rst <= '1', '0' AFTER st_clk_period*5;
-- Using
--SIGNAL exp_count_arr : t_natural_arr(g_nof_streams-1 DOWNTO 0);
--SIGNAL exp_total_count_nof_packets_arr : t_natural_arr(g_nof_streams-1 DOWNTO 0);
-- (g_nof_streams-1 DOWNTO 1 => c_nof_sync * g_bg_ctrl_others.blocks_per_sync,
-- 0 => c_nof_sync * g_bg_ctrl_first.blocks_per_sync);
-- yields verror 1074, verror 1048, therefor use p_init instead, and
......@@ -152,25 +169,13 @@ BEGIN
bg_ctrl_arr <= (OTHERS => g_bg_ctrl_others);
bg_ctrl_arr(0) <= g_bg_ctrl_first;
exp_count_arr <= (OTHERS => c_nof_sync_others * g_bg_ctrl_others.blocks_per_sync);
exp_count_arr(0) <= c_nof_sync_first * g_bg_ctrl_first.blocks_per_sync;
WAIT;
END PROCESS;
exp_total_count_nof_packets_arr <= (OTHERS => c_nof_sync_others * g_bg_ctrl_others.blocks_per_sync);
exp_total_count_nof_packets_arr(0) <= c_nof_sync_first * g_bg_ctrl_first.blocks_per_sync;
-- Timing signals to run each BG for c_nof_sync periods
p_first_end : PROCESS
BEGIN
proc_common_wait_until_high(st_clk, st_pps);
proc_common_wait_some_cycles(st_clk, c_sync_period_first * c_nof_sync);
first_end <= '1';
WAIT;
END PROCESS;
rx_exp_total_count_nof_valids_arr <= (OTHERS => c_nof_sync_others * g_bg_ctrl_others.blocks_per_sync * g_bg_ctrl_others.samples_per_packet);
rx_exp_total_count_nof_valids_arr(0) <= c_nof_sync_first * g_bg_ctrl_first.blocks_per_sync * g_bg_ctrl_first.samples_per_packet;
p_others_end : PROCESS
BEGIN
proc_common_wait_until_high(st_clk, st_pps);
proc_common_wait_some_cycles(st_clk, c_sync_period_others * c_nof_sync);
others_end <= '1';
rx_exp_total_count_nof_corrupted_arr <= (OTHERS => 0); -- default no Rx errors
WAIT;
END PROCESS;
......@@ -212,31 +217,69 @@ BEGIN
-- Disable the other BG
proc_mem_mm_bus_wr(v_offset + 0, 0, mm_clk, reg_bg_ctrl_copi);
END LOOP;
proc_common_wait_some_cycles(mm_clk, 100);
proc_common_wait_some_cycles(st_clk, c_sync_period_max);
stimuli_end <= '1';
-------------------------------------------------------------------------
-- Verification: Total nof Tx packets = total nof Rx packets
-------------------------------------------------------------------------
FOR I IN g_nof_streams-1 DOWNTO 0 LOOP
-- . read low part, ignore high part (= 0) of two word total counts
v_offset := I * c_dp_strobe_total_count_reg_adr_span;
-- . read low part, ignore high part (= 0)
-- . Tx
-- Tx total nof packets
proc_mem_mm_bus_rd(v_offset + 0, mm_clk, reg_strobe_total_count_tx_cipo, reg_strobe_total_count_tx_copi);
proc_mem_mm_bus_rd_latency(1, mm_clk);
tx_count_arr(I) <= TO_UINT(reg_strobe_total_count_tx_cipo.rddata(c_word_w-1 DOWNTO 0));
-- . Rx
tx_total_count_nof_packets_arr(I) <= TO_UINT(reg_strobe_total_count_tx_cipo.rddata(c_word_w-1 DOWNTO 0));
proc_common_wait_some_cycles(mm_clk, 1);
ASSERT tx_total_count_nof_packets_arr(I) = exp_total_count_nof_packets_arr(I) REPORT g_tb_str &
"Wrong Tx total nof packets count(" & NATURAL'IMAGE(I) &
"), Tx count = " & NATURAL'IMAGE(tx_total_count_nof_packets_arr(I)) &
" /= " & NATURAL'IMAGE(exp_total_count_nof_packets_arr(I)) &
" = Expected count" SEVERITY ERROR;
-- Rx total nof packets
proc_mem_mm_bus_rd(v_offset + 0, mm_clk, reg_strobe_total_count_rx_cipo, reg_strobe_total_count_rx_copi);
proc_mem_mm_bus_rd_latency(1, mm_clk);
rx_count_arr(I) <= TO_UINT(reg_strobe_total_count_rx_cipo.rddata(c_word_w-1 DOWNTO 0));
rx_total_count_nof_packets_arr(I) <= TO_UINT(reg_strobe_total_count_rx_cipo.rddata(c_word_w-1 DOWNTO 0));
proc_common_wait_some_cycles(mm_clk, 1);
ASSERT rx_total_count_nof_packets_arr(I) = exp_total_count_nof_packets_arr(I) REPORT g_tb_str &
"Wrong Rx total nof packets count(" & NATURAL'IMAGE(I) &
"), Rx count = " & NATURAL'IMAGE(rx_total_count_nof_packets_arr(I)) &
" /= " & NATURAL'IMAGE(exp_total_count_nof_packets_arr(I)) &
" = Expected count" SEVERITY ERROR;
-- Rx total nof valids
proc_mem_mm_bus_rd(v_offset + 2, mm_clk, reg_strobe_total_count_rx_cipo, reg_strobe_total_count_rx_copi);
proc_mem_mm_bus_rd_latency(1, mm_clk);
rx_total_count_nof_valids_arr(I) <= TO_UINT(reg_strobe_total_count_rx_cipo.rddata(c_word_w-1 DOWNTO 0));
proc_common_wait_some_cycles(mm_clk, 1);
ASSERT rx_total_count_nof_valids_arr(I) = rx_exp_total_count_nof_valids_arr(I) REPORT g_tb_str &
"Wrong Rx total nof valids count(" & NATURAL'IMAGE(I) &
"), Rx count = " & NATURAL'IMAGE(rx_total_count_nof_valids_arr(I)) &
" /= " & NATURAL'IMAGE(rx_exp_total_count_nof_valids_arr(I)) &
" = Expected count" SEVERITY ERROR;
-- Rx total nof corrupted
proc_mem_mm_bus_rd(v_offset + 4, mm_clk, reg_strobe_total_count_rx_cipo, reg_strobe_total_count_rx_copi);
proc_mem_mm_bus_rd_latency(1, mm_clk);
rx_total_count_nof_corrupted_arr(I) <= TO_UINT(reg_strobe_total_count_rx_cipo.rddata(c_word_w-1 DOWNTO 0));
proc_common_wait_some_cycles(mm_clk, 1);
ASSERT rx_count_arr(I) = tx_count_arr(I) REPORT g_tb_str & "Wrong total block count("
& NATURAL'IMAGE(I) & "), Rx count = "
& NATURAL'IMAGE(rx_count_arr(I)) & " /= "
& NATURAL'IMAGE(tx_count_arr(I)) & " = Tx count" SEVERITY ERROR;
ASSERT rx_count_arr(I) = exp_count_arr(I) REPORT g_tb_str & "Wrong total block count("
& NATURAL'IMAGE(I) & "), Rx count = "
& NATURAL'IMAGE(rx_count_arr(I)) & " /= "
& NATURAL'IMAGE(exp_count_arr(I)) & " = Expected count" SEVERITY ERROR;
ASSERT rx_total_count_nof_corrupted_arr(I) = rx_exp_total_count_nof_corrupted_arr(I) REPORT g_tb_str &
"Wrong Rx total nof corrupted count(" & NATURAL'IMAGE(I) &
"), Rx count = " & NATURAL'IMAGE(rx_total_count_nof_corrupted_arr(I)) &
" /= " & NATURAL'IMAGE(rx_exp_total_count_nof_corrupted_arr(I)) &
" = Expected count" SEVERITY ERROR;
print_str(g_tb_str &
"Tx total counts monitor(" & NATURAL'IMAGE(I) & ") :" &
" nof_packets = " & NATURAL'IMAGE(tx_total_count_nof_packets_arr(I)));
print_str(g_tb_str &
"Rx total counts monitor(" & NATURAL'IMAGE(I) & ") :" &
" nof_packets = " & NATURAL'IMAGE(rx_total_count_nof_packets_arr(I)) &
", nof_valids = " & NATURAL'IMAGE(rx_total_count_nof_valids_arr(I)) &
", nof_corrupted = " & NATURAL'IMAGE(rx_total_count_nof_corrupted_arr(I)));
END LOOP;
-------------------------------------------------------------------------
......@@ -250,53 +293,52 @@ BEGIN
-- . Tx
proc_mem_mm_bus_rd(v_offset + 3, mm_clk, reg_bsn_monitor_v2_tx_cipo, reg_bsn_monitor_v2_tx_copi);
proc_mem_mm_bus_rd_latency(1, mm_clk);
tx_nof_sop_arr(I) <= TO_UINT(reg_bsn_monitor_v2_tx_cipo.rddata(c_word_w-1 DOWNTO 0));
tx_mon_nof_sop_arr(I) <= TO_UINT(reg_bsn_monitor_v2_tx_cipo.rddata(c_word_w-1 DOWNTO 0));
proc_mem_mm_bus_rd(v_offset + 4, mm_clk, reg_bsn_monitor_v2_tx_cipo, reg_bsn_monitor_v2_tx_copi);
proc_mem_mm_bus_rd_latency(1, mm_clk);
tx_nof_valid_arr(I) <= TO_UINT(reg_bsn_monitor_v2_tx_cipo.rddata(c_word_w-1 DOWNTO 0));
tx_mon_nof_valid_arr(I) <= TO_UINT(reg_bsn_monitor_v2_tx_cipo.rddata(c_word_w-1 DOWNTO 0));
proc_mem_mm_bus_rd(v_offset + 6, mm_clk, reg_bsn_monitor_v2_tx_cipo, reg_bsn_monitor_v2_tx_copi);
proc_mem_mm_bus_rd_latency(1, mm_clk);
tx_latency_arr(I) <= TO_UINT(reg_bsn_monitor_v2_tx_cipo.rddata(c_word_w-1 DOWNTO 0));
tx_mon_latency_arr(I) <= TO_UINT(reg_bsn_monitor_v2_tx_cipo.rddata(c_word_w-1 DOWNTO 0));
-- . Rx
proc_mem_mm_bus_rd(v_offset + 3, mm_clk, reg_bsn_monitor_v2_rx_cipo, reg_bsn_monitor_v2_rx_copi);
proc_mem_mm_bus_rd_latency(1, mm_clk);
rx_nof_sop_arr(I) <= TO_UINT(reg_bsn_monitor_v2_rx_cipo.rddata(c_word_w-1 DOWNTO 0));
rx_mon_nof_sop_arr(I) <= TO_UINT(reg_bsn_monitor_v2_rx_cipo.rddata(c_word_w-1 DOWNTO 0));
proc_mem_mm_bus_rd(v_offset + 4, mm_clk, reg_bsn_monitor_v2_rx_cipo, reg_bsn_monitor_v2_rx_copi);
proc_mem_mm_bus_rd_latency(1, mm_clk);
rx_nof_valid_arr(I) <= TO_UINT(reg_bsn_monitor_v2_rx_cipo.rddata(c_word_w-1 DOWNTO 0));
rx_mon_nof_valid_arr(I) <= TO_UINT(reg_bsn_monitor_v2_rx_cipo.rddata(c_word_w-1 DOWNTO 0));
proc_mem_mm_bus_rd(v_offset + 6, mm_clk, reg_bsn_monitor_v2_rx_cipo, reg_bsn_monitor_v2_rx_copi);
proc_mem_mm_bus_rd_latency(1, mm_clk);
rx_latency_arr(I) <= TO_UINT(reg_bsn_monitor_v2_rx_cipo.rddata(c_word_w-1 DOWNTO 0));
rx_mon_latency_arr(I) <= TO_UINT(reg_bsn_monitor_v2_rx_cipo.rddata(c_word_w-1 DOWNTO 0));
proc_common_wait_some_cycles(mm_clk, 1);
print_str(g_tb_str &
"Tx BSN monitor(" & NATURAL'IMAGE(I) & ") :" &
", nof_sop = " & NATURAL'IMAGE(tx_nof_sop_arr(I)) &
", nof_valid = " & NATURAL'IMAGE(tx_nof_valid_arr(I)) &
", latency = " & NATURAL'IMAGE(tx_latency_arr(I)));
"Tx BSN monitor(" & NATURAL'IMAGE(I) & ") :" &
" nof_sop = " & NATURAL'IMAGE(tx_mon_nof_sop_arr(I)) &
", nof_valid = " & NATURAL'IMAGE(tx_mon_nof_valid_arr(I)) &
", latency = " & NATURAL'IMAGE(tx_mon_latency_arr(I)));
print_str(g_tb_str &
"Rx BSN monitor(" & NATURAL'IMAGE(I) & ") :" &
", nof_sop = " & NATURAL'IMAGE(rx_nof_sop_arr(I)) &
", nof_valid = " & NATURAL'IMAGE(rx_nof_valid_arr(I)) &
", latency = " & NATURAL'IMAGE(rx_latency_arr(I)));
"Rx BSN monitor(" & NATURAL'IMAGE(I) & ") :" &
" nof_sop = " & NATURAL'IMAGE(rx_mon_nof_sop_arr(I)) &
", nof_valid = " & NATURAL'IMAGE(rx_mon_nof_valid_arr(I)) &
", latency = " & NATURAL'IMAGE(rx_mon_latency_arr(I)));
IF I = 0 THEN
ASSERT tx_nof_sop_arr(I) = g_bg_ctrl_first.blocks_per_sync REPORT g_tb_str & "Wrong tx nof_sop for stream (" & NATURAL'IMAGE(I) & ")" SEVERITY ERROR;
ASSERT rx_nof_sop_arr(I) = g_bg_ctrl_first.blocks_per_sync REPORT g_tb_str & "Wrong rx nof_sop for stream (" & NATURAL'IMAGE(I) & ")" SEVERITY ERROR;
ASSERT tx_nof_valid_arr(I) = c_nof_valid_first REPORT g_tb_str & "Wrong tx nof_valid for stream (" & NATURAL'IMAGE(I) & ")" SEVERITY ERROR;
ASSERT rx_nof_valid_arr(I) = c_nof_valid_first REPORT g_tb_str & "Wrong rx nof_valid for stream (" & NATURAL'IMAGE(I) & ")" SEVERITY ERROR;
ASSERT tx_latency_arr(I) = 0 REPORT g_tb_str & "Wrong tx latency for stream (" & NATURAL'IMAGE(I) & ")" SEVERITY ERROR;
ASSERT tx_mon_nof_sop_arr(I) = c_mon_nof_sop_first REPORT g_tb_str & "Wrong tx nof_sop for stream (" & NATURAL'IMAGE(I) & ")" SEVERITY ERROR;
ASSERT rx_mon_nof_sop_arr(I) = c_mon_nof_sop_first REPORT g_tb_str & "Wrong rx nof_sop for stream (" & NATURAL'IMAGE(I) & ")" SEVERITY ERROR;
ASSERT tx_mon_nof_valid_arr(I) = c_mon_nof_valid_first_tx REPORT g_tb_str & "Wrong tx nof_valid for stream (" & NATURAL'IMAGE(I) & ")" SEVERITY ERROR;
ASSERT rx_mon_nof_valid_arr(I) = c_mon_nof_valid_first_rx REPORT g_tb_str & "Wrong rx nof_valid for stream (" & NATURAL'IMAGE(I) & ")" SEVERITY ERROR;
ASSERT tx_mon_latency_arr(I) = 0 REPORT g_tb_str & "Wrong tx latency for stream (" & NATURAL'IMAGE(I) & ")" SEVERITY ERROR;
ELSE
ASSERT tx_nof_sop_arr(I) = g_bg_ctrl_others.blocks_per_sync REPORT g_tb_str & "Wrong tx nof_sop for stream (" & NATURAL'IMAGE(I) & ")" SEVERITY ERROR;
ASSERT rx_nof_sop_arr(I) = g_bg_ctrl_others.blocks_per_sync REPORT g_tb_str & "Wrong rx nof_sop for stream (" & NATURAL'IMAGE(I) & ")" SEVERITY ERROR;
ASSERT tx_nof_valid_arr(I) = c_nof_valid_others REPORT g_tb_str & "Wrong tx nof_valid for stream (" & NATURAL'IMAGE(I) & ")" SEVERITY ERROR;
ASSERT rx_nof_valid_arr(I) = c_nof_valid_others REPORT g_tb_str & "Wrong rx nof_valid for stream (" & NATURAL'IMAGE(I) & ")" SEVERITY ERROR;
ASSERT rx_latency_arr(I) = 22 REPORT g_tb_str & "Wrong rx latency for stream (" & NATURAL'IMAGE(I) & ")" SEVERITY ERROR;
ASSERT tx_mon_nof_sop_arr(I) = c_mon_nof_sop_others REPORT g_tb_str & "Wrong tx nof_sop for stream (" & NATURAL'IMAGE(I) & ")" SEVERITY ERROR;
ASSERT rx_mon_nof_sop_arr(I) = c_mon_nof_sop_others REPORT g_tb_str & "Wrong rx nof_sop for stream (" & NATURAL'IMAGE(I) & ")" SEVERITY ERROR;
ASSERT tx_mon_nof_valid_arr(I) = c_mon_nof_valid_others_tx REPORT g_tb_str & "Wrong tx nof_valid for stream (" & NATURAL'IMAGE(I) & ")" SEVERITY ERROR;
ASSERT rx_mon_nof_valid_arr(I) = c_mon_nof_valid_others_rx REPORT g_tb_str & "Wrong rx nof_valid for stream (" & NATURAL'IMAGE(I) & ")" SEVERITY ERROR;
ASSERT rx_mon_latency_arr(I) = 22 REPORT g_tb_str & "Wrong rx latency for stream (" & NATURAL'IMAGE(I) & ")" SEVERITY ERROR;
END IF;
END LOOP;
-------------------------------------------------------------------------
-- End of test
-------------------------------------------------------------------------
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment