diff --git a/applications/lofar2/designs/lofar2_unb2b_sdp_station/lofar2_unb2b_sdp_station.fpga.yaml b/applications/lofar2/designs/lofar2_unb2b_sdp_station/lofar2_unb2b_sdp_station.fpga.yaml
index 87a56501014ef31f56ea825959ad286ac766af87..049d49e757afc23cc41cd45851f0291976895032 100644
--- a/applications/lofar2/designs/lofar2_unb2b_sdp_station/lofar2_unb2b_sdp_station.fpga.yaml
+++ b/applications/lofar2/designs/lofar2_unb2b_sdp_station/lofar2_unb2b_sdp_station.fpga.yaml
@@ -199,6 +199,8 @@ peripherals:
   #############################################################################
   
   - peripheral_name: si/si
+    parameter_overrides:
+      - { name: g_nof_streams, value: c_S_pn }
     mm_port_names:
       - REG_SI
       
diff --git a/applications/lofar2/designs/lofar2_unb2b_sdp_station/lofar2_unb2b_sdp_station.mmap.gold b/applications/lofar2/designs/lofar2_unb2b_sdp_station/lofar2_unb2b_sdp_station.mmap.gold
index 8f34189c14fb832d6b2bb80947a5c62548138a71..c5ba7e8ef763f59d004eb353dc4bbaf7c3f69106 100644
--- a/applications/lofar2/designs/lofar2_unb2b_sdp_station/lofar2_unb2b_sdp_station.mmap.gold
+++ b/applications/lofar2/designs/lofar2_unb2b_sdp_station/lofar2_unb2b_sdp_station.mmap.gold
@@ -183,7 +183,7 @@ number_of_columns = 13
   REG_DIAG_DATA_BUFFER_BSN                  1     12    REG    sync_cnt                                  0x000b0000       1     RO       uint32     b[31:0]           -  -      2    
   -                                         -     -     -      word_cnt                                  0x000b0001       1     RO       uint32     b[31:0]           -  -      -    
   RAM_DIAG_DATA_BUFFER_BSN                  1     12    RAM    data                                      0x000b4000    1024     RW       uint32     b[31:0]     b[15:0]  -      1024 
-  REG_SI                                    1     1     REG    enable                                    0x000b8000       1     RW       uint32      b[0:0]           -  -      -    
+  REG_SI                                    1     1     REG    enable                                    0x000b8000       1     RW       uint32     b[11:0]           -  -      -    
   RAM_FIL_COEFS                             2     16    RAM    data                                      0x000c0000    1024     RW       uint32     b[15:0]           -  16384  1024 
   RAM_EQUALIZER_GAINS                       1     12    RAM    data                                      0x000c8000    1024     RW    cint16_ir     b[31:0]           -  -      1024 
   REG_DP_SELECTOR                           1     1     REG    input_select                              0x000d0000       1     RW       uint32      b[0:0]           -  -      -    
diff --git a/applications/lofar2/designs/lofar2_unb2b_sdp_station/lofar2_unb2b_sdp_station.mmap.qsys.gold b/applications/lofar2/designs/lofar2_unb2b_sdp_station/lofar2_unb2b_sdp_station.mmap.qsys.gold
index 1b53885aa12434da53bd7505e5b28defe6d2632c..53598b995cca9269d8dc866fc316918f6631aba0 100644
--- a/applications/lofar2/designs/lofar2_unb2b_sdp_station/lofar2_unb2b_sdp_station.mmap.qsys.gold
+++ b/applications/lofar2/designs/lofar2_unb2b_sdp_station/lofar2_unb2b_sdp_station.mmap.qsys.gold
@@ -183,7 +183,7 @@ number_of_columns = 13
   REG_DIAG_DATA_BUFFER_BSN                  1     12    REG    sync_cnt                                  0x0004d1a0       1     RO       uint32     b[31:0]           -  -      2    
   -                                         -     -     -      word_cnt                                  0x0004d1a1       1     RO       uint32     b[31:0]           -  -      -    
   RAM_DIAG_DATA_BUFFER_BSN                  1     12    RAM    data                                      0x00200000    1024     RW       uint32     b[31:0]     b[15:0]  -      1024 
-  REG_SI                                    1     1     REG    enable                                    0x0004d2fa       1     RW       uint32      b[0:0]           -  -      -    
+  REG_SI                                    1     1     REG    enable                                    0x0004d2fa       1     RW       uint32     b[11:0]           -  -      -    
   RAM_FIL_COEFS                             2     16    RAM    data                                      0x00030000    1024     RW       uint32     b[15:0]           -  16384  1024 
   RAM_EQUALIZER_GAINS                       1     12    RAM    data                                      0x00040000    1024     RW    cint16_ir     b[31:0]           -  -      1024 
   REG_DP_SELECTOR                           1     1     REG    input_select                              0x0004d2f6       1     RW       uint32      b[0:0]           -  -      -    
diff --git a/applications/lofar2/designs/lofar2_unb2c_sdp_station/lofar2_unb2c_sdp_station.fpga.yaml b/applications/lofar2/designs/lofar2_unb2c_sdp_station/lofar2_unb2c_sdp_station.fpga.yaml
index d82446632b6a9a0ca53ac9bb6d3f8fe2a71474b3..b350714e1ecfbd8ff5c857721530b21153f03412 100644
--- a/applications/lofar2/designs/lofar2_unb2c_sdp_station/lofar2_unb2c_sdp_station.fpga.yaml
+++ b/applications/lofar2/designs/lofar2_unb2c_sdp_station/lofar2_unb2c_sdp_station.fpga.yaml
@@ -199,6 +199,8 @@ peripherals:
   #############################################################################
   
   - peripheral_name: si/si
+    parameter_overrides:
+      - { name: g_nof_streams, value: c_S_pn }
     mm_port_names:
       - REG_SI
       
