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

Made tb_eth self-ending for arria10.

parent e90a7d3b
No related branches found
No related tags found
No related merge requests found
......@@ -50,6 +50,7 @@ USE common_lib.common_network_layers_pkg.ALL;
USE common_lib.common_network_total_header_pkg.ALL;
USE dp_lib.dp_stream_pkg.ALL;
USE technology_lib.technology_pkg.ALL;
USE technology_lib.technology_select_pkg.ALL;
USE tech_tse_lib.tech_tse_pkg.ALL;
USE tech_tse_lib.tb_tech_tse_pkg.ALL;
USE WORK.eth_pkg.ALL;
......@@ -58,8 +59,9 @@ USE WORK.eth_pkg.ALL;
ENTITY tb_eth IS
-- Test bench control parameters
GENERIC (
g_technology_dut : NATURAL := c_tech_stratixiv;
g_technology_lcu : NATURAL := c_tech_stratixiv;
g_technology_dut : NATURAL := c_tech_select_default;
g_technology_lcu : NATURAL := c_tech_select_default;
g_tb_end : BOOLEAN := TRUE; -- when TRUE then tb_end ends this simulation, else a higher multi-testbench will end the simulation
-- g_data_type = c_tb_tech_tse_data_type_symbols = 0
-- g_data_type = c_tb_tech_tse_data_type_counter = 1
-- g_data_type = c_tb_tech_tse_data_type_arp = 2
......@@ -67,6 +69,9 @@ ENTITY tb_eth IS
-- g_data_type = c_tb_tech_tse_data_type_udp = 4
g_data_type : NATURAL := c_tb_tech_tse_data_type_udp
);
PORT (
tb_end : OUT STD_LOGIC
);
END tb_eth;
......@@ -197,7 +202,6 @@ ARCHITECTURE tb OF tb_eth IS
CONSTANT c_dut_control_tx_en : NATURAL := 2**c_eth_mm_reg_control_bi.tx_en;
-- Clocks and reset
SIGNAL tb_end : STD_LOGIC := '0';
SIGNAL eth_clk : STD_LOGIC := '0'; -- tse reference clock
SIGNAL sys_clk : STD_LOGIC := '0'; -- system clock
SIGNAL st_clk : STD_LOGIC; -- stream clock
......@@ -251,6 +255,7 @@ ARCHITECTURE tb OF tb_eth IS
SIGNAL lcu_led : t_tech_tse_led;
-- Verification
SIGNAL tx_end : STD_LOGIC := '0';
SIGNAL tx_pkt_cnt : NATURAL := 0;
SIGNAL rx_pkt_cnt : NATURAL := 0;
......@@ -258,8 +263,8 @@ BEGIN
-- run 50 us
eth_clk <= NOT eth_clk OR tb_end AFTER eth_clk_period/2; -- TSE reference clock
sys_clk <= NOT sys_clk OR tb_end AFTER sys_clk_period/2; -- System clock
eth_clk <= NOT eth_clk AFTER eth_clk_period/2; -- TSE reference clock
sys_clk <= NOT sys_clk AFTER sys_clk_period/2; -- System clock
mm_clk <= sys_clk;
st_clk <= sys_clk;
......@@ -446,7 +451,7 @@ BEGIN
-- proc_tech_tse_tx_packet(tx_total_header, 105, g_data_type, c_tx_ready_latency, c_nof_tx_not_valid, st_clk, lcu_tx_en, lcu_tx_siso, lcu_tx_sosi);
FOR I IN 0 TO 1500 * 5 LOOP WAIT UNTIL rising_edge(st_clk); END LOOP;
tb_end <= '1';
tx_end <= '1';
WAIT;
END PROCESS;
......@@ -555,7 +560,8 @@ BEGIN
p_tb_end : PROCESS
BEGIN
WAIT UNTIL tb_end='1';
tb_end <= '0';
WAIT UNTIL tx_end='1';
-- Verify that all transmitted packets have been received
IF tx_pkt_cnt=0 THEN
......@@ -566,9 +572,14 @@ BEGIN
REPORT "Not all transmitted packets were received." SEVERITY ERROR;
END IF;
-- Do keep wait for 10 us after tb_end. Otherwise without wait for 10 us use severity FAILURE to stop the simulation and avoid the PLL lost lock messages after the tb_end.
-- Do keep wait for 10 us after tx_end.
WAIT FOR 10 us;
ASSERT FALSE REPORT "Simulation tb_eth finished." SEVERITY NOTE;
tb_end <= '1';
IF g_tb_end=FALSE THEN
REPORT "Tb simulation finished." SEVERITY NOTE;
ELSE
REPORT "Tb simulation finished." SEVERITY FAILURE;
END IF;
WAIT;
END PROCESS;
......
......@@ -30,28 +30,46 @@
LIBRARY IEEE, technology_lib, tech_tse_lib;
USE IEEE.std_logic_1164.ALL;
USE technology_lib.technology_pkg.ALL;
USE technology_lib.technology_select_pkg.ALL;
USE tech_tse_lib.tb_tech_tse_pkg.ALL;
ENTITY tb_tb_eth IS
GENERIC (
g_technology_dut : NATURAL := c_tech_stratixiv
g_technology_dut : NATURAL := c_tech_select_default
);
END tb_tb_eth;
ARCHITECTURE tb OF tb_tb_eth IS
CONSTANT c_technology_lcu : NATURAL := c_tech_stratixiv;
CONSTANT c_technology_lcu : NATURAL := c_tech_select_default;
CONSTANT c_tb_end_vec : STD_LOGIC_VECTOR(7 DOWNTO 0) := (OTHERS=>'1');
SIGNAL tb_end_vec : STD_LOGIC_VECTOR(7 DOWNTO 0) := c_tb_end_vec; -- sufficiently long to fit all tb instances
BEGIN
-- Try ETH settings : GENERIC MAP (g_data_type => )
-- g_technology_dut : NATURAL := c_tech_select_default;
-- g_technology_lcu : NATURAL := c_tech_select_default;
-- g_tb_end : BOOLEAN := TRUE; -- when TRUE then tb_end ends this simulation, else a higher multi-testbench will end the simulation
-- -- g_data_type = c_tb_tech_tse_data_type_symbols = 0
-- -- g_data_type = c_tb_tech_tse_data_type_counter = 1
-- -- g_data_type = c_tb_tech_tse_data_type_arp = 2
-- -- g_data_type = c_tb_tech_tse_data_type_ping = 3
-- -- g_data_type = c_tb_tech_tse_data_type_udp = 4
-- g_data_type : NATURAL := c_tb_tech_tse_data_type_udp
u_use_symbols : ENTITY work.tb_eth GENERIC MAP (g_technology_dut, c_technology_lcu, c_tb_tech_tse_data_type_symbols);
u_use_counter : ENTITY work.tb_eth GENERIC MAP (g_technology_dut, c_technology_lcu, c_tb_tech_tse_data_type_counter);
u_use_arp : ENTITY work.tb_eth GENERIC MAP (g_technology_dut, c_technology_lcu, c_tb_tech_tse_data_type_arp );
u_use_ping : ENTITY work.tb_eth GENERIC MAP (g_technology_dut, c_technology_lcu, c_tb_tech_tse_data_type_ping );
u_use_udp : ENTITY work.tb_eth GENERIC MAP (g_technology_dut, c_technology_lcu, c_tb_tech_tse_data_type_udp );
u_use_symbols : ENTITY work.tb_eth GENERIC MAP (g_technology_dut, c_technology_lcu, FALSE, c_tb_tech_tse_data_type_symbols) PORT MAP (tb_end_vec(0));
u_use_counter : ENTITY work.tb_eth GENERIC MAP (g_technology_dut, c_technology_lcu, FALSE, c_tb_tech_tse_data_type_counter) PORT MAP (tb_end_vec(1));
u_use_arp : ENTITY work.tb_eth GENERIC MAP (g_technology_dut, c_technology_lcu, FALSE, c_tb_tech_tse_data_type_arp ) PORT MAP (tb_end_vec(2));
u_use_ping : ENTITY work.tb_eth GENERIC MAP (g_technology_dut, c_technology_lcu, FALSE, c_tb_tech_tse_data_type_ping ) PORT MAP (tb_end_vec(3));
u_use_udp : ENTITY work.tb_eth GENERIC MAP (g_technology_dut, c_technology_lcu, FALSE, c_tb_tech_tse_data_type_udp ) PORT MAP (tb_end_vec(4));
p_tb_end : PROCESS
BEGIN
WAIT UNTIL tb_end_vec=c_tb_end_vec;
REPORT "Multi tb simulation finished." SEVERITY FAILURE;
WAIT;
END PROCESS;
END tb;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment