diff --git a/libraries/io/tr_10GbE/src/vhdl/tr_10GbE.vhd b/libraries/io/tr_10GbE/src/vhdl/tr_10GbE.vhd
index fb9412af4dfc3ab142875068423764a28a2cfa2e..18de8df52a034353db4a2280b037fd77a1e1ebc3 100644
--- a/libraries/io/tr_10GbE/src/vhdl/tr_10GbE.vhd
+++ b/libraries/io/tr_10GbE/src/vhdl/tr_10GbE.vhd
@@ -23,12 +23,11 @@
 -- Description
 --
 -- . Loop back options:
---                         ST                      XGMII               XAUI
---                          |                        |                   |
---    snk_in  --> fifo ---\-|-/--> tech_mac_10g ---\-|-/--> tr_xaui ---\-|-/-->  i/o pins
---    src_out <--      <--/ |                   <--/ | \---         <--/ | \--
+--                       ST                  XGMII            XAUI
+--                        |                    |               |
+--    snk_in  --> fifo ---|--> tech_mac_10g ---|--> tr_xaui ---|-->  i/o pins
+--    src_out <--      <--|---              <--|---         <--|---
 --
---            g_loopback_dp              g_loopback_xgmii       g_loopback_xaui
 --
 
 LIBRARY IEEE, common_lib, dp_lib, diag_lib, tr_xaui_lib, technology_lib, tech_mac_10g_lib;
@@ -52,9 +51,6 @@ ENTITY tr_10GbE IS
     g_use_mdio               : BOOLEAN;
     g_mdio_epcs_dis          : BOOLEAN := FALSE; -- TRUE disables EPCS on init; e.g. to target a 10GbE card in PC that does not support it 
     g_pkt_len                : NATURAL := 100;
-    g_loopback_dp            : BOOLEAN := FALSE;
-    g_loopback_xgmii         : BOOLEAN := FALSE; 
-    g_loopback_xaui          : BOOLEAN := FALSE;
     g_word_alignment_padding : BOOLEAN := FALSE
   );
   PORT (
@@ -128,30 +124,15 @@ ARCHITECTURE str OF tr_10GbE IS
   SIGNAL dp_fifo_fill_tx_src_out_arr    : t_dp_sosi_arr(g_nof_macs-1 DOWNTO 0); 
   SIGNAL dp_fifo_fill_tx_src_in_arr     : t_dp_siso_arr(g_nof_macs-1 DOWNTO 0);
 
-  SIGNAL mac_10g_snk_in_arr             : t_dp_sosi_arr(g_nof_macs-1 DOWNTO 0); 
-  SIGNAL mac_10g_snk_out_arr            : t_dp_siso_arr(g_nof_macs-1 DOWNTO 0);
-
   SIGNAL mac_10g_src_out_arr            : t_dp_sosi_arr(g_nof_macs-1 DOWNTO 0); 
   SIGNAL mac_10g_src_in_arr             : t_dp_siso_arr(g_nof_macs-1 DOWNTO 0);
 
-  SIGNAL dp_fifo_dc_rx_snk_in_arr       : t_dp_sosi_arr(g_nof_macs-1 DOWNTO 0); 
-  SIGNAL dp_fifo_dc_rx_snk_out_arr      : t_dp_siso_arr(g_nof_macs-1 DOWNTO 0);
-
   SIGNAL dp_fifo_dc_rx_src_out_arr      : t_dp_sosi_arr(g_nof_macs-1 DOWNTO 0); 
   SIGNAL dp_fifo_dc_rx_src_in_arr       : t_dp_siso_arr(g_nof_macs-1 DOWNTO 0);
 
   SIGNAL mac_xgmii_tx_dc_arr            : t_xgmii_dc_arr(g_nof_macs-1 DOWNTO 0);
   SIGNAL mac_xgmii_rx_dc_arr            : t_xgmii_dc_arr(g_nof_macs-1 DOWNTO 0);
 
-  SIGNAL xaui_xgmii_tx_dc_arr           : t_xgmii_dc_arr(g_nof_macs-1 DOWNTO 0);
-  SIGNAL xaui_xgmii_rx_dc_arr           : t_xgmii_dc_arr(g_nof_macs-1 DOWNTO 0);
-
-  SIGNAL xaui_tx_arr                    : t_xaui_arr(g_nof_macs-1 DOWNTO 0);  
-  SIGNAL xaui_rx_arr                    : t_xaui_arr(g_nof_macs-1 DOWNTO 0);
-
-  SIGNAL serial_tx_arr                  : STD_LOGIC_VECTOR(g_nof_macs-1 DOWNTO 0);
-  SIGNAL serial_rx_arr                  : STD_LOGIC_VECTOR(g_nof_macs-1 DOWNTO 0);
-  
 BEGIN
 
   ---------------------------------------------------------------------------------------
@@ -213,154 +194,97 @@ BEGIN
   END GENERATE;
   
   
-  ---------------------------------------------------------------------------------------
-  -- DP loopback
-  ---------------------------------------------------------------------------------------
-  gen_loopback_dp : IF g_loopback_dp=TRUE GENERATE
-    -- DP loopback Tx-Rx
-    dp_fifo_fill_tx_src_in_arr <= dp_fifo_dc_rx_snk_out_arr;
-    dp_fifo_dc_rx_snk_in_arr   <= dp_fifo_fill_tx_src_out_arr;
-    
-    rx_rst_arr <= tx_rst_arr;
-    rx_clk_arr <= tx_clk_arr;
-  END GENERATE;
-  
   ---------------------------------------------------------------------------------------
   -- DP-MAC connect
   ---------------------------------------------------------------------------------------
-  gen_connect_dp : IF g_loopback_dp=FALSE GENERATE
-  
-    -- DP-MAC connect Tx-Tx
-    dp_fifo_fill_tx_src_in_arr <= mac_10g_snk_out_arr;
-    mac_10g_snk_in_arr         <= dp_fifo_fill_tx_src_out_arr;
-  
-    -- DP-MAC connect Rx-Rx
-    mac_10g_src_in_arr       <= dp_fifo_dc_rx_snk_out_arr;
-    dp_fifo_dc_rx_snk_in_arr <= mac_10g_src_out_arr;
-
-    gen_tech_mac_10g : FOR i IN 0 TO g_nof_macs-1 GENERATE
-      u_tech_mac_10g : ENTITY tech_mac_10g_lib.tech_mac_10g
-      GENERIC MAP (
-        g_technology          => g_technology,
-        g_pre_header_padding  => g_word_alignment_padding
-      )
-      PORT MAP (
-        -- MM
-        mm_clk           => mm_clk,
-        mm_rst           => mm_rst,
-        csr_mosi         => reg_mac_mosi_arr(i),     -- CSR = control status register
-        csr_miso         => reg_mac_miso_arr(i),
-      
-        -- ST
-        tx_clk_156       => tx_clk_arr(i),           -- 156.25 MHz local reference
-        tx_rst           => tx_rst_arr(i),
-        tx_snk_in        => mac_10g_snk_in_arr(i),   -- 64 bit data
-        tx_snk_out       => mac_10g_snk_out_arr(i),
-        
-        rx_clk_156       => rx_clk_arr(i),           -- 156.25 MHz
-        rx_rst           => rx_rst_arr(i),
-        rx_src_out       => mac_10g_src_out_arr(i),  -- 64 bit data
-        rx_src_in        => mac_10g_src_in_arr(i), 
-        
-        -- XGMII
-        xgmii_tx_data    => mac_xgmii_tx_dc_arr(i),  -- 72 bit
-        xgmii_rx_data    => mac_xgmii_rx_dc_arr(i)   -- 72 bit
-      );
-    END GENERATE;
-
-    ---------------------------------------------------------------------------------------
-    -- XGMII loopback
-    ---------------------------------------------------------------------------------------
-    gen_loopback_xgmii: IF g_loopback_xgmii = TRUE GENERATE
-      mac_xgmii_rx_dc_arr  <= mac_xgmii_tx_dc_arr;    -- MAC side loopback Tx-Rx
-      xaui_xgmii_rx_dc_arr <= xaui_xgmii_tx_dc_arr;   -- PHY side loopback Tx-Rx
-    END GENERATE;
-
-    gen_connect_xgmii: IF g_loopback_xgmii = FALSE GENERATE
-      xaui_xgmii_tx_dc_arr <= mac_xgmii_tx_dc_arr;    -- MAC-PHY connect Tx-Tx
-      mac_xgmii_rx_dc_arr  <= xaui_xgmii_rx_dc_arr;   -- MAC-PHY connect Rx-Rx
-    END GENERATE;
-
-    ---------------------------------------------------------------------------------------
-    -- XGMII-XAUI connect
-    ---------------------------------------------------------------------------------------
-    u_tr_xaui : ENTITY tr_xaui_lib.tr_xaui
+
+  gen_tech_mac_10g : FOR i IN 0 TO g_nof_macs-1 GENERATE
+    u_tech_mac_10g : ENTITY tech_mac_10g_lib.tech_mac_10g
     GENERIC MAP (
-      g_technology            => g_technology,
-      g_sim                   => g_sim,
-      g_sim_level             => g_sim_level,
-      g_use_xgmii             => TRUE, -- Use XGMII direct
-      g_nof_xaui              => g_nof_macs,
-      g_mdio                  => g_use_mdio,
-      g_mdio_epcs_dis         => g_mdio_epcs_dis
+      g_technology          => g_technology,
+      g_pre_header_padding  => g_word_alignment_padding
     )
     PORT MAP (
-      -- Transceiver PLL reference clock   
-      tr_clk                  => tr_clk,   -- = tr_clk_156 = tx_clk_arr
-      tr_rst                  => tr_rst,   -- = tr_rst_156
-  
-      -- Calibration & reconfig clock
-      cal_rec_clk             => cal_rec_clk,
-   
-      -- MM clock for register of optional MDIO master
-      mm_clk                  => mm_clk,
-      mm_rst                  => mm_rst,
-  
-      -- Streaming TX interfaces
-      tx_clk_arr              => tx_clk_arr,
-      tx_rst_arr              => tx_rst_arr,
-  
-      -- Streaming RX interfaces
-      rx_clk_arr_out          => rx_clk_arr,
-      rx_clk_arr_in           => rx_clk_arr,
-      rx_rst_arr              => rx_rst_arr,
-  
-      -- Direct XGMII interface
-      xgmii_tx_dc_arr         => xaui_xgmii_tx_dc_arr,
-      xgmii_rx_dc_arr         => xaui_xgmii_rx_dc_arr,
-       
-      --Serial I/O
-      xaui_tx_arr             => xaui_tx_arr,
-      xaui_rx_arr             => xaui_rx_arr,
-  
-      -- XAUI PHY IP MM control/status
-      xaui_mosi               => xaui_mosi,
-      xaui_miso               => xaui_miso,
-        
-      -- MDIO master = mm slave
-      mdio_mosi_arr           => mdio_mosi_arr(g_nof_macs-1 DOWNTO 0),
-      mdio_miso_arr           => mdio_miso_arr(g_nof_macs-1 DOWNTO 0),
-  
-      -- MDIO External clock and serial data.
-      mdio_rst                => mdio_rst,
-      mdio_mdc                => mdio_mdc_arr,
-      mdio_mdat_in            => mdio_mdat_in_arr,
-      mdio_mdat_oen           => mdio_mdat_oen_arr
+      -- MM
+      mm_clk           => mm_clk,
+      mm_rst           => mm_rst,
+      csr_mosi         => reg_mac_mosi_arr(i),     -- CSR = control status register
+      csr_miso         => reg_mac_miso_arr(i),
+    
+      -- ST
+      tx_clk_156       => tx_clk_arr(i),           -- 156.25 MHz local reference
+      tx_rst           => tx_rst_arr(i),
+      tx_snk_in        => dp_fifo_fill_tx_src_out_arr(i),   -- 64 bit data
+      tx_snk_out       => dp_fifo_fill_tx_src_in_arr(i),
+      
+      rx_clk_156       => rx_clk_arr(i),           -- 156.25 MHz
+      rx_rst           => rx_rst_arr(i),
+      rx_src_out       => mac_10g_src_out_arr(i),  -- 64 bit data
+      rx_src_in        => mac_10g_src_in_arr(i), 
+      
+      -- XGMII
+      xgmii_tx_data    => mac_xgmii_tx_dc_arr(i),  -- 72 bit
+      xgmii_rx_data    => mac_xgmii_rx_dc_arr(i)   -- 72 bit
     );
   END GENERATE;
 
-
   ---------------------------------------------------------------------------------------
-  -- PHY IO loopback
+  -- XGMII-XAUI connect
   ---------------------------------------------------------------------------------------
-  
-  gen_loopback_phy_io: IF g_loopback_xaui = TRUE GENERATE
-    -- XAUI
-    xaui_tx_out_arr <= xaui_rx_in_arr;   -- pin external loopback Tx-Rx
-    xaui_rx_arr     <= xaui_tx_arr;      -- PHY internal loopback Tx-Rx
-    -- 10GBASE-R
-    serial_tx_out_arr <= serial_rx_in_arr;   -- pin external loopback Tx-Rx
-    serial_rx_arr     <= serial_tx_arr;      -- PHY internal loopback Tx-Rx
-  END GENERATE;
+  u_tr_xaui : ENTITY tr_xaui_lib.tr_xaui
+  GENERIC MAP (
+    g_technology            => g_technology,
+    g_sim                   => g_sim,
+    g_sim_level             => g_sim_level,
+    g_use_xgmii             => TRUE, -- Use XGMII direct
+    g_nof_xaui              => g_nof_macs,
+    g_use_mdio              => g_use_mdio,
+    g_mdio_epcs_dis         => g_mdio_epcs_dis
+  )
+  PORT MAP (
+    -- Transceiver PLL reference clock   
+    tr_clk                  => tr_clk,   -- = tr_clk_156 = tx_clk_arr
+    tr_rst                  => tr_rst,   -- = tr_rst_156
+
+    -- Calibration & reconfig clock
+    cal_rec_clk             => cal_rec_clk,
+ 
+    -- MM clock for register of optional MDIO master
+    mm_clk                  => mm_clk,
+    mm_rst                  => mm_rst,
+
+    -- Streaming TX interfaces
+    tx_clk_arr              => tx_clk_arr,
+    tx_rst_arr              => tx_rst_arr,
+
+    -- Streaming RX interfaces
+    rx_clk_arr_out          => rx_clk_arr,
+    rx_clk_arr_in           => rx_clk_arr,
+    rx_rst_arr              => rx_rst_arr,
+
+    -- Direct XGMII interface
+    xgmii_tx_dc_arr         => mac_xgmii_tx_dc_arr,
+    xgmii_rx_dc_arr         => mac_xgmii_rx_dc_arr,
+     
+    --Serial I/O
+    xaui_tx_arr             => xaui_tx_out_arr,
+    xaui_rx_arr             => xaui_rx_in_arr,
+
+    -- XAUI PHY IP MM control/status
+    xaui_mosi               => xaui_mosi,
+    xaui_miso               => xaui_miso,
+      
+    -- MDIO master = mm slave
+    mdio_mosi_arr           => mdio_mosi_arr(g_nof_macs-1 DOWNTO 0),
+    mdio_miso_arr           => mdio_miso_arr(g_nof_macs-1 DOWNTO 0),
+
+    -- MDIO External clock and serial data.
+    mdio_rst                => mdio_rst,
+    mdio_mdc                => mdio_mdc_arr,
+    mdio_mdat_in            => mdio_mdat_in_arr,
+    mdio_mdat_oen           => mdio_mdat_oen_arr
+  );
 
-  gen_connect_phy_io: IF g_loopback_xaui = FALSE GENERATE
-    -- XAUI
-    xaui_tx_out_arr <= xaui_tx_arr;        -- PHY-pin connect Tx-Tx
-    xaui_rx_arr     <= xaui_rx_in_arr;     -- PHY-pin connect Rx-Rx
-    -- 10GBASE-R
-    serial_tx_out_arr <= serial_tx_arr;     -- PHY-pin connect Tx-Tx
-    serial_rx_arr     <= serial_rx_in_arr;  -- PHY-pin connect Rx-Rx
-  END GENERATE;
 
   ---------------------------------------------------------------------------------------
   -- RX FIFO: rx_clk -> dp_clk
@@ -378,8 +302,8 @@ BEGIN
       rd_rst      => dp_rst,
       rd_clk      => dp_clk,
   
-      snk_out     => dp_fifo_dc_rx_snk_out_arr(i),
-      snk_in      => dp_fifo_dc_rx_snk_in_arr(i),
+      snk_out     => mac_10g_src_in_arr(i),
+      snk_in      => mac_10g_src_out_arr(i),
   
       src_in      => dp_fifo_dc_rx_src_in_arr(i), 
       src_out     => dp_fifo_dc_rx_src_out_arr(i)
diff --git a/libraries/io/tr_10GbE/tb/vhdl/tb_tb_tr_10GbE.vhd b/libraries/io/tr_10GbE/tb/vhdl/tb_tb_tr_10GbE.vhd
index 635117308dba84b13018b5e4e485766315375137..9c38a3ae1d05db6b495675080c25c1e4b5676d5d 100644
--- a/libraries/io/tr_10GbE/tb/vhdl/tb_tb_tr_10GbE.vhd
+++ b/libraries/io/tr_10GbE/tb/vhdl/tb_tb_tr_10GbE.vhd
@@ -46,20 +46,14 @@ BEGIN
 -- g_tb_end             : BOOLEAN := TRUE;   -- when TRUE then tb_end ends this simulation, else a higher multi-testbench will end the simulation
 -- g_sim_level          : NATURAL := 0;      -- 0 = use IP; 1 = use fast serdes model
 -- g_no_dut             : BOOLEAN := FALSE;  -- default FALSE to verify the DUT, else use TRUE to verify the tb itself without the DUT
--- g_dut_loopback_dp    : BOOLEAN := FALSE;  -- when TRUE loopback in DUT at ST interface
--- g_dut_loopback_xgmii : BOOLEAN := FALSE;  -- when TRUE loopback in DUT at XGMII interface
--- g_dut_loopback_xaui  : BOOLEAN := FALSE;  -- when TRUE loopback in DUT at XAUI interface
 -- --   g_data_type = c_tb_tech_mac_10g_data_type_symbols  = 0
 -- --   g_data_type = c_tb_tech_mac_10g_data_type_counter  = 1
 -- g_data_type        : NATURAL := c_tb_tech_mac_10g_data_type_symbols
 
-  u_no_dut_counter                  : ENTITY work.tb_tr_10GbE GENERIC MAP (c_tech_select_default, FALSE, 0,  TRUE, FALSE, FALSE, FALSE, c_tb_tech_mac_10g_data_type_counter) PORT MAP (tb_end_vec(0));
-  u_no_dut_symbols                  : ENTITY work.tb_tr_10GbE GENERIC MAP (c_tech_select_default, FALSE, 0,  TRUE, FALSE, FALSE, FALSE, c_tb_tech_mac_10g_data_type_symbols) PORT MAP (tb_end_vec(1));
-  u_tr_10GbE_symbols_loopback_dp    : ENTITY work.tb_tr_10GbE GENERIC MAP (c_tech_select_default, FALSE, 0, FALSE,  TRUE, FALSE, FALSE, c_tb_tech_mac_10g_data_type_symbols) PORT MAP (tb_end_vec(2));
-  u_tr_10GbE_symbols_loopback_xgmii : ENTITY work.tb_tr_10GbE GENERIC MAP (c_tech_select_default, FALSE, 0, FALSE, FALSE,  TRUE, FALSE, c_tb_tech_mac_10g_data_type_symbols) PORT MAP (tb_end_vec(3));
-  u_tr_10GbE_symbols_loopback_xaui  : ENTITY work.tb_tr_10GbE GENERIC MAP (c_tech_select_default, FALSE, 0, FALSE, FALSE, FALSE,  TRUE, c_tb_tech_mac_10g_data_type_symbols) PORT MAP (tb_end_vec(4));
-  u_tr_10GbE_symbols                : ENTITY work.tb_tr_10GbE GENERIC MAP (c_tech_select_default, FALSE, 0, FALSE, FALSE, FALSE, FALSE, c_tb_tech_mac_10g_data_type_symbols) PORT MAP (tb_end_vec(5));
-  u_tr_10GbE_symbols_sim_level_is_1 : ENTITY work.tb_tr_10GbE GENERIC MAP (c_tech_select_default, FALSE, 1, FALSE, FALSE, FALSE, FALSE, c_tb_tech_mac_10g_data_type_symbols) PORT MAP (tb_end_vec(6));
+  u_no_dut_counter                  : ENTITY work.tb_tr_10GbE GENERIC MAP (c_tech_select_default, FALSE, 0,  TRUE, c_tb_tech_mac_10g_data_type_counter) PORT MAP (tb_end_vec(0));
+  u_no_dut_symbols                  : ENTITY work.tb_tr_10GbE GENERIC MAP (c_tech_select_default, FALSE, 0,  TRUE, c_tb_tech_mac_10g_data_type_symbols) PORT MAP (tb_end_vec(1));
+  u_tr_10GbE_symbols                : ENTITY work.tb_tr_10GbE GENERIC MAP (c_tech_select_default, FALSE, 0, FALSE, c_tb_tech_mac_10g_data_type_symbols) PORT MAP (tb_end_vec(5));
+  u_tr_10GbE_symbols_sim_level_is_1 : ENTITY work.tb_tr_10GbE GENERIC MAP (c_tech_select_default, FALSE, 1, FALSE, c_tb_tech_mac_10g_data_type_symbols) PORT MAP (tb_end_vec(6));
   
   p_tb_end : PROCESS
   BEGIN
diff --git a/libraries/io/tr_10GbE/tb/vhdl/tb_tr_10GbE.vhd b/libraries/io/tr_10GbE/tb/vhdl/tb_tr_10GbE.vhd
index bebb0d6da29b9cb16d058a4700bb6eb0fe3b645b..dec7fe15d9b3404c18595f8c0f9f8693b476937a 100644
--- a/libraries/io/tr_10GbE/tb/vhdl/tb_tr_10GbE.vhd
+++ b/libraries/io/tr_10GbE/tb/vhdl/tb_tr_10GbE.vhd
@@ -54,9 +54,6 @@ ENTITY tb_tr_10GbE IS
     g_tb_end             : BOOLEAN := TRUE;   -- when TRUE then tb_end ends this simulation, else a higher multi-testbench will end the simulation
     g_sim_level          : NATURAL := 1;      -- 0 = use IP; 1 = use fast serdes model
     g_no_dut             : BOOLEAN := FALSE;  -- default FALSE to verify the DUT, else use TRUE to verify the tb itself without the DUT
-    g_dut_loopback_dp    : BOOLEAN := FALSE;  -- when TRUE loopback in DUT at ST interface
-    g_dut_loopback_xgmii : BOOLEAN := FALSE;  -- when TRUE loopback in DUT at XGMII interface
-    g_dut_loopback_xaui  : BOOLEAN := FALSE;  -- when TRUE loopback in DUT at XAUI interface
     --   g_data_type = c_tb_tech_mac_10g_data_type_symbols  = 0
     --   g_data_type = c_tb_tech_mac_10g_data_type_counter  = 1
     g_data_type        : NATURAL := c_tb_tech_mac_10g_data_type_symbols
@@ -261,7 +258,7 @@ BEGIN
     IF rising_edge(rx_clk) THEN
       rx_sosi_reg <= rx_sosi;  -- use rx_sosi_reg for verification at eop to account for once cycle latency in expected_sosi_arr()
       IF rx_sosi_reg.eop='1' THEN
-        IF g_no_dut=FALSE AND g_dut_loopback_dp=FALSE THEN
+        IF g_no_dut=FALSE THEN
           IF c_pkt_length_arr(vI) < 64 - 14 - 20 - 8 - 4 THEN  -- = minimum frame 64 - ETH 14 - IP 20 - UDP 8 - CRC 4
             -- frame shorter than 64 get padded so empty after stripping the Rx CRC is fixed 4, which becomes 6 due to pre header padding for UDP word align
             IF TO_UINT(rx_sosi_reg.empty) /= 6 THEN
@@ -308,9 +305,6 @@ BEGIN
       g_use_mdio               => TRUE,
       g_mdio_epcs_dis          => TRUE,  -- TRUE disables Enhanced PCS on init; e.g. to target a 10GbE card in PC that does not support it 
       g_pkt_len                => 100,
-      g_loopback_dp            => g_dut_loopback_dp,
-      g_loopback_xgmii         => g_dut_loopback_xgmii,
-      g_loopback_xaui          => g_dut_loopback_xaui,
       g_word_alignment_padding => TRUE
     )
     PORT MAP (