diff --git a/boards/uniboard2c/designs/unb2c_test/revisions/unb2c_test_ddr_16G/hdllib.cfg b/boards/uniboard2c/designs/unb2c_test/revisions/unb2c_test_ddr_16G/hdllib.cfg
new file mode 100644
index 0000000000000000000000000000000000000000..05fda726d03ecaa75e70a78a485a8f8f63a8dcc3
--- /dev/null
+++ b/boards/uniboard2c/designs/unb2c_test/revisions/unb2c_test_ddr_16G/hdllib.cfg
@@ -0,0 +1,119 @@
+hdl_lib_name = unb2c_test_ddr_16G
+hdl_library_clause_name = unb2c_test_ddr_16G_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
+                     ip_arria10_e2sg_ddr4_16g_1600_72b
+
+synth_files =
+    unb2c_test_ddr_16G.vhd
+
+test_bench_files = 
+    tb_unb2c_test_ddr_16G.vhd
+
+regression_test_vhdl =
+    tb_unb2c_test_ddr_16G.vhd
+
+
+[modelsim_project_file]
+modelsim_copy_files =
+    ../../src/hex hex
+
+
+[quartus_project_file]
+synth_top_level_entity =
+
+quartus_copy_files =
+    quartus .
+    ../../quartus .
+    ../../src/hex hex
+
+quartus_qsf_files =
+    $RADIOHDL_WORK/boards/uniboard2c/libraries/unb2c_board/quartus/unb2c_board.qsf
+
+quartus_sdc_pre_files =
+    quartus/unb2c_test_ddr_16G.sdc
+    $RADIOHDL_WORK/boards/uniboard2c/libraries/unb2c_board/quartus/unb2c_board_pre.sdc
+
+quartus_sdc_files =
+    $RADIOHDL_WORK/boards/uniboard2c/libraries/unb2c_board/quartus/unb2c_board.sdc
+
+quartus_tcl_files =
+    quartus/unb2c_test_ddr_16G_pins.tcl
+
+quartus_vhdl_files = 
+
+quartus_qip_files =
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr_16G/qsys_unb2c_test/qsys_unb2c_test.qip
+
+quartus_ip_files =
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_avs2_eth_coe_0.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_avs2_eth_coe_1.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_clk_0.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_jesd204b.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_jtag_uart_0.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_nios2_gen2_0.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_onchip_memory2_0.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_pio_jesd_ctrl.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_pio_pps.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_pio_system_info.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_pio_wdi.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_ram_diag_bg_10gbe.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_ram_diag_data_buffer_10gbe.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_ram_diag_data_buffer_bsn.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_ram_diag_data_buffer_ddr_MB_II.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_ram_diag_data_buffer_ddr_MB_I.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_ram_scrap.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_bsn_monitor_10GbE.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_bsn_monitor_input.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_bsn_scheduler.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_bsn_source.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_diag_bg_10gbe.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_diag_data_buffer_10gbe.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_diag_data_buffer_bsn.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_diag_data_buffer_ddr_MB_II.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_diag_data_buffer_ddr_MB_I.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_diag_rx_seq_10gbe.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_diag_rx_seq_ddr_MB_II.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_diag_rx_seq_ddr_MB_I.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_diag_tx_seq_10gbe.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_diag_tx_seq_ddr_MB_II.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_diag_tx_seq_ddr_MB_I.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_dpmm_ctrl.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_dpmm_data.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_epcs.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_eth10g_back0.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_eth10g_back1.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_eth10g_qsfp_ring.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_fpga_temp_sens.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_fpga_voltage_sens.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_heater.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_io_ddr_MB_II.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_io_ddr_MB_I.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_mmdp_ctrl.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_mmdp_data.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_remu.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_tr_10GbE_back0.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_tr_10GbE_back1.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_tr_10GbE_qsfp_ring.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_wdi.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_rom_system_info.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_timer_0.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_diag_bg_eth_0.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_hdr_dat_eth_0.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_bsn_monitor_v2_tx_eth_0.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_bsn_monitor_v2_rx_eth_0.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_strobe_total_count_tx_eth_0.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_strobe_total_count_rx_eth_0.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_diag_bg_eth_1.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_hdr_dat_eth_1.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_bsn_monitor_v2_tx_eth_1.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_bsn_monitor_v2_rx_eth_1.ip
+    $RADIOHDL_BUILD_DIR/unb2c/quartus/unb2c_test_ddr/ip/qsys_unb2c_test/qsys_unb2c_test_reg_strobe_total_count_tx_eth_1.ip
+    $RADIOHDL_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/quartus/unb2c_test_ddr_16G_pins.tcl b/boards/uniboard2c/designs/unb2c_test/revisions/unb2c_test_ddr_16G/quartus/unb2c_test_ddr_16G_pins.tcl
new file mode 100644
index 0000000000000000000000000000000000000000..776b733cab71d36b5b3bb51beafe10e7b9142542
--- /dev/null
+++ b/boards/uniboard2c/designs/unb2c_test/revisions/unb2c_test_ddr_16G/quartus/unb2c_test_ddr_16G_pins.tcl
@@ -0,0 +1,576 @@
+###############################################################################
+#
+# 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_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]
+
+
+
+
+
+# module II:
+set_location_assignment PIN_A29 -to MB_II_OU.a[0]
+set_location_assignment PIN_B29 -to MB_II_OU.a[1]
+set_location_assignment PIN_H29 -to MB_II_OU.a[2]
+set_location_assignment PIN_G29 -to MB_II_OU.a[3]
+set_location_assignment PIN_D29 -to MB_II_OU.a[4]
+set_location_assignment PIN_E29 -to MB_II_OU.a[5]
+set_location_assignment PIN_C29 -to MB_II_OU.a[6]
+set_location_assignment PIN_C28 -to MB_II_OU.a[7]
+set_location_assignment PIN_E30 -to MB_II_OU.a[8]
+set_location_assignment PIN_D30 -to MB_II_OU.a[9]
+set_location_assignment PIN_B28 -to MB_II_OU.a[10]
+set_location_assignment PIN_A28 -to MB_II_OU.a[11]
+set_location_assignment PIN_H27 -to MB_II_OU.a[12]
+set_location_assignment PIN_E28 -to MB_II_OU.a[13]
+set_location_assignment PIN_K28 -to MB_II_OU.act_n
+set_location_assignment PIN_C16 -to MB_II_IN.alert_n
+set_location_assignment PIN_C27 -to MB_II_OU.ba[0]
+set_location_assignment PIN_A27 -to MB_II_OU.ba[1]
+set_location_assignment PIN_B26 -to MB_II_OU.bg[0]
+set_location_assignment PIN_L27 -to MB_II_OU.bg[1]
+set_location_assignment PIN_F28 -to MB_II_OU.a[15]    
+set_location_assignment PIN_E24 -to MB_II_IO.dq[64]   
+set_location_assignment PIN_J25 -to MB_II_IO.dq[65]   
+set_location_assignment PIN_A25 -to MB_II_IO.dq[66]   
+set_location_assignment PIN_G25 -to MB_II_IO.dq[67]   
+set_location_assignment PIN_D25 -to MB_II_IO.dq[68]   
+set_location_assignment PIN_K25 -to MB_II_IO.dq[69]   
+set_location_assignment PIN_D24 -to MB_II_IO.dq[70]   
+set_location_assignment PIN_F25 -to MB_II_IO.dq[71]   
+set_location_assignment PIN_N27 -to MB_II_OU.ck[0]    
+#set_location_assignment PIN_M28 -to MB_II_OU.ck_n[0]  ;#
+set_location_assignment PIN_K27 -to MB_II_OU.ck[1]    
+#set_location_assignment PIN_J26 -to MB_II_OU.ck_n[1]  ;#
+set_location_assignment PIN_N28 -to MB_II_OU.cke[0]   
+set_location_assignment PIN_P26 -to MB_II_OU.cke[1]   
+set_location_assignment PIN_K29 -to MB_II_OU.cs_n[0]  
+set_location_assignment PIN_H26 -to MB_II_OU.cs_n[1]  
+set_location_assignment PIN_A16 -to MB_II_IO.dbi_n[0] 
+set_location_assignment PIN_M21 -to MB_II_IO.dbi_n[1] 
+set_location_assignment PIN_K22 -to MB_II_IO.dbi_n[2] 
+set_location_assignment PIN_D19 -to MB_II_IO.dbi_n[3] 
+set_location_assignment PIN_G30 -to MB_II_IO.dbi_n[4] 
+set_location_assignment PIN_R32 -to MB_II_IO.dbi_n[5] 
+set_location_assignment PIN_G32 -to MB_II_IO.dbi_n[6] 
+set_location_assignment PIN_AC32 -to MB_II_IO.dbi_n[7]
+set_location_assignment PIN_E25 -to MB_II_IO.dbi_n[8] 
+set_location_assignment PIN_F17 -to MB_II_IO.dqs[0]
+set_location_assignment PIN_L20 -to MB_II_IO.dqs[1]
+set_location_assignment PIN_J22 -to MB_II_IO.dqs[2]
+set_location_assignment PIN_B19 -to MB_II_IO.dqs[3]
+set_location_assignment PIN_L31 -to MB_II_IO.dqs[4]
+set_location_assignment PIN_P31 -to MB_II_IO.dqs[5]
+set_location_assignment PIN_N33 -to MB_II_IO.dqs[6]
+set_location_assignment PIN_T33 -to MB_II_IO.dqs[7]
+set_location_assignment PIN_A26 -to MB_II_IO.dqs[8]
+
+set_location_assignment PIN_K30 -to MB_II_OU.odt[0]
+set_location_assignment PIN_R27 -to MB_II_OU.odt[1]
+set_location_assignment PIN_R28 -to MB_II_OU.par
+set_location_assignment PIN_G28 -to MB_II_OU.a[16]
+
+set_location_assignment PIN_J29 -to MB_II_REF_CLK
+
+set_location_assignment PIN_L28 -to MB_II_OU.reset_n
+set_location_assignment PIN_J27 -to MB_II_IN.oct_rzqin
+set_location_assignment PIN_F27 -to MB_II_OU.a[14]
+
+
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.cke[1]
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.cs_n[1]
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.odt[1]
+set_instance_assignment -name IO_STANDARD "1.2 V" -to MB_II_REF_CLK ;#
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IN.oct_rzqin ;#
+
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.a[0]
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.a[1]
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.a[2]
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.a[3]
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.a[4]
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.a[5]
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.a[6]
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.a[7]
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.a[8]
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.a[9]
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.a[10]
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.a[11]
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.a[12]
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.a[13]
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.act_n
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.ba[0]
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.ba[1]
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.bg[0]
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.bg[1]
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.a[15]
+set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.2-V SSTL" -to MB_II_OU.ck[0]
+set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.2-V SSTL" -to MB_II_OU.ck[1]
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.cke[0]
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.cs_n[0]
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.par
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.a[16]
+set_instance_assignment -name IO_STANDARD "1.2 V" -to MB_II_OU.reset_n ;#
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.a[14]
+set_instance_assignment -name IO_STANDARD "SSTL-12" -to MB_II_OU.odt[0]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IN.alert_n ;#
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[64]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[65]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[66]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[67]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[68]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[69]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[70]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[71]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dbi_n[0]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dbi_n[1]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dbi_n[2]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dbi_n[3]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dbi_n[4]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dbi_n[5]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dbi_n[6]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dbi_n[7]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dbi_n[8]
+
+set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.2-V POD" -to MB_II_IO.dqs[0]
+set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.2-V POD" -to MB_II_IO.dqs[1]
+set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.2-V POD" -to MB_II_IO.dqs[2]
+set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.2-V POD" -to MB_II_IO.dqs[3]
+set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.2-V POD" -to MB_II_IO.dqs[4]
+set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.2-V POD" -to MB_II_IO.dqs[5]
+set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.2-V POD" -to MB_II_IO.dqs[6]
+set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.2-V POD" -to MB_II_IO.dqs[7]
+set_instance_assignment -name IO_STANDARD "DIFFERENTIAL 1.2-V POD" -to MB_II_IO.dqs[8]
+
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[0]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[1]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[2]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[3]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[4]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[5]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[6]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[7]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[8]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[9]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[10]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[11]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[12]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[13]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[14]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[15]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[16]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[17]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[18]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[19]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[20]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[21]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[22]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[23]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[24]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[25]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[26]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[27]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[28]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[29]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[30]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[31]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[32]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[33]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[34]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[35]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[36]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[37]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[38]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[39]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[40]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[41]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[42]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[43]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[44]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[45]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[46]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[47]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[48]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[49]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[50]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[51]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[52]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[53]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[54]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[55]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[56]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[57]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[58]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[59]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[60]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[61]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[62]
+set_instance_assignment -name IO_STANDARD "1.2-V POD" -to MB_II_IO.dq[63]
+
+
+
+
+set_location_assignment PIN_A17 -to MB_II_IO.dq[0]
+set_location_assignment PIN_B16 -to MB_II_IO.dq[1]
+set_location_assignment PIN_D16 -to MB_II_IO.dq[2]
+set_location_assignment PIN_A18 -to MB_II_IO.dq[3]
+set_location_assignment PIN_B18 -to MB_II_IO.dq[4]
+set_location_assignment PIN_C17 -to MB_II_IO.dq[5]
+set_location_assignment PIN_E18 -to MB_II_IO.dq[6]
+set_location_assignment PIN_F18 -to MB_II_IO.dq[7]
+set_location_assignment PIN_R22 -to MB_II_IO.dq[8]
+set_location_assignment PIN_J20 -to MB_II_IO.dq[9]
+set_location_assignment PIN_L21 -to MB_II_IO.dq[10]
+set_location_assignment PIN_M20 -to MB_II_IO.dq[11]
+set_location_assignment PIN_J21 -to MB_II_IO.dq[12]
+set_location_assignment PIN_P21 -to MB_II_IO.dq[13]
+set_location_assignment PIN_R20 -to MB_II_IO.dq[14]
+set_location_assignment PIN_N21 -to MB_II_IO.dq[15]
+set_location_assignment PIN_L22 -to MB_II_IO.dq[16]
+set_location_assignment PIN_G20 -to MB_II_IO.dq[17]
+set_location_assignment PIN_H21 -to MB_II_IO.dq[18]
+set_location_assignment PIN_N22 -to MB_II_IO.dq[19]
+set_location_assignment PIN_P22 -to MB_II_IO.dq[20]
+set_location_assignment PIN_F20 -to MB_II_IO.dq[21]
+set_location_assignment PIN_G21 -to MB_II_IO.dq[22]
+set_location_assignment PIN_F21 -to MB_II_IO.dq[23]
+set_location_assignment PIN_E19 -to MB_II_IO.dq[24]
+set_location_assignment PIN_B20 -to MB_II_IO.dq[25]
+set_location_assignment PIN_A20 -to MB_II_IO.dq[26]
+set_location_assignment PIN_G19 -to MB_II_IO.dq[27]
+set_location_assignment PIN_D20 -to MB_II_IO.dq[28]
+set_location_assignment PIN_E20 -to MB_II_IO.dq[29]
+set_location_assignment PIN_D17 -to MB_II_IO.dq[30]
+set_location_assignment PIN_C18 -to MB_II_IO.dq[31]
+set_location_assignment PIN_F30 -to MB_II_IO.dq[32]
+set_location_assignment PIN_L30 -to MB_II_IO.dq[33]
+set_location_assignment PIN_M30 -to MB_II_IO.dq[34]
+set_location_assignment PIN_C31 -to MB_II_IO.dq[35]
+set_location_assignment PIN_D31 -to MB_II_IO.dq[36]
+set_location_assignment PIN_H31 -to MB_II_IO.dq[37]
+set_location_assignment PIN_J31 -to MB_II_IO.dq[38]
+set_location_assignment PIN_F31 -to MB_II_IO.dq[39]
+set_location_assignment PIN_P32 -to MB_II_IO.dq[40]
+set_location_assignment PIN_R30 -to MB_II_IO.dq[41]
+set_location_assignment PIN_U31 -to MB_II_IO.dq[42]
+set_location_assignment PIN_W31 -to MB_II_IO.dq[43]
+set_location_assignment PIN_P29 -to MB_II_IO.dq[44]
+set_location_assignment PIN_P30 -to MB_II_IO.dq[45]
+set_location_assignment PIN_V31 -to MB_II_IO.dq[46]
+set_location_assignment PIN_R29 -to MB_II_IO.dq[47]
+set_location_assignment PIN_M33 -to MB_II_IO.dq[48]
+set_location_assignment PIN_J33 -to MB_II_IO.dq[49]
+set_location_assignment PIN_H33 -to MB_II_IO.dq[50]
+set_location_assignment PIN_H32 -to MB_II_IO.dq[51]
+set_location_assignment PIN_J32 -to MB_II_IO.dq[52]
+set_location_assignment PIN_K33 -to MB_II_IO.dq[53]
+set_location_assignment PIN_K32 -to MB_II_IO.dq[54]
+set_location_assignment PIN_L32 -to MB_II_IO.dq[55]
+set_location_assignment PIN_AB33 -to MB_II_IO.dq[56]
+set_location_assignment PIN_AA32 -to MB_II_IO.dq[57]
+set_location_assignment PIN_W32 -to MB_II_IO.dq[58]
+set_location_assignment PIN_U33 -to MB_II_IO.dq[59]
+set_location_assignment PIN_Y33 -to MB_II_IO.dq[60]
+set_location_assignment PIN_AA33 -to MB_II_IO.dq[61]
+set_location_assignment PIN_V33 -to MB_II_IO.dq[62]
+set_location_assignment PIN_Y32 -to MB_II_IO.dq[63]
+set_location_assignment PIN_E17 -to MB_II_IO.dqs_n[0]
+set_location_assignment PIN_K20 -to MB_II_IO.dqs_n[1]
+set_location_assignment PIN_H22 -to MB_II_IO.dqs_n[2]
+set_location_assignment PIN_C19 -to MB_II_IO.dqs_n[3]
+set_location_assignment PIN_M31 -to MB_II_IO.dqs_n[4]
+set_location_assignment PIN_N31 -to MB_II_IO.dqs_n[5]
+set_location_assignment PIN_P33 -to MB_II_IO.dqs_n[6]
+set_location_assignment PIN_T32 -to MB_II_IO.dqs_n[7]
+set_location_assignment PIN_B25 -to MB_II_IO.dqs_n[8]
+
diff --git a/boards/uniboard2c/designs/unb2c_test/revisions/unb2c_test_ddr_16G/tb_unb2c_test_ddr_16G.vhd b/boards/uniboard2c/designs/unb2c_test/revisions/unb2c_test_ddr_16G/tb_unb2c_test_ddr_16G.vhd
new file mode 100644
index 0000000000000000000000000000000000000000..e10c278e6e691ccee15c2cbf12f1bb1b7c096d5d
--- /dev/null
+++ b/boards/uniboard2c/designs/unb2c_test/revisions/unb2c_test_ddr_16G/tb_unb2c_test_ddr_16G.vhd
@@ -0,0 +1,38 @@
+-------------------------------------------------------------------------------
+--
+-- 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 IS
+END tb_unb2c_test_ddr_16G;
+
+
+ARCHITECTURE tb OF tb_unb2c_test_ddr_16G IS
+BEGIN
+  u_tb_unb2c_test : ENTITY unb2c_test_lib.tb_unb2c_test
+  GENERIC MAP (
+    g_design_name => "unb2c_test_ddr_16G"
+  );
+END tb;
+
diff --git a/boards/uniboard2c/designs/unb2c_test/revisions/unb2c_test_ddr_16G/unb2c_test_ddr_16G.vhd b/boards/uniboard2c/designs/unb2c_test/revisions/unb2c_test_ddr_16G/unb2c_test_ddr_16G.vhd
new file mode 100644
index 0000000000000000000000000000000000000000..3080e83b78142200481da6e3ac01969814c70734
--- /dev/null
+++ b/boards/uniboard2c/designs/unb2c_test/revisions/unb2c_test_ddr_16G/unb2c_test_ddr_16G.vhd
@@ -0,0 +1,130 @@
+-------------------------------------------------------------------------------
+--
+-- 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 IS
+  GENERIC (
+    g_design_name      : STRING  := "unb2c_test_ddr_16G";
+    g_design_note      : STRING  := "DDR: MB I and II";
+    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
+  );
+  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;
+
+
+ARCHITECTURE str OF unb2c_test_ddr_16G 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
+  )
+  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 7a5dcff23ae8ff5e6716049f18ac0c0d1c0aa5ee..f584a6c375feb7ab4694d7e6fb1af511a3083148 100644
--- a/boards/uniboard2c/designs/unb2c_test/src/vhdl/unb2c_test.vhd
+++ b/boards/uniboard2c/designs/unb2c_test/src/vhdl/unb2c_test.vhd
@@ -180,7 +180,7 @@ ARCHITECTURE str OF unb2c_test IS
 
   -- ddr
   CONSTANT c_ddr_ctlr_data_w            : NATURAL := func_tech_ddr_ctlr_data_w(c_ddr_MB_I);  -- = 576, assume both MB_I and MB_II use the same ctlr_data_w
