diff --git a/applications/aartfaac/designs/aartfaac_fn_sdo/src/quartus/sopc_aartfaac_fn_sdo.sopc b/applications/aartfaac/designs/aartfaac_fn_sdo/src/quartus/sopc_aartfaac_fn_sdo.sopc
index 3cddc24548e323463d16322f69ceb8aa89338a36..3333ea375a935fc005cfdcb162a4825bc54190b4 100644
--- a/applications/aartfaac/designs/aartfaac_fn_sdo/src/quartus/sopc_aartfaac_fn_sdo.sopc
+++ b/applications/aartfaac/designs/aartfaac_fn_sdo/src/quartus/sopc_aartfaac_fn_sdo.sopc
@@ -22,7 +22,7 @@
    {
       datum _sortIndex
       {
-         value = "18";
+         value = "17";
          type = "int";
       }
    }
@@ -100,48 +100,48 @@
          type = "String";
       }
    }
-   element pio_system_info.mem
+   element reg_unb_sens.mem
    {
-      datum _lockedAddress
-      {
-         value = "1";
-         type = "boolean";
-      }
       datum baseAddress
       {
-         value = "0";
+         value = "544";
          type = "long";
       }
    }
-   element reg_unb_sens.mem
+   element reg_mdio_1.mem
    {
       datum baseAddress
       {
-         value = "544";
+         value = "640";
          type = "long";
       }
    }
-   element reg_tr_xaui.mem
+   element reg_tr_nonbonded.mem
    {
       datum baseAddress
       {
-         value = "16384";
+         value = "128";
          type = "long";
       }
    }
-   element reg_diagnostics.mem
+   element pio_system_info.mem
    {
+      datum _lockedAddress
+      {
+         value = "1";
+         type = "boolean";
+      }
       datum baseAddress
       {
-         value = "256";
+         value = "0";
          type = "long";
       }
    }
-   element reg_tr_nonbonded.mem
+   element reg_tr_10GbE.mem
    {
       datum baseAddress
       {
-         value = "128";
+         value = "32768";
          type = "long";
       }
    }
@@ -158,35 +158,35 @@
          type = "long";
       }
    }
-   element reg_diag_data_buffer.mem
+   element reg_mdio_0.mem
    {
       datum baseAddress
       {
-         value = "576";
+         value = "608";
          type = "long";
       }
    }
-   element ram_diag_data_buffer.mem
+   element reg_diagnostics.mem
    {
       datum baseAddress
       {
-         value = "262144";
+         value = "256";
          type = "long";
       }
    }
-   element reg_mdio_0.mem
+   element ram_diag_data_buffer.mem
    {
       datum baseAddress
       {
-         value = "608";
+         value = "262144";
          type = "long";
       }
    }
-   element reg_tr_10GbE.mem
+   element reg_tr_xaui.mem
    {
       datum baseAddress
       {
-         value = "32768";
+         value = "16384";
          type = "long";
       }
    }
@@ -198,14 +198,6 @@
          type = "long";
       }
    }
-   element reg_mdio_1.mem
-   {
-      datum baseAddress
-      {
-         value = "640";
-         type = "long";
-      }
-   }
    element reg_wdi.mem
    {
       datum _lockedAddress
@@ -219,6 +211,14 @@
          type = "long";
       }
    }
+   element reg_diag_data_buffer.mem
+   {
+      datum baseAddress
+      {
+         value = "576";
+         type = "long";
+      }
+   }
    element avs_eth_0.mms_ram
    {
       datum baseAddress
@@ -264,14 +264,6 @@
          type = "int";
       }
    }
