diff --git a/boards/uniboard2c/designs/unb2c_test/revisions/unb2c_test_ddr_16G_I/hdllib.cfg b/boards/uniboard2c/designs/unb2c_test/revisions/unb2c_test_ddr_16G_I/hdllib.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..36d47912429fcf2a6a6148ad5e775d96a69b07d1
--- /dev/null
+++ b/boards/uniboard2c/designs/unb2c_test/revisions/unb2c_test_ddr_16G_I/hdllib.cfg
@@ -0,0 +1,122 @@
+hdl_lib_name = unb2c_test_ddr_16G_I
+hdl_library_clause_name = unb2c_test_ddr_16G_I_lib
+hdl_lib_uses_synth = common mm technology unb2c_board unb2c_test
+hdl_lib_uses_sim = 
+hdl_lib_technology = ip_arria10_e2sg
+hdl_lib_include_ip = 
+                     # Comment all IP that is not used in this design
+                     # DDR memory
+                     ip_arria10_e2sg_ddr4_16g_1600_64b
+
+synth_files =
+    unb2c_test_ddr_16G_I.vhd
+
+test_bench_files = 
+    tb_unb2c_test_ddr_16G_I.vhd
+
+regression_test_vhdl =
+    tb_unb2c_test_ddr_16G_I.vhd
+
+
+[modelsim_project_file]
+modelsim_copy_files =
+    ../../src/hex hex
+
+modelsim_compile_ip_files =
+    $HDL_WORK/libraries/technology/ip_arria10/ddr4_4g_1600/copy_hex_files.tcl               # 4GB DDR4 model
+    $HDL_WORK/libraries/technology/ip_arria10_e2sg/ddr4_8g_1600/copy_hex_files.tcl          # Unb2c 8GB DDR4 driver
+    $HDL_WORK/libraries/technology/ip_arria10_e2sg/ddr4_16g_1600/ddr4_16g_1600_64b/copy_hex_files.tcl   # Unb2c 16GB-64b DDR4 driver
+
+[quartus_project_file]
+synth_top_level_entity =
+
+quartus_copy_files =
+    quartus .
+    ../../quartus .
+    ../../src/hex hex
+
+quartus_qsf_files =
+    $HDL_WORK/boards/uniboard2c/libraries/unb2c_board/quartus/unb2c_board.qsf
+
+quartus_sdc_pre_files =
+    quartus/unb2c_test_ddr_16G_I.sdc
+    $HDL_WORK/boards/uniboard2c/libraries/unb2c_board/quartus/unb2c_board_pre.sdc
+
+quartus_sdc_files =
+    $HDL_WORK/boards/uniboard2c/libraries/unb2c_board/quartus/unb2c_board.sdc
+
+quartus_tcl_files =
+    quartus/unb2c_test_ddr_16G_I_pins.tcl
+
+quartus_vhdl_files = 
+
+quartus_qip_files =
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr_16G_I/qsys_unb2c_test/qsys_unb2c_test.qip
+
+quartus_ip_files =
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_avs2_eth_coe_0.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_avs2_eth_coe_1.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_clk_0.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_jesd204b.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_jtag_uart_0.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_nios2_gen2_0.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_onchip_memory2_0.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_pio_jesd_ctrl.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_pio_pps.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_pio_system_info.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_pio_wdi.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_ram_diag_bg_10gbe.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_ram_diag_data_buffer_10gbe.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_ram_diag_data_buffer_bsn.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_ram_diag_data_buffer_ddr_MB_II.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_ram_diag_data_buffer_ddr_MB_I.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_ram_scrap.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_bsn_monitor_10GbE.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_bsn_monitor_input.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_bsn_scheduler.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_bsn_source.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_diag_bg_10gbe.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_diag_data_buffer_10gbe.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_diag_data_buffer_bsn.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_diag_data_buffer_ddr_MB_II.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_diag_data_buffer_ddr_MB_I.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_diag_rx_seq_10gbe.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_diag_rx_seq_ddr_MB_II.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_diag_rx_seq_ddr_MB_I.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_diag_tx_seq_10gbe.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_diag_tx_seq_ddr_MB_II.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_diag_tx_seq_ddr_MB_I.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_dpmm_ctrl.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_dpmm_data.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_epcs.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_eth10g_back0.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_eth10g_back1.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_eth10g_qsfp_ring.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_fpga_temp_sens.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_fpga_voltage_sens.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_heater.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_io_ddr_MB_II.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_io_ddr_MB_I.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_mmdp_ctrl.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_mmdp_data.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_remu.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_tr_10GbE_back0.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_tr_10GbE_back1.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_tr_10GbE_qsfp_ring.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_wdi.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_rom_system_info.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_timer_0.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_diag_bg_eth_0.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_hdr_dat_eth_0.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_bsn_monitor_v2_tx_eth_0.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_bsn_monitor_v2_rx_eth_0.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_strobe_total_count_tx_eth_0.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_strobe_total_count_rx_eth_0.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_diag_bg_eth_1.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_hdr_dat_eth_1.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_bsn_monitor_v2_tx_eth_1.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_bsn_monitor_v2_rx_eth_1.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_strobe_total_count_tx_eth_1.ip
+    $HDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_strobe_total_count_rx_eth_1.ip
+
+nios2_app_userflags = -DCOMPILE_FOR_GEN2_UNB2
diff --git a/boards/uniboard2c/designs/unb2c_test/revisions/unb2c_test_ddr_16G_I/quartus/unb2c_test_ddr_16G_I_pins.tcl b/boards/uniboard2c/designs/unb2c_test/revisions/unb2c_test_ddr_16G_I/quartus/unb2c_test_ddr_16G_I_pins.tcl
new file mode 100644
index 0000000000000000000000000000000000000000..ccb6fb0f4ce24b8b61d96fd7ded7fa1c4e62917d
--- /dev/null
+++ b/boards/uniboard2c/designs/unb2c_test/revisions/unb2c_test_ddr_16G_I/quartus/unb2c_test_ddr_16G_I_pins.tcl
@@ -0,0 +1,297 @@
+###############################################################################
+#
+# 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(HDL_WORK)/boards/uniboard2c/libraries/unb2c_board/quartus/pinning/unb2c_minimal_pins.tcl
+
+# module I:
+set_location_assignment PIN_AP20 -to MB_I_OU.a[0]
+set_location_assignment PIN_AR20 -to MB_I_OU.a[1]
+set_location_assignment PIN_AP19 -to MB_I_OU.a[2]
+set_location_assignment PIN_AR19 -to MB_I_OU.a[3]
+set_location_assignment PIN_AR18 -to MB_I_OU.a[4]
+set_location_assignment PIN_AT17 -to MB_I_OU.a[5]
+set_location_assignment PIN_AU19 -to MB_I_OU.a[6]
+set_location_assignment PIN_AT18 -to MB_I_OU.a[7]
+set_location_assignment PIN_AL17 -to MB_I_OU.a[8]
+set_location_assignment PIN_AM18 -to MB_I_OU.a[9]
+set_location_assignment PIN_AM19 -to MB_I_OU.a[10]
+set_location_assignment PIN_AN19 -to MB_I_OU.a[11]
+set_location_assignment PIN_BA17 -to MB_I_OU.a[12]
+set_location_assignment PIN_BD17 -to MB_I_OU.a[13]
+set_location_assignment PIN_AY18 -to MB_I_OU.act_n
+set_location_assignment PIN_AV29 -to MB_I_IN.alert_n
+set_location_assignment PIN_BB16 -to MB_I_OU.ba[0]
+set_location_assignment PIN_BD16 -to MB_I_OU.ba[1]
+set_location_assignment PIN_BC16 -to MB_I_OU.bg[0]
+set_location_assignment PIN_AW19 -to MB_I_OU.bg[1]
+set_location_assignment PIN_BA15 -to MB_I_OU.a[15] 
+#set_location_assignment PIN_BC21 -to MB_I_IO.dq[64]   
+#set_location_assignment PIN_BA22 -to MB_I_IO.dq[65]   
+#set_location_assignment PIN_BD21 -to MB_I_IO.dq[66]   
+#set_location_assignment PIN_BB20 -to MB_I_IO.dq[67]   
+#set_location_assignment PIN_BA20 -to MB_I_IO.dq[68]   
+#set_location_assignment PIN_BD20 -to MB_I_IO.dq[69]   
+#set_location_assignment PIN_AY20 -to MB_I_IO.dq[70]   
+#set_location_assignment PIN_AY22 -to MB_I_IO.dq[71]   
+set_location_assignment PIN_AU18 -to MB_I_OU.ck[0]    
+#set_location_assignment PIN_AV18 -to MB_I_OU.ck_n[0]
+set_location_assignment PIN_AT16 -to MB_I_OU.ck[1]
+#set_location_assignment PIN_AU16 -to MB_I_OU.ck_n[1]
+set_location_assignment PIN_BB19 -to MB_I_OU.cke[0]
+set_location_assignment PIN_AP16 -to MB_I_OU.cke[1]
+set_location_assignment PIN_AY19 -to MB_I_OU.cs_n[0]
+set_location_assignment PIN_AN16 -to MB_I_OU.cs_n[1]
+set_location_assignment PIN_BC29 -to MB_I_IO.dbi_n[0] 
+set_location_assignment PIN_AR27 -to MB_I_IO.dbi_n[1] 
+set_location_assignment PIN_BD24 -to MB_I_IO.dbi_n[2] 
+set_location_assignment PIN_AM23 -to MB_I_IO.dbi_n[3] 
+set_location_assignment PIN_AU12 -to MB_I_IO.dbi_n[4] 
+set_location_assignment PIN_AU13 -to MB_I_IO.dbi_n[5] 
+set_location_assignment PIN_AM14 -to MB_I_IO.dbi_n[6] 
+set_location_assignment PIN_AM16 -to MB_I_IO.dbi_n[7] 
+#set_location_assignment PIN_BA21 -to MB_I_IO.dbi_n[8] 
+set_location_assignment PIN_BA28 -to MB_I_IO.dqs[0]
+set_location_assignment PIN_AM28 -to MB_I_IO.dqs[1]
+set_location_assignment PIN_AV24 -to MB_I_IO.dqs[2]
+set_location_assignment PIN_AN24 -to MB_I_IO.dqs[3]
+set_location_assignment PIN_BC14 -to MB_I_IO.dqs[4]
+set_location_assignment PIN_AW14 -to MB_I_IO.dqs[5]
+set_location_assignment PIN_AN12 -to MB_I_IO.dqs[6]
+set_location_assignment PIN_AK15 -to MB_I_IO.dqs[7]
+#set_location_assignment PIN_BC22 -to MB_I_IO.dqs[8]
+
+set_location_assignment PIN_BD19 -to MB_I_OU.odt[0]
+set_location_assignment PIN_AR17 -to MB_I_OU.odt[1]
+set_location_assignment PIN_BC18 -to MB_I_OU.par
+set_location_assignment PIN_BB15 -to MB_I_OU.a[16]
+
+set_location_assignment PIN_AW17 -to MB_I_REF_CLK
+
+set_location_assignment PIN_AV19 -to MB_I_OU.reset_n
+set_location_assignment PIN_AY17 -to MB_I_IN.oct_rzqin
+set_location_assignment PIN_BC17 -to MB_I_OU.a[14]   
+
+
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.cke[1]
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.cs_n[1]
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.odt[1]
+set_instance_assignment -name IO_STANDARD "1.2 V" -to MB_I_REF_CLK
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IN.oct_rzqin
+
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.a[0]
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.a[1]
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.a[2]
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.a[3]
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.a[4]
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.a[5]
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.a[6]
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.a[7]
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.a[8]
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.a[9]
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.a[10]
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.a[11]
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.a[12]
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.a[13]
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.act_n
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.ba[0]
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.ba[1]
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.bg[0]
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.bg[1]
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.a[15]
+set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.2-V SSTL" -to MB_I_OU.ck[0]
+set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.2-V SSTL" -to MB_I_OU.ck[1]
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.cke[0]
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.cs_n[0]
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.par
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.a[16]
+set_instance_assignment -name IO_STANDARD "1.2 V" -to MB_I_OU.reset_n
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.a[14]
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_I_OU.odt[0]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IN.alert_n
+#set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[64]
+#set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[65]
+#set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[66]
+#set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[67]
+#set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[68]
+#set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[69]
+#set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[70]
+#set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[71]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dbi_n[0]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dbi_n[1]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dbi_n[2]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dbi_n[3]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dbi_n[4]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dbi_n[5]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dbi_n[6]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dbi_n[7]
+#set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dbi_n[8]
+
+set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.2-V POD" -to MB_I_IO.dqs[0]
+set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.2-V POD" -to MB_I_IO.dqs[1]
+set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.2-V POD" -to MB_I_IO.dqs[2]
+set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.2-V POD" -to MB_I_IO.dqs[3]
+set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.2-V POD" -to MB_I_IO.dqs[4]
+set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.2-V POD" -to MB_I_IO.dqs[5]
+set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.2-V POD" -to MB_I_IO.dqs[6]
+set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.2-V POD" -to MB_I_IO.dqs[7]
+#set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.2-V POD" -to MB_I_IO.dqs[8]
+
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[0]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[1]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[2]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[3]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[4]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[5]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[6]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[7]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[8]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[9]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[10]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[11]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[12]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[13]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[14]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[15]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[16]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[17]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[18]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[19]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[20]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[21]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[22]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[23]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[24]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[25]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[26]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[27]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[28]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[29]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[30]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[31]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[32]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[33]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[34]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[35]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[36]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[37]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[38]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[39]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[40]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[41]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[42]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[43]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[44]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[45]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[46]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[47]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[48]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[49]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[50]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[51]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[52]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[53]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[54]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[55]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[56]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[57]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[58]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[59]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[60]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[61]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[62]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_I_IO.dq[63]
+
+set_location_assignment PIN_M16 -to MB_I_IN.evt
+
+set_location_assignment PIN_AU29 -to MB_I_IO.dq[0]
+set_location_assignment PIN_BC28 -to MB_I_IO.dq[1]
+set_location_assignment PIN_AY29 -to MB_I_IO.dq[2]
+set_location_assignment PIN_BB28 -to MB_I_IO.dq[3]
+set_location_assignment PIN_BB29 -to MB_I_IO.dq[4]
+set_location_assignment PIN_AW29 -to MB_I_IO.dq[5]
+set_location_assignment PIN_BC27 -to MB_I_IO.dq[6]
+set_location_assignment PIN_BD29 -to MB_I_IO.dq[7]
+set_location_assignment PIN_AR28 -to MB_I_IO.dq[8]
+set_location_assignment PIN_AR29 -to MB_I_IO.dq[9]
+set_location_assignment PIN_AV27 -to MB_I_IO.dq[10]
+set_location_assignment PIN_AU28 -to MB_I_IO.dq[11]
+set_location_assignment PIN_AW27 -to MB_I_IO.dq[12]
+set_location_assignment PIN_AT28 -to MB_I_IO.dq[13]
+set_location_assignment PIN_AV28 -to MB_I_IO.dq[14]
+set_location_assignment PIN_AP27 -to MB_I_IO.dq[15]
+set_location_assignment PIN_BC24 -to MB_I_IO.dq[16]
+set_location_assignment PIN_BB24 -to MB_I_IO.dq[17]
+set_location_assignment PIN_BB23 -to MB_I_IO.dq[18]
+set_location_assignment PIN_AW22 -to MB_I_IO.dq[19]
+set_location_assignment PIN_BA23 -to MB_I_IO.dq[20]
+set_location_assignment PIN_BC23 -to MB_I_IO.dq[21]
+set_location_assignment PIN_AY23 -to MB_I_IO.dq[22]
+set_location_assignment PIN_AY24 -to MB_I_IO.dq[23]
+set_location_assignment PIN_AP22 -to MB_I_IO.dq[24]
+set_location_assignment PIN_AN23 -to MB_I_IO.dq[25]
+set_location_assignment PIN_AR23 -to MB_I_IO.dq[26]
+set_location_assignment PIN_AT23 -to MB_I_IO.dq[27]
+set_location_assignment PIN_AU23 -to MB_I_IO.dq[28]
+set_location_assignment PIN_AV23 -to MB_I_IO.dq[29]
+set_location_assignment PIN_AR24 -to MB_I_IO.dq[30]
+set_location_assignment PIN_AP24 -to MB_I_IO.dq[31]
+set_location_assignment PIN_AV12 -to MB_I_IO.dq[32]
+set_location_assignment PIN_AY13 -to MB_I_IO.dq[33]
+set_location_assignment PIN_BD14 -to MB_I_IO.dq[34]
+set_location_assignment PIN_AY12 -to MB_I_IO.dq[35]
+set_location_assignment PIN_BA13 -to MB_I_IO.dq[36]
+set_location_assignment PIN_BA12 -to MB_I_IO.dq[37]
+set_location_assignment PIN_AW12 -to MB_I_IO.dq[38]
+set_location_assignment PIN_BB13 -to MB_I_IO.dq[39]
+set_location_assignment PIN_AV13 -to MB_I_IO.dq[40]
+set_location_assignment PIN_AR13 -to MB_I_IO.dq[41]
+set_location_assignment PIN_AR15 -to MB_I_IO.dq[42]
+set_location_assignment PIN_AP15 -to MB_I_IO.dq[43]
+set_location_assignment PIN_AT15 -to MB_I_IO.dq[44]
+set_location_assignment PIN_AU14 -to MB_I_IO.dq[45]
+set_location_assignment PIN_AU15 -to MB_I_IO.dq[46]
+set_location_assignment PIN_AV14 -to MB_I_IO.dq[47]
+set_location_assignment PIN_AM13 -to MB_I_IO.dq[48]
+set_location_assignment PIN_AT13 -to MB_I_IO.dq[49]
+set_location_assignment PIN_AT12 -to MB_I_IO.dq[50]
+set_location_assignment PIN_AP14 -to MB_I_IO.dq[51]
+set_location_assignment PIN_AN13 -to MB_I_IO.dq[52]
+set_location_assignment PIN_AK13 -to MB_I_IO.dq[53]
+set_location_assignment PIN_AM12 -to MB_I_IO.dq[54]
+set_location_assignment PIN_AL13 -to MB_I_IO.dq[55]
+set_location_assignment PIN_AH13 -to MB_I_IO.dq[56]
+set_location_assignment PIN_AL15 -to MB_I_IO.dq[57]
+set_location_assignment PIN_AM15 -to MB_I_IO.dq[58]
+set_location_assignment PIN_AJ14 -to MB_I_IO.dq[59]
+set_location_assignment PIN_AJ12 -to MB_I_IO.dq[60]
+set_location_assignment PIN_AL16 -to MB_I_IO.dq[61]
+set_location_assignment PIN_AK12 -to MB_I_IO.dq[62]
+set_location_assignment PIN_AH14 -to MB_I_IO.dq[63]
+set_location_assignment PIN_AY28 -to MB_I_IO.dqs_n[0]
+set_location_assignment PIN_AN28 -to MB_I_IO.dqs_n[1]
+set_location_assignment PIN_AU24 -to MB_I_IO.dqs_n[2]
+set_location_assignment PIN_AM24 -to MB_I_IO.dqs_n[3]
+set_location_assignment PIN_BB14 -to MB_I_IO.dqs_n[4]
+set_location_assignment PIN_AY14 -to MB_I_IO.dqs_n[5]
+set_location_assignment PIN_AP12 -to MB_I_IO.dqs_n[6]
+set_location_assignment PIN_AK14 -to MB_I_IO.dqs_n[7]
+#set_location_assignment PIN_BD22 -to MB_I_IO.dqs_n[8]
+
diff --git a/boards/uniboard2c/designs/unb2c_test/revisions/unb2c_test_ddr_16G_I/tb_unb2c_test_ddr_16G_I.vhd b/boards/uniboard2c/designs/unb2c_test/revisions/unb2c_test_ddr_16G_I/tb_unb2c_test_ddr_16G_I.vhd
new file mode 100644
index 0000000000000000000000000000000000000000..f8305c5b13e84b97011d84ab1a4a569e7bc0b6e3
--- /dev/null
+++ b/boards/uniboard2c/designs/unb2c_test/revisions/unb2c_test_ddr_16G_I/tb_unb2c_test_ddr_16G_I.vhd
@@ -0,0 +1,36 @@
+-------------------------------------------------------------------------------
+--
+-- 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, unb2c_test_lib;
+use IEEE.std_logic_1164.all;
+
+entity tb_unb2c_test_ddr_16G_I is
+end tb_unb2c_test_ddr_16G_I;
+
+architecture tb of tb_unb2c_test_ddr_16G_I is
+begin
+  u_tb_unb2c_test : entity unb2c_test_lib.tb_unb2c_test
+  generic map (
+    g_design_name   => "unb2c_test_ddr_16G_I",
+    g_factory_image => true
+  );
+end tb;
diff --git a/boards/uniboard2c/designs/unb2c_test/revisions/unb2c_test_ddr_16G_I/unb2c_test_ddr_16G_I.vhd b/boards/uniboard2c/designs/unb2c_test/revisions/unb2c_test_ddr_16G_I/unb2c_test_ddr_16G_I.vhd
new file mode 100644
index 0000000000000000000000000000000000000000..09294f0b34d94e3a770fd43d27c3315171e72df5
--- /dev/null
+++ b/boards/uniboard2c/designs/unb2c_test/revisions/unb2c_test_ddr_16G_I/unb2c_test_ddr_16G_I.vhd
@@ -0,0 +1,127 @@
+-------------------------------------------------------------------------------
+--
+-- 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, unb2c_board_lib, unb2c_test_lib, technology_lib, tech_ddr_lib;
+use IEEE.std_logic_1164.all;
+use IEEE.numeric_std.all;
+use common_lib.common_pkg.all;
+use unb2c_board_lib.unb2c_board_pkg.all;
+use technology_lib.technology_pkg.all;
+use tech_ddr_lib.tech_ddr_pkg.all;
+
+entity unb2c_test_ddr_16G_I is
+  generic (
+    g_design_name      : string  := "unb2c_test_ddr_16G_I";
+    g_design_note      : string  := "DDR: MB I";
+    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_revision_id      : string  := "";  -- revision ID     -- set by QSF
+    g_factory_image    : boolean := true
+  );
+  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_unb2c_board_aux.version_w - 1 downto 0);
+    ID           : in    std_logic_vector(c_unb2c_board_aux.id_w - 1 downto 0);
+    TESTIO       : inout std_logic_vector(c_unb2c_board_aux.testio_w - 1 downto 0);
+
+    -- 1GbE Control Interface
+    ETH_CLK      : in    std_logic_vector(c_unb2c_board_nof_eth - 1 downto 0);
+    ETH_SGIN     : in    std_logic_vector(c_unb2c_board_nof_eth - 1 downto 0);
+    ETH_SGOUT    : out   std_logic_vector(c_unb2c_board_nof_eth - 1 downto 0);
+
+    -- DDR reference clocks
+    MB_I_REF_CLK  : in   std_logic;  -- Reference clock for MB_I
+    MB_II_REF_CLK : in   std_logic;  -- Reference clock for MB_II
+
+    -- SO-DIMM Memory Bank I
+    MB_I_IN      : in    t_tech_ddr4_phy_in;
+    MB_I_IO      : inout t_tech_ddr4_phy_io;
+    MB_I_OU      : out   t_tech_ddr4_phy_ou;
+
+    -- SO-DIMM Memory Bank II
+    MB_II_IN     : in    t_tech_ddr4_phy_in;
+    MB_II_IO     : inout t_tech_ddr4_phy_io;
+    MB_II_OU     : out   t_tech_ddr4_phy_ou;
+
+    QSFP_LED     : out   std_logic_vector(c_unb2c_board_tr_qsfp_nof_leds - 1 downto 0)
+  );
+end unb2c_test_ddr_16G_I;
+
+architecture str of unb2c_test_ddr_16G_I is
+begin
+  u_revision : entity unb2c_test_lib.unb2c_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_revision_id   => g_revision_id,
+    g_factory_image => g_factory_image
+  )
+  port map (
+    -- GENERAL
+    CLK          => CLK,
+    PPS          => PPS,
+    WDI          => WDI,
+    INTA         => INTA,
+    INTB         => INTB,
+
+    -- Others
+    VERSION      => VERSION,
+    ID           => ID,
+    TESTIO       => TESTIO,
+
+    -- 1GbE Control Interface
+    ETH_clk      => ETH_clk,
+    ETH_SGIN     => ETH_SGIN,
+    ETH_SGOUT    => ETH_SGOUT,
+
+    -- DDR reference clocks
+    MB_I_REF_CLK  => MB_I_REF_CLK,
+    MB_II_REF_CLK => MB_II_REF_CLK,
+
+    -- SO-DIMM Memory Bank I
+    MB_I_IN      => MB_I_IN,
+    MB_I_IO      => MB_I_IO,
+    MB_I_OU      => MB_I_OU,
+
+    -- SO-DIMM Memory Bank II
+    MB_II_IN     => MB_II_IN,
+    MB_II_IO     => MB_II_IO,
+    MB_II_OU     => MB_II_OU,
+
+    QSFP_LED     => QSFP_LED
+  );
+end str;
diff --git a/boards/uniboard2c/designs/unb2c_test/src/vhdl/unb2c_test.vhd b/boards/uniboard2c/designs/unb2c_test/src/vhdl/unb2c_test.vhd
index bed4ac8d3e09c468888fe4d8288a4d33e182a43e..e03a41f2c78e62ca008bdf75cae34dd0db7d034a 100644
--- a/boards/uniboard2c/designs/unb2c_test/src/vhdl/unb2c_test.vhd
+++ b/boards/uniboard2c/designs/unb2c_test/src/vhdl/unb2c_test.vhd
@@ -128,6 +128,7 @@ architecture str of unb2c_test is
   -- Firmware version x.y
   constant c_fw_version                 : t_unb2c_board_fw_version := (2, 0);
   constant c_mm_clk_freq                : natural := c_unb2c_board_mm_clk_freq_125M;
+  constant c_dp_clk_freq                : natural := c_unb2c_board_ext_clk_freq_200M;
 
   -- Revision controlled constants
   constant c_revision_select            : t_unb2c_test_config := func_sel_revision_rec(g_design_name);
@@ -438,6 +439,12 @@ architecture str of unb2c_test is
   signal ram_diag_data_buf_ddr_MB_II_mosi  : t_mem_mosi;
   signal ram_diag_data_buf_ddr_MB_II_miso  : t_mem_miso;
 
+  -- DDR calibration_ok signals are set to '0' by default such that the corresponding
+  -- LED is turned OFF when no IP is instantiated. This is prefered over turning it on
+  -- as that would indicate a (false) correct calibration.
+  signal ddr_I_cal_ok                      : std_logic := '0'; 
+  signal ddr_II_cal_ok                     : std_logic := '0';
+
   -- UDP streaming ports for 1GbE I and 1GbE II
   -- . eth_0 = 1GbE I
   signal gn_eth_src_mac_I          : std_logic_vector(c_network_eth_mac_addr_w - 1 downto 0);
@@ -1235,19 +1242,25 @@ begin
       red_led_arr   => qsfp_red_led_arr,
       QSFP_LED      => QSFP_LED
     );
-
-    u_front_led : entity unb2c_board_lib.unb2c_board_qsfp_leds
+  
+    u_front_led : entity unb2c_board_lib.unb2c_board_qsfp_leds_v2
     generic map (
       g_sim           => g_sim,
       g_factory_image => g_factory_image,
       g_nof_qsfp      => c_unb2c_board_tr_qsfp.nof_bus,
-      g_pulse_us      => 1000 / (10**9 / c_mm_clk_freq)  -- nof clk cycles to get us period
+      g_mm_pulse_us   => 1000 / (10**9 / c_mm_clk_freq), 
+      g_dp_pulse_us   => 1000 / (10**9 / c_dp_clk_freq)
     )
     port map (
-      rst             => mm_rst,
-      clk             => mm_clk,
-      green_led_arr   => qsfp_green_led_arr,
-      red_led_arr     => qsfp_red_led_arr
+      mm_rst             => mm_rst,
+      mm_clk             => mm_clk,
+      dp_rst             => dp_rst,
+      dp_clk             => dp_clk,
+      dp_pps             => dp_pps,
+      ddr_I_cal_ok       => ddr_I_cal_ok,
+      ddr_II_cal_ok      => ddr_II_cal_ok,
+      green_led_arr      => qsfp_green_led_arr,
+      red_led_arr        => qsfp_red_led_arr
     );
   end generate;
 
@@ -1312,6 +1325,9 @@ begin
       phy4_io             => MB_I_IO,
       phy4_ou             => MB_I_OU,
 
+      -- DDR4 Calibration result for LED indicator
+      ddr_cal_ok          => ddr_I_cal_ok,
+
       ---------------------------------------------------------------------------
       -- DIAG Tx seq
       ---------------------------------------------------------------------------
@@ -1389,6 +1405,9 @@ begin
       phy4_io             => MB_II_IO,
       phy4_ou             => MB_II_OU,
 
+      -- DDR4 Calibration result for LED indicator
+      ddr_cal_ok          => ddr_II_cal_ok,
+
       ---------------------------------------------------------------------------
       -- DIAG Tx seq
       ---------------------------------------------------------------------------
diff --git a/boards/uniboard2c/designs/unb2c_test/src/vhdl/unb2c_test_pkg.vhd b/boards/uniboard2c/designs/unb2c_test/src/vhdl/unb2c_test_pkg.vhd
index ecd624929ce531db8a1ed03d113ce557689377f7..a0814c9b53c318f61cdb27137a458fd1108f8eba 100644
--- a/boards/uniboard2c/designs/unb2c_test/src/vhdl/unb2c_test_pkg.vhd
+++ b/boards/uniboard2c/designs/unb2c_test/src/vhdl/unb2c_test_pkg.vhd
@@ -84,6 +84,7 @@ package unb2c_test_pkg is
   constant c_test_10GbE_qb    : t_unb2c_test_config := (false,false,false, true,false, true,false,false,false,false,c_tech_ddr4_8g_1600m, c_tech_ddr4_8g_1600m);
   constant c_test_ddr         : t_unb2c_test_config := (false,false,false,false,false,false,false, true, true,false,c_tech_ddr4_8g_1600m, c_tech_ddr4_8g_1600m);
   constant c_test_ddr_16G     : t_unb2c_test_config := (false,false,false,false,false,false,false, true, true,false,c_tech_ddr4_16g_1600m_64, c_tech_ddr4_16g_1600m_72_64);
+  constant c_test_ddr_16G_I   : t_unb2c_test_config := (false,false,false,false,false,false,false, true,false,false,c_tech_ddr4_16g_1600m_64, c_tech_ddr4_16g_1600m_72_64);
   constant c_test_heater      : t_unb2c_test_config := (false,false,false,false,false,false,false,false,false, true,c_tech_ddr4_8g_1600m, c_tech_ddr4_8g_1600m);
   constant c_test_jesd204b    : t_unb2c_test_config := (false,false,false,false,false,false, true,false,false,false,c_tech_ddr4_8g_1600m, c_tech_ddr4_8g_1600m);
 
@@ -102,6 +103,7 @@ package body unb2c_test_pkg is
     elsif g_design_name = "unb2c_test_1GbE_I"           then return c_test_1GbE_I_UDP;
     elsif g_design_name = "unb2c_test_1GbE_II"          then return c_test_1GbE_II_UDP;
     elsif g_design_name = "unb2c_test_ddr_16G"          then return c_test_ddr_16G;
+    elsif g_design_name = "unb2c_test_ddr_16G_I"        then return c_test_ddr_16G_I;
     else  return c_test_minimal;
     end if;
 
diff --git a/boards/uniboard2c/designs/unb2c_test/tb/vhdl/tb_unb2c_test.vhd b/boards/uniboard2c/designs/unb2c_test/tb/vhdl/tb_unb2c_test.vhd
index a34e6633db99ec9a06cab4d836db5f2030d95324..4219940c46e81795d0f6a68e97724993715c0b4e 100644
--- a/boards/uniboard2c/designs/unb2c_test/tb/vhdl/tb_unb2c_test.vhd
+++ b/boards/uniboard2c/designs/unb2c_test/tb/vhdl/tb_unb2c_test.vhd
@@ -54,7 +54,8 @@ use tech_ddr_lib.tech_ddr_pkg.all;
 entity tb_unb2c_test is
   generic (
     g_design_name   : string  := "unb2c_test";
-    g_sim_model_ddr : boolean := false
+    g_sim_model_ddr : boolean := false;
+    g_factory_image : boolean := false
   );
 end tb_unb2c_test;
 
@@ -166,7 +167,8 @@ begin
     g_sim           => c_sim,
     g_sim_unb_nr    => c_unb_nr,
     g_sim_node_nr   => c_node_nr,
-    g_sim_model_ddr => g_sim_model_ddr
+    g_sim_model_ddr => g_sim_model_ddr,
+    g_factory_image => g_factory_image
   )
   port map (
     -- GENERAL
diff --git a/libraries/io/ddr/src/vhdl/io_ddr.vhd b/libraries/io/ddr/src/vhdl/io_ddr.vhd
index 354f571a7053fc7debabc577e870572ad5762111..9790af79c68b0bf4872809f6b810d5be011dd273 100644
--- a/libraries/io/ddr/src/vhdl/io_ddr.vhd
+++ b/libraries/io/ddr/src/vhdl/io_ddr.vhd
@@ -223,7 +223,10 @@ entity io_ddr is
     -- DDR4 PHY external interface
     phy4_in            : in    t_tech_ddr4_phy_in := c_tech_ddr4_phy_in_x;
     phy4_io            : inout t_tech_ddr4_phy_io;
-    phy4_ou            : out   t_tech_ddr4_phy_ou
+    phy4_ou            : out   t_tech_ddr4_phy_ou;
+
+    -- DDR Calibration result
+    ddr_cal_ok         : out   std_logic := '0' 
   );
 end io_ddr;
 
@@ -491,7 +494,8 @@ begin
     phy4_ou         => phy4_ou
   );
 
-  ctlr_rst_out  <= ctlr_rst_out_i;
+  ctlr_rst_out <= ctlr_rst_out_i;
+  ddr_cal_ok   <= ctlr_tech_miso.done;
 
   u_wr_fifo_full : entity common_lib.common_switch
   generic map(
diff --git a/libraries/io/ddr/src/vhdl/io_ddr_reg.vhd b/libraries/io/ddr/src/vhdl/io_ddr_reg.vhd
index c86a29d671dca2f7c9d94dbf23284a47054fda00..860e098a6e59cb2aeff0e76511b5574adfef3c19 100644
--- a/libraries/io/ddr/src/vhdl/io_ddr_reg.vhd
+++ b/libraries/io/ddr/src/vhdl/io_ddr_reg.vhd
@@ -78,7 +78,7 @@ architecture rtl of io_ddr_reg is
                                          nof_dat  => 8,
                                          init_sl  => '0');
 
-  signal i_dvr_mosi        : t_mem_ctlr_mosi;
+  signal i_dvr_mosi        : t_mem_ctlr_mosi := c_mem_ctlr_mosi_rst;
 begin
   dvr_mosi <= i_dvr_mosi;
 
@@ -102,6 +102,8 @@ begin
 
       -- Write access defaults
       i_dvr_mosi.burstbegin <= '0';
+      i_dvr_mosi.wrdata <= (others => '0'); -- no data is set, only control signals.
+      i_dvr_mosi.rd <= '0'; -- = no need to control i_dvr_mosi.rd as i_dvr_mosi.wr = wr_not_rd.
 
       -- Write access: set register value
       if sla_in.wr = '1' then
diff --git a/libraries/io/ddr/src/vhdl/mms_io_ddr.vhd b/libraries/io/ddr/src/vhdl/mms_io_ddr.vhd
index b2d2043afdd1c1fef515e5f5d9250e75369cd64f..d8c4ad415829f14fd17d90e6ef9239e365dee73f 100644
--- a/libraries/io/ddr/src/vhdl/mms_io_ddr.vhd
+++ b/libraries/io/ddr/src/vhdl/mms_io_ddr.vhd
@@ -90,7 +90,10 @@ entity mms_io_ddr is
     -- DDR4 PHY external interface
     phy4_in             : in    t_tech_ddr4_phy_in := c_tech_ddr4_phy_in_x;
     phy4_io             : inout t_tech_ddr4_phy_io;
-    phy4_ou             : out   t_tech_ddr4_phy_ou
+    phy4_ou             : out   t_tech_ddr4_phy_ou;
+
+    -- DDR Calibration result
+    ddr_cal_ok          : out   std_logic := '0' 
   );
 end mms_io_ddr;
 