-  CONSTANT c_ddr_dp_data_w              : NATURAL := 144;   -- DDR4 with dq_w = 72, rsl = 8 so ctrl data width = 576 and therefore the mixed width FIFO ratio is 576 /144 = 4
+  CONSTANT c_ddr_dp_data_w              : NATURAL := c_ddr_ctlr_data_w / 4;   -- DDR4 with dq_w = 72, rsl = 8 so ctrl data width = 576 and therefore the mixed width FIFO ratio is 576 /144 = 4
   CONSTANT c_ddr_dp_seq_dat_w           : NATURAL := 16;    -- >= 1, test sequence data width. Choose c_ddr_dp_seq_dat_w <= c_ddr_dp_data_w. The seq data gets replicated to fill c_ddr_dp_data_w.
   CONSTANT c_ddr_dp_wr_fifo_depth       : NATURAL := 256 * (c_ddr_ctlr_data_w/c_ddr_dp_data_w);  -- defined at DP side of the FIFO, choose 256 * (ctrl_data_w/g_dp_data_w) to make full use of M9K which have at least 256 words
   CONSTANT c_ddr_dp_rd_fifo_depth       : NATURAL := 256 * (c_ddr_ctlr_data_w/c_ddr_dp_data_w);  -- defined at DP side of the FIFO, choose 256 * (ctrl_data_w/g_dp_data_w) or factors of 2 more to fit max number of read bursts
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 af5abbd581802a09607b7494b929966e3713a403..741947a20775c19e342ba9f3e3b8c44f6e0cdd6b 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       : t_unb2c_test_config := (FALSE,FALSE,FALSE, TRUE, TRUE,FALSE,FALSE,FALSE,FALSE,FALSE,c_tech_ddr4_8g_1600m, c_tech_ddr4_8g_1600m);
   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_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);
 
