diff --git a/boards/uniboard2/designs/unb2_test/doc/README b/boards/uniboard2/designs/unb2_test/doc/README
index 8c41a358ef553e3920b7c08eb8a99bd17b580b5f..d79985a8f154a590c7c6fda1e8266b17fa04078e 100644
--- a/boards/uniboard2/designs/unb2_test/doc/README
+++ b/boards/uniboard2/designs/unb2_test/doc/README
@@ -7,8 +7,12 @@ Start with the Oneclick Commands:
     python $RADIOHDL/tools/oneclick/base/modelsim_config.py -t unb2
     python $RADIOHDL/tools/oneclick/base/quartus_config.py -t unb2
 
-Generate MMM for QSYS:
-    run_qsys unb2 unb2_test
+
+Generate MMM for QSYS (select one of these revisions):
+    run_qsys unb2 unb2_test_1GbE
+    run_qsys unb2 unb2_test_10GbE
+    run_qsys unb2 unb2_test_ddr
+    run_qsys unb2 unb2_test_all
 
 -> From here either continue to Modelsim (simulation) or Quartus (synthesis)
 
@@ -38,25 +42,33 @@ Modelsim instructions:
 
 Synthesis
 ---------
-Quartus instructions (for QSYS):
-    run_app unb2 unb2_test use=gen2
-    run_qcomp unb2 unb2_test
+Quartus instructions: (select one of these revisions):
+    run_qcomp unb2 unb2_test_10GbE
+    run_qcomp unb2 unb2_test_1GbE
+    run_qcomp unb2 unb2_test_ddr
+    run_qcomp unb2 unb2_test_all
+
 
 In case of needing the Quartus GUI for inspection:
     run_quartus unb2
 
 
 Convert .sof to .rbf:
-    run_rbf unb2 unb2_test
+    (select one of these revisions):
+    run_rbf unb2 unb2_test_10GbE
+    run_rbf unb2 unb2_test_1GbE
+    run_rbf unb2 unb2_test_ddr
+    run_rbf unb2 unb2_test_all
 
 
 Send to LCU capture5:
-    scp $RADIOHDL/build/quartus/unb2_test/unb2_test.rbf capture5:~/rbf/
+    # for example the unb2_test_10GbE revision:
+    scp $RADIOHDL/build/quartus/unb2_test_10GbE/unb2_test_10GbE.rbf capture5:~/rbf/
 
     # Now login on capture5 and use pythonscript to program flash:
     cd unb2_test/tb/python
 
     # for example use frontnode 0 on uniboard 0:
-    python tc_unb2_test.py --gn 0 --seq REGMAP,FLASH -s ~/rbf/unb2_test.rbf
+    python tc_unb2_test.py --gn 0 --seq REGMAP,FLASH -s ~/rbf/unb2_test_10GbE.rbf
     python tc_unb2_test.py --gn 0 --seq REMU,REGMAP,INFO,PPSH,SENSORS  # start design, read info-ppsh-sensors
 
diff --git a/boards/uniboard2/designs/unb2_test/hdllib.cfg b/boards/uniboard2/designs/unb2_test/hdllib.cfg
index 5b06f70779a4c4f9e2dd8d33fafd553cb4bf8887..58a39bfdb245729d4f425fdc20942a3a94404a08 100644
--- a/boards/uniboard2/designs/unb2_test/hdllib.cfg
+++ b/boards/uniboard2/designs/unb2_test/hdllib.cfg
@@ -6,7 +6,6 @@ hdl_lib_uses_sim =
 hdl_lib_technology = ip_arria10
 
 
-
 synth_files =
     src/vhdl/qsys_unb2_test_pkg.vhd
     src/vhdl/mmm_unb2_test.vhd
@@ -15,31 +14,3 @@ synth_files =
 test_bench_files = 
     tb/vhdl/tb_unb2_test.vhd
 