-   element pio_pps
-   {
-      datum _sortIndex
-      {
-         value = "14";
-         type = "int";
-      }
-   }
    element pio_system_info
    {
       datum _sortIndex
@@ -310,7 +302,7 @@
    {
       datum _sortIndex
       {
-         value = "16";
+         value = "15";
          type = "int";
       }
    }
@@ -318,7 +310,7 @@
    {
       datum _sortIndex
       {
-         value = "15";
+         value = "14";
          type = "int";
       }
    }
@@ -334,7 +326,7 @@
    {
       datum _sortIndex
       {
-         value = "20";
+         value = "19";
          type = "int";
       }
    }
@@ -342,7 +334,7 @@
    {
       datum _sortIndex
       {
-         value = "21";
+         value = "20";
          type = "int";
       }
    }
@@ -350,7 +342,7 @@
    {
       datum _sortIndex
       {
-         value = "22";
+         value = "21";
          type = "int";
       }
    }
@@ -358,7 +350,7 @@
    {
       datum _sortIndex
       {
-         value = "17";
+         value = "16";
          type = "int";
       }
    }
@@ -374,7 +366,7 @@
    {
       datum _sortIndex
       {
-         value = "19";
+         value = "18";
          type = "int";
       }
    }
@@ -402,14 +394,6 @@
          type = "int";
       }
    }
-   element pio_wdi.s1
-   {
-      datum baseAddress
-      {
-         value = "736";
-         type = "long";
-      }
-   }
    element pio_debug_wave.s1
    {
       datum baseAddress
@@ -418,32 +402,32 @@
          type = "long";
       }
    }
-   element onchip_memory2_0.s1
+   element timer_0.s1
    {
-      datum _lockedAddress
-      {
-         value = "1";
-         type = "boolean";
-      }
       datum baseAddress
       {
-         value = "131072";
+         value = "512";
          type = "long";
       }
    }
-   element timer_0.s1
+   element pio_wdi.s1
    {
       datum baseAddress
       {
-         value = "512";
+         value = "736";
          type = "long";
       }
    }
-   element pio_pps.s1
+   element onchip_memory2_0.s1
    {
+      datum _lockedAddress
+      {
+         value = "1";
+         type = "boolean";
+      }
       datum baseAddress
       {
-         value = "752";
+         value = "131072";
          type = "long";
       }
    }
@@ -470,10 +454,10 @@
  <parameter name="globalResetBus" value="true" />
  <parameter name="hdlLanguage" value="VHDL" />
  <parameter name="maxAdditionalLatency" value="0" />
- <parameter name="projectName" value="" />
+ <parameter name="projectName" value="aartfaac_fn_sdo.qpf" />
  <parameter name="sopcBorderPoints" value="true" />
- <parameter name="systemHash" value="-60671328635" />
- <parameter name="timeStamp" value="1441368791753" />
+ <parameter name="systemHash" value="-63089045873" />
+ <parameter name="timeStamp" value="1441369895633" />
  <parameter name="useTestBenchNamingPattern" value="false" />
  <module kind="clock_source" version="11.1" enabled="1" name="clk_0">
   <parameter name="clockFrequency" value="25000000" />
@@ -574,7 +558,7 @@
   <parameter name="dcache_numTCDM" value="_0" />
   <parameter name="dcache_lineSize" value="_32" />
   <parameter name="dcache_bursts" value="false" />
