diff --git a/boards/uniboard2/designs/unb2_test/src/vhdl/mmm_unb2_test.vhd b/boards/uniboard2/designs/unb2_test/src/vhdl/mmm_unb2_test.vhd
index c2dd310920d4b0a24777a796259e7ab77ea39762..a406a4a49e65e4498fa0da86a01f42b0fab70069 100644
--- a/boards/uniboard2/designs/unb2_test/src/vhdl/mmm_unb2_test.vhd
+++ b/boards/uniboard2/designs/unb2_test/src/vhdl/mmm_unb2_test.vhd
@@ -19,23 +19,23 @@
 --
 -------------------------------------------------------------------------------
 
-LIBRARY IEEE, common_lib, unb2_board_lib, mm_lib;
+LIBRARY IEEE, common_lib, unb2_board_lib, mm_lib, eth_lib, technology_lib, tech_tse_lib;
 USE IEEE.STD_LOGIC_1164.ALL;
 USE IEEE.NUMERIC_STD.ALL;
 USE common_lib.common_pkg.ALL;
 USE common_lib.common_mem_pkg.ALL;
-USE common_lib.tb_common_mem_pkg.ALL; --?
-USE common_lib.common_field_pkg.ALL; --?
-USE common_lib.common_network_total_header_pkg.ALL; --?
-USE common_lib.common_network_layers_pkg.ALL; --?
+USE common_lib.tb_common_mem_pkg.ALL;
+USE common_lib.common_field_pkg.ALL;
+USE common_lib.common_network_total_header_pkg.ALL;
+USE common_lib.common_network_layers_pkg.ALL;
 USE unb2_board_lib.unb2_board_pkg.ALL;
 USE unb2_board_lib.unb2_board_peripherals_pkg.ALL;
 USE mm_lib.mm_file_pkg.ALL;
 USE mm_lib.mm_file_unb_pkg.ALL;
---USE eth_lib.eth_pkg.ALL; --?
---USE technology_lib.technology_pkg.ALL; --?
---USE tech_tse_lib.tech_tse_pkg.ALL; --?
---USE tech_tse_lib.tb_tech_tse_pkg.ALL; --?
+USE eth_lib.eth_pkg.ALL;
+USE technology_lib.technology_pkg.ALL;
+USE tech_tse_lib.tech_tse_pkg.ALL;
+USE tech_tse_lib.tb_tech_tse_pkg.ALL;
 USE work.qsys_unb2_test_pkg.ALL;
 
 
@@ -172,7 +172,7 @@ ARCHITECTURE str OF mmm_unb2_test IS
   CONSTANT c_mm_clk_period                         : TIME := 8 ns;   -- 125 MHz
 
   CONSTANT c_sim_eth_src_mac                       : STD_LOGIC_VECTOR(c_network_eth_mac_slv'RANGE) := X"00228608" & TO_UVEC(g_sim_unb_nr, c_byte_w) & TO_UVEC(g_sim_node_nr, c_byte_w);
-  --CONSTANT c_sim_eth_control_rx_en                 : NATURAL := 2**c_eth_mm_reg_control_bi.rx_en;
+  CONSTANT c_sim_eth_control_rx_en                 : NATURAL := 2**c_eth_mm_reg_control_bi.rx_en;
 
   SIGNAL sim_eth_mm_bus_switch                     : STD_LOGIC;
   SIGNAL sim_eth_psc_access                        : STD_LOGIC;
@@ -250,10 +250,10 @@ BEGIN
 
     -- Note: the eth1g RAM and TSE buses are only required by unb_osy on the NIOS as they provide the ethernet<->MM gateway.
     u_mm_file_reg_eth             : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "AVS_ETH_0_MMS_REG")
-                                               PORT MAP(mm_rst, mm_clk, eth1g_reg_mosi, eth1g_reg_miso );
+                                               PORT MAP(mm_rst, mm_clk, eth1g_reg_mosi, eth1g_reg_miso);
 
-    --u_mm_file_reg_tr_10GbE        : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_TR_10GBE", c_mm_clk_period, FALSE, 0)
-    --                                           PORT MAP(mm_rst, mm_clk, reg_tr_10GbE_mosi, reg_tr_10GbE_miso );
+    u_mm_file_reg_tr_10GbE        : mm_file GENERIC MAP(mmf_unb_file_prefix(g_sim_unb_nr, c_sim_node_nr, c_sim_node_type) & "REG_TR_10GBE")
+                                               PORT MAP(mm_rst, mm_clk, reg_tr_10GbE_mosi, reg_tr_10GbE_miso);
 
     ----------------------------------------------------------------------------
     -- 1GbE setup sequence normally performed by unb_os@NIOS
@@ -266,10 +266,10 @@ BEGIN
       eth1g_tse_mosi.rd <= '0';
       WAIT FOR 400 ns;
       WAIT UNTIL rising_edge(mm_clk);
- --     proc_tech_tse_setup(c_tech_arria10, FALSE, c_tech_tse_tx_fifo_depth, c_tech_tse_rx_fifo_depth, c_tech_tse_tx_ready_latency, c_sim_eth_src_mac, sim_eth_psc_access, mm_clk, eth1g_tse_miso, eth1g_tse_mosi);
+      proc_tech_tse_setup(c_tech_arria10, FALSE, c_tech_tse_tx_fifo_depth, c_tech_tse_rx_fifo_depth, c_tech_tse_tx_ready_latency, c_sim_eth_src_mac, sim_eth_psc_access, mm_clk, eth1g_tse_miso, eth1g_tse_mosi);
 
       -- Enable RX
---      proc_mem_mm_bus_wr(c_eth_reg_control_wi+0, c_sim_eth_control_rx_en, mm_clk, eth1g_reg_miso, sim_eth1g_reg_mosi);  -- control rx en
+      proc_mem_mm_bus_wr(c_eth_reg_control_wi+0, c_sim_eth_control_rx_en, mm_clk, eth1g_reg_miso, sim_eth1g_reg_mosi);  -- control rx en
       sim_eth_mm_bus_switch <= '0';
 
       WAIT;
diff --git a/boards/uniboard2/designs/unb2_test/src/vhdl/unb2_test.vhd b/boards/uniboard2/designs/unb2_test/src/vhdl/unb2_test.vhd
index 16fe29787afa5f638e2fa53003358c84a32d98f1..0521ceeb66c56f32ded1e5c7a46b5474a7ae392b 100644
--- a/boards/uniboard2/designs/unb2_test/src/vhdl/unb2_test.vhd
+++ b/boards/uniboard2/designs/unb2_test/src/vhdl/unb2_test.vhd
@@ -264,8 +264,10 @@ ARCHITECTURE str OF unb2_test IS
   SIGNAL reg_remu_miso              : t_mem_miso;
 
   -- 10GbE
-  SIGNAL serial_10G_tx_arr          : STD_LOGIC_VECTOR(c_nof_streams-1 downto 0);
+  SIGNAL serial_10G_tx_arr          : STD_LOGIC_VECTOR(c_nof_streams-1 downto 0) := (OTHERS=>'0');
   SIGNAL serial_10G_rx_arr          : STD_LOGIC_VECTOR(c_nof_streams-1 downto 0);
+  SIGNAL serial_10G_tx_dummy        : STD_LOGIC_VECTOR(c_unb2_board_tr_qsfp_hw_nof_lines-1 DOWNTO 0);
+  SIGNAL serial_10G_rx_dummy        : STD_LOGIC_VECTOR(c_unb2_board_tr_qsfp_hw_nof_lines-1 DOWNTO 0);
 
   SIGNAL reg_tr_10GbE_mosi          : t_mem_mosi;
   SIGNAL reg_tr_10GbE_miso          : t_mem_miso;
@@ -787,13 +789,18 @@ BEGIN
     );
 
 
+
+    serial_10G_tx_dummy(c_unb2_board_tr_qsfp_hw_nof_lines-1 DOWNTO 1) <= (OTHERS=>'0');
+    serial_10G_tx_dummy(0 DOWNTO 0) <= serial_10G_tx_arr;
+
+    serial_10G_rx_dummy(0 DOWNTO 0) <= serial_10G_rx_arr;
+
+
     u_front_io : ENTITY unb2_board_lib.unb2_board_front_io
     PORT MAP (
-      serial_tx_arr(0 DOWNTO 0) => serial_10G_tx_arr,
-      serial_rx_arr(0 DOWNTO 0) => serial_10G_rx_arr,
 
-      serial_tx_arr(c_unb2_board_tr_qsfp_hw_nof_lines-1 DOWNTO 1) => (OTHERS=>'0'),
-      serial_rx_arr(c_unb2_board_tr_qsfp_hw_nof_lines-1 DOWNTO 1) => OPEN,
+      serial_tx_arr => serial_10G_tx_dummy,
+      serial_rx_arr => serial_10G_rx_dummy,
 
       -- Serial I/O
       -- front transceivers
diff --git a/boards/uniboard2/designs/unb2_test/tb/vhdl/tb_unb2_test.vhd b/boards/uniboard2/designs/unb2_test/tb/vhdl/tb_unb2_test.vhd
index 9e4f7de441a37724a5eb487512e65ff73fdb2f82..85b34b5d4214cc63a5e26f2e05b3edba99a573a3 100644
--- a/boards/uniboard2/designs/unb2_test/tb/vhdl/tb_unb2_test.vhd
+++ b/boards/uniboard2/designs/unb2_test/tb/vhdl/tb_unb2_test.vhd
@@ -69,8 +69,9 @@ ARCHITECTURE tb OF tb_unb2_test IS
   CONSTANT c_fw_version      : t_unb2_board_fw_version := (1, 0);
 
   CONSTANT c_cable_delay     : TIME := 12 ns;
-  CONSTANT c_eth_clk_period  : TIME := 40 ns;  -- 25 MHz XO on UniBoard
+  CONSTANT c_eth_clk_period  : TIME := 8 ns;  -- 125 MHz XO on UniBoard 
   CONSTANT c_clk_period      : TIME := 5 ns; 
+  CONSTANT c_sa_clk_period   : TIME := 1.552 ns; -- 644 MHz
   CONSTANT c_pps_period      : NATURAL := 1000; 
 
   -- DUT
@@ -83,8 +84,8 @@ ARCHITECTURE tb OF tb_unb2_test IS
   SIGNAL INTB                : STD_LOGIC;
 
   SIGNAL eth_clk             : STD_LOGIC := '0';
-  SIGNAL eth_txp             : STD_LOGIC;
-  SIGNAL eth_rxp             : STD_LOGIC;
+  SIGNAL eth_txp             : STD_LOGIC_VECTOR(1 DOWNTO 0);
+  SIGNAL eth_rxp             : STD_LOGIC_VECTOR(1 DOWNTO 0);
   
   SIGNAL VERSION             : STD_LOGIC_VECTOR(c_unb2_board_aux.version_w-1 DOWNTO 0) := c_version; 
   SIGNAL ID                  : STD_LOGIC_VECTOR(c_unb2_board_aux.id_w-1 DOWNTO 0)      := c_id;
@@ -93,6 +94,17 @@ ARCHITECTURE tb OF tb_unb2_test IS
   SIGNAL sens_scl            : STD_LOGIC;
   SIGNAL sens_sda            : STD_LOGIC;
 
+  -- 10GbE
+  SIGNAL sa_clk              : STD_LOGIC := '1';
+
+  -- Serial I/O
+  --SIGNAL si_fn_lpbk_0        : STD_LOGIC_VECTOR(c_unb1_board_ci.tr.bus_w-1 DOWNTO 0);
+  --SIGNAL si_fn_lpbk_1        : STD_LOGIC_VECTOR(c_unb1_board_ci.tr.bus_w-1 DOWNTO 0);
+  --SIGNAL si_fn_lpbk_2        : STD_LOGIC_VECTOR(c_unb1_board_ci.tr.bus_w-1 DOWNTO 0);
+  --SIGNAL si_fn_lpbk_3        : STD_LOGIC_VECTOR(c_unb1_board_ci.tr.bus_w-1 DOWNTO 0);
+  SIGNAL si_lpbk_0           : STD_LOGIC_VECTOR(0 DOWNTO 0);
+
+
   -- Model I2C sensor slaves as on the UniBoard
   CONSTANT c_fpga_temp_address   : STD_LOGIC_VECTOR(6 DOWNTO 0) := "0011000";  -- MAX1618 address LOW LOW
   CONSTANT c_fpga_temp           : INTEGER := 60;
@@ -111,7 +123,9 @@ BEGIN
   -- System setup
   ----------------------------------------------------------------------------
   clk     <= NOT clk AFTER c_clk_period/2;        -- External clock (200 MHz)
-  eth_clk <= NOT eth_clk AFTER c_eth_clk_period/2;  -- Ethernet ref clock (25 MHz)
+  eth_clk <= NOT eth_clk AFTER c_eth_clk_period/2;  -- Ethernet ref clock (125 MHz)
+  sa_clk  <= NOT sa_clk  AFTER c_sa_clk_period/2;  -- sa clock (644 MHz)
+
   
   INTA <= 'H';  -- pull up
   INTB <= 'H';  -- pull up
@@ -127,7 +141,11 @@ BEGIN
   ------------------------------------------------------------------------------
   -- 1GbE Loopback model
   ------------------------------------------------------------------------------  
-  eth_rxp <= TRANSPORT eth_txp AFTER c_cable_delay;
+  eth_rxp(0) <= TRANSPORT eth_txp(0) AFTER c_cable_delay;
+
+  eth_rxp(1) <= '0';
+
+  eth_txp(1) <= '0';
   
   ------------------------------------------------------------------------------
   -- DUT
@@ -141,7 +159,7 @@ BEGIN
     )
     PORT MAP (
       -- GENERAL
-      CLK         => clk,
+      --CLK         => clk,
       PPS         => pps,
       WDI         => WDI,
       INTA        => INTA,
@@ -158,7 +176,18 @@ BEGIN
       -- 1GbE Control Interface
       ETH_clk     => eth_clk,
       ETH_SGIN    => eth_rxp,
-      ETH_SGOUT   => eth_txp
+      ETH_SGOUT   => eth_txp,
+
+      -- Transceiver clocks
+      SA_CLK      => sa_clk,
+      SB_CLK      => '0',
+      BCK_REF_CLK => '0',
+
+      PMBUS_ALERT => '0',
+
+      -- Serial I/O
+      QSFP_0_TX  => si_lpbk_0,
+      QSFP_0_RX  => si_lpbk_0
     );
 
   ------------------------------------------------------------------------------
diff --git a/boards/uniboard2/libraries/unb2_board/hdllib.cfg b/boards/uniboard2/libraries/unb2_board/hdllib.cfg
index 71708dd95bebc1312be4a94db6363442694f39cf..03565348e92e4c384cf5e24f3734e6fb3b4842fb 100644
--- a/boards/uniboard2/libraries/unb2_board/hdllib.cfg
+++ b/boards/uniboard2/libraries/unb2_board/hdllib.cfg
@@ -1,6 +1,6 @@
 hdl_lib_name = unb2_board
 hdl_library_clause_name = unb2_board_lib
-hdl_lib_uses = common dp diag uth ppsh i2c tr_nonbonded eth remu technology tech_pll epcs
+hdl_lib_uses = common dp diag uth ppsh i2c tr_nonbonded eth remu technology tech_pll epcs tr_10GbE
 hdl_lib_technology = ip_arria10
 
 build_dir_sim = $HDL_BUILD_DIR
diff --git a/boards/uniboard2/libraries/unb2_board/src/vhdl/unb2_board_front_io.vhd b/boards/uniboard2/libraries/unb2_board/src/vhdl/unb2_board_front_io.vhd
index 4ce79654aecc4f6d8d9cd7294d775b228b3ae0cd..502557ab8f4e3918120c6aa0546bd2a54fdddf23 100644
--- a/boards/uniboard2/libraries/unb2_board/src/vhdl/unb2_board_front_io.vhd
+++ b/boards/uniboard2/libraries/unb2_board/src/vhdl/unb2_board_front_io.vhd
@@ -26,7 +26,7 @@ USE work.unb2_board_pkg.ALL;
 
 ENTITY unb2_board_front_io IS
   PORT (
-    serial_tx_arr  : IN  STD_LOGIC_VECTOR(c_unb2_board_tr_qsfp_hw_nof_lines-1 DOWNTO 0);
+    serial_tx_arr  : IN  STD_LOGIC_VECTOR(c_unb2_board_tr_qsfp_hw_nof_lines-1 DOWNTO 0) := (OTHERS=>'0');
     serial_rx_arr  : OUT STD_LOGIC_VECTOR(c_unb2_board_tr_qsfp_hw_nof_lines-1 DOWNTO 0);
 
     QSFP_0_RX    : IN    STD_LOGIC_VECTOR(0 downto 0); --c_unb2_board_tr_qsfp.bus_w-1 downto 0);