@@ -103,6 +104,7 @@ PACKAGE BODY unb2c_test_pkg IS
     ELSIF g_design_name = "unb2c_test_jesd204b"         THEN RETURN c_test_jesd204b;
     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;
     ELSE  RETURN c_test_minimal;
     END IF;
   END;
diff --git a/libraries/dsp/si/si.peripheral.yaml b/libraries/dsp/si/si.peripheral.yaml
index 206534545d065f54e4b155f8ba1086225391e6c0..f32856fe37cc44bcb2a007011a7e9d070e84bbd8 100644
--- a/libraries/dsp/si/si.peripheral.yaml
+++ b/libraries/dsp/si/si.peripheral.yaml
@@ -8,6 +8,9 @@ hdl_library_description: "Spectral Inversion (SI)"
 peripherals:
   - peripheral_name: si    # pi_si.py
     peripheral_description: "Spectral Inversion control."
+    parameters:
+      # Parameters of si_arr.vhd
+      - { name: g_nof_streams, value: 1 }
     mm_ports:
       # MM port for si_arr.vhd
       - mm_port_name: REG_SI
@@ -15,6 +18,9 @@ peripherals:
         mm_port_description: "In the even Nyquist zones the sampled spectrum gets flipped in frequency. This flip can be compensated for by enabling spectral inversion (SI)."
         fields:
           - - field_name: enable
-              field_description: "When 0 then pass on the array of input signals, when 1 then enable spectral inversion for all the input signals."
+              field_description: |
+                "Set spectral inversion per input signal in [g_nof_streams-1:0].
+                 When enable[i] = 0 then pass on input signal i, when enable[i] = 1
+                 then enable spectral inversion for the input signal i."
               address_offset: 0x0
-              mm_width: 1
+              mm_width: g_nof_streams
diff --git a/libraries/dsp/si/src/vhdl/si_arr.vhd b/libraries/dsp/si/src/vhdl/si_arr.vhd
index faa86d371483f52f1a93f3903abc1393465f46e1..cb6a7a9339e7a6dc7763f3219843428ec345b729 100755
--- a/libraries/dsp/si/src/vhdl/si_arr.vhd
+++ b/libraries/dsp/si/src/vhdl/si_arr.vhd
@@ -56,9 +56,20 @@ END si_arr;
 
 ARCHITECTURE str OF si_arr IS
 
-  CONSTANT c_si_mem_reg : t_c_mem := (c_mem_reg_rd_latency, 1, 1, 1, '0');
+  --TYPE t_c_mem IS RECORD
+  --  latency   : NATURAL;    -- read latency
+  --  adr_w     : NATURAL;
+  --  dat_w     : NATURAL;
+  --  nof_dat   : NATURAL;    -- optional, nof dat words <= 2**adr_w
+  --  init_sl   : STD_LOGIC;  -- optional, init all dat words to std_logic '0', '1' or 'X'
+  --  --init_file : STRING;     -- "UNUSED", unconstrained length can not be in record
+  --END RECORD;
 
-  SIGNAL reg_si_en : STD_LOGIC_VECTOR(c_si_mem_reg.dat_w*c_si_mem_reg.nof_dat-1 DOWNTO 0);
+  -- Use one MM word to fit the si_en bits, so this suits g_nof_streams
+  -- <= c_word_w = 32.
+  CONSTANT c_si_mem_reg : t_c_mem := (c_mem_reg_rd_latency, 1, g_nof_streams, 1, '0');
+
+  SIGNAL reg_si_en : STD_LOGIC_VECTOR(g_nof_streams-1 DOWNTO 0);
 
 BEGIN
 
@@ -88,7 +99,7 @@ BEGIN
     PORT MAP (
       in_sosi   => in_sosi_arr(I), 
       out_sosi  => out_sosi_arr(I), 
-      si_en     => reg_si_en(0), 
+      si_en     => reg_si_en(I),
       clk       => dp_clk,
       rst       => dp_rst
     );
diff --git a/libraries/technology/ddr/tech_ddr_arria10_e2sg.vhd b/libraries/technology/ddr/tech_ddr_arria10_e2sg.vhd
index d936bdc4b7554ab45bff449f84b866d70b6ac42c..5b6f28915746718af3d4a3c20121f74b7c86d320 100644
--- a/libraries/technology/ddr/tech_ddr_arria10_e2sg.vhd
+++ b/libraries/technology/ddr/tech_ddr_arria10_e2sg.vhd
@@ -76,6 +76,7 @@ ARCHITECTURE str OF tech_ddr_arria10_e2sg IS
   CONSTANT c_gigabytes             : NATURAL := func_tech_ddr_module_size(g_tech_ddr);
 
   CONSTANT c_ctlr_address_w        : NATURAL := func_tech_ddr_ctlr_address_w(g_tech_ddr);
