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 6704cc7938baad357396d03a0a0b2242514bcf33..52cbfe039acb011af2e3803dddca2335b422e72b 100644
--- a/boards/uniboard2/designs/unb2_test/src/vhdl/unb2_test.vhd
+++ b/boards/uniboard2/designs/unb2_test/src/vhdl/unb2_test.vhd
@@ -49,7 +49,8 @@ ENTITY unb2_test IS
     g_factory_image    : BOOLEAN := FALSE;
     g_nof_streams_qsfp : NATURAL := 4;--c_unb2_board_tr_qsfp.nof_bus * c_unb2_board_tr_qsfp.bus_w;
     g_nof_streams_ring : NATURAL := 0;  --FIXME
-    g_nof_streams_back : NATURAL := 24   --FIXME
+    g_nof_streams_back0: NATURAL := c_unb2_board_tr_back.bus_w;
+    g_nof_streams_back1: NATURAL := c_unb2_board_tr_back.bus_w
   );
   PORT (
     -- GENERAL
@@ -79,8 +80,8 @@ ENTITY unb2_test IS
     BCK_REF_CLK  : IN    STD_LOGIC; -- Clock 10GbE back lower 24 lines
 
     -- back transceivers
-    BCK_RX       : IN    STD_LOGIC_VECTOR(c_unb2_board_tr_back.bus_w-1 downto 0);
-    BCK_TX       : OUT   STD_LOGIC_VECTOR(c_unb2_board_tr_back.bus_w-1 downto 0);
+    BCK_RX       : IN    STD_LOGIC_VECTOR((c_unb2_board_tr_back.bus_w * c_unb2_board_tr_back.nof_bus)-1 downto 0);
+    BCK_TX       : OUT   STD_LOGIC_VECTOR((c_unb2_board_tr_back.bus_w * c_unb2_board_tr_back.nof_bus)-1 downto 0);
     BCK_SDA      : INOUT STD_LOGIC_VECTOR(c_unb2_board_tr_back.i2c_w-1 downto 0);
     BCK_SCL      : INOUT STD_LOGIC_VECTOR(c_unb2_board_tr_back.i2c_w-1 downto 0);
     BCK_ERR      : INOUT STD_LOGIC_VECTOR(c_unb2_board_tr_back.i2c_w-1 downto 0);
@@ -128,9 +129,9 @@ ARCHITECTURE str OF unb2_test IS
   CONSTANT c_use_lpbk                   : BOOLEAN := FALSE; --g_design_name = "unb2_test_lpbk";
   CONSTANT c_use_1GbE                   : BOOLEAN := FALSE; --g_design_name = "unb2_test_1GbE";
   CONSTANT c_use_10GbE                  : BOOLEAN := TRUE;  --g_design_name = "unb2_test_10GbE";
-  CONSTANT g_nof_streams                : NATURAL := (g_nof_streams_qsfp + g_nof_streams_ring + g_nof_streams_back);
+  CONSTANT g_nof_streams                : NATURAL := (g_nof_streams_qsfp + g_nof_streams_ring + g_nof_streams_back0 + g_nof_streams_back1);
   CONSTANT g_nof_qsfp_bus               : NATURAL := ceil_div(g_nof_streams_qsfp,c_unb2_board_tr_qsfp.bus_w);
-  CONSTANT g_nof_back_bus               : NATURAL := ceil_div(g_nof_streams_back,c_unb2_board_tr_back.bus_w);
+  CONSTANT g_nof_back_bus               : NATURAL := ceil_div(g_nof_streams_back0,c_unb2_board_tr_back.bus_w) + ceil_div(g_nof_streams_back1,c_unb2_board_tr_back.bus_w);
   CONSTANT c_data_w                     : NATURAL := sel_a_b(c_use_lpbk,  c_lpbk_data_w, -- Select correct c_data_w when one interface is used
                                                      sel_a_b(c_use_1GbE,  c_eth_data_w,
                                                      sel_a_b(c_use_10GbE, c_xgmii_data_w, 0)));
@@ -272,20 +273,24 @@ ARCHITECTURE str OF unb2_test IS
   -- 10GbE
   SIGNAL i_serial_10G_tx_qsfp_ring_arr   : STD_LOGIC_VECTOR(g_nof_streams_qsfp+g_nof_streams_ring-1 DOWNTO 0);
   SIGNAL i_serial_10G_rx_qsfp_ring_arr   : STD_LOGIC_VECTOR(g_nof_streams_qsfp+g_nof_streams_ring-1 DOWNTO 0);
-  SIGNAL i_serial_10G_tx_back_arr        : STD_LOGIC_VECTOR(g_nof_streams_back-1 DOWNTO 0);
-  SIGNAL i_serial_10G_rx_back_arr        : STD_LOGIC_VECTOR(g_nof_streams_back-1 DOWNTO 0);
+  SIGNAL i_serial_10G_tx_back0_arr       : STD_LOGIC_VECTOR(g_nof_streams_back0-1 DOWNTO 0);
+  SIGNAL i_serial_10G_rx_back0_arr       : STD_LOGIC_VECTOR(g_nof_streams_back0-1 DOWNTO 0);
+  SIGNAL i_serial_10G_tx_back1_arr       : STD_LOGIC_VECTOR(g_nof_streams_back1-1 DOWNTO 0);
+  SIGNAL i_serial_10G_rx_back1_arr       : STD_LOGIC_VECTOR(g_nof_streams_back1-1 DOWNTO 0);
 
   SIGNAL serial_10G_tx_qsfp_arr          : STD_LOGIC_VECTOR(g_nof_streams_qsfp-1 DOWNTO 0) := (OTHERS=>'0');
   SIGNAL serial_10G_rx_qsfp_arr          : STD_LOGIC_VECTOR(g_nof_streams_qsfp-1 DOWNTO 0);
   SIGNAL serial_10G_tx_ring_arr          : STD_LOGIC_VECTOR(g_nof_streams_ring-1 DOWNTO 0) := (OTHERS=>'0');
   SIGNAL serial_10G_rx_ring_arr          : STD_LOGIC_VECTOR(g_nof_streams_ring-1 DOWNTO 0);
-  SIGNAL serial_10G_tx_back_arr          : STD_LOGIC_VECTOR(c_unb2_board_tr_back.bus_w-1 DOWNTO 0) := (OTHERS=>'0');
-  SIGNAL serial_10G_rx_back_arr          : STD_LOGIC_VECTOR(c_unb2_board_tr_back.bus_w-1 DOWNTO 0);
+  SIGNAL serial_10G_tx_back_arr          : STD_LOGIC_VECTOR(g_nof_streams_back0+g_nof_streams_back1-1 DOWNTO 0) := (OTHERS=>'0');
+  SIGNAL serial_10G_rx_back_arr          : STD_LOGIC_VECTOR(g_nof_streams_back0+g_nof_streams_back1-1 DOWNTO 0);
 
   SIGNAL reg_tr_10GbE_mosi          : t_mem_mosi;
   SIGNAL reg_tr_10GbE_miso          : t_mem_miso;
   SIGNAL reg_tr_10GbE_mosi2          : t_mem_mosi;
   SIGNAL reg_tr_10GbE_miso2          : t_mem_miso;
+  SIGNAL reg_tr_10GbE_mosi3          : t_mem_mosi;
+  SIGNAL reg_tr_10GbE_miso3          : t_mem_miso;
 
   SIGNAL reg_dp_ram_from_mm_mosi    : t_mem_mosi;
   SIGNAL reg_dp_ram_from_mm_miso    : t_mem_miso := c_mem_miso_rst;
@@ -806,38 +811,57 @@ BEGIN
       serial_rx_arr       => i_serial_10G_rx_qsfp_ring_arr
     );
 