-synth_top_level_entity =
-
-quartus_copy_files =
-    quartus/qsys_unb2_test.qsys .
-    src/hex/counter_data_128_0.hex ../..
-    src/hex/counter_data_128_1.hex ../..
-    src/hex/counter_data_128_2.hex ../..
-    src/hex/counter_data_128_3.hex ../..
-    src/hex/counter_data_32_0.hex ../..
-    src/hex/counter_data_32_1.hex ../..
-    src/hex/counter_data_32_2.hex ../..
-    src/hex/counter_data_32_3.hex ../..
-    src/hex/counter_data_64_0.hex ../..
-    src/hex/counter_data_64_1.hex ../..
-    src/hex/counter_data_64_2.hex ../..
-    src/hex/counter_data_64_3.hex ../..
-
-quartus_qsf_files =
-    $RADIOHDL/boards/uniboard2/libraries/unb2_board/quartus/unb2_board.qsf
-
-quartus_tcl_files =
-    quartus/unb2_test_pins.tcl
-
-quartus_vhdl_files = 
-
-quartus_qip_files =
-    $HDL_BUILD_DIR/unb2/quartus/unb2_test/qsys_unb2_test/synthesis/qsys_unb2_test.qip
-
diff --git a/boards/uniboard2/designs/unb2_test/revisions/unb2_test_1GbE/hdllib.cfg b/boards/uniboard2/designs/unb2_test/revisions/unb2_test_1GbE/hdllib.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..e98c56a67d3e98b9d176eef29c291a5e5d6bf839
--- /dev/null
+++ b/boards/uniboard2/designs/unb2_test/revisions/unb2_test_1GbE/hdllib.cfg
@@ -0,0 +1,36 @@
+hdl_lib_name = unb2_test_1GbE
+hdl_library_clause_name = unb2_test_1GbE_lib
+hdl_lib_uses_synth = common mm technology unb2_board unb2_test
+hdl_lib_uses_sim = 
+hdl_lib_excludes = ip_arria10_mac_10g
+
+hdl_lib_technology = ip_arria10
+
+synth_files =
+    unb2_test_1GbE.vhd
+
+test_bench_files = 
+#    tb_unb2_test_1GbE.vhd
+
+modelsim_copy_files =
+    ../../src/hex hex
+
+synth_top_level_entity =
+
+quartus_copy_files =
+    ../../quartus/qsys_unb2_test.qsys .
+    ../../src/hex hex
+
+quartus_qsf_files =
+    $RADIOHDL/boards/uniboard2/libraries/unb2_board/quartus/unb2_board.qsf
+
+quartus_sdc_files =
+    $RADIOHDL/boards/uniboard2/libraries/unb2_board/quartus/unb2_board.sdc
+
+quartus_tcl_files =
+    quartus/unb2_test_1GbE_pins.tcl
+
+quartus_vhdl_files = 
+
+quartus_qip_files =
+    $HDL_BUILD_DIR/unb2/quartus/unb2_test_1GbE/qsys_unb2_test/synthesis/qsys_unb2_test.qip
diff --git a/boards/uniboard2/designs/unb2_test/revisions/unb2_test_1GbE/quartus/unb2_test_1GbE_pins.tcl b/boards/uniboard2/designs/unb2_test/revisions/unb2_test_1GbE/quartus/unb2_test_1GbE_pins.tcl
new file mode 100644
index 0000000000000000000000000000000000000000..730162e0dfcc145b5720a0be42907d109ee9fb4e
--- /dev/null
+++ b/boards/uniboard2/designs/unb2_test/revisions/unb2_test_1GbE/quartus/unb2_test_1GbE_pins.tcl
@@ -0,0 +1,23 @@
+###############################################################################
+#
+# Copyright (C) 2014
+# ASTRON (Netherlands Institute for Radio Astronomy) <http://www.astron.nl/>
+# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+###############################################################################
+
+#source $::env(RADIOHDL)/boards/uniboard2/libraries/unb2_board/quartus/pinning/unb2_all_pins.tcl
+source $::env(RADIOHDL)/boards/uniboard2/libraries/unb2_board/quartus/pinning/unb2_minimal_pins.tcl
diff --git a/boards/uniboard2/designs/unb2_test/revisions/unb2_test_1GbE/unb2_test_1GbE.vhd b/boards/uniboard2/designs/unb2_test/revisions/unb2_test_1GbE/unb2_test_1GbE.vhd
new file mode 100644
index 0000000000000000000000000000000000000000..e9c2c99d6a1eee0a9ad2c14a71dd469a4e96a859
--- /dev/null
+++ b/boards/uniboard2/designs/unb2_test/revisions/unb2_test_1GbE/unb2_test_1GbE.vhd
@@ -0,0 +1,109 @@
+-------------------------------------------------------------------------------
+--
+-- Copyright (C) 2015
+-- ASTRON (Netherlands Institute for Radio Astronomy) <http://www.astron.nl/>
+-- JIVE (Joint Institute for VLBI in Europe) <http://www.jive.nl/>
+-- P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
+--
+-- This program is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program.  If not, see <http://www.gnu.org/licenses/>.
+--
+-------------------------------------------------------------------------------
+
+LIBRARY IEEE, common_lib, unb2_board_lib, unb2_test_lib, technology_lib;
+USE IEEE.STD_LOGIC_1164.ALL;
+USE IEEE.NUMERIC_STD.ALL;
+USE common_lib.common_pkg.ALL;
+USE unb2_board_lib.unb2_board_pkg.ALL;
+USE technology_lib.technology_pkg.ALL;
+
+
+ENTITY unb2_test_1GbE IS
+  GENERIC (
+    g_design_name      : STRING  := "unb2_test_1GbE";
+    g_design_note      : STRING  := "Test design with 1GbE";
+    g_sim              : BOOLEAN := FALSE; --Overridden by TB
+    g_sim_unb_nr       : NATURAL := 0;
+    g_sim_node_nr      : NATURAL := 0;
+    g_stamp_date       : NATURAL := 0;  -- Date (YYYYMMDD) -- set by QSF
+    g_stamp_time       : NATURAL := 0;  -- Time (HHMMSS)   -- set by QSF
+    g_stamp_svn        : NATURAL := 0   -- SVN revision    -- set by QSF
+  );
+  PORT (
+    -- GENERAL
+    CLK          : IN    STD_LOGIC; -- System Clock
+    PPS          : IN    STD_LOGIC; -- System Sync
+    WDI          : OUT   STD_LOGIC; -- Watchdog Clear
+    INTA         : INOUT STD_LOGIC; -- FPGA interconnect line
+    INTB         : INOUT STD_LOGIC; -- FPGA interconnect line
+
+    -- Others
+    VERSION      : IN    STD_LOGIC_VECTOR(c_unb2_board_aux.version_w-1 DOWNTO 0);
+    ID           : IN    STD_LOGIC_VECTOR(c_unb2_board_aux.id_w-1 DOWNTO 0);
+    TESTIO       : INOUT STD_LOGIC_VECTOR(c_unb2_board_aux.testio_w-1 DOWNTO 0);
+    
+    -- I2C Interface to Sensors
+    SENS_SC      : INOUT STD_LOGIC;
+    SENS_SD      : INOUT STD_LOGIC;
+  
+    -- 1GbE Control Interface
+    ETH_CLK      : IN    STD_LOGIC;
+    ETH_SGIN     : IN    STD_LOGIC_VECTOR(c_unb2_board_nof_eth-1 DOWNTO 0);
+    ETH_SGOUT    : OUT   STD_LOGIC_VECTOR(c_unb2_board_nof_eth-1 DOWNTO 0);
+
+    QSFP_LED     : OUT   STD_LOGIC_VECTOR(c_unb2_board_tr_qsfp_nof_leds-1 DOWNTO 0)
+  );
+END unb2_test_1GbE;
+
+
+ARCHITECTURE str OF unb2_test_1GbE IS
+
+BEGIN
+
+  u_revision : ENTITY unb2_test_lib.unb2_test
+  GENERIC MAP (
+    g_design_name => g_design_name,
+    g_design_note => g_design_note,
+    g_sim         => g_sim,
+    g_sim_unb_nr  => g_sim_unb_nr,
+    g_sim_node_nr => g_sim_node_nr,
+    g_stamp_date  => g_stamp_date,
+    g_stamp_time  => g_stamp_time,
+    g_stamp_svn   => g_stamp_svn
+  )
+  PORT MAP (
+    -- GENERAL
+    CLK          => CLK,
+    PPS          => PPS,
+    WDI          => WDI,
+    INTA         => INTA,
+    INTB         => INTB,
+
+    -- Others
+    VERSION      => VERSION,
+    ID           => ID,
+    TESTIO       => TESTIO,
+
+    -- I2C Interface to Sensors
+    SENS_SC      => SENS_SC,
+    SENS_SD      => SENS_SD,
+
+    -- 1GbE Control Interface
+    ETH_clk      => ETH_clk,
+    ETH_SGIN     => ETH_SGIN,
+    ETH_SGOUT    => ETH_SGOUT,
+
+    QSFP_LED     => QSFP_LED
+  );
+
+END str;
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 25556ccbc58aaab9fe36435add8f4b5a078f676a..d9935893d1d605d4318c513624dcd61f2c909f92 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
@@ -79,6 +79,7 @@ ENTITY mmm_unb2_test IS
     reg_ppsh_miso            : IN  t_mem_miso; 
                              
     -- eth1g