+  CONSTANT c_ctlr_ip_data_w        : NATURAL := func_tech_ddr_ctlr_ip_data_w(g_tech_ddr);
   CONSTANT c_ctlr_data_w           : NATURAL := func_tech_ddr_ctlr_data_w(   g_tech_ddr);
   
   SIGNAL i_ctlr_gen_clk            : STD_LOGIC;
@@ -85,6 +86,10 @@ ARCHITECTURE str OF tech_ddr_arria10_e2sg IS
   SIGNAL local_cal_success         : STD_LOGIC;
   SIGNAL local_cal_fail            : STD_LOGIC;
 
+  SIGNAL amm_readdata              : STD_LOGIC_VECTOR(c_ctlr_ip_data_w-1 DOWNTO 0) := (OTHERS => '0');
+  SIGNAL amm_writedata             : STD_LOGIC_VECTOR(c_ctlr_ip_data_w-1 DOWNTO 0) := (OTHERS => '0');
+
+
 BEGIN
 
   ctlr_gen_clk <= i_ctlr_gen_clk;
@@ -101,8 +106,8 @@ BEGIN
       amm_read_0          => ctlr_mosi.rd,                                              --                            .read
       amm_write_0         => ctlr_mosi.wr,                                              --                            .write
       amm_address_0       => ctlr_mosi.address(c_ctlr_address_w-1 DOWNTO 0),            --                            .address
-      amm_readdata_0      => ctlr_miso.rddata(c_ctlr_data_w-1 DOWNTO 0),                --                            .readdata
-      amm_writedata_0     => ctlr_mosi.wrdata(c_ctlr_data_w-1 DOWNTO 0),                --                            .writedata
+      amm_readdata_0      => ctlr_miso.rddata(c_ctlr_ip_data_w-1 DOWNTO 0),                --                            .readdata
+      amm_writedata_0     => ctlr_mosi.wrdata(c_ctlr_ip_data_w-1 DOWNTO 0),                --                            .writedata
       amm_burstcount_0    => ctlr_mosi.burstsize(g_tech_ddr.maxburstsize_w-1 DOWNTO 0), --                            .burstcount
       amm_byteenable_0    => (OTHERS=>'1'),                                             --                            .byteenable
       amm_readdatavalid_0 => ctlr_miso.rdval,                                           --                            .readdatavalid
@@ -155,8 +160,8 @@ BEGIN
       amm_read_0          => ctlr_mosi.rd,                                              --                            .read
       amm_write_0         => ctlr_mosi.wr,                                              --                            .write
       amm_address_0       => ctlr_mosi.address(c_ctlr_address_w-1 DOWNTO 0),            --                            .address
-      amm_readdata_0      => ctlr_miso.rddata(c_ctlr_data_w-1 DOWNTO 0),                --                            .readdata
-      amm_writedata_0     => ctlr_mosi.wrdata(c_ctlr_data_w-1 DOWNTO 0),                --                            .writedata
+      amm_readdata_0      => ctlr_miso.rddata(c_ctlr_ip_data_w-1 DOWNTO 0),                --                            .readdata
+      amm_writedata_0     => ctlr_mosi.wrdata(c_ctlr_ip_data_w-1 DOWNTO 0),                --                            .writedata
       amm_burstcount_0    => ctlr_mosi.burstsize(g_tech_ddr.maxburstsize_w-1 DOWNTO 0), --                            .burstcount
       amm_byteenable_0    => (OTHERS=>'1'),                                             --                            .byteenable
       amm_readdatavalid_0 => ctlr_miso.rdval,                                           --                            .readdatavalid
@@ -209,8 +214,8 @@ BEGIN
       amm_read_0          => ctlr_mosi.rd,                                              --                            .read
       amm_write_0         => ctlr_mosi.wr,                                              --                            .write
       amm_address_0       => ctlr_mosi.address(c_ctlr_address_w-1 DOWNTO 0),            --                            .address
-      amm_readdata_0      => ctlr_miso.rddata(c_ctlr_data_w-1 DOWNTO 0),                --                            .readdata
-      amm_writedata_0     => ctlr_mosi.wrdata(c_ctlr_data_w-1 DOWNTO 0),                --                            .writedata
+      amm_readdata_0      => ctlr_miso.rddata(c_ctlr_ip_data_w-1 DOWNTO 0),                --                            .readdata
+      amm_writedata_0     => ctlr_mosi.wrdata(c_ctlr_ip_data_w-1 DOWNTO 0),                --                            .writedata
       amm_burstcount_0    => ctlr_mosi.burstsize(g_tech_ddr.maxburstsize_w-1 DOWNTO 0), --                            .burstcount
       amm_byteenable_0    => (OTHERS=>'1'),                                             --                            .byteenable
       amm_readdatavalid_0 => ctlr_miso.rdval,                                           --                            .readdatavalid
@@ -263,8 +268,8 @@ BEGIN
       amm_read_0          => ctlr_mosi.rd,                                              --                            .read
       amm_write_0         => ctlr_mosi.wr,                                              --                            .write
       amm_address_0       => ctlr_mosi.address(c_ctlr_address_w-1 DOWNTO 0),            --                            .address
-      amm_readdata_0      => ctlr_miso.rddata(c_ctlr_data_w-1 DOWNTO 0),                --                            .readdata
-      amm_writedata_0     => ctlr_mosi.wrdata(c_ctlr_data_w-1 DOWNTO 0),                --                            .writedata
+      amm_readdata_0      => amm_readdata,                                              --                            .readdata
+      amm_writedata_0     => amm_writedata,                                             --                            .writedata
       amm_burstcount_0    => ctlr_mosi.burstsize(g_tech_ddr.maxburstsize_w-1 DOWNTO 0), --                            .burstcount
       amm_byteenable_0    => (OTHERS=>'1'),                                             --                            .byteenable
       amm_readdatavalid_0 => ctlr_miso.rdval,                                           --                            .readdatavalid
@@ -301,10 +306,25 @@ BEGIN
     --local_init_done            => ctlr_miso.done,                                     --       status.local_init_done
     --   local_init_done = ctlr_init_done originally and mapped to ctlr_miso.done for the DDR3 IP. For the DDR4 IP the local_cal_success and
     --   NOT local_cal_fail seem  to serve as local_init_done
+
+    gen_rewire_data : IF g_tech_ddr.mem_dq_w < g_tech_ddr.dq_w GENERATE -- Used when 64 bit modules are used in unb2c slot II as it only supports 72 bit IP (not 64 bit IP).
+      ctlr_miso.rddata(c_ctlr_data_w-1 DOWNTO 0) <= func_tech_ddr_rewire_72b_to_64b(g_tech_ddr, amm_readdata);
+      amm_writedata <= func_tech_ddr_rewire_64b_to_72b(g_tech_ddr, ctlr_mosi.wrdata(c_ctlr_data_w-1 DOWNTO 0));
     
-    ctlr_miso.done     <= local_cal_success AND NOT local_cal_fail WHEN rising_edge(i_ctlr_gen_clk);
-    ctlr_miso.cal_ok   <= local_cal_success;
-    ctlr_miso.cal_fail <= local_cal_fail;
+      ctlr_miso.done     <= '1';
+      ctlr_miso.cal_ok   <= '1';
+      ctlr_miso.cal_fail <= '0';
+    END GENERATE;
+
+    
+    gen_no_rewire_data : IF g_tech_ddr.mem_dq_w = g_tech_ddr.dq_w GENERATE
+      ctlr_miso.rddata(c_ctlr_ip_data_w-1 DOWNTO 0) <= amm_readdata;
+      amm_writedata <= ctlr_mosi.wrdata(c_ctlr_ip_data_w-1 DOWNTO 0);
+
+      ctlr_miso.done     <= local_cal_success AND NOT local_cal_fail WHEN rising_edge(i_ctlr_gen_clk);
+      ctlr_miso.cal_ok   <= local_cal_success;
+      ctlr_miso.cal_fail <= local_cal_fail;
+    END GENERATE;
     
   END GENERATE;
 
diff --git a/libraries/technology/ddr/tech_ddr_pkg.vhd b/libraries/technology/ddr/tech_ddr_pkg.vhd
index 79018075609422255cd3e366f9febd46258a3b77..894e988782ebaf62ed5d9017343291b3f72a6366 100644
--- a/libraries/technology/ddr/tech_ddr_pkg.vhd
+++ b/libraries/technology/ddr/tech_ddr_pkg.vhd
@@ -57,6 +57,7 @@ PACKAGE tech_ddr_pkg IS
     command_queue_depth               : NATURAL;  -- = 8
     maxburstsize                      : NATURAL;  -- = 64
     maxburstsize_w                    : NATURAL;  -- = 7      = ceil_log2(maxburstsize+1)