-  <parameter name="dataSlaveMapParam"><![CDATA[<address-map><slave name='pio_system_info.mem' start='0x0' end='0x80' /><slave name='reg_tr_nonbonded.mem' start='0x80' end='0xC0' /><slave name='avs_eth_0.mms_reg' start='0xC0' end='0x100' /><slave name='reg_diagnostics.mem' start='0x100' end='0x200' /><slave name='timer_0.s1' start='0x200' end='0x220' /><slave name='reg_unb_sens.mem' start='0x220' end='0x240' /><slave name='reg_diag_data_buffer.mem' start='0x240' end='0x260' /><slave name='reg_mdio_0.mem' start='0x260' end='0x280' /><slave name='reg_mdio_1.mem' start='0x280' end='0x2A0' /><slave name='reg_mdio_2.mem' start='0x2A0' end='0x2C0' /><slave name='altpll_0.pll_slave' start='0x2C0' end='0x2D0' /><slave name='pio_debug_wave.s1' start='0x2D0' end='0x2E0' /><slave name='pio_wdi.s1' start='0x2E0' end='0x2F0' /><slave name='pio_pps.s1' start='0x2F0' end='0x300' /><slave name='jtag_uart_0.avalon_jtag_slave' start='0x300' end='0x308' /><slave name='rom_system_info.mem' start='0x1000' end='0x2000' /><slave name='avs_eth_0.mms_tse' start='0x2000' end='0x3000' /><slave name='reg_wdi.mem' start='0x3000' end='0x3008' /><slave name='cpu_0.jtag_debug_module' start='0x3800' end='0x4000' /><slave name='reg_tr_xaui.mem' start='0x4000' end='0x6000' /><slave name='avs_eth_0.mms_ram' start='0x6000' end='0x7000' /><slave name='reg_tr_10GbE.mem' start='0x8000' end='0x10000' /><slave name='onchip_memory2_0.s1' start='0x20000' end='0x40000' /><slave name='ram_diag_data_buffer.mem' start='0x40000' end='0x60000' /></address-map>]]></parameter>
+  <parameter name="dataSlaveMapParam"><![CDATA[<address-map><slave name='pio_system_info.mem' start='0x0' end='0x80' /><slave name='reg_tr_nonbonded.mem' start='0x80' end='0xC0' /><slave name='avs_eth_0.mms_reg' start='0xC0' end='0x100' /><slave name='reg_diagnostics.mem' start='0x100' end='0x200' /><slave name='timer_0.s1' start='0x200' end='0x220' /><slave name='reg_unb_sens.mem' start='0x220' end='0x240' /><slave name='reg_diag_data_buffer.mem' start='0x240' end='0x260' /><slave name='reg_mdio_0.mem' start='0x260' end='0x280' /><slave name='reg_mdio_1.mem' start='0x280' end='0x2A0' /><slave name='reg_mdio_2.mem' start='0x2A0' end='0x2C0' /><slave name='altpll_0.pll_slave' start='0x2C0' end='0x2D0' /><slave name='pio_debug_wave.s1' start='0x2D0' end='0x2E0' /><slave name='pio_wdi.s1' start='0x2E0' end='0x2F0' /><slave name='jtag_uart_0.avalon_jtag_slave' start='0x300' end='0x308' /><slave name='rom_system_info.mem' start='0x1000' end='0x2000' /><slave name='avs_eth_0.mms_tse' start='0x2000' end='0x3000' /><slave name='reg_wdi.mem' start='0x3000' end='0x3008' /><slave name='cpu_0.jtag_debug_module' start='0x3800' end='0x4000' /><slave name='reg_tr_xaui.mem' start='0x4000' end='0x6000' /><slave name='avs_eth_0.mms_ram' start='0x6000' end='0x7000' /><slave name='reg_tr_10GbE.mem' start='0x8000' end='0x10000' /><slave name='onchip_memory2_0.s1' start='0x20000' end='0x40000' /><slave name='ram_diag_data_buffer.mem' start='0x40000' end='0x60000' /></address-map>]]></parameter>
   <parameter name="dataAddrWidth" value="19" />
   <parameter name="customInstSlavesSystemInfo" value="&lt;info/&gt;" />
   <parameter name="cpuReset" value="false" />
@@ -871,20 +855,6 @@ q]]></parameter>
   <parameter name="g_dat_w" value="32" />
   <parameter name="AUTO_SYSTEM_CLOCK_RATE" value="125000000" />
  </module>
- <module kind="altera_avalon_pio" version="11.1" enabled="1" name="pio_pps">
-  <parameter name="bitClearingEdgeCapReg" value="false" />
-  <parameter name="bitModifyingOutReg" value="false" />
-  <parameter name="captureEdge" value="false" />
-  <parameter name="clockRate" value="125000000" />
-  <parameter name="direction" value="Input" />
-  <parameter name="edgeType" value="RISING" />
-  <parameter name="generateIRQ" value="false" />
-  <parameter name="irqType" value="LEVEL" />
-  <parameter name="resetValue" value="0" />
-  <parameter name="simDoTestBenchWiring" value="false" />
-  <parameter name="simDrivenValue" value="0" />
-  <parameter name="width" value="32" />
- </module>
  <module
    kind="avs_common_mm"
    version="1.0"