-    u_tr_10GbE_back: ENTITY unb2_board_lib.unb2_board_10gbe
+    u_tr_10GbE_back0: ENTITY unb2_board_lib.unb2_board_10gbe -- Lower Back lines
     GENERIC MAP (
       g_technology    => g_technology,
       g_sim           => g_sim,
       g_sim_level     => 1,
-      g_nof_macs      => g_nof_streams_back,
+      g_nof_macs      => g_nof_streams_back0,
       g_tx_fifo_fill  => c_def_10GbE_block_size,
       g_tx_fifo_size  => c_def_10GbE_block_size*2
     )
     PORT MAP (
-      tr_ref_clk          => BCK_REF_CLK,--SB_CLK,
-
-      -- MM interface
+      tr_ref_clk          => BCK_REF_CLK,
       mm_rst              => mm_rst,
       mm_clk              => mm_clk,
-
       reg_mac_mosi        => reg_tr_10GbE_mosi2, -- FIXME use separate
       reg_mac_miso        => reg_tr_10GbE_miso2,
-
-      -- DP interface
       dp_rst              => dp_rst,
       dp_clk              => dp_clk,
 
-      src_out_arr         => dp_offload_rx_snk_in_arr(g_nof_streams-1 DOWNTO g_nof_streams_qsfp+g_nof_streams_ring),
-      src_in_arr          => dp_offload_rx_snk_out_arr(g_nof_streams-1 DOWNTO g_nof_streams_qsfp+g_nof_streams_ring),
+      src_out_arr         => dp_offload_rx_snk_in_arr(g_nof_streams_back0+g_nof_streams_qsfp+g_nof_streams_ring-1 DOWNTO g_nof_streams_qsfp+g_nof_streams_ring),
+      src_in_arr          => dp_offload_rx_snk_out_arr(g_nof_streams_back0+g_nof_streams_qsfp+g_nof_streams_ring-1 DOWNTO g_nof_streams_qsfp+g_nof_streams_ring),
+      snk_out_arr         => dp_offload_tx_src_in_arr(g_nof_streams_back0+g_nof_streams_qsfp+g_nof_streams_ring-1 DOWNTO g_nof_streams_qsfp+g_nof_streams_ring),
+      snk_in_arr          => dp_offload_tx_src_out_arr(g_nof_streams_back0+g_nof_streams_qsfp+g_nof_streams_ring-1 DOWNTO g_nof_streams_qsfp+g_nof_streams_ring),
+
+      serial_tx_arr       => i_serial_10G_tx_back0_arr,
+      serial_rx_arr       => i_serial_10G_rx_back0_arr
+    );
+    u_tr_10GbE_back1: ENTITY unb2_board_lib.unb2_board_10gbe -- Upper Back lines
+    GENERIC MAP (
+      g_technology    => g_technology,
+      g_sim           => g_sim,
+      g_sim_level     => 1,
+      g_nof_macs      => g_nof_streams_back1,
+      g_tx_fifo_fill  => c_def_10GbE_block_size,
+      g_tx_fifo_size  => c_def_10GbE_block_size*2
+    )
+    PORT MAP (
+      tr_ref_clk          => SB_CLK,
+      mm_rst              => mm_rst,
+      mm_clk              => mm_clk,
+      reg_mac_mosi        => reg_tr_10GbE_mosi3, -- FIXME use separate
+      reg_mac_miso        => reg_tr_10GbE_miso3,
+      dp_rst              => dp_rst,
+      dp_clk              => dp_clk,
 
-      snk_out_arr         => dp_offload_tx_src_in_arr(g_nof_streams-1 DOWNTO g_nof_streams_qsfp+g_nof_streams_ring),
-      snk_in_arr          => dp_offload_tx_src_out_arr(g_nof_streams-1 DOWNTO g_nof_streams_qsfp+g_nof_streams_ring),
+      src_out_arr         => dp_offload_rx_snk_in_arr(g_nof_streams-1 DOWNTO g_nof_streams_back0+g_nof_streams_qsfp+g_nof_streams_ring),
+      src_in_arr          => dp_offload_rx_snk_out_arr(g_nof_streams-1 DOWNTO g_nof_streams_back0+g_nof_streams_qsfp+g_nof_streams_ring),
+      snk_out_arr         => dp_offload_tx_src_in_arr(g_nof_streams-1 DOWNTO g_nof_streams_back0+g_nof_streams_qsfp+g_nof_streams_ring),
+      snk_in_arr          => dp_offload_tx_src_out_arr(g_nof_streams-1 DOWNTO g_nof_streams_back0+g_nof_streams_qsfp+g_nof_streams_ring),
 
-      -- Serial IO
-      serial_tx_arr       => i_serial_10G_tx_back_arr,
-      serial_rx_arr       => i_serial_10G_rx_back_arr
+      serial_tx_arr       => i_serial_10G_tx_back1_arr,
+      serial_rx_arr       => i_serial_10G_rx_back1_arr
     );
 
 