@@ -181,7 +184,9 @@ begin
 
     phy4_in       => phy4_in,
     phy4_io       => phy4_io,
-    phy4_ou       => phy4_ou
+    phy4_ou       => phy4_ou,
+
+    ddr_cal_ok    => ddr_cal_ok
   );
 
   -- MM register map for DDR controller write and read access control via MM
diff --git a/libraries/io/ddr/src/vhdl/mms_io_ddr_diag.vhd b/libraries/io/ddr/src/vhdl/mms_io_ddr_diag.vhd
index be2513f6b93f75347ec33acfea1a0e859227fcd5..9c8c237a240932040949f5b94fc89652c0bdf3d1 100644
--- a/libraries/io/ddr/src/vhdl/mms_io_ddr_diag.vhd
+++ b/libraries/io/ddr/src/vhdl/mms_io_ddr_diag.vhd
@@ -117,6 +117,9 @@ entity mms_io_ddr_diag is
     phy4_io             : inout t_tech_ddr4_phy_io;
     phy4_ou             : out   t_tech_ddr4_phy_ou;
 
+    -- DDR Calibration result
+    ddr_cal_ok          : out   std_logic := '0';
+
     ---------------------------------------------------------------------------
     -- DIAG Tx seq
     ---------------------------------------------------------------------------
@@ -213,7 +216,10 @@ begin
     -- DDR4 PHY external interface
     phy4_in             => phy4_in,
     phy4_io             => phy4_io,
-    phy4_ou             => phy4_ou
+    phy4_ou             => phy4_ou,
+
+    -- DDR Calibration result
+    ddr_cal_ok          => ddr_cal_ok
   );
 
   -----------------------------------------------------------------------------