]> jspc29.x-matter.uni-frankfurt.de Git - trbnet.git/commitdiff
removed old code
authorMichael Boehmer <mboehmer@ph.tum.de>
Tue, 28 Jun 2022 13:26:19 +0000 (15:26 +0200)
committerMichael Boehmer <mboehmer@ph.tum.de>
Tue, 28 Jun 2022 13:26:19 +0000 (15:26 +0200)
gbe_trb/base/gbe_wrapper_5G.vhd [deleted file]

diff --git a/gbe_trb/base/gbe_wrapper_5G.vhd b/gbe_trb/base/gbe_wrapper_5G.vhd
deleted file mode 100644 (file)
index d4db7e8..0000000
+++ /dev/null
@@ -1,1798 +0,0 @@
-library IEEE;
-use IEEE.std_logic_1164.all;
-use IEEE.std_logic_ARITH.all;
-use IEEE.std_logic_UNSIGNED.all;
-
-library work;
-use work.trb_net_std.all;
-use work.trb_net_components.all;
-
-use work.trb_net_gbe_components.all;
-use work.trb_net_gbe_protocols.all;
-
-
-entity gbe_wrapper_5G is
-  generic(
-    DO_SIMULATION             : integer range 0 to 1         := 0;
-    INCLUDE_DEBUG             : integer range 0 to 1         := 0;
-    USE_INTERNAL_TRBNET_DUMMY : integer range 0 to 1         := 0;
-    USE_EXTERNAL_TRBNET_DUMMY : integer range 0 to 1         := 0;
-    RX_PATH_ENABLE            : integer range 0 to 1         := 1;
-    FIXED_SIZE_MODE           : integer range 0 to 1         := 1;
-    INCREMENTAL_MODE          : integer range 0 to 1         := 0;
-    FIXED_SIZE                : integer range 0 to 65535     := 10;
-    FIXED_DELAY_MODE          : integer range 0 to 1         := 1;
-    UP_DOWN_MODE              : integer range 0 to 1         := 0;
-    UP_DOWN_LIMIT             : integer range 0 to 16777215  := 0;
-    FIXED_DELAY               : integer range 0 to 16777215  := 16777215;
-    NUMBER_OF_GBE_LINKS       : integer range 1 to 4         := 4;
-    LINKS_ACTIVE              : std_logic_vector(3 downto 0) := "1111";
-    LINK_HAS_PING             : std_logic_vector(3 downto 0) := "1111";
-    LINK_HAS_ARP              : std_logic_vector(3 downto 0) := "1111";
-    LINK_HAS_DHCP             : std_logic_vector(3 downto 0) := "1111";
-    LINK_HAS_READOUT          : std_logic_vector(3 downto 0) := "1111";
-    LINK_HAS_SLOWCTRL         : std_logic_vector(3 downto 0) := "1111";
-    LINK_HAS_FWD              : std_logic_vector(3 downto 0) := "1111"
-  );
-  port(
-    CLK_SYS_IN               : in  std_logic;
-    CLK_125_IN               : in  std_logic;
-    RESET                    : in  std_logic;
-    GSR_N                    : in  std_logic;
-    SD_PRSNT_N_IN            : in  std_logic_vector(NUMBER_OF_GBE_LINKS - 1 downto 0);
-    SD_LOS_IN                : in  std_logic_vector(NUMBER_OF_GBE_LINKS - 1 downto 0); -- SFP Loss Of Signal ('0' = OK, '1' = no signal)
-    SD_TXDIS_OUT             : out std_logic_vector(NUMBER_OF_GBE_LINKS - 1 downto 0); -- SFP disable
-
-    TRIGGER_IN               : in  std_logic; -- for debug purpose only
-    -- CTS interface
-    CTS_NUMBER_IN            : in  std_logic_vector(15 downto 0);
-    CTS_CODE_IN              : in  std_logic_vector(7 downto 0);
-    CTS_INFORMATION_IN       : in  std_logic_vector(7 downto 0);
-    CTS_READOUT_TYPE_IN      : in  std_logic_vector(3 downto 0);
-    CTS_START_READOUT_IN     : in  std_logic;
-    CTS_DATA_OUT             : out std_logic_vector(31 downto 0);
-    CTS_DATAREADY_OUT        : out std_logic;
-    CTS_READOUT_FINISHED_OUT : out std_logic;
-    CTS_READ_IN              : in  std_logic;
-    CTS_LENGTH_OUT           : out std_logic_vector(15 downto 0);
-    CTS_ERROR_PATTERN_OUT    : out std_logic_vector(31 downto 0);
-    -- Data payload interface
-    FEE_DATA_IN              : in  std_logic_vector(15 downto 0);
-    FEE_DATAREADY_IN         : in  std_logic;
-    FEE_READ_OUT             : out std_logic;
-    FEE_STATUS_BITS_IN       : in  std_logic_vector(31 downto 0);
-    FEE_BUSY_IN              : in  std_logic;
-    -- SlowControl
-    MY_TRBNET_ADDRESS_IN     : in std_logic_vector(15 downto 0);
-    ISSUE_REBOOT_OUT         : out std_logic;
-    MC_UNIQUE_ID_IN          : in  std_logic_vector(63 downto 0);
-    GSC_CLK_IN               : in  std_logic;
-    GSC_INIT_DATAREADY_OUT   : out std_logic;
-    GSC_INIT_DATA_OUT        : out std_logic_vector(15 downto 0);
-    GSC_INIT_PACKET_NUM_OUT  : out std_logic_vector(2 downto 0);
-    GSC_INIT_READ_IN         : in  std_logic;
-    GSC_REPLY_DATAREADY_IN   : in  std_logic;
-    GSC_REPLY_DATA_IN        : in  std_logic_vector(15 downto 0);
-    GSC_REPLY_PACKET_NUM_IN  : in  std_logic_vector(2 downto 0);
-    GSC_REPLY_READ_OUT       : out std_logic;
-    GSC_BUSY_IN              : in  std_logic;
-    -- IP configuration
-    BUS_IP_RX                : in  CTRLBUS_RX;
-    BUS_IP_TX                : out CTRLBUS_TX;
-    -- Registers config
-    BUS_REG_RX               : in  CTRLBUS_RX;
-    BUS_REG_TX               : out CTRLBUS_TX;
-
--- Forwarder
-    FWD_DST_MAC_IN           : in  std_logic_vector(48 * NUMBER_OF_GBE_LINKS - 1 downto 0) := (others => '0');
-    FWD_DST_IP_IN            : in  std_logic_vector(32 * NUMBER_OF_GBE_LINKS - 1 downto 0) := (others => '0');
-    FWD_DST_UDP_IN           : in  std_logic_vector(16 * NUMBER_OF_GBE_LINKS - 1 downto 0) := (others => '0');
-    FWD_DATA_IN              : in  std_logic_vector(NUMBER_OF_GBE_LINKS * 8 - 1 downto 0) := (others => '0');
-    FWD_DATA_VALID_IN        : in  std_logic_vector(NUMBER_OF_GBE_LINKS - 1 downto 0) := (others => '0');
-    FWD_SOP_IN               : in  std_logic_vector(NUMBER_OF_GBE_LINKS - 1 downto 0) := (others => '0');
-    FWD_EOP_IN               : in  std_logic_vector(NUMBER_OF_GBE_LINKS - 1 downto 0) := (others => '0');
-    FWD_READY_OUT            : out std_logic_vector(NUMBER_OF_GBE_LINKS - 1 downto 0);
-    FWD_FULL_OUT             : out std_logic_vector(NUMBER_OF_GBE_LINKS - 1 downto 0);
-
-    MAKE_RESET_OUT           : out std_logic;
-    DEBUG_OUT                : out std_logic_vector(127 downto 0)
-  );
-end entity gbe_wrapper_5G;
-
-architecture RTL of gbe_wrapper_5G is
-  signal mac_ready_conf             : std_logic_vector(NUMBER_OF_GBE_LINKS - 1 downto 0);
-  signal mac_reconf                 : std_logic_vector(NUMBER_OF_GBE_LINKS - 1 downto 0);
-  signal mac_an_ready               : std_logic_vector(NUMBER_OF_GBE_LINKS - 1 downto 0);
-  signal mac_fifoavail              : std_logic_vector(NUMBER_OF_GBE_LINKS - 1 downto 0);
-  signal mac_fifoeof                : std_logic_vector(NUMBER_OF_GBE_LINKS - 1 downto 0);
-  signal mac_fifoempty              : std_logic_vector(NUMBER_OF_GBE_LINKS - 1 downto 0);
-  signal mac_rx_fifofull            : std_logic_vector(NUMBER_OF_GBE_LINKS - 1 downto 0);
-  signal mac_tx_data                : std_logic_vector(NUMBER_OF_GBE_LINKS * 8 - 1 downto 0);
-  signal mac_tx_read                : std_logic_vector(NUMBER_OF_GBE_LINKS - 1 downto 0);
-  signal mac_tx_discrfrm            : std_logic_vector(NUMBER_OF_GBE_LINKS - 1 downto 0);
-  signal mac_tx_stat_en             : std_logic_vector(NUMBER_OF_GBE_LINKS - 1 downto 0);
-  signal mac_tx_stats               : std_logic_vector(NUMBER_OF_GBE_LINKS * 31 - 1 downto 0);
-  signal mac_tx_done                : std_logic_vector(NUMBER_OF_GBE_LINKS - 1 downto 0);
-  signal mac_rx_fifo_err            : std_logic_vector(NUMBER_OF_GBE_LINKS - 1 downto 0);
-  signal mac_rx_stats               : std_logic_vector(NUMBER_OF_GBE_LINKS * 32 - 1 downto 0);
-  signal mac_rx_data                : std_logic_vector(NUMBER_OF_GBE_LINKS * 8 - 1 downto 0);
-  signal mac_rx_write               : std_logic_vector(NUMBER_OF_GBE_LINKS - 1 downto 0);
-  signal mac_rx_stat_en             : std_logic_vector(NUMBER_OF_GBE_LINKS - 1 downto 0);
-  signal mac_rx_eof                 : std_logic_vector(NUMBER_OF_GBE_LINKS - 1 downto 0);
-  signal mac_rx_err                 : std_logic_vector(NUMBER_OF_GBE_LINKS - 1 downto 0);
-
-  signal clk_125_from_pcs           : std_logic_vector(NUMBER_OF_GBE_LINKS - 1 downto 0);
-  signal clk_125_rx_from_pcs        : std_logic_vector(NUMBER_OF_GBE_LINKS - 1 downto 0);
-
-  signal cfg_gbe_enable             : std_logic;
-  signal cfg_ipu_enable             : std_logic;
-  signal cfg_mult_enable            : std_logic;
-  signal cfg_subevent_id            : std_logic_vector(31 downto 0);
-  signal cfg_subevent_dec           : std_logic_vector(31 downto 0);
-  signal cfg_queue_dec              : std_logic_vector(31 downto 0);
-  signal cfg_readout_ctr            : std_logic_vector(23 downto 0);
-  signal cfg_readout_ctr_valid      : std_logic;
-  signal cfg_insert_ttype           : std_logic;
-  signal cfg_max_sub                : std_logic_vector(15 downto 0);
-  signal cfg_max_queue              : std_logic_vector(15 downto 0);
-  signal cfg_max_subs_in_queue      : std_logic_vector(15 downto 0);
-  signal cfg_max_single_sub         : std_logic_vector(15 downto 0);
-  signal cfg_additional_hdr         : std_logic;
-  signal cfg_soft_rst               : std_logic;
-  signal cfg_allow_rx               : std_logic;
-  signal cfg_max_frame              : std_logic_vector(15 downto 0);
-
-  signal dbg_hist, dbg_hist2        : hist_array;
-
-  signal mac_0, mac_1, mac_2, mac_3 : std_logic_vector(47 downto 0);
-  signal cfg_max_reply              : std_logic_vector(31 downto 0);
-
-  signal mlt_cts_number             : std_logic_vector(16 * NUMBER_OF_GBE_LINKS - 1 downto 0);
-  signal mlt_cts_code               : std_logic_vector(8 * NUMBER_OF_GBE_LINKS - 1 downto 0);
-  signal mlt_cts_information        : std_logic_vector(8 * NUMBER_OF_GBE_LINKS - 1 downto 0);
-  signal mlt_cts_readout_type       : std_logic_vector(4 * NUMBER_OF_GBE_LINKS - 1 downto 0);
-  signal mlt_cts_start_readout      : std_logic_vector(NUMBER_OF_GBE_LINKS - 1 downto 0);
-  signal mlt_cts_data               : std_logic_vector(32 * NUMBER_OF_GBE_LINKS - 1 downto 0);
-  signal mlt_cts_dataready          : std_logic_vector(NUMBER_OF_GBE_LINKS - 1 downto 0);
-  signal mlt_cts_readout_finished   : std_logic_vector(NUMBER_OF_GBE_LINKS - 1 downto 0);
-  signal mlt_cts_read               : std_logic_vector(NUMBER_OF_GBE_LINKS - 1 downto 0);
-  signal mlt_cts_length             : std_logic_vector(16 * NUMBER_OF_GBE_LINKS - 1 downto 0);
-  signal mlt_cts_error_pattern      : std_logic_vector(32 * NUMBER_OF_GBE_LINKS - 1 downto 0);
-  signal mlt_fee_data               : std_logic_vector(16 * NUMBER_OF_GBE_LINKS - 1 downto 0);
-  signal mlt_fee_dataready          : std_logic_vector(NUMBER_OF_GBE_LINKS - 1 downto 0);
-  signal mlt_fee_read               : std_logic_vector(NUMBER_OF_GBE_LINKS - 1 downto 0);
-  signal mlt_fee_status             : std_logic_vector(32 * NUMBER_OF_GBE_LINKS - 1 downto 0);
-  signal mlt_fee_busy               : std_logic_vector(NUMBER_OF_GBE_LINKS - 1 downto 0);
-
-  signal mlt_gsc_clk                : std_logic_vector(NUMBER_OF_GBE_LINKS - 1 downto 0);
-  signal mlt_gsc_init_dataready     : std_logic_vector(NUMBER_OF_GBE_LINKS - 1 downto 0);
-  signal mlt_gsc_init_data          : std_logic_vector(16 * NUMBER_OF_GBE_LINKS - 1 downto 0);
-  signal mlt_gsc_init_packet        : std_logic_vector(3 * NUMBER_OF_GBE_LINKS - 1 downto 0);
-  signal mlt_gsc_init_read          : std_logic_vector(NUMBER_OF_GBE_LINKS - 1 downto 0);
-  signal mlt_gsc_reply_dataready    : std_logic_vector(NUMBER_OF_GBE_LINKS - 1 downto 0);
-  signal mlt_gsc_reply_data         : std_logic_vector(16 * NUMBER_OF_GBE_LINKS - 1 downto 0);
-  signal mlt_gsc_reply_packet       : std_logic_vector(3 * NUMBER_OF_GBE_LINKS - 1 downto 0);
-  signal mlt_gsc_reply_read         : std_logic_vector(NUMBER_OF_GBE_LINKS - 1 downto 0);
-  signal mlt_gsc_busy               : std_logic_vector(NUMBER_OF_GBE_LINKS - 1 downto 0);
-
-  signal local_cts_number           : std_logic_vector(15 downto 0);
-  signal local_cts_code             : std_logic_vector(7 downto 0);
-  signal local_cts_information      : std_logic_vector(7 downto 0);
-  signal local_cts_readout_type     : std_logic_vector(3 downto 0);
-  signal local_cts_start_readout    : std_logic;
-  signal local_cts_readout_finished : std_logic;
-  signal local_cts_status_bits      : std_logic_vector(31 downto 0);
-  signal local_fee_data             : std_logic_vector(15 downto 0);
-  signal local_fee_dataready        : std_logic;
-  signal local_fee_read             : std_logic;
-  signal local_fee_status_bits      : std_logic_vector(31 downto 0);
-  signal local_fee_busy             : std_logic;
-  signal dhcp_done                  : std_logic_vector(3 downto 0);
-  signal all_links_ready            : std_logic;
-  signal monitor_rx_frames          : std_logic_vector(4 * 32 - 1 downto 0);
-  signal monitor_rx_bytes           : std_logic_vector(4 * 32 - 1 downto 0);
-  signal monitor_tx_frames          : std_logic_vector(4 * 32 - 1 downto 0);
-  signal monitor_tx_bytes           : std_logic_vector(4 * 32 - 1 downto 0);
-  signal monitor_tx_packets         : std_logic_vector(4 * 32 - 1 downto 0);
-  signal monitor_dropped            : std_logic_vector(4 * 32 - 1 downto 0);
-  signal sum_rx_frames              : std_logic_vector(31 downto 0);
-  signal sum_rx_bytes               : std_logic_vector(31 downto 0);
-  signal sum_tx_frames              : std_logic_vector(31 downto 0);
-  signal sum_tx_bytes               : std_logic_vector(31 downto 0);
-  signal sum_tx_packets             : std_logic_vector(31 downto 0);
-  signal sum_dropped                : std_logic_vector(31 downto 0);
-
-  signal busip0, busip1, busip2, busip3                       : CTRLBUS_TX;
-  signal SD_RXD_P_IN, SD_RXD_N_IN, SD_TXD_P_OUT, SD_TXD_N_OUT : std_logic_vector(NUMBER_OF_GBE_LINKS - 1 downto 0);
-  --attribute nopad : string;
-  --attribute nopad of SD_RXD_P_IN, SD_RXD_N_IN, SD_TXD_P_OUT, SD_TXD_N_OUT : signal is "true";
-
-  signal dummy_event                                        : std_logic_vector(15 downto 0);
-  signal dummy_mode                                         : std_logic;
-  signal make_reset0, make_reset1, make_reset2, make_reset3 : std_logic := '0';
-  signal monitor_gen_dbg                                    : std_logic_vector(c_MAX_PROTOCOLS * 64 - 1 downto 0);
-
-  signal cfg_autothrottle   : std_logic;
-  signal cfg_throttle_pause : std_logic_vector(15 downto 0);
-  
-  signal issue_reboot : std_logic_vector(3 downto 0);
-  signal my_ip        : std_logic_vector(127 downto 0);
-  signal debug        : std_logic_vector(255 downto 0);
-  
-begin
-  
-  DEBUG_OUT <= debug(127 downto 0);
-
-  mac_impl_gen : if DO_SIMULATION = 0 generate
-    mac_0 <= MC_UNIQUE_ID_IN(15 downto 8) & MC_UNIQUE_ID_IN(23 downto 16) & MC_UNIQUE_ID_IN(31 downto 24) & x"0" & MC_UNIQUE_ID_IN(35 downto 32) & x"7ada";
-    mac_1 <= MC_UNIQUE_ID_IN(15 downto 8) & MC_UNIQUE_ID_IN(23 downto 16) & MC_UNIQUE_ID_IN(31 downto 24) & x"1" & MC_UNIQUE_ID_IN(35 downto 32) & x"7ada";
-    mac_2 <= MC_UNIQUE_ID_IN(15 downto 8) & MC_UNIQUE_ID_IN(23 downto 16) & MC_UNIQUE_ID_IN(31 downto 24) & x"2" & MC_UNIQUE_ID_IN(35 downto 32) & x"7ada";
-    mac_3 <= MC_UNIQUE_ID_IN(15 downto 8) & MC_UNIQUE_ID_IN(23 downto 16) & MC_UNIQUE_ID_IN(31 downto 24) & x"3" & MC_UNIQUE_ID_IN(35 downto 32) & x"7ada";
-  end generate mac_impl_gen;
-
-  mac_sim_gen : if DO_SIMULATION = 1 generate
-    mac_0 <= x"ffffffffffff";
-    mac_1 <= x"ffffffffffff";
-    mac_2 <= x"ffffffffffff";
-    mac_3 <= x"ffffffffffff";
-  end generate mac_sim_gen;
-
-  all_links_ready <= '1' when dhcp_done = x"f" else '0';
-
-  MAKE_RESET_OUT <= '1' when make_reset3 = '1' or make_reset2 = '1' or make_reset1 = '1' or make_reset0 = '1' else '0';
-  
-  ISSUE_REBOOT_OUT <= '0' when issue_reboot = "0000" else '1';
-
-  physical_impl_gen : if DO_SIMULATION = 0 generate
-    physical : entity work.gbe_med_interface_5G
-      generic map(DO_SIMULATION       => DO_SIMULATION,
-                NUMBER_OF_GBE_LINKS   => NUMBER_OF_GBE_LINKS,
-                LINKS_ACTIVE          => LINKS_ACTIVE
-      )
-      port map(
-        RESET               => RESET,
-        GSR_N               => GSR_N,
-        CLK_SYS_IN          => CLK_SYS_IN,
-        CLK_125_OUT         => clk_125_from_pcs,
-        CLK_125_IN          => CLK_125_IN,
-        CLK_125_RX_OUT      => clk_125_rx_from_pcs,
-        MAC_READY_CONF_OUT  => mac_ready_conf,
-        MAC_RECONF_IN       => mac_reconf,
-        MAC_AN_READY_OUT    => mac_an_ready,
-        MAC_FIFOAVAIL_IN    => mac_fifoavail,
-        MAC_FIFOEOF_IN      => mac_fifoeof,
-        MAC_FIFOEMPTY_IN    => mac_fifoempty,
-        MAC_RX_FIFOFULL_IN  => mac_rx_fifofull,
-        MAC_TX_DATA_IN      => mac_tx_data,
-        MAC_TX_READ_OUT     => mac_tx_read,
-        MAC_TX_DISCRFRM_OUT => mac_tx_discrfrm,
-        MAC_TX_STAT_EN_OUT  => mac_tx_stat_en,
-        MAC_TX_STATS_OUT    => mac_tx_stats,
-        MAC_TX_DONE_OUT     => mac_tx_done,
-        MAC_RX_FIFO_ERR_OUT => mac_rx_fifo_err,
-        MAC_RX_STATS_OUT    => mac_rx_stats,
-        MAC_RX_DATA_OUT     => mac_rx_data,
-        MAC_RX_WRITE_OUT    => mac_rx_write,
-        MAC_RX_STAT_EN_OUT  => mac_rx_stat_en,
-        MAC_RX_EOF_OUT      => mac_rx_eof,
-        MAC_RX_ERROR_OUT    => mac_rx_err,
-        SD_RXD_P_IN         => SD_RXD_P_IN,
-        SD_RXD_N_IN         => SD_RXD_N_IN,
-        SD_TXD_P_OUT        => SD_TXD_P_OUT,
-        SD_TXD_N_OUT        => SD_TXD_N_OUT,
-        SD_PRSNT_N_IN       => SD_PRSNT_N_IN,
-        SD_LOS_IN           => SD_LOS_IN,
-        SD_TXDIS_OUT        => SD_TXDIS_OUT,
-        DEBUG_OUT           => debug --open
-      );
-  end generate physical_impl_gen;
-
-  -- 
-  GEN_LINK_3 : if (LINKS_ACTIVE(3) = '1') generate
-    gbe_inst3 : entity work.gbe_logic_wrapper
-      generic map(DO_SIMULATION           => DO_SIMULATION,
-                INCLUDE_DEBUG             => INCLUDE_DEBUG,
-                USE_INTERNAL_TRBNET_DUMMY => USE_INTERNAL_TRBNET_DUMMY,
-                RX_PATH_ENABLE            => RX_PATH_ENABLE,
-                INCLUDE_READOUT           => LINK_HAS_READOUT(3),
-                INCLUDE_SLOWCTRL          => LINK_HAS_SLOWCTRL(3),
-                INCLUDE_DHCP              => LINK_HAS_DHCP(3),
-                INCLUDE_ARP               => LINK_HAS_ARP(3),
-                INCLUDE_PING              => LINK_HAS_PING(3),
-                INCLUDE_FWD               => LINK_HAS_FWD(3),
-                FRAME_BUFFER_SIZE         => 1,
-                READOUT_BUFFER_SIZE       => 4,
-                SLOWCTRL_BUFFER_SIZE      => 2,
-                FIXED_SIZE_MODE           => FIXED_SIZE_MODE,
-                INCREMENTAL_MODE          => INCREMENTAL_MODE,
-                FIXED_SIZE                => FIXED_SIZE,
-                FIXED_DELAY_MODE          => FIXED_DELAY_MODE,
-                UP_DOWN_MODE              => UP_DOWN_MODE,
-                UP_DOWN_LIMIT             => UP_DOWN_LIMIT,
-                FIXED_DELAY               => FIXED_DELAY)
-      port map(
-        CLK_SYS_IN               => CLK_SYS_IN,
-        CLK_125_IN               => CLK_125_IN,
-        CLK_RX_125_IN            => clk_125_rx_from_pcs(3),
-        RESET                    => RESET,
-        GSR_N                    => GSR_N,
-        MY_MAC_IN                => mac_3,
-        DHCP_DONE_OUT            => dhcp_done(3),
-        MY_IP_OUT                => my_ip(127 downto 96),
-        MY_TRBNET_ADDRESS_IN     => MY_TRBNET_ADDRESS_IN,
-        ISSUE_REBOOT_OUT         => issue_reboot(3),
-        MAC_READY_CONF_IN        => mac_ready_conf(3),
-        MAC_RECONF_OUT           => mac_reconf(3),
-        MAC_AN_READY_IN          => mac_an_ready(3),
-        MAC_FIFOAVAIL_OUT        => mac_fifoavail(3),
-        MAC_FIFOEOF_OUT          => mac_fifoeof(3),
-        MAC_FIFOEMPTY_OUT        => mac_fifoempty(3),
-        MAC_RX_FIFOFULL_OUT      => mac_rx_fifofull(3),
-        MAC_TX_DATA_OUT          => mac_tx_data(4 * 8 - 1 downto 3 * 8),
-        MAC_TX_READ_IN           => mac_tx_read(3),
-        MAC_TX_DISCRFRM_IN       => mac_tx_discrfrm(3),
-        MAC_TX_STAT_EN_IN        => mac_tx_stat_en(3),
-        MAC_TX_STATS_IN          => mac_tx_stats(4 * 31 - 1 downto 3 * 31),
-        MAC_TX_DONE_IN           => mac_tx_done(3),
-        MAC_RX_FIFO_ERR_IN       => mac_rx_fifo_err(3),
-        MAC_RX_STATS_IN          => mac_rx_stats(4 * 32 - 1 downto 3 * 32),
-        MAC_RX_DATA_IN           => mac_rx_data(4 * 8 - 1 downto 3 * 8),
-        MAC_RX_WRITE_IN          => mac_rx_write(3),
-        MAC_RX_STAT_EN_IN        => mac_rx_stat_en(3),
-        MAC_RX_EOF_IN            => mac_rx_eof(3),
-        MAC_RX_ERROR_IN          => mac_rx_err(3),
-        CTS_NUMBER_IN            => mlt_cts_number(4 * 16 - 1 downto 3 * 16),
-        CTS_CODE_IN              => mlt_cts_code(4 * 8 - 1 downto 3 * 8),
-        CTS_INFORMATION_IN       => mlt_cts_information(4 * 8 - 1 downto 3 * 8),
-        CTS_READOUT_TYPE_IN      => mlt_cts_readout_type(4 * 4 - 1 downto 3 * 4),
-        CTS_START_READOUT_IN     => mlt_cts_start_readout(3),
-        CTS_DATA_OUT             => mlt_cts_data(4 * 32 - 1 downto 3 * 32),
-        CTS_DATAREADY_OUT        => mlt_cts_dataready(3),
-        CTS_READOUT_FINISHED_OUT => mlt_cts_readout_finished(3),
-        CTS_READ_IN              => mlt_cts_read(3),
-        CTS_LENGTH_OUT           => mlt_cts_length(4 * 16 - 1 downto 3 * 16),
-        CTS_ERROR_PATTERN_OUT    => mlt_cts_error_pattern(4 * 32 - 1 downto 3 * 32),
-        FEE_DATA_IN              => mlt_fee_data(4 * 16 - 1 downto 3 * 16),
-        FEE_DATAREADY_IN         => mlt_fee_dataready(3),
-        FEE_READ_OUT             => mlt_fee_read(3),
-        FEE_STATUS_BITS_IN       => mlt_fee_status(4 * 32 - 1 downto 3 * 32),
-        FEE_BUSY_IN              => mlt_fee_busy(3),
-        GSC_CLK_IN               => mlt_gsc_clk(3),
-        GSC_INIT_DATAREADY_OUT   => mlt_gsc_init_dataready(3),
-        GSC_INIT_DATA_OUT        => mlt_gsc_init_data(4 * 16 - 1 downto 3 * 16),
-        GSC_INIT_PACKET_NUM_OUT  => mlt_gsc_init_packet(4 * 3 - 1 downto 3 * 3),
-        GSC_INIT_READ_IN         => mlt_gsc_init_read(3),
-        GSC_REPLY_DATAREADY_IN   => mlt_gsc_reply_dataready(3),
-        GSC_REPLY_DATA_IN        => mlt_gsc_reply_data(4 * 16 - 1 downto 3 * 16),
-        GSC_REPLY_PACKET_NUM_IN  => mlt_gsc_reply_packet(4 * 3 - 1 downto 3 * 3),
-        GSC_REPLY_READ_OUT       => mlt_gsc_reply_read(3),
-        GSC_BUSY_IN              => mlt_gsc_busy(3),
-        SLV_ADDR_IN              => BUS_IP_RX.addr(7 downto 0),
-        SLV_READ_IN              => BUS_IP_RX.read,
-        SLV_WRITE_IN             => BUS_IP_RX.write,
-        SLV_BUSY_OUT             => busip3.nack,
-        SLV_ACK_OUT              => busip3.ack,
-        SLV_DATA_IN              => BUS_IP_RX.data,
-        SLV_DATA_OUT             => busip3.data,
-        CFG_GBE_ENABLE_IN        => cfg_gbe_enable,
-        CFG_IPU_ENABLE_IN        => cfg_ipu_enable,
-        CFG_MULT_ENABLE_IN       => cfg_mult_enable,
-        CFG_MAX_FRAME_IN         => cfg_max_frame,
-        CFG_ALLOW_RX_IN          => cfg_allow_rx,
-        CFG_SOFT_RESET_IN        => cfg_soft_rst,
-        CFG_SUBEVENT_ID_IN       => cfg_subevent_id,
-        CFG_SUBEVENT_DEC_IN      => cfg_subevent_dec,
-        CFG_QUEUE_DEC_IN         => cfg_queue_dec,
-        CFG_READOUT_CTR_IN       => cfg_readout_ctr,
-        CFG_READOUT_CTR_VALID_IN => cfg_readout_ctr_valid,
-        CFG_INSERT_TTYPE_IN      => cfg_insert_ttype,
-        CFG_MAX_SUB_IN           => cfg_max_sub,
-        CFG_MAX_QUEUE_IN         => cfg_max_queue,
-        CFG_MAX_SUBS_IN_QUEUE_IN => cfg_max_subs_in_queue,
-        CFG_MAX_SINGLE_SUB_IN    => cfg_max_single_sub,
-        CFG_ADDITIONAL_HDR_IN    => cfg_additional_hdr,
-        CFG_MAX_REPLY_SIZE_IN    => cfg_max_reply,
-        CFG_AUTO_THROTTLE_IN     => cfg_autothrottle,
-        CFG_THROTTLE_PAUSE_IN    => cfg_throttle_pause,
-
-        FWD_DST_MAC_IN => FWD_DST_MAC_IN(4 * 48 - 1 downto 3 * 48),
-        FWD_DST_IP_IN => FWD_DST_IP_IN(4 * 32 - 1 downto 3 * 32),
-        FWD_DST_UDP_IN => FWD_DST_UDP_IN(4 * 16 - 1 downto 3 * 16),
-        FWD_DATA_IN => FWD_DATA_IN(4 * 8 - 1 downto 3 * 8),
-        FWD_DATA_VALID_IN => FWD_DATA_VALID_IN(3),
-        FWD_SOP_IN => FWD_SOP_IN(3),
-        FWD_EOP_IN => FWD_EOP_IN(3),
-        FWD_READY_OUT => FWD_READY_OUT(3),
-        FWD_FULL_OUT => FWD_FULL_OUT(3),
-
-        MONITOR_RX_FRAMES_OUT    => monitor_rx_frames(4 * 32 - 1 downto 3 * 32),
-        MONITOR_RX_BYTES_OUT     => monitor_rx_bytes(4 * 32 - 1 downto 3 * 32),
-        MONITOR_TX_FRAMES_OUT    => monitor_tx_frames(4 * 32 - 1 downto 3 * 32),
-        MONITOR_TX_BYTES_OUT     => monitor_tx_bytes(4 * 32 - 1 downto 3 * 32),
-        MONITOR_TX_PACKETS_OUT   => monitor_tx_packets(4 * 32 - 1 downto 3 * 32),
-        MONITOR_DROPPED_OUT      => monitor_dropped(4 * 32 - 1 downto 3 * 32),
-        MONITOR_GEN_DBG_OUT      => monitor_gen_dbg,
-        MAKE_RESET_OUT           => make_reset3
-      );
-  end generate GEN_LINK_3;
-
-  NO_LINK3_GEN : if (LINKS_ACTIVE(3) = '0') generate
-    make_reset3 <= '0';
-    busip3.data <= (others => '0');
-    busip3.ack  <= '0';
-    busip3.nack <= '0';
-    monitor_rx_frames(4 * 32 - 1 downto 3 * 32) <= (others => '0');
-    monitor_rx_bytes(4 * 32 - 1 downto 3 * 32) <= (others => '0');
-    monitor_tx_frames(4 * 32 - 1 downto 3 * 32) <= (others => '0');
-    monitor_tx_bytes(4 * 32 - 1 downto 3 * 32) <= (others => '0');
-    monitor_tx_packets(4 * 32 - 1 downto 3 * 32) <= (others => '0');
-    monitor_dropped(4 * 32 - 1 downto 3 * 32) <= (others => '0');
-    monitor_gen_dbg  <= (others => '0');
-    make_reset3 <= '0';
-    FWD_READY_OUT(3) <= '0';
-    FWD_FULL_OUT(3) <= '1';
-    mlt_cts_data(4 * 32 - 1 downto 3 * 32) <= (others => '0');
-    mlt_cts_dataready(3) <= '0';
-    mlt_cts_readout_finished(3) <= '0';
-    mlt_cts_length(4 * 16 - 1 downto 3 * 16) <= (others => '0');
-    mlt_cts_error_pattern(4 * 32 - 1 downto 3 * 32) <= (others => '0');
-  end generate NO_LINK3_GEN;
-
-  -- 
-  GEN_LINK_2 : if (LINKS_ACTIVE(2) = '1') generate
-    gbe_inst2 : entity work.gbe_logic_wrapper
-      generic map(DO_SIMULATION           => DO_SIMULATION,
-                INCLUDE_DEBUG             => INCLUDE_DEBUG,
-                USE_INTERNAL_TRBNET_DUMMY => USE_INTERNAL_TRBNET_DUMMY,
-                RX_PATH_ENABLE            => 1,
-                INCLUDE_READOUT           => LINK_HAS_READOUT(2),
-                INCLUDE_SLOWCTRL          => LINK_HAS_SLOWCTRL(2),
-                INCLUDE_DHCP              => LINK_HAS_DHCP(2),
-                INCLUDE_ARP               => LINK_HAS_ARP(2),
-                INCLUDE_PING              => LINK_HAS_PING(2),
-                INCLUDE_FWD               => LINK_HAS_FWD(2),
-                FRAME_BUFFER_SIZE         => 1,
-                READOUT_BUFFER_SIZE       => 4,
-                SLOWCTRL_BUFFER_SIZE      => 2,
-                FIXED_SIZE_MODE           => FIXED_SIZE_MODE,
-                INCREMENTAL_MODE          => INCREMENTAL_MODE,
-                FIXED_SIZE                => FIXED_SIZE,
-                FIXED_DELAY_MODE          => FIXED_DELAY_MODE,
-                UP_DOWN_MODE              => UP_DOWN_MODE,
-                UP_DOWN_LIMIT             => UP_DOWN_LIMIT,
-                FIXED_DELAY               => FIXED_DELAY)
-      port map(
-        CLK_SYS_IN               => CLK_SYS_IN,
-        CLK_125_IN               => CLK_125_IN,
-        CLK_RX_125_IN            => clk_125_rx_from_pcs(2),
-        RESET                    => RESET,
-        GSR_N                    => GSR_N,
-        MY_MAC_IN                => mac_2,
-        DHCP_DONE_OUT            => dhcp_done(2),
-        MY_IP_OUT                => my_ip(95 downto 64),
-        MY_TRBNET_ADDRESS_IN     => MY_TRBNET_ADDRESS_IN,
-        ISSUE_REBOOT_OUT         => issue_reboot(2),
-        MAC_READY_CONF_IN        => mac_ready_conf(2),
-        MAC_RECONF_OUT           => mac_reconf(2),
-        MAC_AN_READY_IN          => mac_an_ready(2),
-        MAC_FIFOAVAIL_OUT        => mac_fifoavail(2),
-        MAC_FIFOEOF_OUT          => mac_fifoeof(2),
-        MAC_FIFOEMPTY_OUT        => mac_fifoempty(2),
-        MAC_RX_FIFOFULL_OUT      => mac_rx_fifofull(2),
-        MAC_TX_DATA_OUT          => mac_tx_data(3 * 8 - 1 downto 2 * 8),
-        MAC_TX_READ_IN           => mac_tx_read(2),
-        MAC_TX_DISCRFRM_IN       => mac_tx_discrfrm(2),
-        MAC_TX_STAT_EN_IN        => mac_tx_stat_en(2),
-        MAC_TX_STATS_IN          => mac_tx_stats(3 * 31 - 1 downto 2 * 31),
-        MAC_TX_DONE_IN           => mac_tx_done(2),
-        MAC_RX_FIFO_ERR_IN       => mac_rx_fifo_err(2),
-        MAC_RX_STATS_IN          => mac_rx_stats(3 * 32 - 1 downto 2 * 32),
-        MAC_RX_DATA_IN           => mac_rx_data(3 * 8 - 1 downto 2 * 8),
-        MAC_RX_WRITE_IN          => mac_rx_write(2),
-        MAC_RX_STAT_EN_IN        => mac_rx_stat_en(2),
-        MAC_RX_EOF_IN            => mac_rx_eof(2),
-        MAC_RX_ERROR_IN          => mac_rx_err(2),
-        CTS_NUMBER_IN            => mlt_cts_number(3 * 16 - 1 downto 2 * 16),
-        CTS_CODE_IN              => mlt_cts_code(3 * 8 - 1 downto 2 * 8),
-        CTS_INFORMATION_IN       => mlt_cts_information(3 * 8 - 1 downto 2 * 8),
-        CTS_READOUT_TYPE_IN      => mlt_cts_readout_type(3 * 4 - 1 downto 2 * 4),
-        CTS_START_READOUT_IN     => mlt_cts_start_readout(2),
-        CTS_DATA_OUT             => mlt_cts_data(3 * 32 - 1 downto 2 * 32),
-        CTS_DATAREADY_OUT        => mlt_cts_dataready(2),
-        CTS_READOUT_FINISHED_OUT => mlt_cts_readout_finished(2),
-        CTS_READ_IN              => mlt_cts_read(2),
-        CTS_LENGTH_OUT           => mlt_cts_length(3 * 16 - 1 downto 2 * 16),
-        CTS_ERROR_PATTERN_OUT    => mlt_cts_error_pattern(3 * 32 - 1 downto 2 * 32),
-        FEE_DATA_IN              => mlt_fee_data(3 * 16 - 1 downto 2 * 16),
-        FEE_DATAREADY_IN         => mlt_fee_dataready(2),
-        FEE_READ_OUT             => mlt_fee_read(2),
-        FEE_STATUS_BITS_IN       => mlt_fee_status(3 * 32 - 1 downto 2 * 32),
-        FEE_BUSY_IN              => mlt_fee_busy(2),
-        GSC_CLK_IN               => mlt_gsc_clk(2),
-        GSC_INIT_DATAREADY_OUT   => mlt_gsc_init_dataready(2),
-        GSC_INIT_DATA_OUT        => mlt_gsc_init_data(3 * 16 - 1 downto 2 * 16),
-        GSC_INIT_PACKET_NUM_OUT  => mlt_gsc_init_packet(3 * 3 - 1 downto 2 * 3),
-        GSC_INIT_READ_IN         => mlt_gsc_init_read(2),
-        GSC_REPLY_DATAREADY_IN   => mlt_gsc_reply_dataready(2),
-        GSC_REPLY_DATA_IN        => mlt_gsc_reply_data(3 * 16 - 1 downto 2 * 16),
-        GSC_REPLY_PACKET_NUM_IN  => mlt_gsc_reply_packet(3 * 3 - 1 downto 2 * 3),
-        GSC_REPLY_READ_OUT       => mlt_gsc_reply_read(2),
-        GSC_BUSY_IN              => mlt_gsc_busy(2),
-        SLV_ADDR_IN              => BUS_IP_RX.addr(7 downto 0),
-        SLV_READ_IN              => BUS_IP_RX.read,
-        SLV_WRITE_IN             => BUS_IP_RX.write,
-        SLV_BUSY_OUT             => busip2.nack,
-        SLV_ACK_OUT              => busip2.ack,
-        SLV_DATA_IN              => BUS_IP_RX.data,
-        SLV_DATA_OUT             => busip2.data,
-        CFG_GBE_ENABLE_IN        => cfg_gbe_enable,
-        CFG_IPU_ENABLE_IN        => cfg_ipu_enable,
-        CFG_MULT_ENABLE_IN       => cfg_mult_enable,
-        CFG_MAX_FRAME_IN         => cfg_max_frame,
-        CFG_ALLOW_RX_IN          => cfg_allow_rx,
-        CFG_SOFT_RESET_IN        => cfg_soft_rst,
-        CFG_SUBEVENT_ID_IN       => cfg_subevent_id,
-        CFG_SUBEVENT_DEC_IN      => cfg_subevent_dec,
-        CFG_QUEUE_DEC_IN         => cfg_queue_dec,
-        CFG_READOUT_CTR_IN       => cfg_readout_ctr,
-        CFG_READOUT_CTR_VALID_IN => cfg_readout_ctr_valid,
-        CFG_INSERT_TTYPE_IN      => cfg_insert_ttype,
-        CFG_MAX_SUB_IN           => cfg_max_sub,
-        CFG_MAX_QUEUE_IN         => cfg_max_queue,
-        CFG_MAX_SUBS_IN_QUEUE_IN => cfg_max_subs_in_queue,
-        CFG_MAX_SINGLE_SUB_IN    => cfg_max_single_sub,
-        CFG_ADDITIONAL_HDR_IN    => cfg_additional_hdr,
-        CFG_MAX_REPLY_SIZE_IN    => cfg_max_reply,
-        CFG_AUTO_THROTTLE_IN     => cfg_autothrottle,
-        CFG_THROTTLE_PAUSE_IN    => cfg_throttle_pause,
-FWD_DST_MAC_IN => FWD_DST_MAC_IN(3 * 48 - 1 downto 2 * 48),
-FWD_DST_IP_IN => FWD_DST_IP_IN(3 * 32 - 1 downto 2 * 32),
-FWD_DST_UDP_IN => FWD_DST_UDP_IN(3 * 16 - 1 downto 2 * 16),
-FWD_DATA_IN => FWD_DATA_IN(3 * 8 - 1 downto 2 * 8),
-FWD_DATA_VALID_IN => FWD_DATA_VALID_IN(2),
-FWD_SOP_IN => FWD_SOP_IN(2),
-FWD_EOP_IN => FWD_EOP_IN(2),
-FWD_READY_OUT => FWD_READY_OUT(2),
-FWD_FULL_OUT => FWD_FULL_OUT(2),
-
-        MONITOR_RX_FRAMES_OUT    => monitor_rx_frames(3 * 32 - 1 downto 2 * 32),
-        MONITOR_RX_BYTES_OUT     => monitor_rx_bytes(3 * 32 - 1 downto 2 * 32),
-        MONITOR_TX_FRAMES_OUT    => monitor_tx_frames(3 * 32 - 1 downto 2 * 32),
-        MONITOR_TX_BYTES_OUT     => monitor_tx_bytes(3 * 32 - 1 downto 2 * 32),
-        MONITOR_TX_PACKETS_OUT   => monitor_tx_packets(3 * 32 - 1 downto 2 * 32),
-        MONITOR_DROPPED_OUT      => monitor_dropped(3 * 32 - 1 downto 2 * 32),
-        MONITOR_GEN_DBG_OUT      => open,
-        MAKE_RESET_OUT           => make_reset2
-      );
-  end generate GEN_LINK_2;
-
-  NO_LINK2_GEN : if (LINKS_ACTIVE(2) = '0') generate
-    make_reset2 <= '0';
-    busip2.data <= (others => '0');
-    busip2.ack  <= '0';
-    busip2.nack <= '0';
-    
-    monitor_rx_frames(3 * 32 - 1 downto 2 * 32) <= (others => '0');
-    monitor_rx_bytes(3 * 32 - 1 downto 2 * 32) <= (others => '0');
-    monitor_tx_frames(3 * 32 - 1 downto 2 * 32) <= (others => '0');
-    monitor_tx_bytes(3 * 32 - 1 downto 2 * 32) <= (others => '0');
-    monitor_tx_packets(3 * 32 - 1 downto 2 * 32) <= (others => '0');
-    monitor_dropped(3 * 32 - 1 downto 2 * 32) <= (others => '0');
-    monitor_gen_dbg  <= (others => '0');
-    make_reset2 <= '0';
-    FWD_READY_OUT(2) <= '0';
-    FWD_FULL_OUT(2) <= '1';
-    mlt_cts_data(3 * 32 - 1 downto 2 * 32) <= (others => '0');
-    mlt_cts_dataready(2) <= '0';
-    mlt_cts_readout_finished(2) <= '0';
-    mlt_cts_length(3 * 16 - 1 downto 2 * 16) <= (others => '0');
-    mlt_cts_error_pattern(3 * 32 - 1 downto 2 * 32) <= (others => '0');                
-  end generate NO_LINK2_GEN;
-
-  -- 
-  GEN_LINK_1 : if (LINKS_ACTIVE(1) = '1') generate
-    gbe_inst1 : entity work.gbe_logic_wrapper
-      generic map(DO_SIMULATION             => DO_SIMULATION,
-                INCLUDE_DEBUG             => INCLUDE_DEBUG,
-                USE_INTERNAL_TRBNET_DUMMY => USE_INTERNAL_TRBNET_DUMMY,
-                RX_PATH_ENABLE            => 1,
-                INCLUDE_READOUT           => LINK_HAS_READOUT(1),
-                INCLUDE_SLOWCTRL          => LINK_HAS_SLOWCTRL(1),
-                INCLUDE_DHCP              => LINK_HAS_DHCP(1),
-                INCLUDE_ARP               => LINK_HAS_ARP(1),
-                INCLUDE_PING              => LINK_HAS_PING(1),
-                INCLUDE_FWD               => LINK_HAS_FWD(1),
-                FRAME_BUFFER_SIZE         => 1,
-                READOUT_BUFFER_SIZE       => 4,
-                SLOWCTRL_BUFFER_SIZE      => 2,
-                FIXED_SIZE_MODE           => FIXED_SIZE_MODE,
-                INCREMENTAL_MODE          => INCREMENTAL_MODE,
-                FIXED_SIZE                => FIXED_SIZE,
-                FIXED_DELAY_MODE          => FIXED_DELAY_MODE,
-                UP_DOWN_MODE              => UP_DOWN_MODE,
-                UP_DOWN_LIMIT             => UP_DOWN_LIMIT,
-                FIXED_DELAY               => FIXED_DELAY)
-      port map(
-        CLK_SYS_IN               => CLK_SYS_IN,
-        CLK_125_IN               => CLK_125_IN,
-        CLK_RX_125_IN            => clk_125_rx_from_pcs(1),
-        RESET                    => RESET,
-        GSR_N                    => GSR_N,
-        MY_MAC_IN                => mac_1,
-        DHCP_DONE_OUT            => dhcp_done(1),
-        MY_IP_OUT                => my_ip(63 downto 32),
-        MY_TRBNET_ADDRESS_IN    => MY_TRBNET_ADDRESS_IN,
-        ISSUE_REBOOT_OUT                => issue_reboot(1),
-        MAC_READY_CONF_IN        => mac_ready_conf(1),
-        MAC_RECONF_OUT           => mac_reconf(1),
-        MAC_AN_READY_IN          => mac_an_ready(1),
-        MAC_FIFOAVAIL_OUT        => mac_fifoavail(1),
-        MAC_FIFOEOF_OUT          => mac_fifoeof(1),
-        MAC_FIFOEMPTY_OUT        => mac_fifoempty(1),
-        MAC_RX_FIFOFULL_OUT      => mac_rx_fifofull(1),
-        MAC_TX_DATA_OUT          => mac_tx_data(2 * 8 - 1 downto 1 * 8),
-        MAC_TX_READ_IN           => mac_tx_read(1),
-        MAC_TX_DISCRFRM_IN       => mac_tx_discrfrm(1),
-        MAC_TX_STAT_EN_IN        => mac_tx_stat_en(1),
-        MAC_TX_STATS_IN          => mac_tx_stats(2 * 31 - 1 downto 1 * 31),
-        MAC_TX_DONE_IN           => mac_tx_done(1),
-        MAC_RX_FIFO_ERR_IN       => mac_rx_fifo_err(1),
-        MAC_RX_STATS_IN          => mac_rx_stats(2 * 32 - 1 downto 1 * 32),
-        MAC_RX_DATA_IN           => mac_rx_data(2 * 8 - 1 downto 1 * 8),
-        MAC_RX_WRITE_IN          => mac_rx_write(1),
-        MAC_RX_STAT_EN_IN        => mac_rx_stat_en(1),
-        MAC_RX_EOF_IN            => mac_rx_eof(1),
-        MAC_RX_ERROR_IN          => mac_rx_err(1),
-        CTS_NUMBER_IN            => mlt_cts_number(2 * 16 - 1 downto 1 * 16),
-        CTS_CODE_IN              => mlt_cts_code(2 * 8 - 1 downto 1 * 8),
-        CTS_INFORMATION_IN       => mlt_cts_information(2 * 8 - 1 downto 1 * 8),
-        CTS_READOUT_TYPE_IN      => mlt_cts_readout_type(2 * 4 - 1 downto 1 * 4),
-        CTS_START_READOUT_IN     => mlt_cts_start_readout(1),
-        CTS_DATA_OUT             => mlt_cts_data(2 * 32 - 1 downto 1 * 32),
-        CTS_DATAREADY_OUT        => mlt_cts_dataready(1),
-        CTS_READOUT_FINISHED_OUT => mlt_cts_readout_finished(1),
-        CTS_READ_IN              => mlt_cts_read(1),
-        CTS_LENGTH_OUT           => mlt_cts_length(2 * 16 - 1 downto 1 * 16),
-        CTS_ERROR_PATTERN_OUT    => mlt_cts_error_pattern(2 * 32 - 1 downto 1 * 32),
-        FEE_DATA_IN              => mlt_fee_data(2 * 16 - 1 downto 1 * 16),
-        FEE_DATAREADY_IN         => mlt_fee_dataready(1),
-        FEE_READ_OUT             => mlt_fee_read(1),
-        FEE_STATUS_BITS_IN       => mlt_fee_status(2 * 32 - 1 downto 1 * 32),
-        FEE_BUSY_IN              => mlt_fee_busy(1),
-        GSC_CLK_IN               => mlt_gsc_clk(1),
-        GSC_INIT_DATAREADY_OUT   => mlt_gsc_init_dataready(1),
-        GSC_INIT_DATA_OUT        => mlt_gsc_init_data(2 * 16 - 1 downto 1 * 16),
-        GSC_INIT_PACKET_NUM_OUT  => mlt_gsc_init_packet(2 * 3 - 1 downto 1 * 3),
-        GSC_INIT_READ_IN         => mlt_gsc_init_read(1),
-        GSC_REPLY_DATAREADY_IN   => mlt_gsc_reply_dataready(1),
-        GSC_REPLY_DATA_IN        => mlt_gsc_reply_data(2 * 16 - 1 downto 1 * 16),
-        GSC_REPLY_PACKET_NUM_IN  => mlt_gsc_reply_packet(2 * 3 - 1 downto 1 * 3),
-        GSC_REPLY_READ_OUT       => mlt_gsc_reply_read(1),
-        GSC_BUSY_IN              => mlt_gsc_busy(1),
-        SLV_ADDR_IN              => BUS_IP_RX.addr(7 downto 0),
-        SLV_READ_IN              => BUS_IP_RX.read,
-        SLV_WRITE_IN             => BUS_IP_RX.write,
-        SLV_BUSY_OUT             => busip1.nack,
-        SLV_ACK_OUT              => busip1.ack,
-        SLV_DATA_IN              => BUS_IP_RX.data,
-        SLV_DATA_OUT             => busip1.data,
-        CFG_GBE_ENABLE_IN        => cfg_gbe_enable,
-        CFG_IPU_ENABLE_IN        => cfg_ipu_enable,
-        CFG_MULT_ENABLE_IN       => cfg_mult_enable,
-        CFG_MAX_FRAME_IN         => cfg_max_frame,
-        CFG_ALLOW_RX_IN          => cfg_allow_rx,
-        CFG_SOFT_RESET_IN        => cfg_soft_rst,
-        CFG_SUBEVENT_ID_IN       => cfg_subevent_id,
-        CFG_SUBEVENT_DEC_IN      => cfg_subevent_dec,
-        CFG_QUEUE_DEC_IN         => cfg_queue_dec,
-        CFG_READOUT_CTR_IN       => cfg_readout_ctr,
-        CFG_READOUT_CTR_VALID_IN => cfg_readout_ctr_valid,
-        CFG_INSERT_TTYPE_IN      => cfg_insert_ttype,
-        CFG_MAX_SUB_IN           => cfg_max_sub,
-        CFG_MAX_QUEUE_IN         => cfg_max_queue,
-        CFG_MAX_SUBS_IN_QUEUE_IN => cfg_max_subs_in_queue,
-        CFG_MAX_SINGLE_SUB_IN    => cfg_max_single_sub,
-        CFG_ADDITIONAL_HDR_IN    => cfg_additional_hdr,
-        CFG_MAX_REPLY_SIZE_IN    => cfg_max_reply,
-        CFG_AUTO_THROTTLE_IN     => cfg_autothrottle,
-        CFG_THROTTLE_PAUSE_IN    => cfg_throttle_pause,
-
-FWD_DST_MAC_IN => FWD_DST_MAC_IN(2 * 48 - 1 downto 1 * 48),
-FWD_DST_IP_IN => FWD_DST_IP_IN(2 * 32 - 1 downto 1 * 32),
-FWD_DST_UDP_IN => FWD_DST_UDP_IN(2 * 16 - 1 downto 1 * 16),
-FWD_DATA_IN => FWD_DATA_IN(2 * 8 - 1 downto 1 * 8),
-FWD_DATA_VALID_IN => FWD_DATA_VALID_IN(1),
-FWD_SOP_IN => FWD_SOP_IN(1),
-FWD_EOP_IN => FWD_EOP_IN(1),
-FWD_READY_OUT => FWD_READY_OUT(1),
-FWD_FULL_OUT => FWD_FULL_OUT(1),
-
-        MONITOR_RX_FRAMES_OUT    => monitor_rx_frames(2 * 32 - 1 downto 1 * 32),
-        MONITOR_RX_BYTES_OUT     => monitor_rx_bytes(2 * 32 - 1 downto 1 * 32),
-        MONITOR_TX_FRAMES_OUT    => monitor_tx_frames(2 * 32 - 1 downto 1 * 32),
-        MONITOR_TX_BYTES_OUT     => monitor_tx_bytes(2 * 32 - 1 downto 1 * 32),
-        MONITOR_TX_PACKETS_OUT   => monitor_tx_packets(2 * 32 - 1 downto 1 * 32),
-        MONITOR_DROPPED_OUT      => monitor_dropped(2 * 32 - 1 downto 1 * 32),
-        MONITOR_GEN_DBG_OUT      => open,
-        MAKE_RESET_OUT           => make_reset1
-      );
-  end generate GEN_LINK_1;
-
-  NO_LINK1_GEN : if (LINKS_ACTIVE(1) = '0') generate
-    make_reset1 <= '0';
-    busip1.data <= (others => '0');
-    busip1.ack  <= '0';
-    busip1.nack <= '0';
-    
-    monitor_rx_frames(2 * 32 - 1 downto 1 * 32) <= (others => '0');
-    monitor_rx_bytes(2 * 32 - 1 downto 1 * 32) <= (others => '0');
-    monitor_tx_frames(2 * 32 - 1 downto 1 * 32) <= (others => '0');
-    monitor_tx_bytes(2 * 32 - 1 downto 1 * 32) <= (others => '0');
-    monitor_tx_packets(2 * 32 - 1 downto 1 * 32) <= (others => '0');
-    monitor_dropped(2 * 32 - 1 downto 1 * 32) <= (others => '0');
-    monitor_gen_dbg  <= (others => '0');
-    make_reset1 <= '0';
-    FWD_READY_OUT(1) <= '0';
-    FWD_FULL_OUT(1) <= '1';
-    mlt_cts_data(2 * 32 - 1 downto 1 * 32) <= (others => '0');
-    mlt_cts_dataready(1) <= '0';
-    mlt_cts_readout_finished(1) <= '0';
-    mlt_cts_length(2 * 16 - 1 downto 1 * 16) <= (others => '0');
-    mlt_cts_error_pattern(2 * 32 - 1 downto 1 * 32) <= (others => '0');                
-  end generate NO_LINK1_GEN;
-
-  -- 
-  GEN_LINK_0 : if (LINKS_ACTIVE(0) = '1') generate
-    gbe_inst0 : entity work.gbe_logic_wrapper
-      generic map(DO_SIMULATION             => DO_SIMULATION,
-                INCLUDE_DEBUG             => INCLUDE_DEBUG,
-                USE_INTERNAL_TRBNET_DUMMY => USE_INTERNAL_TRBNET_DUMMY,
-                RX_PATH_ENABLE            => 1,
-                INCLUDE_READOUT           => LINK_HAS_READOUT(0),
-                INCLUDE_SLOWCTRL          => LINK_HAS_SLOWCTRL(0),
-                INCLUDE_DHCP              => LINK_HAS_DHCP(0),
-                INCLUDE_ARP               => LINK_HAS_ARP(0),
-                INCLUDE_PING              => LINK_HAS_PING(0),
-                INCLUDE_FWD               => LINK_HAS_FWD(0),
-                FRAME_BUFFER_SIZE         => 1,
-                READOUT_BUFFER_SIZE       => 4,
-                SLOWCTRL_BUFFER_SIZE      => 2,
-                FIXED_SIZE_MODE           => FIXED_SIZE_MODE,
-                INCREMENTAL_MODE          => INCREMENTAL_MODE,
-                FIXED_SIZE                => FIXED_SIZE,
-                FIXED_DELAY_MODE          => FIXED_DELAY_MODE,
-                UP_DOWN_MODE              => UP_DOWN_MODE,
-                UP_DOWN_LIMIT             => UP_DOWN_LIMIT,
-                FIXED_DELAY               => FIXED_DELAY)
-      port map(
-        CLK_SYS_IN               => CLK_SYS_IN,
-        CLK_125_IN               => CLK_125_IN,
-        CLK_RX_125_IN            => clk_125_rx_from_pcs(0),
-        RESET                    => RESET,
-        GSR_N                    => GSR_N,
-        MY_MAC_IN                => mac_0,
-        DHCP_DONE_OUT            => dhcp_done(0),
-        MY_IP_OUT                => my_ip(31 downto 0),
-        MY_TRBNET_ADDRESS_IN     => MY_TRBNET_ADDRESS_IN,
-        ISSUE_REBOOT_OUT         => issue_reboot(0),
-        MAC_READY_CONF_IN        => mac_ready_conf(0),
-        MAC_RECONF_OUT           => mac_reconf(0),
-        MAC_AN_READY_IN          => mac_an_ready(0),
-        MAC_FIFOAVAIL_OUT        => mac_fifoavail(0),
-        MAC_FIFOEOF_OUT          => mac_fifoeof(0),
-        MAC_FIFOEMPTY_OUT        => mac_fifoempty(0),
-        MAC_RX_FIFOFULL_OUT      => mac_rx_fifofull(0),
-        MAC_TX_DATA_OUT          => mac_tx_data(1 * 8 - 1 downto 0 * 8),
-        MAC_TX_READ_IN           => mac_tx_read(0),
-        MAC_TX_DISCRFRM_IN       => mac_tx_discrfrm(0),
-        MAC_TX_STAT_EN_IN        => mac_tx_stat_en(0),
-        MAC_TX_STATS_IN          => mac_tx_stats(1 * 31 - 1 downto 0 * 31),
-        MAC_TX_DONE_IN           => mac_tx_done(0),
-        MAC_RX_FIFO_ERR_IN       => mac_rx_fifo_err(0),
-        MAC_RX_STATS_IN          => mac_rx_stats(1 * 32 - 1 downto 0 * 32),
-        MAC_RX_DATA_IN           => mac_rx_data(1 * 8 - 1 downto 0 * 8),
-        MAC_RX_WRITE_IN          => mac_rx_write(0),
-        MAC_RX_STAT_EN_IN        => mac_rx_stat_en(0),
-        MAC_RX_EOF_IN            => mac_rx_eof(0),
-        MAC_RX_ERROR_IN          => mac_rx_err(0),
-        CTS_NUMBER_IN            => mlt_cts_number(1 * 16 - 1 downto 0 * 16),
-        CTS_CODE_IN              => mlt_cts_code(1 * 8 - 1 downto 0 * 8),
-        CTS_INFORMATION_IN       => mlt_cts_information(1 * 8 - 1 downto 0 * 8),
-        CTS_READOUT_TYPE_IN      => mlt_cts_readout_type(1 * 4 - 1 downto 0 * 4),
-        CTS_START_READOUT_IN     => mlt_cts_start_readout(0),
-        CTS_DATA_OUT             => mlt_cts_data(1 * 32 - 1 downto 0 * 32),
-        CTS_DATAREADY_OUT        => mlt_cts_dataready(0),
-        CTS_READOUT_FINISHED_OUT => mlt_cts_readout_finished(0),
-        CTS_READ_IN              => mlt_cts_read(0),
-        CTS_LENGTH_OUT           => mlt_cts_length(1 * 16 - 1 downto 0 * 16),
-        CTS_ERROR_PATTERN_OUT    => mlt_cts_error_pattern(1 * 32 - 1 downto 0 * 32),
-        FEE_DATA_IN              => mlt_fee_data(1 * 16 - 1 downto 0 * 16),
-        FEE_DATAREADY_IN         => mlt_fee_dataready(0),
-        FEE_READ_OUT             => mlt_fee_read(0),
-        FEE_STATUS_BITS_IN       => mlt_fee_status(1 * 32 - 1 downto 0 * 32),
-        FEE_BUSY_IN              => mlt_fee_busy(0),
-        GSC_CLK_IN               => mlt_gsc_clk(0),
-        GSC_INIT_DATAREADY_OUT   => mlt_gsc_init_dataready(0),
-        GSC_INIT_DATA_OUT        => mlt_gsc_init_data(1 * 16 - 1 downto 0 * 16),
-        GSC_INIT_PACKET_NUM_OUT  => mlt_gsc_init_packet(1 * 3 - 1 downto 0 * 3),
-        GSC_INIT_READ_IN         => mlt_gsc_init_read(0),
-        GSC_REPLY_DATAREADY_IN   => mlt_gsc_reply_dataready(0),
-        GSC_REPLY_DATA_IN        => mlt_gsc_reply_data(1 * 16 - 1 downto 0 * 16),
-        GSC_REPLY_PACKET_NUM_IN  => mlt_gsc_reply_packet(1 * 3 - 1 downto 0 * 3),
-        GSC_REPLY_READ_OUT       => mlt_gsc_reply_read(0),
-        GSC_BUSY_IN              => mlt_gsc_busy(0),
-        SLV_ADDR_IN              => BUS_IP_RX.addr(7 downto 0),
-        SLV_READ_IN              => BUS_IP_RX.read,
-        SLV_WRITE_IN             => BUS_IP_RX.write,
-        SLV_BUSY_OUT             => busip0.nack,
-        SLV_ACK_OUT              => busip0.ack,
-        SLV_DATA_IN              => BUS_IP_RX.data,
-        SLV_DATA_OUT             => busip0.data,
-        CFG_GBE_ENABLE_IN        => cfg_gbe_enable,
-        CFG_IPU_ENABLE_IN        => cfg_ipu_enable,
-        CFG_MULT_ENABLE_IN       => cfg_mult_enable,
-        CFG_MAX_FRAME_IN         => cfg_max_frame,
-        CFG_ALLOW_RX_IN          => cfg_allow_rx,
-        CFG_SOFT_RESET_IN        => cfg_soft_rst,
-        CFG_SUBEVENT_ID_IN       => cfg_subevent_id,
-        CFG_SUBEVENT_DEC_IN      => cfg_subevent_dec,
-        CFG_QUEUE_DEC_IN         => cfg_queue_dec,
-        CFG_READOUT_CTR_IN       => cfg_readout_ctr,
-        CFG_READOUT_CTR_VALID_IN => cfg_readout_ctr_valid,
-        CFG_INSERT_TTYPE_IN      => cfg_insert_ttype,
-        CFG_MAX_SUB_IN           => cfg_max_sub,
-        CFG_MAX_QUEUE_IN         => cfg_max_queue,
-        CFG_MAX_SUBS_IN_QUEUE_IN => cfg_max_subs_in_queue,
-        CFG_MAX_SINGLE_SUB_IN    => cfg_max_single_sub,
-        CFG_ADDITIONAL_HDR_IN    => cfg_additional_hdr,
-        CFG_MAX_REPLY_SIZE_IN    => cfg_max_reply,
-        CFG_AUTO_THROTTLE_IN     => cfg_autothrottle,
-        CFG_THROTTLE_PAUSE_IN    => cfg_throttle_pause,
-
-FWD_DST_MAC_IN => FWD_DST_MAC_IN(1 * 48 - 1 downto 0 * 48),
-FWD_DST_IP_IN => FWD_DST_IP_IN(1 * 32 - 1 downto 0 * 32),
-FWD_DST_UDP_IN => FWD_DST_UDP_IN(1 * 16 - 1 downto 0 * 16),
-FWD_DATA_IN => FWD_DATA_IN(1 * 8 - 1 downto 0 * 8),
-FWD_DATA_VALID_IN => FWD_DATA_VALID_IN(0),
-FWD_SOP_IN => FWD_SOP_IN(0),
-FWD_EOP_IN => FWD_EOP_IN(0),
-FWD_READY_OUT => FWD_READY_OUT(0),
-FWD_FULL_OUT => FWD_FULL_OUT(0),
-
-        MONITOR_RX_FRAMES_OUT    => monitor_rx_frames(1 * 32 - 1 downto 0 * 32),
-        MONITOR_RX_BYTES_OUT     => monitor_rx_bytes(1 * 32 - 1 downto 0 * 32),
-        MONITOR_TX_FRAMES_OUT    => monitor_tx_frames(1 * 32 - 1 downto 0 * 32),
-        MONITOR_TX_BYTES_OUT     => monitor_tx_bytes(1 * 32 - 1 downto 0 * 32),
-        MONITOR_TX_PACKETS_OUT   => monitor_tx_packets(1 * 32 - 1 downto 0 * 32),
-        MONITOR_DROPPED_OUT      => monitor_dropped(1 * 32 - 1 downto 0 * 32),
-        MONITOR_GEN_DBG_OUT      => open,
-        MAKE_RESET_OUT           => make_reset0
-      );
-  end generate GEN_LINK_0;
-
-  NO_LINK0_GEN : if (LINKS_ACTIVE(0) = '0') generate
-    make_reset0 <= '0';
-    busip0.data <= (others => '0');
-    busip0.ack  <= '0';
-    busip0.nack <= '0';
-    monitor_rx_frames(1 * 32 - 1 downto 0 * 32) <= (others => '0');
-    monitor_rx_bytes(1 * 32 - 1 downto 0 * 32) <= (others => '0');
-    monitor_tx_frames(1 * 32 - 1 downto 0 * 32) <= (others => '0');
-    monitor_tx_bytes(1 * 32 - 1 downto 0 * 32) <= (others => '0');
-    monitor_tx_packets(1 * 32 - 1 downto 0 * 32) <= (others => '0');
-    monitor_dropped(1 * 32 - 1 downto 0 * 32) <= (others => '0');
-    monitor_gen_dbg  <= (others => '0');
-    make_reset0 <= '0';
-    FWD_READY_OUT(0) <= '0';
-    FWD_FULL_OUT(0) <= '1';
-    mlt_cts_data(1 * 32 - 1 downto 0 * 32) <= (others => '0');
-    mlt_cts_dataready(0) <= '0';
-    mlt_cts_readout_finished(0) <= '0';
-    mlt_cts_length(1 * 16 - 1 downto 0 * 16) <= (others => '0');
-    mlt_cts_error_pattern(1 * 32 - 1 downto 0 * 32) <= (others => '0');                
-  end generate NO_LINK0_GEN;
-
-  BUS_IP_TX.ack  <= busip0.ack or busip1.ack or busip2.ack or busip3.ack when rising_edge(CLK_SYS_IN);
-  BUS_IP_TX.nack <= busip0.nack or busip1.nack or busip2.nack or busip3.nack when rising_edge(CLK_SYS_IN);
-  BUS_IP_TX.data <= busip0.data or busip1.data or busip2.data or busip3.data when rising_edge(CLK_SYS_IN);
-
-  real_ipu_gen : if USE_EXTERNAL_TRBNET_DUMMY = 0 generate
-    ipu_mult : entity work.gbe_ipu_multiplexer
-      generic map(
-        DO_SIMULATION       => DO_SIMULATION,
-        INCLUDE_DEBUG       => INCLUDE_DEBUG,
-        LINK_HAS_READOUT    => LINK_HAS_READOUT,
-        NUMBER_OF_GBE_LINKS => NUMBER_OF_GBE_LINKS
-      )
-      port map(
-        CLK_SYS_IN                  => CLK_SYS_IN,
-        RESET                       => RESET,
-        CTS_NUMBER_IN               => CTS_NUMBER_IN,
-        CTS_CODE_IN                 => CTS_CODE_IN,
-        CTS_INFORMATION_IN          => CTS_INFORMATION_IN,
-        CTS_READOUT_TYPE_IN         => CTS_READOUT_TYPE_IN,
-        CTS_START_READOUT_IN        => CTS_START_READOUT_IN,
-        CTS_DATA_OUT                => CTS_DATA_OUT,
-        CTS_DATAREADY_OUT           => CTS_DATAREADY_OUT,
-        CTS_READOUT_FINISHED_OUT    => CTS_READOUT_FINISHED_OUT,
-        CTS_READ_IN                 => CTS_READ_IN,
-        CTS_LENGTH_OUT              => CTS_LENGTH_OUT,
-        CTS_ERROR_PATTERN_OUT       => CTS_ERROR_PATTERN_OUT,
-        FEE_DATA_IN                 => FEE_DATA_IN,
-        FEE_DATAREADY_IN            => FEE_DATAREADY_IN,
-        FEE_READ_OUT                => FEE_READ_OUT,
-        FEE_STATUS_BITS_IN          => FEE_STATUS_BITS_IN,
-        FEE_BUSY_IN                 => FEE_BUSY_IN,
-        MLT_CTS_NUMBER_OUT          => mlt_cts_number,
-        MLT_CTS_CODE_OUT            => mlt_cts_code,
-        MLT_CTS_INFORMATION_OUT     => mlt_cts_information,
-        MLT_CTS_READOUT_TYPE_OUT    => mlt_cts_readout_type,
-        MLT_CTS_START_READOUT_OUT   => mlt_cts_start_readout,
-        MLT_CTS_DATA_IN             => mlt_cts_data,
-        MLT_CTS_DATAREADY_IN        => mlt_cts_dataready,
-        MLT_CTS_READOUT_FINISHED_IN => mlt_cts_readout_finished,
-        MLT_CTS_READ_OUT            => mlt_cts_read,
-        MLT_CTS_LENGTH_IN           => mlt_cts_length,
-        MLT_CTS_ERROR_PATTERN_IN    => mlt_cts_error_pattern,
-        MLT_FEE_DATA_OUT            => mlt_fee_data,
-        MLT_FEE_DATAREADY_OUT       => mlt_fee_dataready,
-        MLT_FEE_READ_IN             => mlt_fee_read,
-        MLT_FEE_STATUS_BITS_OUT     => mlt_fee_status,
-        MLT_FEE_BUSY_OUT            => mlt_fee_busy,
-        DEBUG_OUT                   => open
-      );
-  end generate real_ipu_gen;
-
-  dummy_ipu_gen : if (USE_EXTERNAL_TRBNET_DUMMY = 1) generate
-    ipu_mult : entity work.gbe_ipu_multiplexer
-      generic map(
-        DO_SIMULATION       => DO_SIMULATION,
-        INCLUDE_DEBUG       => INCLUDE_DEBUG,
-        LINK_HAS_READOUT    => LINK_HAS_READOUT,
-        NUMBER_OF_GBE_LINKS => NUMBER_OF_GBE_LINKS
-      )
-      port map(
-        CLK_SYS_IN                  => CLK_SYS_IN,
-        RESET                       => RESET,
-        CTS_NUMBER_IN               => local_cts_number,
-        CTS_CODE_IN                 => local_cts_code,
-        CTS_INFORMATION_IN          => local_cts_information,
-        CTS_READOUT_TYPE_IN         => local_cts_readout_type,
-        CTS_START_READOUT_IN        => local_cts_start_readout,
-        CTS_DATA_OUT                => open,
-        CTS_DATAREADY_OUT           => open,
-        CTS_READOUT_FINISHED_OUT    => local_cts_readout_finished,
-        CTS_READ_IN                 => '1',
-        CTS_LENGTH_OUT              => open,
-        CTS_ERROR_PATTERN_OUT       => local_cts_status_bits,
-        FEE_DATA_IN                 => local_fee_data,
-        FEE_DATAREADY_IN            => local_fee_dataready,
-        FEE_READ_OUT                => local_fee_read,
-        FEE_STATUS_BITS_IN          => local_fee_status_bits,
-        FEE_BUSY_IN                 => local_fee_busy,
-        MLT_CTS_NUMBER_OUT          => mlt_cts_number,
-        MLT_CTS_CODE_OUT            => mlt_cts_code,
-        MLT_CTS_INFORMATION_OUT     => mlt_cts_information,
-        MLT_CTS_READOUT_TYPE_OUT    => mlt_cts_readout_type,
-        MLT_CTS_START_READOUT_OUT   => mlt_cts_start_readout,
-        MLT_CTS_DATA_IN             => mlt_cts_data,
-        MLT_CTS_DATAREADY_IN        => mlt_cts_dataready,
-        MLT_CTS_READOUT_FINISHED_IN => mlt_cts_readout_finished,
-        MLT_CTS_READ_OUT            => mlt_cts_read,
-        MLT_CTS_LENGTH_IN           => mlt_cts_length,
-        MLT_CTS_ERROR_PATTERN_IN    => mlt_cts_error_pattern,
-        MLT_FEE_DATA_OUT            => mlt_fee_data,
-        MLT_FEE_DATAREADY_OUT       => mlt_fee_dataready,
-        MLT_FEE_READ_IN             => mlt_fee_read,
-        MLT_FEE_STATUS_BITS_OUT     => mlt_fee_status,
-        MLT_FEE_BUSY_OUT            => mlt_fee_busy,
-        DEBUG_OUT                   => open
-      );
-
-    dummy : entity work.gbe_ipu_dummy
-      generic map(
-        DO_SIMULATION    => DO_SIMULATION,
-        FIXED_SIZE_MODE  => FIXED_SIZE_MODE,
-        INCREMENTAL_MODE => INCREMENTAL_MODE,
-        FIXED_SIZE       => FIXED_SIZE,
-        UP_DOWN_MODE     => UP_DOWN_MODE,
-        UP_DOWN_LIMIT    => UP_DOWN_LIMIT,
-        FIXED_DELAY_MODE => FIXED_DELAY_MODE,
-        FIXED_DELAY      => FIXED_DELAY
-      )
-      port map(
-        clk                     => CLK_SYS_IN,
-        rst                     => RESET,
-        GBE_READY_IN            => all_links_ready,
-        CFG_EVENT_SIZE_IN       => dummy_event,
-        CFG_TRIGGERED_MODE_IN   => '0',
-        TRIGGER_IN              => TRIGGER_IN,
-        CTS_NUMBER_OUT          => local_cts_number,
-        CTS_CODE_OUT            => local_cts_code,
-        CTS_INFORMATION_OUT     => local_cts_information,
-        CTS_READOUT_TYPE_OUT    => local_cts_readout_type,
-        CTS_START_READOUT_OUT   => local_cts_start_readout,
-        CTS_DATA_IN             => (others => '0'),
-        CTS_DATAREADY_IN        => '0',
-        CTS_READOUT_FINISHED_IN => local_cts_readout_finished,
-        CTS_READ_OUT            => open,
-        CTS_LENGTH_IN           => (others => '0'),
-        CTS_ERROR_PATTERN_IN    => local_cts_status_bits,
-        -- Data payload interface
-        FEE_DATA_OUT            => local_fee_data,
-        FEE_DATAREADY_OUT       => local_fee_dataready,
-        FEE_READ_IN             => local_fee_read,
-        FEE_STATUS_BITS_OUT     => local_fee_status_bits,
-        FEE_BUSY_OUT            => local_fee_busy
-      );
-
-    -- handler for triggers
-    DUMMY_HANDLER : entity work.trb_net16_gbe_ipu_interface
-      port map(
-        CLK_IPU                  => CLK_SYS_IN,
-        CLK_GBE                  => CLK_125_IN,
-        RESET                    => RESET,
-        --Event information coming from CTS
-        CTS_NUMBER_IN            => CTS_NUMBER_IN,
-        CTS_CODE_IN              => CTS_CODE_IN,
-        CTS_INFORMATION_IN       => CTS_INFORMATION_IN,
-        CTS_READOUT_TYPE_IN      => CTS_READOUT_TYPE_IN,
-        CTS_START_READOUT_IN     => CTS_START_READOUT_IN,
-        --Information sent to CTS
-        --status data, equipped with DHDR
-        CTS_DATA_OUT             => CTS_DATA_OUT,
-        CTS_DATAREADY_OUT        => CTS_DATAREADY_OUT,
-        CTS_READOUT_FINISHED_OUT => CTS_READOUT_FINISHED_OUT,
-        CTS_READ_IN              => CTS_READ_IN,
-        CTS_LENGTH_OUT           => CTS_LENGTH_OUT,
-        CTS_ERROR_PATTERN_OUT    => CTS_ERROR_PATTERN_OUT,
-        -- Data from Frontends
-        FEE_DATA_IN              => FEE_DATA_IN,
-        FEE_DATAREADY_IN         => FEE_DATAREADY_IN,
-        FEE_READ_OUT             => FEE_READ_OUT,
-        FEE_STATUS_BITS_IN       => FEE_STATUS_BITS_IN,
-        FEE_BUSY_IN              => FEE_BUSY_IN,
-        -- slow control interface
-        START_CONFIG_OUT         => open,
-        BANK_SELECT_OUT          => open,
-        CONFIG_DONE_IN           => '1',
-        DATA_GBE_ENABLE_IN       => '1',
-        DATA_IPU_ENABLE_IN       => '1',
-        MULT_EVT_ENABLE_IN       => '1',
-        MAX_SUBEVENT_SIZE_IN     => (others => '0'),
-        MAX_QUEUE_SIZE_IN        => (others => '0'),
-        MAX_SUBS_IN_QUEUE_IN     => (others => '0'),
-        MAX_SINGLE_SUB_SIZE_IN   => (others => '0'),
-        READOUT_CTR_IN           => (others => '0'),
-        READOUT_CTR_VALID_IN     => '0',
-        CFG_AUTO_THROTTLE_IN     => '0',
-        CFG_THROTTLE_PAUSE_IN    => (others => '0'),
-        -- PacketConstructor interface
-        PC_WR_EN_OUT             => open,
-        PC_DATA_OUT              => open,
-        PC_READY_IN              => '1',
-        PC_SOS_OUT               => open,
-        PC_EOS_OUT               => open,
-        PC_EOQ_OUT               => open,
-        PC_SUB_SIZE_OUT          => open,
-        PC_TRIG_NR_OUT           => open,
-        PC_TRIGGER_TYPE_OUT      => open,
-        MONITOR_OUT              => open,
-        DEBUG_OUT                => open
-      );
-  end generate dummy_ipu_gen;
-
-  setup_imp_gen : if (DO_SIMULATION = 0) generate
-    SETUP : gbe_setup
-      port map(
-        CLK                          => CLK_SYS_IN,
-        RESET                        => RESET,
-
-        -- interface to regio bus
-        BUS_ADDR_IN                  => BUS_REG_RX.addr(7 downto 0),
-        BUS_DATA_IN                  => BUS_REG_RX.data,
-        BUS_DATA_OUT                 => BUS_REG_TX.data,
-        BUS_WRITE_EN_IN              => BUS_REG_RX.write,
-        BUS_READ_EN_IN               => BUS_REG_RX.read,
-        BUS_ACK_OUT                  => BUS_REG_TX.ack,
-
-        -- output to gbe_buf
-        GBE_SUBEVENT_ID_OUT          => cfg_subevent_id,
-        GBE_SUBEVENT_DEC_OUT         => cfg_subevent_dec,
-        GBE_QUEUE_DEC_OUT            => cfg_queue_dec,
-        GBE_MAX_FRAME_OUT            => cfg_max_frame,
-        GBE_USE_GBE_OUT              => cfg_gbe_enable,
-        GBE_USE_TRBNET_OUT           => cfg_ipu_enable,
-        GBE_USE_MULTIEVENTS_OUT      => cfg_mult_enable,
-        GBE_READOUT_CTR_OUT          => cfg_readout_ctr,
-        GBE_READOUT_CTR_VALID_OUT    => cfg_readout_ctr_valid,
-        GBE_ALLOW_RX_OUT             => cfg_allow_rx,
-        GBE_ADDITIONAL_HDR_OUT       => cfg_additional_hdr,
-        GBE_INSERT_TTYPE_OUT         => cfg_insert_ttype,
-        GBE_SOFT_RESET_OUT           => cfg_soft_rst,
-        GBE_MAX_REPLY_OUT            => cfg_max_reply,
-        GBE_MAX_SUB_OUT              => cfg_max_sub,
-        GBE_MAX_QUEUE_OUT            => cfg_max_queue,
-        GBE_MAX_SUBS_IN_QUEUE_OUT    => cfg_max_subs_in_queue,
-        GBE_MAX_SINGLE_SUB_OUT       => cfg_max_single_sub,
-        GBE_AUTOTHROTTLE_OUT         => cfg_autothrottle,
-        GBE_THROTTLE_PAUSE_OUT       => cfg_throttle_pause,
-        MONITOR_RX_BYTES_IN          => sum_rx_bytes,
-        MONITOR_RX_FRAMES_IN         => sum_rx_frames,
-        MONITOR_TX_BYTES_IN          => sum_tx_bytes,
-        MONITOR_TX_FRAMES_IN         => sum_tx_frames,
-        MONITOR_TX_PACKETS_IN        => sum_tx_packets,
-        MONITOR_DROPPED_IN           => sum_dropped,
-        MONITOR_SELECT_REC_IN        => (others => '0'), --dbg_select_rec,
-        MONITOR_SELECT_REC_BYTES_IN  => (others => '0'), --dbg_select_rec_bytes,
-        MONITOR_SELECT_SENT_BYTES_IN => (others => '0'), --dbg_select_sent_bytes,
-        MONITOR_SELECT_SENT_IN       => (others => '0'), --dbg_select_sent,
-        MONITOR_SELECT_DROP_IN_IN    => (others => '0'), --dbg_select_drop_in,
-        MONITOR_SELECT_DROP_OUT_IN   => (others => '0'), --dbg_select_drop_out,
-        MONITOR_SELECT_GEN_DBG_IN    => monitor_gen_dbg, --dbg_select_gen,
-        MONITOR_IP_IN                => my_ip,
-        DUMMY_EVENT_SIZE_OUT         => dummy_event,
-        DUMMY_TRIGGERED_MODE_OUT     => dummy_mode,
-        DATA_HIST_IN                 => (others => (others => '0')), --dbg_hist,
-        SCTRL_HIST_IN                => (others => (others => '0')) --dbg_hist2
-      );
-  end generate;
-
-  setup_sim_gen : if (DO_SIMULATION = 1) generate
-    cfg_subevent_id       <= x"12345678";
-    cfg_subevent_dec      <= x"00010002";
-    cfg_queue_dec         <= x"00030004";
-    cfg_max_frame         <= x"0578";
-    cfg_gbe_enable        <= '1';
-    cfg_ipu_enable        <= '1';
-    cfg_mult_enable       <= '0';
-    cfg_readout_ctr       <= x"000000";
-    cfg_readout_ctr_valid <= '0';
-    cfg_allow_rx          <= '1';
-    cfg_additional_hdr    <= '0';
-    cfg_insert_ttype      <= '0';
-    cfg_soft_rst          <= '0';
-    cfg_max_reply         <= x"0000fff0";
-    cfg_max_sub           <= x"fff0";
-    cfg_max_queue         <= x"fff0";
-    cfg_max_subs_in_queue <= x"0001";
-    cfg_max_single_sub    <= x"fff0";
-    cfg_throttle_pause <= x"0000";
-
-  end generate;
-
-  NOSCTRL_MAP_GEN : if (LINK_HAS_SLOWCTRL = "0000") generate
-    GSC_INIT_DATAREADY_OUT  <= '0';
-    GSC_INIT_DATA_OUT       <= (others => '0');
-    GSC_INIT_PACKET_NUM_OUT <= (others => '0');
-    GSC_REPLY_READ_OUT      <= '1';
-    mlt_gsc_clk             <= (others => '0');
-    mlt_gsc_init_read       <= (others => '0');
-    mlt_gsc_reply_dataready <= (others => '0');
-    mlt_gsc_reply_data      <= (others => '0');
-    mlt_gsc_reply_packet    <= (others => '0');
-    mlt_gsc_busy            <= (others => '0');
-  end generate NOSCTRL_MAP_GEN;
-
-  SCTRL_MAP_GEN : if (LINK_HAS_SLOWCTRL /= "0000") generate
-    SCTRL_LOOP_GEN : for i in 0 to NUMBER_OF_GBE_LINKS - 1 generate
-      ACTIVE_MAP_GEN : if (LINK_HAS_SLOWCTRL(i) = '1') generate
-        mlt_gsc_clk(i)                                     <= GSC_CLK_IN;
-        GSC_INIT_DATAREADY_OUT                             <= mlt_gsc_init_dataready(i);
-        GSC_INIT_DATA_OUT                                  <= mlt_gsc_init_data((i + 1) * 16 - 1 downto i * 16);
-        GSC_INIT_PACKET_NUM_OUT                            <= mlt_gsc_init_packet((i + 1) * 3 - 1 downto i * 3);
-        mlt_gsc_init_read(i)                               <= GSC_INIT_READ_IN;
-        mlt_gsc_reply_dataready(i)                         <= GSC_REPLY_DATAREADY_IN;
-        mlt_gsc_reply_data((i + 1) * 16 - 1 downto i * 16) <= GSC_REPLY_DATA_IN;
-        mlt_gsc_reply_packet((i + 1) * 3 - 1 downto i * 3) <= GSC_REPLY_PACKET_NUM_IN;
-        GSC_REPLY_READ_OUT                                 <= mlt_gsc_reply_read(i);
-        mlt_gsc_busy(i)                                    <= GSC_BUSY_IN;
-      end generate ACTIVE_MAP_GEN;
-
-      INACTIVE_MAP_GEN : if (LINK_HAS_SLOWCTRL(i) = '0') generate
-        mlt_gsc_clk(i)                                     <= '0';
-        mlt_gsc_init_read(i)                               <= '0';
-        mlt_gsc_reply_dataready(i)                         <= '0';
-        mlt_gsc_reply_data((i + 1) * 16 - 1 downto i * 16) <= (others => '0');
-        mlt_gsc_reply_packet((i + 1) * 3 - 1 downto i * 3) <= (others => '0');
-        mlt_gsc_busy(i)                                    <= '0';
-      end generate INACTIVE_MAP_GEN;
-    end generate SCTRL_LOOP_GEN;
-  end generate SCTRL_MAP_GEN;
-
-  sum_rx_bytes   <= monitor_rx_bytes(4 * 32 - 1 downto 3 * 32) + monitor_rx_bytes(3 * 32 - 1 downto 2 * 32) + monitor_rx_bytes(2 * 32 - 1 downto 1 * 32) + monitor_rx_bytes(1 * 32 - 1 downto 0 * 32);
-  sum_rx_frames  <= monitor_rx_frames(4 * 32 - 1 downto 3 * 32) + monitor_rx_frames(3 * 32 - 1 downto 2 * 32) + monitor_rx_frames(2 * 32 - 1 downto 1 * 32) + monitor_rx_frames(1 * 32 - 1 downto 0 * 32);
-  sum_tx_bytes   <= monitor_tx_bytes(4 * 32 - 1 downto 3 * 32) + monitor_tx_bytes(3 * 32 - 1 downto 2 * 32) + monitor_tx_bytes(2 * 32 - 1 downto 1 * 32) + monitor_tx_bytes(1 * 32 - 1 downto 0 * 32);
-  sum_tx_frames  <= monitor_tx_frames(4 * 32 - 1 downto 3 * 32) + monitor_tx_frames(3 * 32 - 1 downto 2 * 32) + monitor_tx_frames(2 * 32 - 1 downto 1 * 32) + monitor_tx_frames(1 * 32 - 1 downto 0 * 32);
-  sum_tx_packets <= monitor_tx_packets(4 * 32 - 1 downto 3 * 32) + monitor_tx_packets(3 * 32 - 1 downto 2 * 32) + monitor_tx_packets(2 * 32 - 1 downto 1 * 32) + monitor_tx_packets(1 * 32 - 1 downto 0 * 32);
-  sum_dropped    <= monitor_dropped(4 * 32 - 1 downto 3 * 32) + monitor_dropped(3 * 32 - 1 downto 2 * 32) + monitor_dropped(2 * 32 - 1 downto 1 * 32) + monitor_dropped(1 * 32 - 1 downto 0 * 32);
-
-  include_debug_gen : if (INCLUDE_DEBUG = 1) generate
---    DEBUG_OUT(63 downto 0)   <= monitor_gen_dbg(4 * 64 - 1 downto 3 * 64);
---    DEBUG_OUT(127 downto 65) <= (others => '0');
-  end generate;
-
-  testbench_sim : if DO_SIMULATION = 1 generate
-    clk_125_rx_from_pcs(0) <= CLK_125_IN;
-    clk_125_rx_from_pcs(1) <= CLK_125_IN;
-    clk_125_rx_from_pcs(2) <= CLK_125_IN;
-    clk_125_rx_from_pcs(3) <= CLK_125_IN;
-
-    done_generate : for i in 0 to 3 generate
-      process
-      begin
-        mac_tx_done(i) <= '0';
-        wait until rising_edge(mac_fifoeof(i));
-        wait until rising_edge(clk_125_rx_from_pcs(i));
-        wait until rising_edge(clk_125_rx_from_pcs(i));
-        wait until rising_edge(clk_125_rx_from_pcs(i));
-        wait until rising_edge(clk_125_rx_from_pcs(i));
-        wait until rising_edge(clk_125_rx_from_pcs(i));
-        wait until rising_edge(clk_125_rx_from_pcs(i));
-        mac_tx_done(i) <= '1';
-        wait until rising_edge(clk_125_rx_from_pcs(i));
-      end process;
-    end generate done_generate;
-
-    process
-    begin
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_tx_read(0) <= mac_fifoavail(0);
-      mac_tx_read(1) <= mac_fifoavail(1);
-      mac_tx_read(2) <= mac_fifoavail(2);
-      mac_tx_read(3) <= mac_fifoavail(3);
-    end process;
-
-    mac_rx_eof(1)                       <= mac_rx_eof(0);
-    mac_rx_eof(2)                       <= mac_rx_eof(0);
-    mac_rx_eof(3)                       <= mac_rx_eof(0);
-    mac_rx_write(1)                     <= mac_rx_write(0);
-    mac_rx_write(2)                     <= mac_rx_write(0);
-    mac_rx_write(3)                     <= mac_rx_write(0);
-    mac_rx_data(2 * 8 - 1 downto 1 * 8) <= mac_rx_data(1 * 8 - 1 downto 0 * 8);
-    mac_rx_data(3 * 8 - 1 downto 2 * 8) <= mac_rx_data(1 * 8 - 1 downto 0 * 8);
-    mac_rx_data(4 * 8 - 1 downto 3 * 8) <= mac_rx_data(1 * 8 - 1 downto 0 * 8);
-
-    testbench_proc : process
-    begin
-
-      --trigger <= '0';
-      --gbe_ready <= '0';
-      mac_rx_write(0)                     <= '0';
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"00";
-      mac_rx_eof(0)                       <= '0';
-
-      wait for 5 us;
-
-      -- FIRST FRAME UDP - DHCP Offer
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_write(0)                     <= '1';
-      -- dest mac
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"ff";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"ff";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"ff";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"ff";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"ff";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"ff";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      -- src mac
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"00";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"aa";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"bb";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"cc";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"dd";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"ee";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      -- frame type
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"08";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"00";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      -- ip headers
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"45";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"10";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"01";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"5a";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"49";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"00";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"00";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"00";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"ff";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"11"; -- udp
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"cc";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"cc";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"c0";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"a8";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"00";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"01";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"c0";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"a8";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"00";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"02";
-      -- udp headers
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"00";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"43";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"00";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"44";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"02";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"2c";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"aa";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"bb";
-      -- dhcp data
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"02";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"01";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"06";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"00";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"ff"; --transcation id
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"ff"; --transcation id
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"fa"; --transcation id
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"ce"; --transcation id
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"00";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"00";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"00";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"00";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"00";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"00";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"00";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"00";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"c0";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"a8";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"00";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"10";
-
-      for i in 0 to 219 loop
-        wait until rising_edge(clk_125_rx_from_pcs(0));
-        mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"00";
-      end loop;
-
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"35";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"01";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"02";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"00";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_eof(0) <= '1';
-
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_write(0) <= '0';
-      mac_rx_eof(0)   <= '0';
-
-      wait for 6 us;
-
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_write(0)                     <= '1';
-      -- dest mac
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"ff";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"ff";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"ff";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"ff";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"ff";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"ff";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      -- src mac
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"00";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"aa";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"bb";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"cc";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"dd";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"ee";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      -- frame type
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"08";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"00";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      -- ip headers
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"45";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"10";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"01";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"5a";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"49";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"00";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"00";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"00";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"ff";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"11"; -- udp
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"cc";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"cc";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"c0";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"a8";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"00";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"01";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"c0";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"a8";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"00";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"02";
-      -- udp headers
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"00";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"43";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"00";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"44";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"02";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"2c";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"aa";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"bb";
-      -- dhcp data
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"02";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"01";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"06";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"00";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"ff";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"ff";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"fa";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"ce";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"00";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"00";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"00";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"00";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"00";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"00";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"00";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"00";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"c0";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"a8";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"00";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"10";
-
-      for i in 0 to 219 loop
-        wait until rising_edge(clk_125_rx_from_pcs(0));
-        mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"00";
-      end loop;
-
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"35";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"01";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"05";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_data(1 * 8 - 1 downto 0 * 8) <= x"00";
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_eof(0) <= '1';
-
-      wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_write(0) <= '0';
-      mac_rx_eof(0)   <= '0';
-
-      wait for 5 us;
-
-      wait for 2 us;
-
-      --gbe_ready <= '1';
-
-      wait for 1 us;
-
-      --trigger <= '1';
-      
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_write(0) <= '1';
-  -- dest mac
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"ff";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"ff";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"ff";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"ff";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"ff";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"ff";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-  -- src mac
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"00";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"aa";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"bb";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"cc";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"dd";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"ee";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-  -- frame type
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"08";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"00";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-  -- ip headers
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"45";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"10";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"01";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"5a";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"49";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"00";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"00";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"00";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"ff";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"01";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"cc";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"cc";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"c0";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"a8";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"00";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"01";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"c0";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"a8";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"00";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"02";
-  -- ping headers
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"08";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"00";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"47";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"d3";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"0d";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"3c";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"00";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"01";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-  -- ping data
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"8c";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"da";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"e7";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"4d";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"36";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"c4";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"0d";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"00";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"01";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"02";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"03";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"04";       
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"05";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"06";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"07";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"08";
-    
-    -- ping data
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"e0";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"01";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"e0";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"01";       
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"e0";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"01";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"e0";
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_data(1 * 8 - 1 downto 0 * 8)                <= x"01";
-    
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-      mac_rx_eof(0) <= '1';
-        mac_rx_data(1 * 8 - 1 downto 0 * 8)            <= x"aa";
-    
-    wait until rising_edge(clk_125_rx_from_pcs(0));
-    mac_rx_write(0) <='0';
-    mac_rx_eof(0) <= '0';
-
-
-    wait for 10 us;
-
--- ETHERNET PAUSE FRAME
-
-
---             wait until rising_edge(clk_125_rx_from_pcs(0));
---             mac_rx_write(0) <= '1';
---     -- dest mac
---             mac_rx_data(1 * 8 - 1 downto 0 * 8)             <= x"01";
---             wait until rising_edge(clk_125_rx_from_pcs(0));
---             mac_rx_data(1 * 8 - 1 downto 0 * 8)             <= x"80";
---             wait until rising_edge(clk_125_rx_from_pcs(0));
---             mac_rx_data(1 * 8 - 1 downto 0 * 8)             <= x"c2";
---             wait until rising_edge(clk_125_rx_from_pcs(0));
---             mac_rx_data(1 * 8 - 1 downto 0 * 8)             <= x"00";
---             wait until rising_edge(clk_125_rx_from_pcs(0));
---             mac_rx_data(1 * 8 - 1 downto 0 * 8)             <= x"00";
---             wait until rising_edge(clk_125_rx_from_pcs(0));
---             mac_rx_data(1 * 8 - 1 downto 0 * 8)             <= x"01";
---             wait until rising_edge(clk_125_rx_from_pcs(0));
---     -- src mac
---             mac_rx_data(1 * 8 - 1 downto 0 * 8)             <= x"00";
---             wait until rising_edge(clk_125_rx_from_pcs(0));
---             mac_rx_data(1 * 8 - 1 downto 0 * 8)             <= x"aa";
---             wait until rising_edge(clk_125_rx_from_pcs(0));
---             mac_rx_data(1 * 8 - 1 downto 0 * 8)             <= x"bb";
---             wait until rising_edge(clk_125_rx_from_pcs(0));
---             mac_rx_data(1 * 8 - 1 downto 0 * 8)             <= x"cc";
---             wait until rising_edge(clk_125_rx_from_pcs(0));
---             mac_rx_data(1 * 8 - 1 downto 0 * 8)             <= x"dd";
---             wait until rising_edge(clk_125_rx_from_pcs(0));
---             mac_rx_data(1 * 8 - 1 downto 0 * 8)             <= x"ee";
---             wait until rising_edge(clk_125_rx_from_pcs(0));
---     -- frame type
---             mac_rx_data(1 * 8 - 1 downto 0 * 8)             <= x"88";
---             wait until rising_edge(clk_125_rx_from_pcs(0));
---             mac_rx_data(1 * 8 - 1 downto 0 * 8)             <= x"08";
---             wait until rising_edge(clk_125_rx_from_pcs(0)); 
---             mac_rx_data(1 * 8 - 1 downto 0 * 8)             <= x"00";
---             wait until rising_edge(clk_125_rx_from_pcs(0));
---             mac_rx_data(1 * 8 - 1 downto 0 * 8)             <= x"01";
---             wait until rising_edge(clk_125_rx_from_pcs(0));
---             mac_rx_data(1 * 8 - 1 downto 0 * 8)             <= x"ff";
---             wait until rising_edge(clk_125_rx_from_pcs(0));
---             mac_rx_data(1 * 8 - 1 downto 0 * 8)             <= x"ff";
---             wait until rising_edge(clk_125_rx_from_pcs(0));
--- 
---             for empty_b_ctr in 0 to 40 loop
---               mac_rx_data(1 * 8 - 1 downto 0 * 8)           <= x"00";
---               wait until rising_edge(clk_125_rx_from_pcs(0));
---             end loop;
---             mac_rx_eof(0) <= '1';
---             mac_rx_data(1 * 8 - 1 downto 0 * 8)             <= x"00";
---             wait until rising_edge(clk_125_rx_from_pcs(0));
---             mac_rx_write(0) <='0';
---             mac_rx_eof(0) <= '0';
-
-      wait;
-
-    end process testbench_proc;
-
-  end generate testbench_sim;
-
-end architecture RTL;