@@ -917,9 +941,14 @@ BEGIN
       red_led_arr       => user_red_led_arr(g_nof_qsfp_bus-1 DOWNTO 0)
     );
 
-    gen_back_wires: FOR i IN 0 TO g_nof_streams_back-1 GENERATE
-        serial_10G_tx_back_arr(i)      <= i_serial_10G_tx_back_arr(i);
-      i_serial_10G_rx_back_arr(i) <=   serial_10G_rx_back_arr(i);
+
+    gen_back0_wires: FOR i IN 0 TO g_nof_streams_back0-1 GENERATE
+        serial_10G_tx_back_arr(i)  <= i_serial_10G_tx_back0_arr(i);
+      i_serial_10G_rx_back0_arr(i) <=   serial_10G_rx_back_arr(i);
+    END GENERATE;
+    gen_back1_wires: FOR i IN 0 TO g_nof_streams_back1-1 GENERATE
+        serial_10G_tx_back_arr(i+g_nof_streams_back0) <= i_serial_10G_tx_back1_arr(i);
+      i_serial_10G_rx_back1_arr(i) <= serial_10G_rx_back_arr(i+g_nof_streams_back0);
     END GENERATE;
 
     u_back_io : ENTITY unb2_board_lib.unb2_board_back_io
@@ -932,8 +961,10 @@ BEGIN
 
       -- Serial I/O
       -- back transceivers