@@ -1114,15 +1084,6 @@ q]]></parameter>
   <parameter name="arbitrationPriority" value="1" />
   <parameter name="baseAddress" value="0x3000" />
  </connection>
- <connection kind="clock" version="11.1" start="altpll_0.c0" end="pio_pps.clk" />
- <connection
-   kind="avalon"
-   version="11.1"
-   start="cpu_0.data_master"
-   end="pio_pps.s1">
-  <parameter name="arbitrationPriority" value="1" />
-  <parameter name="baseAddress" value="0x02f0" />
- </connection>
  <connection
    kind="clock"
    version="11.1"
diff --git a/applications/aartfaac/designs/aartfaac_fn_sdo/src/vhdl/aartfaac_fn_sdo.vhd b/applications/aartfaac/designs/aartfaac_fn_sdo/src/vhdl/aartfaac_fn_sdo.vhd
index 1538c1d32f485050b164dbf68535a07ac6bbce2d..8aedcf2d90bfdd32baa5d1760dbe91cda45fe777 100644
--- a/applications/aartfaac/designs/aartfaac_fn_sdo/src/vhdl/aartfaac_fn_sdo.vhd
+++ b/applications/aartfaac/designs/aartfaac_fn_sdo/src/vhdl/aartfaac_fn_sdo.vhd
@@ -154,6 +154,7 @@ ARCHITECTURE str OF aartfaac_fn_sdo IS
   -- Transceiver clocks
   SIGNAL tr_clk                              : STD_LOGIC;
   SIGNAL cal_rec_clk                         : STD_LOGIC;
+  SIGNAL sa_rst                              : STD_LOGIC;   
 
   -- MM buses
   SIGNAL reg_diagnostics_mosi                : t_mem_mosi;
@@ -343,6 +344,17 @@ BEGIN
   tr_10GbE_snk_in_arr(0) <= dp_mux_src_out;
   dp_mux_src_in          <= tr_10GbE_snk_out_arr(0);
 