+    mem_dq_w                          : NATURAL;  -- = 64 dq connected to the memory module, can be = dq_w or 64 whenn dq_w = 72
   END RECORD;
       
   FUNCTION func_tech_sel_ddr(g_technology : NATURAL; g_ddr3, g_ddr4 : t_c_tech_ddr) RETURN t_c_tech_ddr;  -- Select DDR3 or DDR4 dependent on the technology
@@ -65,43 +66,46 @@ PACKAGE tech_ddr_pkg IS
   FUNCTION func_tech_ddr_dq_address_w(  c_ddr : t_c_tech_ddr) RETURN NATURAL;  -- return DDR address width for the DQ data at the PHY mts rate
   FUNCTION func_tech_ddr_ctlr_address_w(c_ddr : t_c_tech_ddr) RETURN NATURAL;  -- return DDR address width for the controller data at the by rsl=4 reduced rate
   FUNCTION func_tech_ddr_ctlr_data_w(   c_ddr : t_c_tech_ddr) RETURN NATURAL;  -- return DDR    data width for the controller data at the by rsl=4 reduced rate
+  FUNCTION func_tech_ddr_ctlr_ip_data_w(c_ddr : t_c_tech_ddr) RETURN NATURAL;  -- return DDR    data width for the controller data at the by rsl=4 reduced rate
   FUNCTION func_tech_ddr_module_size(   c_ddr : t_c_tech_ddr) RETURN NATURAL;  -- return DDR module size in GByte
 
   FUNCTION func_tech_ddr_sim_size(c_ddr : t_c_tech_ddr; sim_ctrl_addr_w : NATURAL) RETURN t_c_tech_ddr; -- derive sim_ddr from c_ddr (or alternatively use predefined c_tech_ddr*_sim)
+  FUNCTION func_tech_ddr_rewire_64b_to_72b(c_ddr : t_c_tech_ddr; vec_64b : STD_LOGIC_VECTOR) RETURN STD_LOGIC_VECTOR;
+  FUNCTION func_tech_ddr_rewire_72b_to_64b(c_ddr : t_c_tech_ddr; vec_72b : STD_LOGIC_VECTOR) RETURN STD_LOGIC_VECTOR;
   
   --                                                                                                    a   a                               cs cs
-  --                                                                 name    mts   master rank      a   row col ba dq  dqs dm dbi bg ck cke w  w_w  odt term rsl rsl_w cqd burst burst_w
-  CONSTANT c_tech_ddr3_max                        : t_c_tech_ddr := ("none",  800,  TRUE, "DUAL  ", 16, 16, 11, 3, 64, 8,  8, 0,  0, 2, 2,  2, 1,   2,  14,  4,  2,    4,  64,   7);  -- maximum ranges for record field definitions
+  --                                                                 name    mts   master rank      a   row col ba dq  dqs dm dbi bg ck cke w  w_w  odt term rsl rsl_w cqd burst burst_w mem_dq_w
+  CONSTANT c_tech_ddr3_max                        : t_c_tech_ddr := ("none",  800,  TRUE, "DUAL  ", 16, 16, 11, 3, 64, 8,  8, 0,  0, 2, 2,  2, 1,   2,  14,  4,  2,    4,  64,   7,      64);  -- maximum ranges for record field definitions
   
   -- use predefined c_tech_ddr3_sim or derive it using func_tech_ddr_sim_size()
-  CONSTANT c_tech_ddr3_sim_8k                     : t_c_tech_ddr := ("DDR3",  800,  TRUE, "DUAL  ", 10,  1, 10, 3, 64, 8,  8, 0,  0, 2, 2,  2, 1,   2,  14,  4,  2,    4,  64,   7);  -- use a_row to set nof ctrl addr = 2**(cs_w + ba + a_row + a_col - rsl_w)
-  CONSTANT c_tech_ddr3_sim_16k                    : t_c_tech_ddr := ("DDR3",  800,  TRUE, "DUAL  ", 10,  2, 10, 3, 64, 8,  8, 0,  0, 2, 2,  2, 1,   2,  14,  4,  2,    4,  64,   7);  -- use a_row to set nof ctrl addr = 2**(cs_w + ba + a_row + a_col - rsl_w)
-  CONSTANT c_tech_ddr3_sim_128k                   : t_c_tech_ddr := ("DDR3",  800,  TRUE, "DUAL  ", 10,  5, 10, 3, 64, 8,  8, 0,  0, 2, 2,  2, 1,   2,  14,  4,  2,    4,  64,   7);  -- use a_row to set nof ctrl addr = 2**(cs_w + ba + a_row + a_col - rsl_w)
-  CONSTANT c_tech_ddr3_sim_1m                     : t_c_tech_ddr := ("DDR3",  800,  TRUE, "DUAL  ", 10,  8, 10, 3, 64, 8,  8, 0,  0, 2, 2,  2, 1,   2,  14,  4,  2,    4,  64,   7);  -- use a_row to set nof ctrl addr = 2**(cs_w + ba + a_row + a_col - rsl_w)
+  CONSTANT c_tech_ddr3_sim_8k                     : t_c_tech_ddr := ("DDR3",  800,  TRUE, "DUAL  ", 10,  1, 10, 3, 64, 8,  8, 0,  0, 2, 2,  2, 1,   2,  14,  4,  2,    4,  64,   7,      64);  -- use a_row to set nof ctrl addr = 2**(cs_w + ba + a_row + a_col - rsl_w)
+  CONSTANT c_tech_ddr3_sim_16k                    : t_c_tech_ddr := ("DDR3",  800,  TRUE, "DUAL  ", 10,  2, 10, 3, 64, 8,  8, 0,  0, 2, 2,  2, 1,   2,  14,  4,  2,    4,  64,   7,      64);  -- use a_row to set nof ctrl addr = 2**(cs_w + ba + a_row + a_col - rsl_w)
+  CONSTANT c_tech_ddr3_sim_128k                   : t_c_tech_ddr := ("DDR3",  800,  TRUE, "DUAL  ", 10,  5, 10, 3, 64, 8,  8, 0,  0, 2, 2,  2, 1,   2,  14,  4,  2,    4,  64,   7,      64);  -- use a_row to set nof ctrl addr = 2**(cs_w + ba + a_row + a_col - rsl_w)
+  CONSTANT c_tech_ddr3_sim_1m                     : t_c_tech_ddr := ("DDR3",  800,  TRUE, "DUAL  ", 10,  8, 10, 3, 64, 8,  8, 0,  0, 2, 2,  2, 1,   2,  14,  4,  2,    4,  64,   7,      64);  -- use a_row to set nof ctrl addr = 2**(cs_w + ba + a_row + a_col - rsl_w)
   
-  CONSTANT c_tech_ddr3_16g_dual_rank_800m         : t_c_tech_ddr := ("DDR3",  800,  TRUE, "DUAL  ", 16, 16, 11, 3, 64, 8,  8, 0,  0, 2, 2,  2, 1,   2,  14,  4,  2,    4,  64,   7);
-  CONSTANT c_tech_ddr3_4g_800m_master             : t_c_tech_ddr := ("DDR3",  800,  TRUE, "DUAL  ", 15, 15, 10, 3, 64, 8,  8, 0,  0, 2, 2,  2, 1,   2,  14,  4,  2,    4,  64,   7);
-  CONSTANT c_tech_ddr3_4g_800m_slave              : t_c_tech_ddr := ("DDR3",  800, FALSE, "DUAL  ", 15, 15, 10, 3, 64, 8,  8, 0,  0, 2, 2,  2, 1,   2,  14,  4,  2,    4,  64,   7);
-  CONSTANT c_tech_ddr3_4g_single_rank_800m_master : t_c_tech_ddr := ("DDR3",  800,  TRUE, "SINGLE", 16, 16, 10, 3, 64, 8,  8, 0,  0, 2, 1,  1, 0,   1,  14,  4,  2,    4,  64,   7);
-  CONSTANT c_tech_ddr3_4g_single_rank_800m_slave  : t_c_tech_ddr := ("DDR3",  800, FALSE, "SINGLE", 16, 16, 10, 3, 64, 8,  8, 0,  0, 2, 1,  1, 0,   1,  14,  4,  2,    4,  64,   7);
+  CONSTANT c_tech_ddr3_16g_dual_rank_800m         : t_c_tech_ddr := ("DDR3",  800,  TRUE, "DUAL  ", 16, 16, 11, 3, 64, 8,  8, 0,  0, 2, 2,  2, 1,   2,  14,  4,  2,    4,  64,   7,      64);
+  CONSTANT c_tech_ddr3_4g_800m_master             : t_c_tech_ddr := ("DDR3",  800,  TRUE, "DUAL  ", 15, 15, 10, 3, 64, 8,  8, 0,  0, 2, 2,  2, 1,   2,  14,  4,  2,    4,  64,   7,      64);
+  CONSTANT c_tech_ddr3_4g_800m_slave              : t_c_tech_ddr := ("DDR3",  800, FALSE, "DUAL  ", 15, 15, 10, 3, 64, 8,  8, 0,  0, 2, 2,  2, 1,   2,  14,  4,  2,    4,  64,   7,      64);
+  CONSTANT c_tech_ddr3_4g_single_rank_800m_master : t_c_tech_ddr := ("DDR3",  800,  TRUE, "SINGLE", 16, 16, 10, 3, 64, 8,  8, 0,  0, 2, 1,  1, 0,   1,  14,  4,  2,    4,  64,   7,      64);
+  CONSTANT c_tech_ddr3_4g_single_rank_800m_slave  : t_c_tech_ddr := ("DDR3",  800, FALSE, "SINGLE", 16, 16, 10, 3, 64, 8,  8, 0,  0, 2, 1,  1, 0,   1,  14,  4,  2,    4,  64,   7,      64);
   