-      BCK_RX(0)  => BCK_RX,--(g_nof_streams_back-1 downto 0),
-      BCK_TX(0)  => BCK_TX,--(g_nof_streams_back-1 downto 0),
+      BCK_RX(0)  => BCK_RX(g_nof_streams_back0-1 downto 0),
+      BCK_TX(0)  => BCK_TX(g_nof_streams_back0-1 downto 0),
+      BCK_RX(1)  => BCK_RX(g_nof_streams_back0+g_nof_streams_back1-1 downto g_nof_streams_back0),
+      BCK_TX(1)  => BCK_TX(g_nof_streams_back0+g_nof_streams_back1-1 downto g_nof_streams_back0),
 
       BCK_SDA => BCK_SDA,
       BCK_SCL => BCK_SCL,
diff --git a/boards/uniboard2/libraries/unb2_board/quartus/unb2_board.sdc b/boards/uniboard2/libraries/unb2_board/quartus/unb2_board.sdc
index f36d411a4d55568626dad35839c8d17f723ca4d5..6f2ae0779ec89dea2384da08a7a5c4899e499e9e 100644
--- a/boards/uniboard2/libraries/unb2_board/quartus/unb2_board.sdc
+++ b/boards/uniboard2/libraries/unb2_board/quartus/unb2_board.sdc
@@ -29,9 +29,9 @@ create_clock -name {ETH_CLK} -period 8.000 -waveform { 0.000 4.000 } [get_ports
 #create_clock -name {SB_CLK} -period 6.400 -waveform { 0.000 3.200 } [get_ports {SB_CLK}]
 #create_clock -name {SA_CLK} -period 6.400 -waveform { 0.000 3.200 } [get_ports {SA_CLK}]
 
-# from Jonathan:
 create_clock -period 1.552 -name {SA_CLK} { SA_CLK }
 create_clock -period 1.552 -name {SB_CLK} { SB_CLK }
+create_clock -period 1.552 -name {BCK_REF_CLK} { BCK_REF_CLK }
 
 
 
@@ -41,6 +41,7 @@ derive_clock_uncertainty
 
 # Effectively set false path from this clock to all other clocks
 set_clock_groups -asynchronous -group [get_clocks altera_reserved_tck]
+set_clock_groups -asynchronous -group [get_clocks BCK_REF_CLK]
 set_clock_groups -asynchronous -group [get_clocks SB_CLK]
 set_clock_groups -asynchronous -group [get_clocks SA_CLK]
 set_clock_groups -asynchronous -group [get_clocks ETH_CLK]
diff --git a/boards/uniboard2/libraries/unb2_board/src/vhdl/unb2_board_pkg.vhd b/boards/uniboard2/libraries/unb2_board/src/vhdl/unb2_board_pkg.vhd
index 45c2bc2b81fa76d2fe9906c847506e78a3e9bbfe..aa129fd5a7272e017580884b1f486e5df498ba96 100644
--- a/boards/uniboard2/libraries/unb2_board/src/vhdl/unb2_board_pkg.vhd
+++ b/boards/uniboard2/libraries/unb2_board/src/vhdl/unb2_board_pkg.vhd
@@ -71,9 +71,7 @@ PACKAGE unb2_board_pkg IS
     i2c_w                             : NATURAL;
   END RECORD;
 
-  --CONSTANT c_unb2_board_tr_back              : t_c_unb2_board_tr := (1, 48, 3); -- per node: 1 bus with 48 channels
-  --CONSTANT c_unb2_board_tr_back              : t_c_unb2_board_tr := (1, 4, 3); -- per node: 1 bus with 48 channels
-  CONSTANT c_unb2_board_tr_back              : t_c_unb2_board_tr := (1, 24, 3); -- per node: 1 bus with 48 channels
+  CONSTANT c_unb2_board_tr_back              : t_c_unb2_board_tr := (2, 24, 3); -- per node: 2 buses with 24 channels
   CONSTANT c_unb2_board_tr_ring              : t_c_unb2_board_tr := (2, 12, 0); -- per node: 2 buses with 12 channels
   CONSTANT c_unb2_board_tr_qsfp              : t_c_unb2_board_tr := (6, 4,  6); -- per node: 6 buses with 4 channels
   CONSTANT c_unb2_board_tr_qsfp_nof_leds     : NATURAL := c_unb2_board_tr_qsfp.nof_bus * 2; -- 2 leds per qsfp