+  u_areset_sa_rst : ENTITY common_lib.common_areset
+  GENERIC MAP(
+    g_rst_level => '1',
+    g_delay_len => 4
+  )
+  PORT MAP(
+    clk     => SA_CLK,
+    in_rst  => '0',
+    out_rst => sa_rst
+  );    
+  
   u_tr_10GbE: ENTITY tr_10GbE_lib.tr_10GbE
   GENERIC MAP(
     g_sim           => g_sim,
@@ -394,7 +406,7 @@ BEGIN
     xaui_rx_arr(i)     <= unb_xaui_rx_arr(i);
   END GENERATE;
 
-  u_front_io : ENTITY unb1_board_lib.unb_front_io
+  u_front_io : ENTITY unb1_board_lib.unb1_board_front_io
   GENERIC MAP (
     g_nof_xaui => c_nof_10GbE_offload_streams
   )
@@ -453,7 +465,6 @@ BEGIN
     
     -- PIOs
     pout_wdi                 => pout_wdi,
-    pin_pps                  => pin_pps,
     
     -- eth1g
     eth1g_tse_clk            => eth1g_tse_clk,
@@ -522,7 +533,6 @@ BEGIN
     mm_locked                     => mm_locked,    
 
     pout_wdi                      => pout_wdi,
-    pin_pps                       => pin_pps,
 
     reg_wdi_mosi                  => reg_wdi_mosi,
     reg_wdi_miso                  => reg_wdi_miso,
diff --git a/applications/aartfaac/designs/aartfaac_fn_sdo/src/vhdl/mmm_aartfaac_fn_sdo.vhd b/applications/aartfaac/designs/aartfaac_fn_sdo/src/vhdl/mmm_aartfaac_fn_sdo.vhd
index 20a2797a64dbe1eb9ba07b11a935abd60ddf1637..18948079476ad7f1f74b56ec0c1ab008bd8dcefe 100644
--- a/applications/aartfaac/designs/aartfaac_fn_sdo/src/vhdl/mmm_aartfaac_fn_sdo.vhd
+++ b/applications/aartfaac/designs/aartfaac_fn_sdo/src/vhdl/mmm_aartfaac_fn_sdo.vhd
@@ -59,8 +59,6 @@ ENTITY mmm_aartfaac_fn_sdo IS
 
     pout_wdi                      : OUT STD_LOGIC;
                                   
-    pin_pps                       : IN  STD_LOGIC_VECTOR;
-
     reg_wdi_mosi                  : OUT t_mem_mosi;
     reg_wdi_miso                  : IN  t_mem_miso;
 
@@ -90,6 +88,10 @@ ENTITY mmm_aartfaac_fn_sdo IS
     ram_diag_data_buf_miso        : IN  t_mem_miso := c_mem_miso_rst;
     reg_diag_data_buf_mosi        : OUT t_mem_mosi := c_mem_mosi_rst;
     reg_diag_data_buf_miso        : IN  t_mem_miso := c_mem_miso_rst;
+    reg_mdio_mosi_arr             : OUT t_mem_mosi_arr(c_unb1_board_nof_mdio-1 DOWNTO 0);
+    reg_mdio_miso_arr             : IN  t_mem_miso_arr(c_unb1_board_nof_mdio-1 DOWNTO 0);
+    reg_tr_xaui_mosi              : OUT t_mem_mosi;
+    reg_tr_xaui_miso              : IN  t_mem_miso := c_mem_miso_rst;
     reg_tr_10GbE_mosi             : OUT t_mem_mosi;
     reg_tr_10GbE_miso             : IN  t_mem_miso
   );
@@ -115,7 +117,10 @@ ARCHITECTURE str OF mmm_aartfaac_fn_sdo IS
   CONSTANT c_multi_reg_diag_db_adr_w : NATURAL := ceil_log2(c_nof_mesh_xcvrs* pow2(c_reg_diag_db_adr_w)); 
 
   CONSTANT c_reg_tr_10GbE_adr_w      : NATURAL := 13;
-
+  CONSTANT c_xaui_mosi_addr_w        : NATURAL := 9; --2^9 = range of 512 addresses
+  CONSTANT c_max_nof_xaui_inst       : NATURAL := 4;
+  CONSTANT c_reg_tr_xaui_addr_w      : NATURAL := ceil_log2(c_max_nof_xaui_inst* pow2(c_xaui_mosi_addr_w)); -- 4* 512 = 2048 addresses -> 11 address bits.
+ 
   SIGNAL i_mm_clk                    : STD_LOGIC := '1';
   SIGNAL i_tse_clk                   : STD_LOGIC := '1';
   SIGNAL i_dp_clk                    : STD_LOGIC := '1';
@@ -309,9 +314,6 @@ BEGIN
       -- the_pio_debug_wave
       out_port_from_the_pio_debug_wave                       => OPEN,
   
-      -- the_pio_pps
-      in_port_to_the_pio_pps                                 => pin_pps,
-  
       -- the_pio_system_info: actually a avs_common_mm instance
       coe_clk_export_from_the_pio_system_info                => OPEN,
       coe_reset_export_from_the_pio_system_info              => OPEN,
@@ -360,6 +362,43 @@ BEGIN
       coe_write_export_from_the_reg_diag_data_buffer         => reg_diag_data_buf_mosi.wr,
       coe_writedata_export_from_the_reg_diag_data_buffer     => reg_diag_data_buf_mosi.wrdata(c_word_w-1 DOWNTO 0),
 