---CONSTANT c_tech_ddr4_max                        : t_c_tech_ddr := ("none", 1600,  TRUE, "DUAL  ", 17, 15, 10, 2, 72, 9,  0, 9,  2, 1, 1,  1, 0,   1,   0,  8,  3,    8,  64,   7);  -- maximum ranges for record field definitions
-  CONSTANT c_tech_ddr4_max                        : t_c_tech_ddr := ("none", 1600,  TRUE, "DUAL  ", 17, 15, 10, 2, 72, 9,  0, 9,  2, 2, 2,  2, 1,   2,   0,  8,  3,    8,  64,   7);  -- maximum ranges for record field definitions
+--CONSTANT c_tech_ddr4_max                        : t_c_tech_ddr := ("none", 1600,  TRUE, "DUAL  ", 17, 15, 10, 2, 72, 9,  0, 9,  2, 1, 1,  1, 0,   1,   0,  8,  3,    8,  64,   7,      72);  -- maximum ranges for record field definitions
+  CONSTANT c_tech_ddr4_max                        : t_c_tech_ddr := ("none", 1600,  TRUE, "DUAL  ", 17, 15, 10, 2, 72, 9,  0, 9,  2, 2, 2,  2, 1,   2,   0,  8,  3,    8,  64,   7,      72);  -- maximum ranges for record field definitions
   
   -- use predefined c_tech_ddr4_sim or derive it using func_tech_ddr_sim_size()
-  CONSTANT c_tech_ddr4_sim_4k                     : t_c_tech_ddr := ("DDR4", 1600,  TRUE, "DUAL  ", 10,  1, 10, 2, 72, 9,  0, 9,  2, 1, 1,  1, 0,   1,   0,  8,  3,    8,  64,   7);  -- use a_row to set nof ctrl addr = 2**(cs_w + ba + a_row + a_col + bg_w - rsl_w)
-  CONSTANT c_tech_ddr4_sim_8k                     : t_c_tech_ddr := ("DDR4", 1600,  TRUE, "DUAL  ", 10,  2, 10, 2, 72, 9,  0, 9,  2, 1, 1,  1, 0,   1,   0,  8,  3,    8,  64,   7);  -- use a_row to set nof ctrl addr = 2**(cs_w + ba + a_row + a_col + bg_w - rsl_w)
-  CONSTANT c_tech_ddr4_sim_16k                    : t_c_tech_ddr := ("DDR4", 1600,  TRUE, "DUAL  ", 10,  3, 10, 2, 72, 9,  0, 9,  2, 1, 1,  1, 0,   1,   0,  8,  3,    8,  64,   7);  -- use a_row to set nof ctrl addr = 2**(cs_w + ba + a_row + a_col + bg_w - rsl_w)
-  CONSTANT c_tech_ddr4_sim_128k                   : t_c_tech_ddr := ("DDR4", 1600,  TRUE, "DUAL  ", 10,  6, 10, 2, 72, 9,  0, 9,  2, 1, 1,  1, 0,   1,   0,  8,  3,    8,  64,   7);  -- use a_row to set nof ctrl addr = 2**(cs_w + ba + a_row + a_col + bg_w - rsl_w)
-  CONSTANT c_tech_ddr4_sim_1m                     : t_c_tech_ddr := ("DDR4", 1600,  TRUE, "DUAL  ", 10,  9, 10, 2, 72, 9,  0, 9,  2, 1, 1,  1, 0,   1,   0,  8,  3,    8,  64,   7);  -- use a_row to set nof ctrl addr = 2**(cs_w + ba + a_row + a_col + bg_w - rsl_w)
+  CONSTANT c_tech_ddr4_sim_4k                     : t_c_tech_ddr := ("DDR4", 1600,  TRUE, "DUAL  ", 10,  1, 10, 2, 72, 9,  0, 9,  2, 1, 1,  1, 0,   1,   0,  8,  3,    8,  64,   7,      72);  -- use a_row to set nof ctrl addr = 2**(cs_w + ba + a_row + a_col + bg_w - rsl_w)
+  CONSTANT c_tech_ddr4_sim_8k                     : t_c_tech_ddr := ("DDR4", 1600,  TRUE, "DUAL  ", 10,  2, 10, 2, 72, 9,  0, 9,  2, 1, 1,  1, 0,   1,   0,  8,  3,    8,  64,   7,      72);  -- use a_row to set nof ctrl addr = 2**(cs_w + ba + a_row + a_col + bg_w - rsl_w)
+  CONSTANT c_tech_ddr4_sim_16k                    : t_c_tech_ddr := ("DDR4", 1600,  TRUE, "DUAL  ", 10,  3, 10, 2, 72, 9,  0, 9,  2, 1, 1,  1, 0,   1,   0,  8,  3,    8,  64,   7,      72);  -- use a_row to set nof ctrl addr = 2**(cs_w + ba + a_row + a_col + bg_w - rsl_w)
+  CONSTANT c_tech_ddr4_sim_128k                   : t_c_tech_ddr := ("DDR4", 1600,  TRUE, "DUAL  ", 10,  6, 10, 2, 72, 9,  0, 9,  2, 1, 1,  1, 0,   1,   0,  8,  3,    8,  64,   7,      72);  -- use a_row to set nof ctrl addr = 2**(cs_w + ba + a_row + a_col + bg_w - rsl_w)
+  CONSTANT c_tech_ddr4_sim_1m                     : t_c_tech_ddr := ("DDR4", 1600,  TRUE, "DUAL  ", 10,  9, 10, 2, 72, 9,  0, 9,  2, 1, 1,  1, 0,   1,   0,  8,  3,    8,  64,   7,      72);  -- use a_row to set nof ctrl addr = 2**(cs_w + ba + a_row + a_col + bg_w - rsl_w)
   
-  CONSTANT c_tech_ddr4_4g_1600m                   : t_c_tech_ddr := ("DDR4", 1600,  TRUE, "DUAL  ", 17, 15, 10, 2, 72, 9,  0, 9,  2, 1, 1,  1, 0,   1,   0,  8,  3,    8,  64,   7);
-  CONSTANT c_tech_ddr4_8g_1600m                   : t_c_tech_ddr := ("DDR4", 1600,  TRUE, "DUAL  ", 17, 15, 10, 2, 72, 9,  0, 9,  2, 2, 2,  2, 1,   2,   0,  8,  3,    8,  64,   7);
-  CONSTANT c_tech_ddr4_16g_1600m_72               : t_c_tech_ddr := ("DDR4", 1600,  TRUE, "DUAL  ", 17, 16, 10, 2, 72, 9,  0, 9,  2, 1, 1,  1, 1,   1,   0,  8,  3,    8,  64,   7);
-  CONSTANT c_tech_ddr4_16g_1600m_64               : t_c_tech_ddr := ("DDR4", 1600,  TRUE, "DUAL  ", 17, 16, 10, 2, 64, 8,  0, 8,  2, 1, 1,  1, 1,   1,   0,  8,  3,    8,  64,   7);
-  CONSTANT c_tech_ddr4_8g_1600m_64                : t_c_tech_ddr := ("DDR4", 1600,  TRUE, "DUAL  ", 17, 15, 10, 2, 64, 8,  0, 8,  2, 2, 2,  2, 1,   2,   0,  8,  3,    8,  64,   7);
-  CONSTANT c_tech_ddr4_4g_2000m                   : t_c_tech_ddr := ("DDR4", 2000,  TRUE, "DUAL  ", 17, 15, 10, 2, 72, 9,  0, 9,  2, 1, 1,  1, 0,   1,   0,  8,  3,    8,  64,   7);
-  CONSTANT c_tech_ddr4_8g_2400m                   : t_c_tech_ddr := ("DDR4", 2400,  TRUE, "DUAL  ", 17, 15, 10, 2, 72, 9,  0, 9,  2, 2, 2,  2, 1,   2,   0,  8,  3,    8,  64,   7);
+  CONSTANT c_tech_ddr4_4g_1600m                   : t_c_tech_ddr := ("DDR4", 1600,  TRUE, "DUAL  ", 17, 15, 10, 2, 72, 9,  0, 9,  2, 1, 1,  1, 0,   1,   0,  8,  3,    8,  64,   7,      72);
+  CONSTANT c_tech_ddr4_8g_1600m                   : t_c_tech_ddr := ("DDR4", 1600,  TRUE, "DUAL  ", 17, 15, 10, 2, 72, 9,  0, 9,  2, 2, 2,  2, 1,   2,   0,  8,  3,    8,  64,   7,      72);
+  CONSTANT c_tech_ddr4_8g_1600m_64                : t_c_tech_ddr := ("DDR4", 1600,  TRUE, "DUAL  ", 17, 15, 10, 2, 64, 8,  0, 8,  2, 2, 2,  2, 1,   2,   0,  8,  3,    8,  64,   7,      64);
+  CONSTANT c_tech_ddr4_16g_1600m_72_64            : t_c_tech_ddr := ("DDR4", 1600,  TRUE, "DUAL  ", 17, 16, 10, 2, 72, 9,  0, 9,  2, 1, 1,  1, 1,   1,   0,  8,  3,    8,  64,   7,      64); -- 72b connection from IP, 64b to memory module (used for unb2c slot II with 64 bit modules)
+  CONSTANT c_tech_ddr4_16g_1600m_64               : t_c_tech_ddr := ("DDR4", 1600,  TRUE, "DUAL  ", 17, 16, 10, 2, 64, 8,  0, 8,  2, 1, 1,  1, 1,   1,   0,  8,  3,    8,  64,   7,      64);
+  CONSTANT c_tech_ddr4_4g_2000m                   : t_c_tech_ddr := ("DDR4", 2000,  TRUE, "DUAL  ", 17, 15, 10, 2, 72, 9,  0, 9,  2, 1, 1,  1, 0,   1,   0,  8,  3,    8,  64,   7,      72);
+  CONSTANT c_tech_ddr4_8g_2400m                   : t_c_tech_ddr := ("DDR4", 2400,  TRUE, "DUAL  ", 17, 15, 10, 2, 72, 9,  0, 9,  2, 2, 2,  2, 1,   2,   0,  8,  3,    8,  64,   7,      72);
 
   -- PHY in, inout and out signal records
   TYPE t_tech_ddr3_phy_in IS RECORD                                                                 -- DDR3 Description
@@ -227,9 +231,14 @@ PACKAGE BODY tech_ddr_pkg IS
   
   FUNCTION func_tech_ddr_ctlr_data_w(c_ddr : t_c_tech_ddr) RETURN NATURAL IS
   BEGIN
-    RETURN c_ddr.dq_w*c_ddr.rsl;                                                -- CTLR data
+    RETURN c_ddr.mem_dq_w*c_ddr.rsl;                                            -- CTLR data
   END;
-  
+   
+  FUNCTION func_tech_ddr_ctlr_ip_data_w(c_ddr : t_c_tech_ddr) RETURN NATURAL IS
+  BEGIN
+    RETURN c_ddr.dq_w*c_ddr.rsl;                                                -- CTLR data
+  END; 
+
   FUNCTION func_tech_ddr_sim_size(c_ddr : t_c_tech_ddr; sim_ctrl_addr_w : NATURAL) RETURN t_c_tech_ddr IS
     VARIABLE v_ddr         : t_c_tech_ddr := c_ddr;
     VARIABLE v_ctrl_addr_w : NATURAL;
@@ -257,5 +266,23 @@ PACKAGE BODY tech_ddr_pkg IS
     END IF;
   END;
   
+  FUNCTION func_tech_ddr_rewire_64b_to_72b(c_ddr : t_c_tech_ddr; vec_64b : STD_LOGIC_VECTOR) RETURN STD_LOGIC_VECTOR IS
+    VARIABLE vec_72b : STD_LOGIC_VECTOR(func_tech_ddr_ctlr_ip_data_w(c_ddr) - 1 DOWNTO 0) := (OTHERS => '0');
+  BEGIN
+    FOR w in 0 TO c_ddr.rsl - 1 LOOP
+      vec_72b( w * c_ddr.dq_w + c_ddr.mem_dq_w - 1 DOWNTO w * c_ddr.dq_w) := vec_64b((w+1) * c_ddr.mem_dq_w - 1 DOWNTO w * c_ddr.mem_dq_w);
+    END LOOP;
+    RETURN vec_72b;
+  END;
+  
+  FUNCTION func_tech_ddr_rewire_72b_to_64b(c_ddr : t_c_tech_ddr; vec_72b : STD_LOGIC_VECTOR) RETURN STD_LOGIC_VECTOR IS
+    VARIABLE vec_64b : STD_LOGIC_VECTOR(func_tech_ddr_ctlr_data_w(c_ddr) - 1 DOWNTO 0) := (OTHERS => '0');
+  BEGIN
+    FOR w in 0 TO c_ddr.rsl - 1 LOOP
+      vec_64b((w+1) * c_ddr.mem_dq_w - 1 DOWNTO w * c_ddr.mem_dq_w) := vec_72b( w * c_ddr.dq_w + c_ddr.mem_dq_w - 1 DOWNTO w * c_ddr.dq_w);
+    END LOOP;
+    RETURN vec_64b;
+  END;
+
 END tech_ddr_pkg;
 
diff --git a/libraries/technology/ip_arria10_e2sg/altera_libraries/altera_emif_cal_slave_nf_191/compile_ip.tcl b/libraries/technology/ip_arria10_e2sg/altera_libraries/altera_emif_cal_slave_nf_191/compile_ip.tcl
index e700baca19e5f5ce4b4f4e51c895b8a3220ea2cc..56bd8a7c2171aee9e7b9e6a5d9036179bfba681a 100644
--- a/libraries/technology/ip_arria10_e2sg/altera_libraries/altera_emif_cal_slave_nf_191/compile_ip.tcl
+++ b/libraries/technology/ip_arria10_e2sg/altera_libraries/altera_emif_cal_slave_nf_191/compile_ip.tcl
@@ -34,5 +34,13 @@ vmap  altera_emif_cal_slave_nf_191        ./work/
 set IP_DIR   "$env(RADIOHDL_BUILD_DIR)/$env(BUILDSET)/qsys-generate/ip_arria10_e2sg_ddr4_8g_1600/sim"
   vcom      "$IP_DIR/../altera_emif_cal_slave_nf_191/sim/ip_arria10_e2sg_ddr4_8g_1600_altera_emif_cal_slave_nf_191_rmzieji.vhd"          -work altera_emif_cal_slave_nf_191
 
+#ddr4_16g_1600_64b
+set IP_DIR   "$env(RADIOHDL_BUILD_DIR)/$env(BUILDSET)/qsys-generate/ip_arria10_e2sg_ddr4_16g_1600_64b/sim"
+  vcom      "$IP_DIR/../altera_emif_cal_slave_nf_191/sim/ip_arria10_e2sg_ddr4_16g_1600_64b_altera_emif_cal_slave_nf_191_rmzieji.vhd"          -work altera_emif_cal_slave_nf_191
+
+# ddr4_16g_1600_72b
+set IP_DIR   "$env(RADIOHDL_BUILD_DIR)/$env(BUILDSET)/qsys-generate/ip_arria10_e2sg_ddr4_16g_1600_72b/sim"
+  vcom      "$IP_DIR/../altera_emif_cal_slave_nf_191/sim/ip_arria10_e2sg_ddr4_16g_1600_72b_altera_emif_cal_slave_nf_191_rmzieji.vhd"          -work altera_emif_cal_slave_nf_191
+