+    eth1g_mm_rst             : OUT STD_LOGIC;
     eth1g_tse_mosi           : OUT t_mem_mosi;  
     eth1g_tse_miso           : IN  t_mem_miso;  
     eth1g_reg_mosi           : OUT t_mem_mosi;  
@@ -283,7 +284,7 @@ BEGIN
       -- the_pio_wdi: toggled by NIOS II application unb_osy. Connects to WDI via ctrl_unb2_board.
       pio_wdi_external_connection_export        => pout_wdi,
 
-      avs_eth_0_reset_export                    => OPEN,
+      avs_eth_0_reset_export                    => eth1g_mm_rst,
       avs_eth_0_clk_export                      => OPEN,
       avs_eth_0_tse_address_export              => eth1g_tse_mosi.address(c_unb2_board_peripherals_mm_reg_default.reg_tse_adr_w-1 DOWNTO 0),
       avs_eth_0_tse_write_export                => eth1g_tse_mosi.wr,
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 fb7609c5a0f044c519be4e708b798e1f80936e17..f35975bc964b19889b6d83824d5d7696475c731c 100644
--- a/boards/uniboard2/designs/unb2_test/src/vhdl/unb2_test.vhd
+++ b/boards/uniboard2/designs/unb2_test/src/vhdl/unb2_test.vhd
@@ -46,12 +46,7 @@ ENTITY unb2_test IS
     g_stamp_date       : NATURAL := 0;  -- Date (YYYYMMDD) -- set by QSF
     g_stamp_time       : NATURAL := 0;  -- Time (HHMMSS)   -- set by QSF
     g_stamp_svn        : NATURAL := 0;  -- SVN revision    -- set by QSF
-    g_factory_image    : BOOLEAN := FALSE;
-    g_nof_streams_1GbE : NATURAL := 0;
-    g_nof_streams_qsfp : NATURAL := c_unb2_board_tr_qsfp.nof_bus * c_unb2_board_tr_qsfp.bus_w;
-    g_nof_streams_ring : NATURAL := c_unb2_board_tr_ring.nof_bus * c_unb2_board_tr_ring.bus_w;
-    g_nof_streams_back0: NATURAL := c_unb2_board_tr_back.bus_w;
-    g_nof_streams_back1: NATURAL := c_unb2_board_tr_back.bus_w
+    g_factory_image    : BOOLEAN := FALSE
   );
   PORT (
     -- GENERAL
@@ -76,38 +71,38 @@ ENTITY unb2_test IS
     ETH_SGOUT    : OUT   STD_LOGIC_VECTOR(c_unb2_board_nof_eth-1 DOWNTO 0);
 
     -- Transceiver clocks
-    SA_CLK       : IN    STD_LOGIC; -- Clock 10GbE front (qsfp) and ring lines
-    SB_CLK       : IN    STD_LOGIC; -- Clock 10GbE back upper 24 lines
-    BCK_REF_CLK  : IN    STD_LOGIC; -- Clock 10GbE back lower 24 lines
+    SA_CLK       : IN    STD_LOGIC := '0'; -- Clock 10GbE front (qsfp) and ring lines
+    SB_CLK       : IN    STD_LOGIC := '0'; -- Clock 10GbE back upper 24 lines
+    BCK_REF_CLK  : IN    STD_LOGIC := '0'; -- Clock 10GbE back lower 24 lines
 
     -- back transceivers
-    BCK_RX       : IN    STD_LOGIC_VECTOR((c_unb2_board_tr_back.bus_w * c_unb2_board_tr_back.nof_bus)-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) := (OTHERS=>'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);
 
     -- ring transceivers
-    RING_0_RX    : IN    STD_LOGIC_VECTOR(c_unb2_board_tr_ring.bus_w-1 downto 0);
+    RING_0_RX    : IN    STD_LOGIC_VECTOR(c_unb2_board_tr_ring.bus_w-1 downto 0) := (OTHERS=>'0');
     RING_0_TX    : OUT   STD_LOGIC_VECTOR(c_unb2_board_tr_ring.bus_w-1 downto 0);
-    RING_1_RX    : IN    STD_LOGIC_VECTOR(c_unb2_board_tr_ring.bus_w-1 downto 0);
+    RING_1_RX    : IN    STD_LOGIC_VECTOR(c_unb2_board_tr_ring.bus_w-1 downto 0) := (OTHERS=>'0');
     RING_1_TX    : OUT   STD_LOGIC_VECTOR(c_unb2_board_tr_ring.bus_w-1 downto 0);
     -- pmbus
     PMBUS_SC     : INOUT STD_LOGIC;
     PMBUS_SD     : INOUT STD_LOGIC;
-    PMBUS_ALERT  : IN    STD_LOGIC;
+    PMBUS_ALERT  : IN    STD_LOGIC := '0';
     -- front transceivers
-    QSFP_0_RX    : IN    STD_LOGIC_VECTOR(c_unb2_board_tr_qsfp.bus_w-1 downto 0);
+    QSFP_0_RX    : IN    STD_LOGIC_VECTOR(c_unb2_board_tr_qsfp.bus_w-1 downto 0) := (OTHERS=>'0');
     QSFP_0_TX    : OUT   STD_LOGIC_VECTOR(c_unb2_board_tr_qsfp.bus_w-1 downto 0);
-    QSFP_1_RX    : IN    STD_LOGIC_VECTOR(c_unb2_board_tr_qsfp.bus_w-1 downto 0);
+    QSFP_1_RX    : IN    STD_LOGIC_VECTOR(c_unb2_board_tr_qsfp.bus_w-1 downto 0) := (OTHERS=>'0');
     QSFP_1_TX    : OUT   STD_LOGIC_VECTOR(c_unb2_board_tr_qsfp.bus_w-1 downto 0);
-    QSFP_2_RX    : IN    STD_LOGIC_VECTOR(c_unb2_board_tr_qsfp.bus_w-1 downto 0);
+    QSFP_2_RX    : IN    STD_LOGIC_VECTOR(c_unb2_board_tr_qsfp.bus_w-1 downto 0) := (OTHERS=>'0');
     QSFP_2_TX    : OUT   STD_LOGIC_VECTOR(c_unb2_board_tr_qsfp.bus_w-1 downto 0);
-    QSFP_3_RX    : IN    STD_LOGIC_VECTOR(c_unb2_board_tr_qsfp.bus_w-1 downto 0);
+    QSFP_3_RX    : IN    STD_LOGIC_VECTOR(c_unb2_board_tr_qsfp.bus_w-1 downto 0) := (OTHERS=>'0');
     QSFP_3_TX    : OUT   STD_LOGIC_VECTOR(c_unb2_board_tr_qsfp.bus_w-1 downto 0);
-    QSFP_4_RX    : IN    STD_LOGIC_VECTOR(c_unb2_board_tr_qsfp.bus_w-1 downto 0);
+    QSFP_4_RX    : IN    STD_LOGIC_VECTOR(c_unb2_board_tr_qsfp.bus_w-1 downto 0) := (OTHERS=>'0');
     QSFP_4_TX    : OUT   STD_LOGIC_VECTOR(c_unb2_board_tr_qsfp.bus_w-1 downto 0);
-    QSFP_5_RX    : IN    STD_LOGIC_VECTOR(c_unb2_board_tr_qsfp.bus_w-1 downto 0);
+    QSFP_5_RX    : IN    STD_LOGIC_VECTOR(c_unb2_board_tr_qsfp.bus_w-1 downto 0) := (OTHERS=>'0');
     QSFP_5_TX    : OUT   STD_LOGIC_VECTOR(c_unb2_board_tr_qsfp.bus_w-1 downto 0);
 
     QSFP_SDA     : INOUT STD_LOGIC_VECTOR(c_unb2_board_tr_qsfp.i2c_w-1 downto 0);
@@ -125,8 +120,17 @@ ARCHITECTURE str OF unb2_test IS
   CONSTANT c_fw_version                 : t_unb2_board_fw_version := (1, 1);
 
   -- Revision controlled constants
-  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 c_use_1GbE                   : BOOLEAN := g_design_name="unb2_test_1GbE"  OR g_design_name="unb2_test_10GbE" OR g_design_name="unb2_test_all";
+  CONSTANT c_use_10GbE                  : BOOLEAN := g_design_name="unb2_test_10GbE" OR g_design_name="unb2_test_all";
+  CONSTANT c_use_ddr                    : BOOLEAN := g_design_name="unb2_test_ddr"   OR g_design_name="unb2_test_all";
+
+  CONSTANT g_nof_streams_1GbE           : NATURAL := sel_a_b(c_use_1GbE,c_unb2_board_nof_eth,0);
+  CONSTANT g_nof_streams_qsfp           : NATURAL := sel_a_b(c_use_10GbE,c_unb2_board_tr_qsfp.nof_bus * c_unb2_board_tr_qsfp.bus_w,0);
+  CONSTANT g_nof_streams_ring           : NATURAL := sel_a_b(c_use_10GbE,c_unb2_board_tr_ring.nof_bus * c_unb2_board_tr_ring.bus_w,0);
+  CONSTANT g_nof_streams_back0          : NATURAL := sel_a_b(c_use_10GbE,c_unb2_board_tr_back.bus_w,0);
+  CONSTANT g_nof_streams_back1          : NATURAL := sel_a_b(c_use_10GbE,c_unb2_board_tr_back.bus_w,0);
+
+
   CONSTANT g_nof_streams                : NATURAL := g_nof_streams_qsfp + g_nof_streams_ring + g_nof_streams_back0 + g_nof_streams_back1 + g_nof_streams_1GbE;
   CONSTANT g_nof_qsfp_bus               : NATURAL := ceil_div(g_nof_streams_qsfp,c_unb2_board_tr_qsfp.bus_w);
   CONSTANT g_nof_ring_bus               : NATURAL := ceil_div(g_nof_streams_ring,c_unb2_board_tr_ring.bus_w);
@@ -232,6 +236,7 @@ ARCHITECTURE str OF unb2_test IS
   SIGNAL reg_unb_sens_miso          : t_mem_miso;
 
   -- eth1g
+  SIGNAL eth1g_mm_rst               : STD_LOGIC;
   SIGNAL eth1g_tse_mosi             : t_mem_mosi;  -- ETH TSE MAC registers
   SIGNAL eth1g_tse_miso             : t_mem_miso;
   SIGNAL eth1g_reg_mosi             : t_mem_mosi;  -- ETH control and status registers
@@ -420,6 +425,7 @@ BEGIN
     reg_ppsh_miso            => reg_ppsh_miso,
     
     -- eth1g
+    eth1g_mm_rst             => eth1g_mm_rst,
     eth1g_tse_mosi           => eth1g_tse_mosi,
     eth1g_tse_miso           => eth1g_tse_miso,
     eth1g_reg_mosi           => eth1g_reg_mosi,
@@ -496,6 +502,7 @@ BEGIN
     reg_ppsh_miso            => reg_ppsh_miso, 
   
     -- eth1g
+    eth1g_mm_rst             => eth1g_mm_rst,
     eth1g_tse_mosi           => eth1g_tse_mosi,
     eth1g_tse_miso           => eth1g_tse_miso,
     eth1g_reg_mosi           => eth1g_reg_mosi,
@@ -559,192 +566,193 @@ BEGIN
   -----------------------------------------------------------------------------
   -- TX: Block generator
   -----------------------------------------------------------------------------
-  u_mms_diag_block_gen : ENTITY diag_lib.mms_diag_block_gen
-  GENERIC MAP (
-    g_nof_streams        => g_nof_streams,
-    g_buf_dat_w          => c_data_w,
-    g_buf_addr_w         => ceil_log2(TO_UINT(c_bg_ctrl.samples_per_packet)),
-    g_file_name_prefix   => "../../counter_data_" & NATURAL'IMAGE(c_data_w), -- counter_data_32_0.hex, counter_data_32_1.hex, ...
-    g_diag_block_gen_rst => c_bg_ctrl
-  )
-  PORT MAP (
-    mm_rst           => mm_rst,
-    mm_clk           => mm_clk,
-
-    dp_rst           => dp_rst,
-    dp_clk           => dp_clk,
-
-    out_sosi_arr     => block_gen_src_out_arr,
-    out_siso_arr     => block_gen_src_in_arr,
-
-    reg_bg_ctrl_mosi => reg_diag_bg_mosi,
-    reg_bg_ctrl_miso => reg_diag_bg_miso,
-    ram_bg_data_mosi => ram_diag_bg_mosi,
-    ram_bg_data_miso => ram_diag_bg_miso
-  );
-
-  gen_dp_fifo_sc : FOR i IN 0 TO g_nof_streams-1 GENERATE --FIXME : we also need this fifo to pass on the BSN (47b) and sync (1b); set generics accordingly
-    u_dp_fifo_sc : ENTITY dp_lib.dp_fifo_sc
+  gen_bgdb_chain : IF c_use_1GbE=TRUE GENERATE
+    u_mms_diag_block_gen : ENTITY diag_lib.mms_diag_block_gen
     GENERIC MAP (
-      g_data_w         => c_data_w,
-      g_fifo_size      => 50
+      g_nof_streams        => g_nof_streams,
+      g_buf_dat_w          => c_data_w,
+      g_buf_addr_w         => ceil_log2(TO_UINT(c_bg_ctrl.samples_per_packet)),
+      g_file_name_prefix   => "../../counter_data_" & NATURAL'IMAGE(c_data_w), -- counter_data_32_0.hex, counter_data_32_1.hex, ...
+      g_diag_block_gen_rst => c_bg_ctrl
     )
     PORT MAP (
-      rst         => dp_rst,
-      clk         => dp_clk,
-      -- ST sink (BG)
-      snk_out     => block_gen_src_in_arr(i),
-      snk_in      => block_gen_src_out_arr(i),
-      -- ST source (tx_offload)
-      src_in      => fifo_block_gen_src_in_arr(i),
-      src_out     => fifo_block_gen_src_out_arr(i)
+      mm_rst           => mm_rst,
+      mm_clk           => mm_clk,
+  
+      dp_rst           => dp_rst,
+      dp_clk           => dp_clk,
+  
+      out_sosi_arr     => block_gen_src_out_arr,
+      out_siso_arr     => block_gen_src_in_arr,
+  
+      reg_bg_ctrl_mosi => reg_diag_bg_mosi,
+      reg_bg_ctrl_miso => reg_diag_bg_miso,
+      ram_bg_data_mosi => ram_diag_bg_mosi,
+      ram_bg_data_miso => ram_diag_bg_miso
     );
-  END GENERATE;
-
-  -----------------------------------------------------------------------------
-  -- TX: dp_offload_tx
-  -----------------------------------------------------------------------------
-  u_dp_offload_tx : ENTITY dp_lib.dp_offload_tx
-  GENERIC MAP (
-    g_nof_streams               => g_nof_streams,
-    g_data_w                    => c_data_w,
-    g_use_complex               => FALSE,
-    g_max_nof_words_per_block   => c_max_nof_words_per_block,
-    g_def_nof_words_per_block   => c_def_nof_words_per_block,
-    g_max_nof_blocks_per_packet => c_max_nof_blocks_per_packet,
-    g_def_nof_blocks_per_packet => c_def_nof_blocks_per_packet,
-    g_hdr_field_arr             => c_hdr_field_arr,
-    g_hdr_field_sel             => c_hdr_field_ovr_init
-   )
-  PORT MAP (
-    mm_rst                => mm_rst,
-    mm_clk                => mm_clk,
-
-    dp_rst                => dp_rst,
-    dp_clk                => dp_clk,
-
-    snk_in_arr            => fifo_block_gen_src_out_arr,
-    snk_out_arr           => fifo_block_gen_src_in_arr,
-
-    src_out_arr           => dp_offload_tx_src_out_arr,
-    src_in_arr            => dp_offload_tx_src_in_arr,
-
-    hdr_fields_in_arr     => hdr_fields_in_arr
-  );
-
-  gen_hdr_in_fields : FOR i IN 0 TO g_nof_streams-1 GENERATE
-    -- dst = src
-    hdr_fields_in_arr(i)(field_hi(c_hdr_field_arr, "eth_src_mac" ) DOWNTO field_lo(c_hdr_field_arr, "eth_src_mac")) <= x"00228608" & B"000"&ID(7 DOWNTO 3) & RESIZE_UVEC(ID(2 DOWNTO 0), c_byte_w);
-    hdr_fields_in_arr(i)(field_hi(c_hdr_field_arr, "eth_dst_mac" ) DOWNTO field_lo(c_hdr_field_arr, "eth_dst_mac")) <= x"00228608" & B"000"&ID(7 DOWNTO 3) & RESIZE_UVEC(ID(2 DOWNTO 0), c_byte_w);
-
-    hdr_fields_in_arr(i)(field_hi(c_hdr_field_arr, "ip_src_addr" ) DOWNTO field_lo(c_hdr_field_arr, "ip_src_addr")) <= x"0A63" & B"000"&ID(7 DOWNTO 3) & INCR_UVEC(RESIZE_UVEC(ID(2 DOWNTO 0), c_byte_w), 1);
-    hdr_fields_in_arr(i)(field_hi(c_hdr_field_arr, "ip_dst_addr" ) DOWNTO field_lo(c_hdr_field_arr, "ip_dst_addr")) <= x"0A63" & B"000"&ID(7 DOWNTO 3) & INCR_UVEC(RESIZE_UVEC(ID(2 DOWNTO 0), c_byte_w), 1);
-
-    -- dst port goes through 4000,4001,4002
-    hdr_fields_in_arr(i)(field_hi(c_hdr_field_arr, "udp_src_port") DOWNTO field_lo(c_hdr_field_arr, "udp_src_port" )) <= TO_UVEC(4000+i, 16);
-    hdr_fields_in_arr(i)(field_hi(c_hdr_field_arr, "udp_dst_port") DOWNTO field_lo(c_hdr_field_arr, "udp_dst_port" )) <= TO_UVEC(4000+i, 16);
-
-    hdr_fields_in_arr(i)(field_hi(c_hdr_field_arr, "usr_sync"    ) DOWNTO field_lo(c_hdr_field_arr, "usr_sync"   )) <= slv(block_gen_src_out_arr(i).sync);
-    hdr_fields_in_arr(i)(field_hi(c_hdr_field_arr, "usr_bsn"     ) DOWNTO field_lo(c_hdr_field_arr, "usr_bsn"    )) <= block_gen_src_out_arr(i).bsn(46 DOWNTO 0);
-  END GENERATE;
-
-
-
------------------------------------------------------------------------------
-  -- RX: dp_offload_rx
-  -----------------------------------------------------------------------------
-  u_dp_offload_rx : ENTITY dp_lib.dp_offload_rx
-  GENERIC MAP (
-    g_nof_streams         => g_nof_streams,
-    g_data_w              => c_data_w,
-    g_hdr_field_arr       => c_hdr_field_arr,
-    g_remove_crc          => TRUE,
-    g_crc_nof_words       => c_nof_crc_words
-   )
-  PORT MAP (
-    mm_rst                => mm_rst,
-    mm_clk                => mm_clk,
-
-    dp_rst                => dp_rst,
-    dp_clk                => dp_clk,
-
-    snk_in_arr            => dp_offload_rx_snk_in_arr,
-    snk_out_arr           => dp_offload_rx_snk_out_arr,
-
-    src_out_arr           => dp_offload_rx_src_out_arr,
-    src_in_arr            => dp_offload_rx_src_in_arr,
-
-    hdr_fields_out_arr    => hdr_fields_out_arr
+  
+    gen_dp_fifo_sc : FOR i IN 0 TO g_nof_streams-1 GENERATE --FIXME : we also need this fifo to pass on the BSN (47b) and sync (1b); set generics accordingly
+      u_dp_fifo_sc : ENTITY dp_lib.dp_fifo_sc
+      GENERIC MAP (
+        g_data_w         => c_data_w,
+        g_fifo_size      => 50
+      )
+      PORT MAP (
+        rst         => dp_rst,
+        clk         => dp_clk,
+        -- ST sink (BG)
+        snk_out     => block_gen_src_in_arr(i),
+        snk_in      => block_gen_src_out_arr(i),
+        -- ST source (tx_offload)
+        src_in      => fifo_block_gen_src_in_arr(i),
+        src_out     => fifo_block_gen_src_out_arr(i)
+      );
+    END GENERATE;
+  
+    -----------------------------------------------------------------------------
+    -- TX: dp_offload_tx
+    -----------------------------------------------------------------------------
+    u_dp_offload_tx : ENTITY dp_lib.dp_offload_tx
+    GENERIC MAP (
+      g_nof_streams               => g_nof_streams,
+      g_data_w                    => c_data_w,
+      g_use_complex               => FALSE,
+      g_max_nof_words_per_block   => c_max_nof_words_per_block,
+      g_def_nof_words_per_block   => c_def_nof_words_per_block,
+      g_max_nof_blocks_per_packet => c_max_nof_blocks_per_packet,
+      g_def_nof_blocks_per_packet => c_def_nof_blocks_per_packet,
+      g_hdr_field_arr             => c_hdr_field_arr,
+      g_hdr_field_sel             => c_hdr_field_ovr_init
+     )
+    PORT MAP (
+      mm_rst                => mm_rst,
+      mm_clk                => mm_clk,
+  
+      dp_rst                => dp_rst,
+      dp_clk                => dp_clk,
+  
+      snk_in_arr            => fifo_block_gen_src_out_arr,
+      snk_out_arr           => fifo_block_gen_src_in_arr,
+  
+      src_out_arr           => dp_offload_tx_src_out_arr,
+      src_in_arr            => dp_offload_tx_src_in_arr,
+  
+      hdr_fields_in_arr     => hdr_fields_in_arr
     );
-
-  gen_hdr_out_fields : FOR i IN 0 TO g_nof_streams-1 GENERATE
-    diag_data_buf_snk_in_arr(i).sync <=          sl(hdr_fields_out_arr(i)(field_hi(c_hdr_field_arr, "usr_sync") DOWNTO field_lo(c_hdr_field_arr, "usr_sync" )));
-    diag_data_buf_snk_in_arr(i).bsn  <= RESIZE_UVEC(hdr_fields_out_arr(i)(field_hi(c_hdr_field_arr, "usr_bsn" ) DOWNTO field_lo(c_hdr_field_arr, "usr_bsn"  )), c_dp_stream_bsn_w);
-  END GENERATE;
-
-
-
-
-  -----------------------------------------------------------------------------
-  -- RX: Data buffers and BSN monitors
+  
+    gen_hdr_in_fields : FOR i IN 0 TO g_nof_streams-1 GENERATE
+      -- dst = src
+      hdr_fields_in_arr(i)(field_hi(c_hdr_field_arr, "eth_src_mac" ) DOWNTO field_lo(c_hdr_field_arr, "eth_src_mac")) <= x"00228608" & B"000"&ID(7 DOWNTO 3) & RESIZE_UVEC(ID(2 DOWNTO 0), c_byte_w);
+      hdr_fields_in_arr(i)(field_hi(c_hdr_field_arr, "eth_dst_mac" ) DOWNTO field_lo(c_hdr_field_arr, "eth_dst_mac")) <= x"00228608" & B"000"&ID(7 DOWNTO 3) & RESIZE_UVEC(ID(2 DOWNTO 0), c_byte_w);
+  
+      hdr_fields_in_arr(i)(field_hi(c_hdr_field_arr, "ip_src_addr" ) DOWNTO field_lo(c_hdr_field_arr, "ip_src_addr")) <= x"0A63" & B"000"&ID(7 DOWNTO 3) & INCR_UVEC(RESIZE_UVEC(ID(2 DOWNTO 0), c_byte_w), 1);
+      hdr_fields_in_arr(i)(field_hi(c_hdr_field_arr, "ip_dst_addr" ) DOWNTO field_lo(c_hdr_field_arr, "ip_dst_addr")) <= x"0A63" & B"000"&ID(7 DOWNTO 3) & INCR_UVEC(RESIZE_UVEC(ID(2 DOWNTO 0), c_byte_w), 1);
+  
+      -- dst port goes through 4000,4001,4002
+      hdr_fields_in_arr(i)(field_hi(c_hdr_field_arr, "udp_src_port") DOWNTO field_lo(c_hdr_field_arr, "udp_src_port" )) <= TO_UVEC(4000+i, 16);
+      hdr_fields_in_arr(i)(field_hi(c_hdr_field_arr, "udp_dst_port") DOWNTO field_lo(c_hdr_field_arr, "udp_dst_port" )) <= TO_UVEC(4000+i, 16);
+  
+      hdr_fields_in_arr(i)(field_hi(c_hdr_field_arr, "usr_sync"    ) DOWNTO field_lo(c_hdr_field_arr, "usr_sync"   )) <= slv(block_gen_src_out_arr(i).sync);
+      hdr_fields_in_arr(i)(field_hi(c_hdr_field_arr, "usr_bsn"     ) DOWNTO field_lo(c_hdr_field_arr, "usr_bsn"    )) <= block_gen_src_out_arr(i).bsn(46 DOWNTO 0);
+    END GENERATE;
+  
+  
+  
   -----------------------------------------------------------------------------
-  dp_offload_rx_src_in_arr <= diag_data_buf_snk_out_arr;
-
-  gen_bsn_mon_in : FOR i IN 0 TO g_nof_streams-1 GENERATE
-    diag_data_buf_snk_in_arr(i).data  <= dp_offload_rx_src_out_arr(i).data;
-    diag_data_buf_snk_in_arr(i).valid <= dp_offload_rx_src_out_arr(i).valid;
-    diag_data_buf_snk_in_arr(i).sop   <= dp_offload_rx_src_out_arr(i).sop;
-    diag_data_buf_snk_in_arr(i).eop   <= dp_offload_rx_src_out_arr(i).eop;
-    diag_data_buf_snk_in_arr(i).err   <= dp_offload_rx_src_out_arr(i).err;
+    -- RX: dp_offload_rx
+    -----------------------------------------------------------------------------
+    u_dp_offload_rx : ENTITY dp_lib.dp_offload_rx
+    GENERIC MAP (
+      g_nof_streams         => g_nof_streams,
+      g_data_w              => c_data_w,
+      g_hdr_field_arr       => c_hdr_field_arr,
+      g_remove_crc          => TRUE,
+      g_crc_nof_words       => c_nof_crc_words
+     )
+    PORT MAP (
+      mm_rst                => mm_rst,
+      mm_clk                => mm_clk,
+  
+      dp_rst                => dp_rst,
+      dp_clk                => dp_clk,
+  
+      snk_in_arr            => dp_offload_rx_snk_in_arr,
+      snk_out_arr           => dp_offload_rx_snk_out_arr,
+  
+      src_out_arr           => dp_offload_rx_src_out_arr,
+      src_in_arr            => dp_offload_rx_src_in_arr,
+  
+      hdr_fields_out_arr    => hdr_fields_out_arr
+      );
+  
+    gen_hdr_out_fields : FOR i IN 0 TO g_nof_streams-1 GENERATE
+      diag_data_buf_snk_in_arr(i).sync <=          sl(hdr_fields_out_arr(i)(field_hi(c_hdr_field_arr, "usr_sync") DOWNTO field_lo(c_hdr_field_arr, "usr_sync" )));
+      diag_data_buf_snk_in_arr(i).bsn  <= RESIZE_UVEC(hdr_fields_out_arr(i)(field_hi(c_hdr_field_arr, "usr_bsn" ) DOWNTO field_lo(c_hdr_field_arr, "usr_bsn"  )), c_dp_stream_bsn_w);
+    END GENERATE;
+  
+  
+  
+  
+    -----------------------------------------------------------------------------
+    -- RX: Data buffers and BSN monitors
+    -----------------------------------------------------------------------------
+    dp_offload_rx_src_in_arr <= diag_data_buf_snk_out_arr;
+  
+    gen_bsn_mon_in : FOR i IN 0 TO g_nof_streams-1 GENERATE
+      diag_data_buf_snk_in_arr(i).data  <= dp_offload_rx_src_out_arr(i).data;
+      diag_data_buf_snk_in_arr(i).valid <= dp_offload_rx_src_out_arr(i).valid;
+      diag_data_buf_snk_in_arr(i).sop   <= dp_offload_rx_src_out_arr(i).sop;
+      diag_data_buf_snk_in_arr(i).eop   <= dp_offload_rx_src_out_arr(i).eop;
+      diag_data_buf_snk_in_arr(i).err   <= dp_offload_rx_src_out_arr(i).err;
+    END GENERATE;
+  
+    u_dp_bsn_monitor : ENTITY dp_lib.mms_dp_bsn_monitor
+    GENERIC MAP (
+      g_nof_streams        => g_nof_streams,
+      g_cross_clock_domain => TRUE,
+      g_sync_timeout       => c_bg_blocks_per_sync*(c_bg_block_size+c_bg_gapsize),
+      g_cnt_sop_w          => ceil_log2(c_bg_blocks_per_sync+1),
+      g_cnt_valid_w        => ceil_log2(c_bg_blocks_per_sync*c_bg_block_size+1),
+      g_log_first_bsn      => TRUE
+    )
+    PORT MAP (
+      mm_rst      => mm_rst,
+      mm_clk      => mm_clk,
+      reg_mosi    => reg_bsn_monitor_mosi,
+      reg_miso    => reg_bsn_monitor_miso,
+  
+      dp_rst      => dp_rst,
+      dp_clk      => dp_clk,
+      in_siso_arr => diag_data_buf_snk_out_arr,
+      in_sosi_arr => diag_data_buf_snk_in_arr
+    );
+  
+    diag_data_buf_snk_out_arr <= (OTHERS=>c_dp_siso_rdy);
+  
+    u_diag_data_buffer : ENTITY diag_lib.mms_diag_data_buffer
+    GENERIC MAP (
+      g_nof_streams  => g_nof_streams,
+      g_data_w       => 32, --c_data_w,
+      g_buf_nof_data => 1024,
+      g_buf_use_sync => FALSE -- sync by reading last address of data buffer
+    )
+    PORT MAP (
+      mm_rst            => mm_rst,
+      mm_clk            => mm_clk,
+      dp_rst            => dp_rst,
+      dp_clk            => dp_clk,
+  
+      ram_data_buf_mosi => ram_diag_data_buf_mosi,
+      ram_data_buf_miso => ram_diag_data_buf_miso,
+      reg_data_buf_mosi => reg_diag_data_buf_mosi,
+      reg_data_buf_miso => reg_diag_data_buf_miso,
+  
+      --in_sync           => diag_data_buf_snk_in_arr(0).sop,
+      in_sync           => diag_data_buf_snk_in_arr(0).sync,
+      in_sosi_arr       => diag_data_buf_snk_in_arr
+    );
   END GENERATE;
 
-  u_dp_bsn_monitor : ENTITY dp_lib.mms_dp_bsn_monitor
-  GENERIC MAP (
-    g_nof_streams        => g_nof_streams,
-    g_cross_clock_domain => TRUE,
-    g_sync_timeout       => c_bg_blocks_per_sync*(c_bg_block_size+c_bg_gapsize),
-    g_cnt_sop_w          => ceil_log2(c_bg_blocks_per_sync+1),
-    g_cnt_valid_w        => ceil_log2(c_bg_blocks_per_sync*c_bg_block_size+1),
-    g_log_first_bsn      => TRUE
-  )
-  PORT MAP (
-    mm_rst      => mm_rst,
-    mm_clk      => mm_clk,
-    reg_mosi    => reg_bsn_monitor_mosi,
-    reg_miso    => reg_bsn_monitor_miso,
-
-    dp_rst      => dp_rst,
-    dp_clk      => dp_clk,
-    in_siso_arr => diag_data_buf_snk_out_arr,
-    in_sosi_arr => diag_data_buf_snk_in_arr
-  );
-
-  diag_data_buf_snk_out_arr <= (OTHERS=>c_dp_siso_rdy);
-
-  u_diag_data_buffer : ENTITY diag_lib.mms_diag_data_buffer
-  GENERIC MAP (
-    g_nof_streams  => g_nof_streams,
-    g_data_w       => 32, --c_data_w,
-    g_buf_nof_data => 1024,
-    g_buf_use_sync => FALSE -- sync by reading last address of data buffer
-  )
-  PORT MAP (
-    mm_rst            => mm_rst,
-    mm_clk            => mm_clk,
-    dp_rst            => dp_rst,
-    dp_clk            => dp_clk,
-
-    ram_data_buf_mosi => ram_diag_data_buf_mosi,
-    ram_data_buf_miso => ram_diag_data_buf_miso,
-    reg_data_buf_mosi => reg_diag_data_buf_mosi,
-    reg_data_buf_miso => reg_diag_data_buf_miso,
-
-    --in_sync           => diag_data_buf_snk_in_arr(0).sop,
-    in_sync           => diag_data_buf_snk_in_arr(0).sync,
-    in_sosi_arr       => diag_data_buf_snk_in_arr
-  );
-
-
 
   -----------------------------------------------------------------------------
   -- Interface : 1GbE
@@ -876,9 +884,9 @@ BEGIN
       QSFP_RX    => i_QSFP_RX,
       QSFP_TX    => i_QSFP_TX,
 
-      QSFP_SDA   => QSFP_SDA,
-      QSFP_SCL   => QSFP_SCL,
-      QSFP_RST   => QSFP_RST,
+      --QSFP_SDA   => QSFP_SDA,
+      --QSFP_SCL   => QSFP_SCL,
+      --QSFP_RST   => QSFP_RST,
 
       QSFP_LED   => QSFP_LED
     );