+      -- the_reg_mdio_0
+      coe_clk_export_from_the_reg_mdio_0                     => OPEN,
+      coe_reset_export_from_the_reg_mdio_0                   => OPEN,
+      coe_address_export_from_the_reg_mdio_0                 => reg_mdio_mosi_arr(0).address(c_unb1_board_peripherals_mm_reg_default.reg_mdio_adr_w-1 DOWNTO 0),
+      coe_read_export_from_the_reg_mdio_0                    => reg_mdio_mosi_arr(0).rd,
+      coe_readdata_export_to_the_reg_mdio_0                  => reg_mdio_miso_arr(0).rddata(c_word_w-1 DOWNTO 0),
+      coe_write_export_from_the_reg_mdio_0                   => reg_mdio_mosi_arr(0).wr,
+      coe_writedata_export_from_the_reg_mdio_0               => reg_mdio_mosi_arr(0).wrdata(c_word_w-1 DOWNTO 0),
+    
+      -- the_reg_mdio_1
+      coe_clk_export_from_the_reg_mdio_1                     => OPEN,
+      coe_reset_export_from_the_reg_mdio_1                   => OPEN,
+      coe_address_export_from_the_reg_mdio_1                 => reg_mdio_mosi_arr(1).address(c_unb1_board_peripherals_mm_reg_default.reg_mdio_adr_w-1 DOWNTO 0),
+      coe_read_export_from_the_reg_mdio_1                    => reg_mdio_mosi_arr(1).rd,
+      coe_readdata_export_to_the_reg_mdio_1                  => reg_mdio_miso_arr(1).rddata(c_word_w-1 DOWNTO 0),
+      coe_write_export_from_the_reg_mdio_1                   => reg_mdio_mosi_arr(1).wr,
+      coe_writedata_export_from_the_reg_mdio_1               => reg_mdio_mosi_arr(1).wrdata(c_word_w-1 DOWNTO 0),
+    
+      -- the_reg_mdio_2
+      coe_clk_export_from_the_reg_mdio_2                     => OPEN,
+      coe_reset_export_from_the_reg_mdio_2                   => OPEN,
+      coe_address_export_from_the_reg_mdio_2                 => reg_mdio_mosi_arr(2).address(c_unb1_board_peripherals_mm_reg_default.reg_mdio_adr_w-1 DOWNTO 0),
+      coe_read_export_from_the_reg_mdio_2                    => reg_mdio_mosi_arr(2).rd,
+      coe_readdata_export_to_the_reg_mdio_2                  => reg_mdio_miso_arr(2).rddata(c_word_w-1 DOWNTO 0),
+      coe_write_export_from_the_reg_mdio_2                   => reg_mdio_mosi_arr(2).wr,
+      coe_writedata_export_from_the_reg_mdio_2               => reg_mdio_mosi_arr(2).wrdata(c_word_w-1 DOWNTO 0),
+    
+      -- the_reg_tr_xaui 
+      coe_clk_export_from_the_reg_tr_xaui                    => OPEN,
+      coe_reset_export_from_the_reg_tr_xaui                  => OPEN,
+      coe_address_export_from_the_reg_tr_xaui                => reg_tr_xaui_mosi.address(c_reg_tr_xaui_addr_w-1 DOWNTO 0),
+      coe_read_export_from_the_reg_tr_xaui                   => reg_tr_xaui_mosi.rd,
+      coe_readdata_export_to_the_reg_tr_xaui                 => reg_tr_xaui_miso.rddata(c_word_w-1 DOWNTO 0),
+      coe_waitrequest_export_to_the_reg_tr_xaui              => reg_tr_xaui_miso.waitrequest,
+      coe_write_export_from_the_reg_tr_xaui                  => reg_tr_xaui_mosi.wr,
+      coe_writedata_export_from_the_reg_tr_xaui              => reg_tr_xaui_mosi.wrdata(c_word_w-1 DOWNTO 0),
+ 
       -- the_reg_tr_10GbE 
       coe_clk_export_from_the_reg_tr_10GbE                    => OPEN,
       coe_reset_export_from_the_reg_tr_10GbE                  => OPEN,