diff --git a/libraries/io/eth/tb/vhdl/tb_eth_tester.vhd b/libraries/io/eth/tb/vhdl/tb_eth_tester.vhd index c29a4da00e91421ca0f71a8e85fc3934d7d538a1..ade99dfc7b166acd6c8675c2fbc3fcee63af44d0 100644 --- a/libraries/io/eth/tb/vhdl/tb_eth_tester.vhd +++ b/libraries/io/eth/tb/vhdl/tb_eth_tester.vhd @@ -45,8 +45,9 @@ USE work.tb_eth_tester_pkg.ALL; ENTITY tb_eth_tester IS GENERIC ( + g_tb_index : NATURAL := 0; -- use to incremental delay logging from tb instances in tb_tb g_tb_str : STRING := ""; -- use to distinguish logging from tb instances in tb_tb - g_nof_streams : NATURAL := 1; + g_nof_streams : NATURAL := 2; -- t_diag_block_gen_integer = -- sl: enable @@ -220,6 +221,10 @@ BEGIN proc_common_wait_some_cycles(st_clk, c_sync_period_max); stimuli_end <= '1'; + -- Dealy logging between different tb instances + proc_common_wait_some_cycles(st_clk, g_tb_index * 100); + print_str(""); -- log empty line between tb results + ------------------------------------------------------------------------- -- Verification: Total nof Tx packets = total nof Rx packets ------------------------------------------------------------------------- @@ -230,46 +235,21 @@ BEGIN 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_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_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_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 logging print_str(g_tb_str & "Tx total counts monitor(" & NATURAL'IMAGE(I) & ") :" & " nof_packets = " & NATURAL'IMAGE(tx_total_count_nof_packets_arr(I))); @@ -280,6 +260,30 @@ BEGIN ", nof_valids = " & NATURAL'IMAGE(rx_total_count_nof_valids_arr(I)) & ", nof_corrupted = " & NATURAL'IMAGE(rx_total_count_nof_corrupted_arr(I))); + -- Verify, only log when wrong + 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; + + 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; + + 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; + + 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; END LOOP; ------------------------------------------------------------------------- @@ -312,6 +316,7 @@ BEGIN 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 logging print_str(g_tb_str & "Tx BSN monitor(" & NATURAL'IMAGE(I) & ") :" & " nof_sop = " & NATURAL'IMAGE(tx_mon_nof_sop_arr(I)) & @@ -324,19 +329,20 @@ BEGIN ", nof_valid = " & NATURAL'IMAGE(rx_mon_nof_valid_arr(I)) & ", latency = " & NATURAL'IMAGE(rx_mon_latency_arr(I))); + -- Verify, only log when wrong IF I = 0 THEN 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_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; + ASSERT tx_mon_latency_arr(I) = 0 REPORT g_tb_str & "Wrong tx latency for stream (" & NATURAL'IMAGE(I) & ")" SEVERITY ERROR; + ASSERT rx_mon_latency_arr(I) = 27 REPORT g_tb_str & "Wrong rx latency for stream (" & NATURAL'IMAGE(I) & ")" SEVERITY ERROR; END LOOP; -------------------------------------------------------------------------