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

Removed g_link_status_check from tech_eth_10g entity. Added g_direction =...

Removed g_link_status_check from tech_eth_10g entity. Added g_direction = TX_RX default or TX_ONLY, RX_ONLY. Implemented TX_ONLY by internal loopback of MAC Tx xgmii to MAX Rx.
parent e5b58438
Branches
No related tags found
No related merge requests found
......@@ -65,12 +65,12 @@ ENTITY tr_10GbE IS
g_sim : BOOLEAN;
g_sim_level : NATURAL := 1; -- 0 = use IP; 1 = use fast serdes model
g_nof_macs : NATURAL;
g_direction : STRING := "TX_RX"; -- "TX_RX", "TX_ONLY", "RX_ONLY"
g_use_mdio : BOOLEAN := FALSE;
g_mdio_epcs_dis : BOOLEAN := FALSE; -- TRUE disables EPCS on init; e.g. to target a 10GbE card in PC that does not support it
g_tx_fifo_fill : NATURAL := 10; -- Release tx packet only when sufficiently data is available,
g_tx_fifo_size : NATURAL := 256; -- 2 * 32b * 256 = 2 M9K (DP interface has 64b data, so at least 2 M9K needed)
g_rx_fifo_size : NATURAL := 256; -- 2 * 32b * 256 = 2 M9K (DP interface has 64b data, so at least 2 M9K needed)
g_link_status_check : STD_LOGIC_VECTOR(c_tech_mac_10g_link_status_w-1 DOWNTO 0) := "11";
g_word_alignment_padding : BOOLEAN := FALSE
);
PORT (
......@@ -231,7 +231,7 @@ BEGIN
g_sim => g_sim,
g_sim_level => g_sim_level, -- 0 = use IP; 1 = use fast serdes model
g_nof_channels => g_nof_macs,
g_link_status_check => g_link_status_check,
g_direction => g_direction,
g_pre_header_padding => g_word_alignment_padding
)
PORT MAP (
......
......@@ -53,17 +53,19 @@ BEGIN
-- g_dp_clk_period : TIME := 5 ns; -- 200 MHz
-- g_sim_level : NATURAL := 1; -- 0 = use IP; 1 = use fast serdes model
-- g_nof_channels : NATURAL := 1;
-- g_direction : STRING := "TX_RX"; -- "TX_RX", "TX_ONLY", "RX_ONLY"
-- g_ref_clk_644_period : TIME := tech_pll_clk_644_period; -- for 10GBASE-R
-- g_ref_clk_156_period : TIME := 6.4 ns; -- for XAUI
-- g_data_type : NATURAL := c_tb_tech_mac_10g_data_type_symbols;
-- g_verify_link_recovery : BOOLEAN := TRUE;
-- g_link_status_check : STD_LOGIC_VECTOR(c_tech_mac_10g_link_status_w-1 DOWNTO 0) := "11"
u_no_dut : ENTITY work.tb_tr_10GbE GENERIC MAP (c_tech_select_default, FALSE, TRUE, 5 ns, 0, 1, c_644, c_156, c_data_type, TRUE, "11") PORT MAP (tb_end_vec(0));
u_tr_10GbE : ENTITY work.tb_tr_10GbE GENERIC MAP (c_tech_select_default, FALSE, FALSE, 5 ns, 0, 1, c_644, c_156, c_data_type, TRUE, "11") PORT MAP (tb_end_vec(1));
u_tr_10GbE_dp_clk_6_5ns : ENTITY work.tb_tr_10GbE GENERIC MAP (c_tech_select_default, FALSE, FALSE, 6.5 ns, 0, 1, c_644, c_156, c_data_type, TRUE, "11") PORT MAP (tb_end_vec(2));
u_tr_10GbE_nof_channels_is_2 : ENTITY work.tb_tr_10GbE GENERIC MAP (c_tech_select_default, FALSE, FALSE, 5 ns, 0, 2, c_644, c_156, c_data_type, TRUE, "11") PORT MAP (tb_end_vec(3));
u_tr_10GbE_sim_level_is_1 : ENTITY work.tb_tr_10GbE GENERIC MAP (c_tech_select_default, FALSE, FALSE, 5 ns, 1, 1, c_644, c_156, c_data_type, TRUE, "11") PORT MAP (tb_end_vec(4));
u_no_dut : ENTITY work.tb_tr_10GbE GENERIC MAP (c_tech_select_default, FALSE, TRUE, 5 ns, 0, 1, "TX_RX", c_644, c_156, c_data_type, TRUE) PORT MAP (tb_end_vec(0));
u_tr_10GbE : ENTITY work.tb_tr_10GbE GENERIC MAP (c_tech_select_default, FALSE, FALSE, 5 ns, 0, 1, "TX_RX", c_644, c_156, c_data_type, TRUE) PORT MAP (tb_end_vec(1));
u_tr_10GbE_tx_only : ENTITY work.tb_tr_10GbE GENERIC MAP (c_tech_select_default, FALSE, FALSE, 5 ns, 0, 1, "TX_ONLY", c_644, c_156, c_data_type, TRUE) PORT MAP (tb_end_vec(2));
u_tr_10GbE_rx_only : ENTITY work.tb_tr_10GbE GENERIC MAP (c_tech_select_default, FALSE, FALSE, 5 ns, 0, 1, "RX_ONLY", c_644, c_156, c_data_type, TRUE) PORT MAP (tb_end_vec(3));
u_tr_10GbE_dp_clk_6_5ns : ENTITY work.tb_tr_10GbE GENERIC MAP (c_tech_select_default, FALSE, FALSE, 6.5 ns, 0, 1, "TX_RX", c_644, c_156, c_data_type, TRUE) PORT MAP (tb_end_vec(4));
u_tr_10GbE_nof_channels_is_2 : ENTITY work.tb_tr_10GbE GENERIC MAP (c_tech_select_default, FALSE, FALSE, 5 ns, 0, 2, "TX_RX", c_644, c_156, c_data_type, TRUE) PORT MAP (tb_end_vec(5));
u_tr_10GbE_sim_level_is_1 : ENTITY work.tb_tr_10GbE GENERIC MAP (c_tech_select_default, FALSE, FALSE, 5 ns, 1, 1, "TX_RX", c_644, c_156, c_data_type, TRUE) PORT MAP (tb_end_vec(6));
p_tb_end : PROCESS
BEGIN
......
......@@ -31,6 +31,12 @@
-- Usage:
-- > as 10
-- > run -all
--
-- Remarks:
-- . g_direction = "TX_RX" and "TX_ONLY" are verified properly by
-- c_tx_rx_loopback = TRUE.
-- g_direction = "RX_ONLY" is verified somehwat by c_tx_rx_loopback = FALSE,
-- but to properly verify is would require using two DUTs.
LIBRARY IEEE, technology_lib, tech_pll_lib, tech_mac_10g_lib, common_lib, dp_lib;
USE IEEE.std_logic_1164.ALL;
......@@ -56,11 +62,11 @@ ENTITY tb_tr_10GbE IS
g_dp_clk_period : TIME := 5 ns; -- must be ~< 9000/(9000-c_tx_fifo_fill) * g_ref_clk_156_period
g_sim_level : NATURAL := 0; -- 0 = use IP; 1 = use fast serdes model
g_nof_channels : NATURAL := 1;
g_direction : STRING := "TX_RX"; -- "TX_RX", "TX_ONLY", "RX_ONLY"
g_ref_clk_644_period : TIME := tech_pll_clk_644_period; -- for 10GBASE-R
g_ref_clk_156_period : TIME := 6.4 ns; -- for XAUI
g_data_type : NATURAL := c_tb_tech_mac_10g_data_type_symbols;
g_verify_link_recovery : BOOLEAN := TRUE;
g_link_status_check : STD_LOGIC_VECTOR(c_tech_mac_10g_link_status_w-1 DOWNTO 0) := "00"
g_verify_link_recovery : BOOLEAN := TRUE
);
PORT (
tb_end : OUT STD_LOGIC
......@@ -74,7 +80,8 @@ ARCHITECTURE tb OF tb_tr_10GbE IS
CONSTANT cal_clk_period : TIME := 25 ns; -- 40 MHz
CONSTANT phy_delay : TIME := sel_a_b(g_sim_level=0, 1 ns, 0 ns);
CONSTANT phy_delay : TIME := sel_a_b(g_sim_level=0, 0 ns, 0 ns);
CONSTANT c_tx_rx_loopback : BOOLEAN := g_direction/="TX_ONLY";
CONSTANT c_tx_fifo_fill : NATURAL := 100;
......@@ -241,11 +248,11 @@ BEGIN
g_sim => c_sim,
g_sim_level => g_sim_level, -- 0 = use IP; 1 = use fast serdes model
g_nof_macs => g_nof_channels,
g_direction => g_direction,
g_use_mdio => TRUE,
g_mdio_epcs_dis => TRUE, -- TRUE disables Enhanced PCS on init; e.g. to target a 10GbE card in PC that does not support it
g_tx_fifo_fill => c_tx_fifo_fill,
g_tx_fifo_size => 256,
g_link_status_check => g_link_status_check,
g_word_alignment_padding => TRUE
)
PORT MAP (
......@@ -300,7 +307,7 @@ BEGIN
gen_link_connect : FOR I IN 0 TO g_nof_channels-1 GENERATE
u_link_connect : ENTITY tech_mac_10g_lib.tb_tech_mac_10g_link_connect
GENERIC MAP (
g_loopback => TRUE,
g_loopback => c_tx_rx_loopback,
g_link_delay => phy_delay
)
PORT MAP (
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment