diff --git a/applications/ta2/bsp/hardware/ta2_unb2b_bsp/board.qsys b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/board.qsys
index fe8629ef049aabaffc0af9d2113a6d663d629449..fc981d16a0713e7e2fd5488ea841ec9a54c0cfa3 100644
--- a/applications/ta2/bsp/hardware/ta2_unb2b_bsp/board.qsys
+++ b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/board.qsys
@@ -46,7 +46,7 @@
    {
       datum _sortIndex
       {
-         value = "25";
+         value = "24";
          type = "int";
       }
    }
@@ -86,7 +86,7 @@
    {
       datum baseAddress
       {
-         value = "968";
+         value = "952";
          type = "String";
       }
    }
@@ -102,7 +102,7 @@
    {
       datum _sortIndex
       {
-         value = "28";
+         value = "27";
          type = "int";
       }
    }
@@ -110,7 +110,7 @@
    {
       datum _sortIndex
       {
-         value = "24";
+         value = "23";
          type = "int";
       }
    }
@@ -118,7 +118,7 @@
    {
       datum _sortIndex
       {
-         value = "22";
+         value = "21";
          type = "int";
       }
    }
@@ -134,7 +134,7 @@
    {
       datum _sortIndex
       {
-         value = "26";
+         value = "25";
          type = "int";
       }
    }
@@ -142,7 +142,7 @@
    {
       datum _sortIndex
       {
-         value = "23";
+         value = "22";
          type = "int";
       }
    }
@@ -158,7 +158,7 @@
    {
       datum _sortIndex
       {
-         value = "27";
+         value = "26";
          type = "int";
       }
    }
@@ -208,7 +208,7 @@
    {
       datum baseAddress
       {
-         value = "960";
+         value = "944";
          type = "String";
       }
    }
@@ -266,7 +266,7 @@
    {
       datum baseAddress
       {
-         value = "952";
+         value = "936";
          type = "String";
       }
    }
@@ -287,7 +287,7 @@
    {
       datum baseAddress
       {
-         value = "944";
+         value = "928";
          type = "String";
       }
    }
@@ -366,23 +366,7 @@
    {
       datum baseAddress
       {
-         value = "936";
-         type = "String";
-      }
-   }
-   element reg_mmdp_ctrl_1
-   {
-      datum _sortIndex
-      {
-         value = "29";
-         type = "int";
-      }
-   }
-   element reg_mmdp_ctrl_1.mem
-   {
-      datum baseAddress
-      {
-         value = "912";
+         value = "920";
          type = "String";
       }
    }
@@ -403,56 +387,56 @@
    {
       datum baseAddress
       {
-         value = "928";
+         value = "912";
          type = "String";
       }
    }
-   element reg_mmdp_data_1
+   element reg_remu
    {
       datum _sortIndex
       {
-         value = "30";
+         value = "14";
          type = "int";
       }
+      datum sopceditor_expanded
+      {
+         value = "0";
+         type = "boolean";
+      }
    }
-   element reg_mmdp_data_1.mem
+   element reg_remu.mem
    {
       datum baseAddress
       {
-         value = "920";
+         value = "864";
          type = "String";
       }
    }
-   element reg_remu
+   element reg_ta2_unb2b_jesd204b
    {
       datum _sortIndex
       {
-         value = "14";
+         value = "28";
          type = "int";
       }
-      datum sopceditor_expanded
-      {
-         value = "0";
-         type = "boolean";
-      }
    }
-   element reg_remu.mem
+   element reg_ta2_unb2b_jesd204b.mem
    {
       datum baseAddress
       {
-         value = "864";
+         value = "13312";
          type = "String";
       }
    }
-   element reg_ta2_unb2b_jesd204b
+   element reg_ta2_unb2b_mm_io
    {
       datum _sortIndex
       {
-         value = "21";
+         value = "29";
          type = "int";
       }
    }
-   element reg_ta2_unb2b_jesd204b.mem
+   element reg_ta2_unb2b_mm_io.mem
    {
       datum baseAddress
       {
@@ -1070,41 +1054,6 @@
    internal="reg_fpga_voltage_sens.writedata"
    type="conduit"
    dir="end" />
- <interface
-   name="reg_mmdp_ctrl_1_address"
-   internal="reg_mmdp_ctrl_1.address"
-   type="conduit"
-   dir="end" />
- <interface
-   name="reg_mmdp_ctrl_1_clk"
-   internal="reg_mmdp_ctrl_1.clk"
-   type="conduit"
-   dir="end" />
- <interface
-   name="reg_mmdp_ctrl_1_read"
-   internal="reg_mmdp_ctrl_1.read"
-   type="conduit"
-   dir="end" />
- <interface
-   name="reg_mmdp_ctrl_1_readdata"
-   internal="reg_mmdp_ctrl_1.readdata"
-   type="conduit"
-   dir="end" />
- <interface
-   name="reg_mmdp_ctrl_1_reset"
-   internal="reg_mmdp_ctrl_1.reset"
-   type="conduit"
-   dir="end" />
- <interface
-   name="reg_mmdp_ctrl_1_write"
-   internal="reg_mmdp_ctrl_1.write"
-   type="conduit"
-   dir="end" />
- <interface
-   name="reg_mmdp_ctrl_1_writedata"
-   internal="reg_mmdp_ctrl_1.writedata"
-   type="conduit"
-   dir="end" />
  <interface
    name="reg_mmdp_ctrl_address"
    internal="reg_mmdp_ctrl.address"
@@ -1140,41 +1089,6 @@
    internal="reg_mmdp_ctrl.writedata"
    type="conduit"
    dir="end" />
- <interface
-   name="reg_mmdp_data_1_address"
-   internal="reg_mmdp_data_1.address"
-   type="conduit"
-   dir="end" />
- <interface
-   name="reg_mmdp_data_1_clk"
-   internal="reg_mmdp_data_1.clk"
-   type="conduit"
-   dir="end" />
- <interface
-   name="reg_mmdp_data_1_read"
-   internal="reg_mmdp_data_1.read"
-   type="conduit"
-   dir="end" />
- <interface
-   name="reg_mmdp_data_1_readdata"
-   internal="reg_mmdp_data_1.readdata"
-   type="conduit"
-   dir="end" />
- <interface
-   name="reg_mmdp_data_1_reset"
-   internal="reg_mmdp_data_1.reset"
-   type="conduit"
-   dir="end" />
- <interface
-   name="reg_mmdp_data_1_write"
-   internal="reg_mmdp_data_1.write"
-   type="conduit"
-   dir="end" />
- <interface
-   name="reg_mmdp_data_1_writedata"
-   internal="reg_mmdp_data_1.writedata"
-   type="conduit"
-   dir="end" />
  <interface
    name="reg_mmdp_data_address"
    internal="reg_mmdp_data.address"
@@ -1281,6 +1195,46 @@
    internal="reg_ta2_unb2b_jesd204b.writedata"
    type="conduit"
    dir="end" />
+ <interface
+   name="reg_ta2_unb2b_mm_io_address"
+   internal="reg_ta2_unb2b_mm_io.address"
+   type="conduit"
+   dir="end" />
+ <interface
+   name="reg_ta2_unb2b_mm_io_clk"
+   internal="reg_ta2_unb2b_mm_io.clk"
+   type="conduit"
+   dir="end" />
+ <interface
+   name="reg_ta2_unb2b_mm_io_read"
+   internal="reg_ta2_unb2b_mm_io.read"
+   type="conduit"
+   dir="end" />
+ <interface
+   name="reg_ta2_unb2b_mm_io_readdata"
+   internal="reg_ta2_unb2b_mm_io.readdata"
+   type="conduit"
+   dir="end" />
+ <interface
+   name="reg_ta2_unb2b_mm_io_reset"
+   internal="reg_ta2_unb2b_mm_io.reset"
+   type="conduit"
+   dir="end" />
+ <interface
+   name="reg_ta2_unb2b_mm_io_waitrequest"
+   internal="reg_ta2_unb2b_mm_io.waitrequest"
+   type="conduit"
+   dir="end" />
+ <interface
+   name="reg_ta2_unb2b_mm_io_write"
+   internal="reg_ta2_unb2b_mm_io.write"
+   type="conduit"
+   dir="end" />
+ <interface
+   name="reg_ta2_unb2b_mm_io_writedata"
+   internal="reg_ta2_unb2b_mm_io.writedata"
+   type="conduit"
+   dir="end" />
  <interface
    name="reg_unb_pmbus_address"
    internal="reg_unb_pmbus.address"
@@ -6801,7 +6755,7 @@
                     <consumedSystemInfos>
                         <entry>
                             <key>ADDRESS_MAP</key>
-                            <value>&lt;address-map&gt;&lt;slave name='pio_system_info.mem' start='0x0' end='0x80' datawidth='32' /&gt;&lt;slave name='avs_eth_0.mms_reg' start='0x80' end='0xC0' datawidth='32' /&gt;&lt;slave name='reg_fpga_voltage_sens.mem' start='0xC0' end='0x100' datawidth='32' /&gt;&lt;slave name='reg_unb_pmbus.mem' start='0x100' end='0x200' datawidth='32' /&gt;&lt;slave name='reg_unb_sens.mem' start='0x200' end='0x300' datawidth='32' /&gt;&lt;slave name='timer_0.s1' start='0x300' end='0x320' datawidth='16' /&gt;&lt;slave name='reg_fpga_temp_sens.mem' start='0x320' end='0x340' datawidth='32' /&gt;&lt;slave name='reg_epcs.mem' start='0x340' end='0x360' datawidth='32' /&gt;&lt;slave name='reg_remu.mem' start='0x360' end='0x380' datawidth='32' /&gt;&lt;slave name='pio_wdi.s1' start='0x380' end='0x390' datawidth='32' /&gt;&lt;slave name='reg_mmdp_ctrl_1.mem' start='0x390' end='0x398' datawidth='32' /&gt;&lt;slave name='reg_mmdp_data_1.mem' start='0x398' end='0x3A0' datawidth='32' /&gt;&lt;slave name='reg_mmdp_data.mem' start='0x3A0' end='0x3A8' datawidth='32' /&gt;&lt;slave name='reg_mmdp_ctrl.mem' start='0x3A8' end='0x3B0' datawidth='32' /&gt;&lt;slave name='reg_dpmm_data.mem' start='0x3B0' end='0x3B8' datawidth='32' /&gt;&lt;slave name='reg_dpmm_ctrl.mem' start='0x3B8' end='0x3C0' datawidth='32' /&gt;&lt;slave name='pio_pps.mem' start='0x3C0' end='0x3C8' datawidth='32' /&gt;&lt;slave name='jtag_uart_0.avalon_jtag_slave' start='0x3C8' end='0x3D0' datawidth='32' /&gt;&lt;slave name='reg_ta2_unb2b_jesd204b.mem' start='0x400' end='0x800' datawidth='32' /&gt;&lt;slave name='rom_system_info.mem' start='0x1000' end='0x2000' datawidth='32' /&gt;&lt;slave name='avs_eth_0.mms_tse' start='0x2000' end='0x3000' datawidth='32' /&gt;&lt;slave name='reg_wdi.mem' start='0x3000' end='0x3008' datawidth='32' /&gt;&lt;slave name='cpu_0.debug_mem_slave' start='0x3800' end='0x4000' datawidth='32' /&gt;&lt;slave name='kernel_interface.ctrl' start='0x4000' end='0x8000' datawidth='32' /&gt;&lt;slave name='avs_eth_0.mms_ram' start='0x8000' end='0x9000' datawidth='32' /&gt;&lt;slave name='kernel_clk_gen.ctrl' start='0x9000' end='0xA000' datawidth='32' /&gt;&lt;slave name='onchip_memory2_0.s1' start='0x20000' end='0x40000' datawidth='32' /&gt;&lt;/address-map&gt;</value>
+                            <value>&lt;address-map&gt;&lt;slave name='pio_system_info.mem' start='0x0' end='0x80' datawidth='32' /&gt;&lt;slave name='avs_eth_0.mms_reg' start='0x80' end='0xC0' datawidth='32' /&gt;&lt;slave name='reg_fpga_voltage_sens.mem' start='0xC0' end='0x100' datawidth='32' /&gt;&lt;slave name='reg_unb_pmbus.mem' start='0x100' end='0x200' datawidth='32' /&gt;&lt;slave name='reg_unb_sens.mem' start='0x200' end='0x300' datawidth='32' /&gt;&lt;slave name='timer_0.s1' start='0x300' end='0x320' datawidth='16' /&gt;&lt;slave name='reg_fpga_temp_sens.mem' start='0x320' end='0x340' datawidth='32' /&gt;&lt;slave name='reg_epcs.mem' start='0x340' end='0x360' datawidth='32' /&gt;&lt;slave name='reg_remu.mem' start='0x360' end='0x380' datawidth='32' /&gt;&lt;slave name='pio_wdi.s1' start='0x380' end='0x390' datawidth='32' /&gt;&lt;slave name='reg_mmdp_data.mem' start='0x390' end='0x398' datawidth='32' /&gt;&lt;slave name='reg_mmdp_ctrl.mem' start='0x398' end='0x3A0' datawidth='32' /&gt;&lt;slave name='reg_dpmm_data.mem' start='0x3A0' end='0x3A8' datawidth='32' /&gt;&lt;slave name='reg_dpmm_ctrl.mem' start='0x3A8' end='0x3B0' datawidth='32' /&gt;&lt;slave name='pio_pps.mem' start='0x3B0' end='0x3B8' datawidth='32' /&gt;&lt;slave name='jtag_uart_0.avalon_jtag_slave' start='0x3B8' end='0x3C0' datawidth='32' /&gt;&lt;slave name='reg_ta2_unb2b_mm_io.mem' start='0x400' end='0x800' datawidth='32' /&gt;&lt;slave name='rom_system_info.mem' start='0x1000' end='0x2000' datawidth='32' /&gt;&lt;slave name='avs_eth_0.mms_tse' start='0x2000' end='0x3000' datawidth='32' /&gt;&lt;slave name='reg_wdi.mem' start='0x3000' end='0x3008' datawidth='32' /&gt;&lt;slave name='reg_ta2_unb2b_jesd204b.mem' start='0x3400' end='0x3800' datawidth='32' /&gt;&lt;slave name='cpu_0.debug_mem_slave' start='0x3800' end='0x4000' datawidth='32' /&gt;&lt;slave name='kernel_interface.ctrl' start='0x4000' end='0x8000' datawidth='32' /&gt;&lt;slave name='avs_eth_0.mms_ram' start='0x8000' end='0x9000' datawidth='32' /&gt;&lt;slave name='kernel_clk_gen.ctrl' start='0x9000' end='0xA000' datawidth='32' /&gt;&lt;slave name='onchip_memory2_0.s1' start='0x20000' end='0x40000' datawidth='32' /&gt;&lt;/address-map&gt;</value>
                         </entry>
                         <entry>
                             <key>ADDRESS_WIDTH</key>
@@ -25536,7 +25490,7 @@
   <parameter name="svInterfaceDefinition" value="" />
  </module>
  <module
-   name="reg_mmdp_ctrl_1"
+   name="reg_mmdp_data"
    kind="altera_generic_component"
    version="1.0"
    enabled="1">
@@ -26124,17 +26078,17 @@
   <parameter name="defaultBoundary"><![CDATA[<boundaryDefinition>
     <interfaces>
         <interface>
-            <name>system</name>
-            <type>clock</type>
+            <name>address</name>
+            <type>conduit</type>
             <isStart>false</isStart>
             <ports>
                 <port>
-                    <name>csi_system_clk</name>
-                    <role>clk</role>
-                    <direction>Input</direction>
+                    <name>coe_address_export</name>
+                    <role>export</role>
+                    <direction>Output</direction>
                     <width>1</width>
                     <lowerBound>0</lowerBound>
-                    <vhdlType>STD_LOGIC</vhdlType>
+                    <vhdlType>STD_LOGIC_VECTOR</vhdlType>
                 </port>
             </ports>
             <assignments>
@@ -26143,28 +26097,27 @@
             <parameters>
                 <parameterValueMap>
                     <entry>
-                        <key>clockRate</key>
-                        <value>0</value>
+                        <key>associatedClock</key>
                     </entry>
                     <entry>
-                        <key>externallyDriven</key>
-                        <value>false</value>
+                        <key>associatedReset</key>
                     </entry>
                     <entry>
-                        <key>ptfSchematicName</key>
+                        <key>prSafe</key>
+                        <value>false</value>
                     </entry>
                 </parameterValueMap>
             </parameters>
         </interface>
         <interface>
-            <name>system_reset</name>
-            <type>reset</type>
+            <name>clk</name>
+            <type>conduit</type>
             <isStart>false</isStart>
             <ports>
                 <port>
-                    <name>csi_system_reset</name>
-                    <role>reset</role>
-                    <direction>Input</direction>
+                    <name>coe_clk_export</name>
+                    <role>export</role>
+                    <direction>Output</direction>
                     <width>1</width>
                     <lowerBound>0</lowerBound>
                     <vhdlType>STD_LOGIC</vhdlType>
@@ -26177,11 +26130,13 @@
                 <parameterValueMap>
                     <entry>
                         <key>associatedClock</key>
-                        <value>system</value>
                     </entry>
                     <entry>
-                        <key>synchronousEdges</key>
-                        <value>DEASSERT</value>
+                        <key>associatedReset</key>
+                    </entry>
+                    <entry>
+                        <key>prSafe</key>
+                        <value>false</value>
                     </entry>
                 </parameterValueMap>
             </parameters>
@@ -26234,17 +26189,21 @@
             </ports>
             <assignments>
                 <assignmentValueMap>
+                    <entry>
+                        <key>embeddedsw.configuration.isFlash</key>
+                        <value>0</value>
+                    </entry>
                     <entry>
                         <key>embeddedsw.configuration.isMemoryDevice</key>
-                        <value>false</value>
+                        <value>0</value>
                     </entry>
                     <entry>
                         <key>embeddedsw.configuration.isNonVolatileStorage</key>
-                        <value>false</value>
+                        <value>0</value>
                     </entry>
                     <entry>
                         <key>embeddedsw.configuration.isPrintableDevice</key>
-                        <value>false</value>
+                        <value>0</value>
                     </entry>
                 </assignmentValueMap>
             </assignments>
@@ -26284,6 +26243,7 @@
                     </entry>
                     <entry>
                         <key>bridgedAddressOffset</key>
+                        <value>0</value>
                     </entry>
                     <entry>
                         <key>bridgesToMaster</key>
@@ -26416,44 +26376,12 @@
             </parameters>
         </interface>
         <interface>
-            <name>reset</name>
-            <type>conduit</type>
-            <isStart>false</isStart>
-            <ports>
-                <port>
-                    <name>coe_reset_export</name>
-                    <role>export</role>
-                    <direction>Output</direction>
-                    <width>1</width>
-                    <lowerBound>0</lowerBound>
-                    <vhdlType>STD_LOGIC</vhdlType>
-                </port>
-            </ports>
-            <assignments>
-                <assignmentValueMap/>
-            </assignments>
-            <parameters>
-                <parameterValueMap>
-                    <entry>
-                        <key>associatedClock</key>
-                    </entry>
-                    <entry>
-                        <key>associatedReset</key>
-                    </entry>
-                    <entry>
-                        <key>prSafe</key>
-                        <value>false</value>
-                    </entry>
-                </parameterValueMap>
-            </parameters>
-        </interface>
-        <interface>
-            <name>clk</name>
+            <name>read</name>
             <type>conduit</type>
             <isStart>false</isStart>
             <ports>
                 <port>
-                    <name>coe_clk_export</name>
+                    <name>coe_read_export</name>
                     <role>export</role>
                     <direction>Output</direction>
                     <width>1</width>
@@ -26480,15 +26408,15 @@
             </parameters>
         </interface>
         <interface>
-            <name>address</name>
+            <name>readdata</name>
             <type>conduit</type>
             <isStart>false</isStart>
             <ports>
                 <port>
-                    <name>coe_address_export</name>
+                    <name>coe_readdata_export</name>
                     <role>export</role>
-                    <direction>Output</direction>
-                    <width>1</width>
+                    <direction>Input</direction>
+                    <width>32</width>
                     <lowerBound>0</lowerBound>
                     <vhdlType>STD_LOGIC_VECTOR</vhdlType>
                 </port>
@@ -26512,49 +26440,17 @@
             </parameters>
         </interface>
         <interface>
-            <name>write</name>
-            <type>conduit</type>
-            <isStart>false</isStart>
-            <ports>
-                <port>
-                    <name>coe_write_export</name>
-                    <role>export</role>
-                    <direction>Output</direction>
-                    <width>1</width>
-                    <lowerBound>0</lowerBound>
-                    <vhdlType>STD_LOGIC</vhdlType>
-                </port>
-            </ports>
-            <assignments>
-                <assignmentValueMap/>
-            </assignments>
-            <parameters>
-                <parameterValueMap>
-                    <entry>
-                        <key>associatedClock</key>
-                    </entry>
-                    <entry>
-                        <key>associatedReset</key>
-                    </entry>
-                    <entry>
-                        <key>prSafe</key>
-                        <value>false</value>
-                    </entry>
-                </parameterValueMap>
-            </parameters>
-        </interface>
-        <interface>
-            <name>writedata</name>
+            <name>reset</name>
             <type>conduit</type>
             <isStart>false</isStart>
             <ports>
                 <port>
-                    <name>coe_writedata_export</name>
+                    <name>coe_reset_export</name>
                     <role>export</role>
                     <direction>Output</direction>
-                    <width>32</width>
+                    <width>1</width>
                     <lowerBound>0</lowerBound>
-                    <vhdlType>STD_LOGIC_VECTOR</vhdlType>
+                    <vhdlType>STD_LOGIC</vhdlType>
                 </port>
             </ports>
             <assignments>
@@ -26576,12 +26472,75 @@
             </parameters>
         </interface>
         <interface>
-            <name>read</name>
+            <name>system</name>
+            <type>clock</type>
+            <isStart>false</isStart>
+            <ports>
+                <port>
+                    <name>csi_system_clk</name>
+                    <role>clk</role>
+                    <direction>Input</direction>
+                    <width>1</width>
+                    <lowerBound>0</lowerBound>
+                    <vhdlType>STD_LOGIC</vhdlType>
+                </port>
+            </ports>
+            <assignments>
+                <assignmentValueMap/>
+            </assignments>
+            <parameters>
+                <parameterValueMap>
+                    <entry>
+                        <key>clockRate</key>
+                        <value>0</value>
+                    </entry>
+                    <entry>
+                        <key>externallyDriven</key>
+                        <value>false</value>
+                    </entry>
+                    <entry>
+                        <key>ptfSchematicName</key>
+                    </entry>
+                </parameterValueMap>
+            </parameters>
+        </interface>
+        <interface>
+            <name>system_reset</name>
+            <type>reset</type>
+            <isStart>false</isStart>
+            <ports>
+                <port>
+                    <name>csi_system_reset</name>
+                    <role>reset</role>
+                    <direction>Input</direction>
+                    <width>1</width>
+                    <lowerBound>0</lowerBound>
+                    <vhdlType>STD_LOGIC</vhdlType>
+                </port>
+            </ports>
+            <assignments>
+                <assignmentValueMap/>
+            </assignments>
+            <parameters>
+                <parameterValueMap>
+                    <entry>
+                        <key>associatedClock</key>
+                        <value>system</value>
+                    </entry>
+                    <entry>
+                        <key>synchronousEdges</key>
+                        <value>DEASSERT</value>
+                    </entry>
+                </parameterValueMap>
+            </parameters>
+        </interface>
+        <interface>
+            <name>write</name>
             <type>conduit</type>
             <isStart>false</isStart>
             <ports>
                 <port>
-                    <name>coe_read_export</name>
+                    <name>coe_write_export</name>
                     <role>export</role>
                     <direction>Output</direction>
                     <width>1</width>
@@ -26608,14 +26567,14 @@
             </parameters>
         </interface>
         <interface>
-            <name>readdata</name>
+            <name>writedata</name>
             <type>conduit</type>
             <isStart>false</isStart>
             <ports>
                 <port>
-                    <name>coe_readdata_export</name>
+                    <name>coe_writedata_export</name>
                     <role>export</role>
-                    <direction>Input</direction>
+                    <direction>Output</direction>
                     <width>32</width>
                     <lowerBound>0</lowerBound>
                     <vhdlType>STD_LOGIC_VECTOR</vhdlType>
@@ -26642,37 +26601,37 @@
     </interfaces>
 </boundaryDefinition>]]></parameter>
   <parameter name="generationInfoDefinition"><![CDATA[<generationInfoDefinition>
-    <hdlLibraryName>reg_mmdp_ctrl_1</hdlLibraryName>
+    <hdlLibraryName>board_reg_mmdp_data</hdlLibraryName>
     <fileSets>
         <fileSet>
-            <fileSetName>reg_mmdp_ctrl_1</fileSetName>
-            <fileSetFixedName>reg_mmdp_ctrl_1</fileSetFixedName>
+            <fileSetName>board_reg_mmdp_data</fileSetName>
+            <fileSetFixedName>board_reg_mmdp_data</fileSetFixedName>
             <fileSetKind>QUARTUS_SYNTH</fileSetKind>
             <fileSetFiles/>
         </fileSet>
         <fileSet>
-            <fileSetName>reg_mmdp_ctrl_1</fileSetName>
-            <fileSetFixedName>reg_mmdp_ctrl_1</fileSetFixedName>
+            <fileSetName>board_reg_mmdp_data</fileSetName>
+            <fileSetFixedName>board_reg_mmdp_data</fileSetFixedName>
             <fileSetKind>SIM_VERILOG</fileSetKind>
             <fileSetFiles/>
         </fileSet>
         <fileSet>
-            <fileSetName>reg_mmdp_ctrl_1</fileSetName>
-            <fileSetFixedName>reg_mmdp_ctrl_1</fileSetFixedName>
+            <fileSetName>board_reg_mmdp_data</fileSetName>
+            <fileSetFixedName>board_reg_mmdp_data</fileSetFixedName>
             <fileSetKind>SIM_VHDL</fileSetKind>
             <fileSetFiles/>
         </fileSet>
     </fileSets>
 </generationInfoDefinition>]]></parameter>
   <parameter name="hlsFile" value="" />
-  <parameter name="logicalView">ip/board/reg_mmdp_ctrl_1.ip</parameter>
+  <parameter name="logicalView">ip/board/board_reg_mmdp_data.ip</parameter>
   <parameter name="moduleAssignmentDefinition"><![CDATA[<assignmentDefinition>
     <assignmentValueMap/>
 </assignmentDefinition>]]></parameter>
   <parameter name="svInterfaceDefinition" value="" />
  </module>
  <module
-   name="reg_mmdp_data"
+   name="reg_remu"
    kind="altera_generic_component"
    version="1.0"
    enabled="1">
@@ -26688,7 +26647,7 @@
                         <name>coe_address_export</name>
                         <role>export</role>
                         <direction>Output</direction>
-                        <width>1</width>
+                        <width>3</width>
                         <lowerBound>0</lowerBound>
                         <vhdlType>STD_LOGIC_VECTOR</vhdlType>
                     </port>
@@ -26752,7 +26711,7 @@
                         <name>avs_mem_address</name>
                         <role>address</role>
                         <direction>Input</direction>
-                        <width>1</width>
+                        <width>3</width>
                         <lowerBound>0</lowerBound>
                         <vhdlType>STD_LOGIC_VECTOR</vhdlType>
                     </port>
@@ -26821,7 +26780,7 @@
                         </entry>
                         <entry>
                             <key>addressSpan</key>
-                            <value>8</value>
+                            <value>32</value>
                         </entry>
                         <entry>
                             <key>addressUnits</key>
@@ -27227,11 +27186,11 @@
                     <suppliedSystemInfos>
                         <entry>
                             <key>ADDRESS_MAP</key>
-                            <value>&lt;address-map&gt;&lt;slave name='mem' start='0x0' end='0x8' datawidth='32' /&gt;&lt;/address-map&gt;</value>
+                            <value>&lt;address-map&gt;&lt;slave name='mem' start='0x0' end='0x20' datawidth='32' /&gt;&lt;/address-map&gt;</value>
                         </entry>
                         <entry>
                             <key>ADDRESS_WIDTH</key>
-                            <value>3</value>
+                            <value>5</value>
                         </entry>
                         <entry>
                             <key>MAX_SLAVE_DATA_WIDTH</key>
@@ -27268,7 +27227,7 @@
                     <name>coe_address_export</name>
                     <role>export</role>
                     <direction>Output</direction>
-                    <width>1</width>
+                    <width>3</width>
                     <lowerBound>0</lowerBound>
                     <vhdlType>STD_LOGIC_VECTOR</vhdlType>
                 </port>
@@ -27332,7 +27291,7 @@
                     <name>avs_mem_address</name>
                     <role>address</role>
                     <direction>Input</direction>
-                    <width>1</width>
+                    <width>3</width>
                     <lowerBound>0</lowerBound>
                     <vhdlType>STD_LOGIC_VECTOR</vhdlType>
                 </port>
@@ -27401,7 +27360,7 @@
                     </entry>
                     <entry>
                         <key>addressSpan</key>
-                        <value>8</value>
+                        <value>32</value>
                     </entry>
                     <entry>
                         <key>addressUnits</key>
@@ -27783,37 +27742,37 @@
     </interfaces>
 </boundaryDefinition>]]></parameter>
   <parameter name="generationInfoDefinition"><![CDATA[<generationInfoDefinition>
-    <hdlLibraryName>board_reg_mmdp_data</hdlLibraryName>
+    <hdlLibraryName>board_reg_remu</hdlLibraryName>
     <fileSets>
         <fileSet>
-            <fileSetName>board_reg_mmdp_data</fileSetName>
-            <fileSetFixedName>board_reg_mmdp_data</fileSetFixedName>
+            <fileSetName>board_reg_remu</fileSetName>
+            <fileSetFixedName>board_reg_remu</fileSetFixedName>
             <fileSetKind>QUARTUS_SYNTH</fileSetKind>
             <fileSetFiles/>
         </fileSet>
         <fileSet>
-            <fileSetName>board_reg_mmdp_data</fileSetName>
-            <fileSetFixedName>board_reg_mmdp_data</fileSetFixedName>
+            <fileSetName>board_reg_remu</fileSetName>
+            <fileSetFixedName>board_reg_remu</fileSetFixedName>
             <fileSetKind>SIM_VERILOG</fileSetKind>
             <fileSetFiles/>
         </fileSet>
         <fileSet>
-            <fileSetName>board_reg_mmdp_data</fileSetName>
-            <fileSetFixedName>board_reg_mmdp_data</fileSetFixedName>
+            <fileSetName>board_reg_remu</fileSetName>
+            <fileSetFixedName>board_reg_remu</fileSetFixedName>
             <fileSetKind>SIM_VHDL</fileSetKind>
             <fileSetFiles/>
         </fileSet>
     </fileSets>
 </generationInfoDefinition>]]></parameter>
   <parameter name="hlsFile" value="" />
-  <parameter name="logicalView">ip/board/board_reg_mmdp_data.ip</parameter>
+  <parameter name="logicalView">ip/board/board_reg_remu.ip</parameter>
   <parameter name="moduleAssignmentDefinition"><![CDATA[<assignmentDefinition>
     <assignmentValueMap/>
 </assignmentDefinition>]]></parameter>
   <parameter name="svInterfaceDefinition" value="" />
  </module>
  <module
-   name="reg_mmdp_data_1"
+   name="reg_ta2_unb2b_jesd204b"
    kind="altera_generic_component"
    version="1.0"
    enabled="1">
@@ -27829,7 +27788,7 @@
                         <name>coe_address_export</name>
                         <role>export</role>
                         <direction>Output</direction>
-                        <width>1</width>
+                        <width>8</width>
                         <lowerBound>0</lowerBound>
                         <vhdlType>STD_LOGIC_VECTOR</vhdlType>
                     </port>
@@ -27893,7 +27852,7 @@
                         <name>avs_mem_address</name>
                         <role>address</role>
                         <direction>Input</direction>
-                        <width>1</width>
+                        <width>8</width>
                         <lowerBound>0</lowerBound>
                         <vhdlType>STD_LOGIC_VECTOR</vhdlType>
                     </port>
@@ -27929,6 +27888,14 @@
                         <lowerBound>0</lowerBound>
                         <vhdlType>STD_LOGIC_VECTOR</vhdlType>
                     </port>
+                    <port>
+                        <name>avs_mem_waitrequest</name>
+                        <role>waitrequest</role>
+                        <direction>Output</direction>
+                        <width>1</width>
+                        <lowerBound>0</lowerBound>
+                        <vhdlType>STD_LOGIC</vhdlType>
+                    </port>
                 </ports>
                 <assignments>
                     <assignmentValueMap>
@@ -27962,7 +27929,7 @@
                         </entry>
                         <entry>
                             <key>addressSpan</key>
-                            <value>8</value>
+                            <value>1024</value>
                         </entry>
                         <entry>
                             <key>addressUnits</key>
@@ -28065,15 +28032,15 @@
                         </entry>
                         <entry>
                             <key>readLatency</key>
-                            <value>1</value>
+                            <value>0</value>
                         </entry>
                         <entry>
                             <key>readWaitStates</key>
-                            <value>0</value>
+                            <value>1</value>
                         </entry>
                         <entry>
                             <key>readWaitTime</key>
-                            <value>0</value>
+                            <value>1</value>
                         </entry>
                         <entry>
                             <key>registerIncomingSignals</key>
@@ -28277,6 +28244,38 @@
                     </parameterValueMap>
                 </parameters>
             </interface>
+            <interface>
+                <name>waitrequest</name>
+                <type>conduit</type>
+                <isStart>false</isStart>
+                <ports>
+                    <port>
+                        <name>coe_waitrequest_export</name>
+                        <role>export</role>
+                        <direction>Input</direction>
+                        <width>1</width>
+                        <lowerBound>0</lowerBound>
+                        <vhdlType>STD_LOGIC</vhdlType>
+                    </port>
+                </ports>
+                <assignments>
+                    <assignmentValueMap/>
+                </assignments>
+                <parameters>
+                    <parameterValueMap>
+                        <entry>
+                            <key>associatedClock</key>
+                        </entry>
+                        <entry>
+                            <key>associatedReset</key>
+                        </entry>
+                        <entry>
+                            <key>prSafe</key>
+                            <value>false</value>
+                        </entry>
+                    </parameterValueMap>
+                </parameters>
+            </interface>
             <interface>
                 <name>write</name>
                 <type>conduit</type>
@@ -28344,9 +28343,9 @@
         </interfaces>
     </boundary>
     <originalModuleInfo>
-        <className>avs_common_mm</className>
+        <className>avs_common_mm_readlatency0</className>
         <version>1.0</version>
-        <displayName>avs_common_mm</displayName>
+        <displayName>avs_common_mm_readlatency0</displayName>
     </originalModuleInfo>
     <systemInfoParameterDescriptors>
         <descriptors>
@@ -28368,11 +28367,11 @@
                     <suppliedSystemInfos>
                         <entry>
                             <key>ADDRESS_MAP</key>
-                            <value>&lt;address-map&gt;&lt;slave name='mem' start='0x0' end='0x8' datawidth='32' /&gt;&lt;/address-map&gt;</value>
+                            <value>&lt;address-map&gt;&lt;slave name='mem' start='0x0' end='0x400' datawidth='32' /&gt;&lt;/address-map&gt;</value>
                         </entry>
                         <entry>
                             <key>ADDRESS_WIDTH</key>
-                            <value>3</value>
+                            <value>10</value>
                         </entry>
                         <entry>
                             <key>MAX_SLAVE_DATA_WIDTH</key>
@@ -28401,17 +28400,17 @@
   <parameter name="defaultBoundary"><![CDATA[<boundaryDefinition>
     <interfaces>
         <interface>
-            <name>address</name>
-            <type>conduit</type>
+            <name>system</name>
+            <type>clock</type>
             <isStart>false</isStart>
             <ports>
                 <port>
-                    <name>coe_address_export</name>
-                    <role>export</role>
-                    <direction>Output</direction>
+                    <name>csi_system_clk</name>
+                    <role>clk</role>
+                    <direction>Input</direction>
                     <width>1</width>
                     <lowerBound>0</lowerBound>
-                    <vhdlType>STD_LOGIC_VECTOR</vhdlType>
+                    <vhdlType>STD_LOGIC</vhdlType>
                 </port>
             </ports>
             <assignments>
@@ -28420,27 +28419,28 @@
             <parameters>
                 <parameterValueMap>
                     <entry>
-                        <key>associatedClock</key>
+                        <key>clockRate</key>
+                        <value>0</value>
                     </entry>
                     <entry>
-                        <key>associatedReset</key>
+                        <key>externallyDriven</key>
+                        <value>false</value>
                     </entry>
                     <entry>
-                        <key>prSafe</key>
-                        <value>false</value>
+                        <key>ptfSchematicName</key>
                     </entry>
                 </parameterValueMap>
             </parameters>
         </interface>
         <interface>
-            <name>clk</name>
-            <type>conduit</type>
+            <name>system_reset</name>
+            <type>reset</type>
             <isStart>false</isStart>
             <ports>
                 <port>
-                    <name>coe_clk_export</name>
-                    <role>export</role>
-                    <direction>Output</direction>
+                    <name>csi_system_reset</name>
+                    <role>reset</role>
+                    <direction>Input</direction>
                     <width>1</width>
                     <lowerBound>0</lowerBound>
                     <vhdlType>STD_LOGIC</vhdlType>
@@ -28453,13 +28453,11 @@
                 <parameterValueMap>
                     <entry>
                         <key>associatedClock</key>
+                        <value>system</value>
                     </entry>
                     <entry>
-                        <key>associatedReset</key>
-                    </entry>
-                    <entry>
-                        <key>prSafe</key>
-                        <value>false</value>
+                        <key>synchronousEdges</key>
+                        <value>DEASSERT</value>
                     </entry>
                 </parameterValueMap>
             </parameters>
@@ -28473,7 +28471,7 @@
                     <name>avs_mem_address</name>
                     <role>address</role>
                     <direction>Input</direction>
-                    <width>1</width>
+                    <width>8</width>
                     <lowerBound>0</lowerBound>
                     <vhdlType>STD_LOGIC_VECTOR</vhdlType>
                 </port>
@@ -28509,24 +28507,28 @@
                     <lowerBound>0</lowerBound>
                     <vhdlType>STD_LOGIC_VECTOR</vhdlType>
                 </port>
+                <port>
+                    <name>avs_mem_waitrequest</name>
+                    <role>waitrequest</role>
+                    <direction>Output</direction>
+                    <width>1</width>
+                    <lowerBound>0</lowerBound>
+                    <vhdlType>STD_LOGIC</vhdlType>
+                </port>
             </ports>
             <assignments>
                 <assignmentValueMap>
-                    <entry>
-                        <key>embeddedsw.configuration.isFlash</key>
-                        <value>0</value>
-                    </entry>
                     <entry>
                         <key>embeddedsw.configuration.isMemoryDevice</key>
-                        <value>0</value>
+                        <value>false</value>
                     </entry>
                     <entry>
                         <key>embeddedsw.configuration.isNonVolatileStorage</key>
-                        <value>0</value>
+                        <value>false</value>
                     </entry>
                     <entry>
                         <key>embeddedsw.configuration.isPrintableDevice</key>
-                        <value>0</value>
+                        <value>false</value>
                     </entry>
                 </assignmentValueMap>
             </assignments>
@@ -28542,7 +28544,7 @@
                     </entry>
                     <entry>
                         <key>addressSpan</key>
-                        <value>8</value>
+                        <value>1024</value>
                     </entry>
                     <entry>
                         <key>addressUnits</key>
@@ -28566,7 +28568,6 @@
                     </entry>
                     <entry>
                         <key>bridgedAddressOffset</key>
-                        <value>0</value>
                     </entry>
                     <entry>
                         <key>bridgesToMaster</key>
@@ -28645,15 +28646,15 @@
                     </entry>
                     <entry>
                         <key>readLatency</key>
-                        <value>1</value>
+                        <value>0</value>
                     </entry>
                     <entry>
                         <key>readWaitStates</key>
-                        <value>0</value>
+                        <value>1</value>
                     </entry>
                     <entry>
                         <key>readWaitTime</key>
-                        <value>0</value>
+                        <value>1</value>
                     </entry>
                     <entry>
                         <key>registerIncomingSignals</key>
@@ -28699,12 +28700,12 @@
             </parameters>
         </interface>
         <interface>
-            <name>read</name>
+            <name>reset</name>
             <type>conduit</type>
             <isStart>false</isStart>
             <ports>
                 <port>
-                    <name>coe_read_export</name>
+                    <name>coe_reset_export</name>
                     <role>export</role>
                     <direction>Output</direction>
                     <width>1</width>
@@ -28731,17 +28732,17 @@
             </parameters>
         </interface>
         <interface>
-            <name>readdata</name>
+            <name>clk</name>
             <type>conduit</type>
             <isStart>false</isStart>
             <ports>
                 <port>
-                    <name>coe_readdata_export</name>
+                    <name>coe_clk_export</name>
                     <role>export</role>
-                    <direction>Input</direction>
-                    <width>32</width>
+                    <direction>Output</direction>
+                    <width>1</width>
                     <lowerBound>0</lowerBound>
-                    <vhdlType>STD_LOGIC_VECTOR</vhdlType>
+                    <vhdlType>STD_LOGIC</vhdlType>
                 </port>
             </ports>
             <assignments>
@@ -28762,785 +28763,6 @@
                 </parameterValueMap>
             </parameters>
         </interface>
-        <interface>
-            <name>reset</name>
-            <type>conduit</type>
-            <isStart>false</isStart>
-            <ports>
-                <port>
-                    <name>coe_reset_export</name>
-                    <role>export</role>
-                    <direction>Output</direction>
-                    <width>1</width>
-                    <lowerBound>0</lowerBound>
-                    <vhdlType>STD_LOGIC</vhdlType>
-                </port>
-            </ports>
-            <assignments>
-                <assignmentValueMap/>
-            </assignments>
-            <parameters>
-                <parameterValueMap>
-                    <entry>
-                        <key>associatedClock</key>
-                    </entry>
-                    <entry>
-                        <key>associatedReset</key>
-                    </entry>
-                    <entry>
-                        <key>prSafe</key>
-                        <value>false</value>
-                    </entry>
-                </parameterValueMap>
-            </parameters>
-        </interface>
-        <interface>
-            <name>system</name>
-            <type>clock</type>
-            <isStart>false</isStart>
-            <ports>
-                <port>
-                    <name>csi_system_clk</name>
-                    <role>clk</role>
-                    <direction>Input</direction>
-                    <width>1</width>
-                    <lowerBound>0</lowerBound>
-                    <vhdlType>STD_LOGIC</vhdlType>
-                </port>
-            </ports>
-            <assignments>
-                <assignmentValueMap/>
-            </assignments>
-            <parameters>
-                <parameterValueMap>
-                    <entry>
-                        <key>clockRate</key>
-                        <value>0</value>
-                    </entry>
-                    <entry>
-                        <key>externallyDriven</key>
-                        <value>false</value>
-                    </entry>
-                    <entry>
-                        <key>ptfSchematicName</key>
-                    </entry>
-                </parameterValueMap>
-            </parameters>
-        </interface>
-        <interface>
-            <name>system_reset</name>
-            <type>reset</type>
-            <isStart>false</isStart>
-            <ports>
-                <port>
-                    <name>csi_system_reset</name>
-                    <role>reset</role>
-                    <direction>Input</direction>
-                    <width>1</width>
-                    <lowerBound>0</lowerBound>
-                    <vhdlType>STD_LOGIC</vhdlType>
-                </port>
-            </ports>
-            <assignments>
-                <assignmentValueMap/>
-            </assignments>
-            <parameters>
-                <parameterValueMap>
-                    <entry>
-                        <key>associatedClock</key>
-                        <value>system</value>
-                    </entry>
-                    <entry>
-                        <key>synchronousEdges</key>
-                        <value>DEASSERT</value>
-                    </entry>
-                </parameterValueMap>
-            </parameters>
-        </interface>
-        <interface>
-            <name>write</name>
-            <type>conduit</type>
-            <isStart>false</isStart>
-            <ports>
-                <port>
-                    <name>coe_write_export</name>
-                    <role>export</role>
-                    <direction>Output</direction>
-                    <width>1</width>
-                    <lowerBound>0</lowerBound>
-                    <vhdlType>STD_LOGIC</vhdlType>
-                </port>
-            </ports>
-            <assignments>
-                <assignmentValueMap/>
-            </assignments>
-            <parameters>
-                <parameterValueMap>
-                    <entry>
-                        <key>associatedClock</key>
-                    </entry>
-                    <entry>
-                        <key>associatedReset</key>
-                    </entry>
-                    <entry>
-                        <key>prSafe</key>
-                        <value>false</value>
-                    </entry>
-                </parameterValueMap>
-            </parameters>
-        </interface>
-        <interface>
-            <name>writedata</name>
-            <type>conduit</type>
-            <isStart>false</isStart>
-            <ports>
-                <port>
-                    <name>coe_writedata_export</name>
-                    <role>export</role>
-                    <direction>Output</direction>
-                    <width>32</width>
-                    <lowerBound>0</lowerBound>
-                    <vhdlType>STD_LOGIC_VECTOR</vhdlType>
-                </port>
-            </ports>
-            <assignments>
-                <assignmentValueMap/>
-            </assignments>
-            <parameters>
-                <parameterValueMap>
-                    <entry>
-                        <key>associatedClock</key>
-                    </entry>
-                    <entry>
-                        <key>associatedReset</key>
-                    </entry>
-                    <entry>
-                        <key>prSafe</key>
-                        <value>false</value>
-                    </entry>
-                </parameterValueMap>
-            </parameters>
-        </interface>
-    </interfaces>
-</boundaryDefinition>]]></parameter>
-  <parameter name="generationInfoDefinition"><![CDATA[<generationInfoDefinition>
-    <hdlLibraryName>reg_mmdp_data_1</hdlLibraryName>
-    <fileSets>
-        <fileSet>
-            <fileSetName>reg_mmdp_data_1</fileSetName>
-            <fileSetFixedName>reg_mmdp_data_1</fileSetFixedName>
-            <fileSetKind>QUARTUS_SYNTH</fileSetKind>
-            <fileSetFiles/>
-        </fileSet>
-        <fileSet>
-            <fileSetName>reg_mmdp_data_1</fileSetName>
-            <fileSetFixedName>reg_mmdp_data_1</fileSetFixedName>
-            <fileSetKind>SIM_VERILOG</fileSetKind>
-            <fileSetFiles/>
-        </fileSet>
-        <fileSet>
-            <fileSetName>reg_mmdp_data_1</fileSetName>
-            <fileSetFixedName>reg_mmdp_data_1</fileSetFixedName>
-            <fileSetKind>SIM_VHDL</fileSetKind>
-            <fileSetFiles/>
-        </fileSet>
-    </fileSets>
-</generationInfoDefinition>]]></parameter>
-  <parameter name="hlsFile" value="" />
-  <parameter name="logicalView">ip/board/reg_mmdp_data_1.ip</parameter>
-  <parameter name="moduleAssignmentDefinition"><![CDATA[<assignmentDefinition>
-    <assignmentValueMap/>
-</assignmentDefinition>]]></parameter>
-  <parameter name="svInterfaceDefinition" value="" />
- </module>
- <module
-   name="reg_remu"
-   kind="altera_generic_component"
-   version="1.0"
-   enabled="1">
-  <parameter name="componentDefinition"><![CDATA[<componentDefinition>
-    <boundary>
-        <interfaces>
-            <interface>
-                <name>address</name>
-                <type>conduit</type>
-                <isStart>false</isStart>
-                <ports>
-                    <port>
-                        <name>coe_address_export</name>
-                        <role>export</role>
-                        <direction>Output</direction>
-                        <width>3</width>
-                        <lowerBound>0</lowerBound>
-                        <vhdlType>STD_LOGIC_VECTOR</vhdlType>
-                    </port>
-                </ports>
-                <assignments>
-                    <assignmentValueMap/>
-                </assignments>
-                <parameters>
-                    <parameterValueMap>
-                        <entry>
-                            <key>associatedClock</key>
-                        </entry>
-                        <entry>
-                            <key>associatedReset</key>
-                        </entry>
-                        <entry>
-                            <key>prSafe</key>
-                            <value>false</value>
-                        </entry>
-                    </parameterValueMap>
-                </parameters>
-            </interface>
-            <interface>
-                <name>clk</name>
-                <type>conduit</type>
-                <isStart>false</isStart>
-                <ports>
-                    <port>
-                        <name>coe_clk_export</name>
-                        <role>export</role>
-                        <direction>Output</direction>
-                        <width>1</width>
-                        <lowerBound>0</lowerBound>
-                        <vhdlType>STD_LOGIC</vhdlType>
-                    </port>
-                </ports>
-                <assignments>
-                    <assignmentValueMap/>
-                </assignments>
-                <parameters>
-                    <parameterValueMap>
-                        <entry>
-                            <key>associatedClock</key>
-                        </entry>
-                        <entry>
-                            <key>associatedReset</key>
-                        </entry>
-                        <entry>
-                            <key>prSafe</key>
-                            <value>false</value>
-                        </entry>
-                    </parameterValueMap>
-                </parameters>
-            </interface>
-            <interface>
-                <name>mem</name>
-                <type>avalon</type>
-                <isStart>false</isStart>
-                <ports>
-                    <port>
-                        <name>avs_mem_address</name>
-                        <role>address</role>
-                        <direction>Input</direction>
-                        <width>3</width>
-                        <lowerBound>0</lowerBound>
-                        <vhdlType>STD_LOGIC_VECTOR</vhdlType>
-                    </port>
-                    <port>
-                        <name>avs_mem_write</name>
-                        <role>write</role>
-                        <direction>Input</direction>
-                        <width>1</width>
-                        <lowerBound>0</lowerBound>
-                        <vhdlType>STD_LOGIC</vhdlType>
-                    </port>
-                    <port>
-                        <name>avs_mem_writedata</name>
-                        <role>writedata</role>
-                        <direction>Input</direction>
-                        <width>32</width>
-                        <lowerBound>0</lowerBound>
-                        <vhdlType>STD_LOGIC_VECTOR</vhdlType>
-                    </port>
-                    <port>
-                        <name>avs_mem_read</name>
-                        <role>read</role>
-                        <direction>Input</direction>
-                        <width>1</width>
-                        <lowerBound>0</lowerBound>
-                        <vhdlType>STD_LOGIC</vhdlType>
-                    </port>
-                    <port>
-                        <name>avs_mem_readdata</name>
-                        <role>readdata</role>
-                        <direction>Output</direction>
-                        <width>32</width>
-                        <lowerBound>0</lowerBound>
-                        <vhdlType>STD_LOGIC_VECTOR</vhdlType>
-                    </port>
-                </ports>
-                <assignments>
-                    <assignmentValueMap>
-                        <entry>
-                            <key>embeddedsw.configuration.isFlash</key>
-                            <value>0</value>
-                        </entry>
-                        <entry>
-                            <key>embeddedsw.configuration.isMemoryDevice</key>
-                            <value>0</value>
-                        </entry>
-                        <entry>
-                            <key>embeddedsw.configuration.isNonVolatileStorage</key>
-                            <value>0</value>
-                        </entry>
-                        <entry>
-                            <key>embeddedsw.configuration.isPrintableDevice</key>
-                            <value>0</value>
-                        </entry>
-                    </assignmentValueMap>
-                </assignments>
-                <parameters>
-                    <parameterValueMap>
-                        <entry>
-                            <key>addressAlignment</key>
-                            <value>DYNAMIC</value>
-                        </entry>
-                        <entry>
-                            <key>addressGroup</key>
-                            <value>0</value>
-                        </entry>
-                        <entry>
-                            <key>addressSpan</key>
-                            <value>32</value>
-                        </entry>
-                        <entry>
-                            <key>addressUnits</key>
-                            <value>WORDS</value>
-                        </entry>
-                        <entry>
-                            <key>alwaysBurstMaxBurst</key>
-                            <value>false</value>
-                        </entry>
-                        <entry>
-                            <key>associatedClock</key>
-                            <value>system</value>
-                        </entry>
-                        <entry>
-                            <key>associatedReset</key>
-                            <value>system_reset</value>
-                        </entry>
-                        <entry>
-                            <key>bitsPerSymbol</key>
-                            <value>8</value>
-                        </entry>
-                        <entry>
-                            <key>bridgedAddressOffset</key>
-                            <value>0</value>
-                        </entry>
-                        <entry>
-                            <key>bridgesToMaster</key>
-                        </entry>
-                        <entry>
-                            <key>burstOnBurstBoundariesOnly</key>
-                            <value>false</value>
-                        </entry>
-                        <entry>
-                            <key>burstcountUnits</key>
-                            <value>WORDS</value>
-                        </entry>
-                        <entry>
-                            <key>constantBurstBehavior</key>
-                            <value>false</value>
-                        </entry>
-                        <entry>
-                            <key>explicitAddressSpan</key>
-                            <value>0</value>
-                        </entry>
-                        <entry>
-                            <key>holdTime</key>
-                            <value>0</value>
-                        </entry>
-                        <entry>
-                            <key>interleaveBursts</key>
-                            <value>false</value>
-                        </entry>
-                        <entry>
-                            <key>isBigEndian</key>
-                            <value>false</value>
-                        </entry>
-                        <entry>
-                            <key>isFlash</key>
-                            <value>false</value>
-                        </entry>
-                        <entry>
-                            <key>isMemoryDevice</key>
-                            <value>false</value>
-                        </entry>
-                        <entry>
-                            <key>isNonVolatileStorage</key>
-                            <value>false</value>
-                        </entry>
-                        <entry>
-                            <key>linewrapBursts</key>
-                            <value>false</value>
-                        </entry>
-                        <entry>
-                            <key>maximumPendingReadTransactions</key>
-                            <value>0</value>
-                        </entry>
-                        <entry>
-                            <key>maximumPendingWriteTransactions</key>
-                            <value>0</value>
-                        </entry>
-                        <entry>
-                            <key>minimumReadLatency</key>
-                            <value>1</value>
-                        </entry>
-                        <entry>
-                            <key>minimumResponseLatency</key>
-                            <value>1</value>
-                        </entry>
-                        <entry>
-                            <key>minimumUninterruptedRunLength</key>
-                            <value>1</value>
-                        </entry>
-                        <entry>
-                            <key>prSafe</key>
-                            <value>false</value>
-                        </entry>
-                        <entry>
-                            <key>printableDevice</key>
-                            <value>false</value>
-                        </entry>
-                        <entry>
-                            <key>readLatency</key>
-                            <value>1</value>
-                        </entry>
-                        <entry>
-                            <key>readWaitStates</key>
-                            <value>0</value>
-                        </entry>
-                        <entry>
-                            <key>readWaitTime</key>
-                            <value>0</value>
-                        </entry>
-                        <entry>
-                            <key>registerIncomingSignals</key>
-                            <value>false</value>
-                        </entry>
-                        <entry>
-                            <key>registerOutgoingSignals</key>
-                            <value>false</value>
-                        </entry>
-                        <entry>
-                            <key>setupTime</key>
-                            <value>0</value>
-                        </entry>
-                        <entry>
-                            <key>timingUnits</key>
-                            <value>Cycles</value>
-                        </entry>
-                        <entry>
-                            <key>transparentBridge</key>
-                            <value>false</value>
-                        </entry>
-                        <entry>
-                            <key>waitrequestAllowance</key>
-                            <value>0</value>
-                        </entry>
-                        <entry>
-                            <key>wellBehavedWaitrequest</key>
-                            <value>false</value>
-                        </entry>
-                        <entry>
-                            <key>writeLatency</key>
-                            <value>0</value>
-                        </entry>
-                        <entry>
-                            <key>writeWaitStates</key>
-                            <value>0</value>
-                        </entry>
-                        <entry>
-                            <key>writeWaitTime</key>
-                            <value>0</value>
-                        </entry>
-                    </parameterValueMap>
-                </parameters>
-            </interface>
-            <interface>
-                <name>read</name>
-                <type>conduit</type>
-                <isStart>false</isStart>
-                <ports>
-                    <port>
-                        <name>coe_read_export</name>
-                        <role>export</role>
-                        <direction>Output</direction>
-                        <width>1</width>
-                        <lowerBound>0</lowerBound>
-                        <vhdlType>STD_LOGIC</vhdlType>
-                    </port>
-                </ports>
-                <assignments>
-                    <assignmentValueMap/>
-                </assignments>
-                <parameters>
-                    <parameterValueMap>
-                        <entry>
-                            <key>associatedClock</key>
-                        </entry>
-                        <entry>
-                            <key>associatedReset</key>
-                        </entry>
-                        <entry>
-                            <key>prSafe</key>
-                            <value>false</value>
-                        </entry>
-                    </parameterValueMap>
-                </parameters>
-            </interface>
-            <interface>
-                <name>readdata</name>
-                <type>conduit</type>
-                <isStart>false</isStart>
-                <ports>
-                    <port>
-                        <name>coe_readdata_export</name>
-                        <role>export</role>
-                        <direction>Input</direction>
-                        <width>32</width>
-                        <lowerBound>0</lowerBound>
-                        <vhdlType>STD_LOGIC_VECTOR</vhdlType>
-                    </port>
-                </ports>
-                <assignments>
-                    <assignmentValueMap/>
-                </assignments>
-                <parameters>
-                    <parameterValueMap>
-                        <entry>
-                            <key>associatedClock</key>
-                        </entry>
-                        <entry>
-                            <key>associatedReset</key>
-                        </entry>
-                        <entry>
-                            <key>prSafe</key>
-                            <value>false</value>
-                        </entry>
-                    </parameterValueMap>
-                </parameters>
-            </interface>
-            <interface>
-                <name>reset</name>
-                <type>conduit</type>
-                <isStart>false</isStart>
-                <ports>
-                    <port>
-                        <name>coe_reset_export</name>
-                        <role>export</role>
-                        <direction>Output</direction>
-                        <width>1</width>
-                        <lowerBound>0</lowerBound>
-                        <vhdlType>STD_LOGIC</vhdlType>
-                    </port>
-                </ports>
-                <assignments>
-                    <assignmentValueMap/>
-                </assignments>
-                <parameters>
-                    <parameterValueMap>
-                        <entry>
-                            <key>associatedClock</key>
-                        </entry>
-                        <entry>
-                            <key>associatedReset</key>
-                        </entry>
-                        <entry>
-                            <key>prSafe</key>
-                            <value>false</value>
-                        </entry>
-                    </parameterValueMap>
-                </parameters>
-            </interface>
-            <interface>
-                <name>system</name>
-                <type>clock</type>
-                <isStart>false</isStart>
-                <ports>
-                    <port>
-                        <name>csi_system_clk</name>
-                        <role>clk</role>
-                        <direction>Input</direction>
-                        <width>1</width>
-                        <lowerBound>0</lowerBound>
-                        <vhdlType>STD_LOGIC</vhdlType>
-                    </port>
-                </ports>
-                <assignments>
-                    <assignmentValueMap/>
-                </assignments>
-                <parameters>
-                    <parameterValueMap>
-                        <entry>
-                            <key>clockRate</key>
-                            <value>0</value>
-                        </entry>
-                        <entry>
-                            <key>externallyDriven</key>
-                            <value>false</value>
-                        </entry>
-                        <entry>
-                            <key>ptfSchematicName</key>
-                        </entry>
-                    </parameterValueMap>
-                </parameters>
-            </interface>
-            <interface>
-                <name>system_reset</name>
-                <type>reset</type>
-                <isStart>false</isStart>
-                <ports>
-                    <port>
-                        <name>csi_system_reset</name>
-                        <role>reset</role>
-                        <direction>Input</direction>
-                        <width>1</width>
-                        <lowerBound>0</lowerBound>
-                        <vhdlType>STD_LOGIC</vhdlType>
-                    </port>
-                </ports>
-                <assignments>
-                    <assignmentValueMap/>
-                </assignments>
-                <parameters>
-                    <parameterValueMap>
-                        <entry>
-                            <key>associatedClock</key>
-                            <value>system</value>
-                        </entry>
-                        <entry>
-                            <key>synchronousEdges</key>
-                            <value>DEASSERT</value>
-                        </entry>
-                    </parameterValueMap>
-                </parameters>
-            </interface>
-            <interface>
-                <name>write</name>
-                <type>conduit</type>
-                <isStart>false</isStart>
-                <ports>
-                    <port>
-                        <name>coe_write_export</name>
-                        <role>export</role>
-                        <direction>Output</direction>
-                        <width>1</width>
-                        <lowerBound>0</lowerBound>
-                        <vhdlType>STD_LOGIC</vhdlType>
-                    </port>
-                </ports>
-                <assignments>
-                    <assignmentValueMap/>
-                </assignments>
-                <parameters>
-                    <parameterValueMap>
-                        <entry>
-                            <key>associatedClock</key>
-                        </entry>
-                        <entry>
-                            <key>associatedReset</key>
-                        </entry>
-                        <entry>
-                            <key>prSafe</key>
-                            <value>false</value>
-                        </entry>
-                    </parameterValueMap>
-                </parameters>
-            </interface>
-            <interface>
-                <name>writedata</name>
-                <type>conduit</type>
-                <isStart>false</isStart>
-                <ports>
-                    <port>
-                        <name>coe_writedata_export</name>
-                        <role>export</role>
-                        <direction>Output</direction>
-                        <width>32</width>
-                        <lowerBound>0</lowerBound>
-                        <vhdlType>STD_LOGIC_VECTOR</vhdlType>
-                    </port>
-                </ports>
-                <assignments>
-                    <assignmentValueMap/>
-                </assignments>
-                <parameters>
-                    <parameterValueMap>
-                        <entry>
-                            <key>associatedClock</key>
-                        </entry>
-                        <entry>
-                            <key>associatedReset</key>
-                        </entry>
-                        <entry>
-                            <key>prSafe</key>
-                            <value>false</value>
-                        </entry>
-                    </parameterValueMap>
-                </parameters>
-            </interface>
-        </interfaces>
-    </boundary>
-    <originalModuleInfo>
-        <className>avs_common_mm</className>
-        <version>1.0</version>
-        <displayName>avs_common_mm</displayName>
-    </originalModuleInfo>
-    <systemInfoParameterDescriptors>
-        <descriptors>
-            <descriptor>
-                <parameterDefaultValue>-1</parameterDefaultValue>
-                <parameterName>AUTO_SYSTEM_CLOCK_RATE</parameterName>
-                <parameterType>java.lang.Long</parameterType>
-                <systemInfoArgs>system</systemInfoArgs>
-                <systemInfotype>CLOCK_RATE</systemInfotype>
-            </descriptor>
-        </descriptors>
-    </systemInfoParameterDescriptors>
-    <systemInfos>
-        <connPtSystemInfos>
-            <entry>
-                <key>mem</key>
-                <value>
-                    <connectionPointName>mem</connectionPointName>
-                    <suppliedSystemInfos>
-                        <entry>
-                            <key>ADDRESS_MAP</key>
-                            <value>&lt;address-map&gt;&lt;slave name='mem' start='0x0' end='0x20' datawidth='32' /&gt;&lt;/address-map&gt;</value>
-                        </entry>
-                        <entry>
-                            <key>ADDRESS_WIDTH</key>
-                            <value>5</value>
-                        </entry>
-                        <entry>
-                            <key>MAX_SLAVE_DATA_WIDTH</key>
-                            <value>32</value>
-                        </entry>
-                    </suppliedSystemInfos>
-                    <consumedSystemInfos/>
-                </value>
-            </entry>
-            <entry>
-                <key>system</key>
-                <value>
-                    <connectionPointName>system</connectionPointName>
-                    <suppliedSystemInfos/>
-                    <consumedSystemInfos>
-                        <entry>
-                            <key>CLOCK_RATE</key>
-                            <value>100000000</value>
-                        </entry>
-                    </consumedSystemInfos>
-                </value>
-            </entry>
-        </connPtSystemInfos>
-    </systemInfos>
-</componentDefinition>]]></parameter>
-  <parameter name="defaultBoundary"><![CDATA[<boundaryDefinition>
-    <interfaces>
         <interface>
             <name>address</name>
             <type>conduit</type>
@@ -29550,7 +28772,7 @@
                     <name>coe_address_export</name>
                     <role>export</role>
                     <direction>Output</direction>
-                    <width>3</width>
+                    <width>8</width>
                     <lowerBound>0</lowerBound>
                     <vhdlType>STD_LOGIC_VECTOR</vhdlType>
                 </port>
@@ -29574,12 +28796,12 @@
             </parameters>
         </interface>
         <interface>
-            <name>clk</name>
+            <name>write</name>
             <type>conduit</type>
             <isStart>false</isStart>
             <ports>
                 <port>
-                    <name>coe_clk_export</name>
+                    <name>coe_write_export</name>
                     <role>export</role>
                     <direction>Output</direction>
                     <width>1</width>
@@ -29606,45 +28828,13 @@
             </parameters>
         </interface>
         <interface>
-            <name>mem</name>
-            <type>avalon</type>
+            <name>writedata</name>
+            <type>conduit</type>
             <isStart>false</isStart>
             <ports>
                 <port>
-                    <name>avs_mem_address</name>
-                    <role>address</role>
-                    <direction>Input</direction>
-                    <width>3</width>
-                    <lowerBound>0</lowerBound>
-                    <vhdlType>STD_LOGIC_VECTOR</vhdlType>
-                </port>
-                <port>
-                    <name>avs_mem_write</name>
-                    <role>write</role>
-                    <direction>Input</direction>
-                    <width>1</width>
-                    <lowerBound>0</lowerBound>
-                    <vhdlType>STD_LOGIC</vhdlType>
-                </port>
-                <port>
-                    <name>avs_mem_writedata</name>
-                    <role>writedata</role>
-                    <direction>Input</direction>
-                    <width>32</width>
-                    <lowerBound>0</lowerBound>
-                    <vhdlType>STD_LOGIC_VECTOR</vhdlType>
-                </port>
-                <port>
-                    <name>avs_mem_read</name>
-                    <role>read</role>
-                    <direction>Input</direction>
-                    <width>1</width>
-                    <lowerBound>0</lowerBound>
-                    <vhdlType>STD_LOGIC</vhdlType>
-                </port>
-                <port>
-                    <name>avs_mem_readdata</name>
-                    <role>readdata</role>
+                    <name>coe_writedata_export</name>
+                    <role>export</role>
                     <direction>Output</direction>
                     <width>32</width>
                     <lowerBound>0</lowerBound>
@@ -29652,190 +28842,20 @@
                 </port>
             </ports>
             <assignments>
-                <assignmentValueMap>
-                    <entry>
-                        <key>embeddedsw.configuration.isFlash</key>
-                        <value>0</value>
-                    </entry>
-                    <entry>
-                        <key>embeddedsw.configuration.isMemoryDevice</key>
-                        <value>0</value>
-                    </entry>
-                    <entry>
-                        <key>embeddedsw.configuration.isNonVolatileStorage</key>
-                        <value>0</value>
-                    </entry>
-                    <entry>
-                        <key>embeddedsw.configuration.isPrintableDevice</key>
-                        <value>0</value>
-                    </entry>
-                </assignmentValueMap>
+                <assignmentValueMap/>
             </assignments>
             <parameters>
                 <parameterValueMap>
-                    <entry>
-                        <key>addressAlignment</key>
-                        <value>DYNAMIC</value>
-                    </entry>
-                    <entry>
-                        <key>addressGroup</key>
-                        <value>0</value>
-                    </entry>
-                    <entry>
-                        <key>addressSpan</key>
-                        <value>32</value>
-                    </entry>
-                    <entry>
-                        <key>addressUnits</key>
-                        <value>WORDS</value>
-                    </entry>
-                    <entry>
-                        <key>alwaysBurstMaxBurst</key>
-                        <value>false</value>
-                    </entry>
                     <entry>
                         <key>associatedClock</key>
-                        <value>system</value>
                     </entry>
                     <entry>
                         <key>associatedReset</key>
-                        <value>system_reset</value>
-                    </entry>
-                    <entry>
-                        <key>bitsPerSymbol</key>
-                        <value>8</value>
-                    </entry>
-                    <entry>
-                        <key>bridgedAddressOffset</key>
-                        <value>0</value>
-                    </entry>
-                    <entry>
-                        <key>bridgesToMaster</key>
-                    </entry>
-                    <entry>
-                        <key>burstOnBurstBoundariesOnly</key>
-                        <value>false</value>
-                    </entry>
-                    <entry>
-                        <key>burstcountUnits</key>
-                        <value>WORDS</value>
-                    </entry>
-                    <entry>
-                        <key>constantBurstBehavior</key>
-                        <value>false</value>
-                    </entry>
-                    <entry>
-                        <key>explicitAddressSpan</key>
-                        <value>0</value>
-                    </entry>
-                    <entry>
-                        <key>holdTime</key>
-                        <value>0</value>
-                    </entry>
-                    <entry>
-                        <key>interleaveBursts</key>
-                        <value>false</value>
-                    </entry>
-                    <entry>
-                        <key>isBigEndian</key>
-                        <value>false</value>
-                    </entry>
-                    <entry>
-                        <key>isFlash</key>
-                        <value>false</value>
-                    </entry>
-                    <entry>
-                        <key>isMemoryDevice</key>
-                        <value>false</value>
-                    </entry>
-                    <entry>
-                        <key>isNonVolatileStorage</key>
-                        <value>false</value>
-                    </entry>
-                    <entry>
-                        <key>linewrapBursts</key>
-                        <value>false</value>
-                    </entry>
-                    <entry>
-                        <key>maximumPendingReadTransactions</key>
-                        <value>0</value>
-                    </entry>
-                    <entry>
-                        <key>maximumPendingWriteTransactions</key>
-                        <value>0</value>
-                    </entry>
-                    <entry>
-                        <key>minimumReadLatency</key>
-                        <value>1</value>
-                    </entry>
-                    <entry>
-                        <key>minimumResponseLatency</key>
-                        <value>1</value>
-                    </entry>
-                    <entry>
-                        <key>minimumUninterruptedRunLength</key>
-                        <value>1</value>
                     </entry>
                     <entry>
                         <key>prSafe</key>
                         <value>false</value>
                     </entry>
-                    <entry>
-                        <key>printableDevice</key>
-                        <value>false</value>
-                    </entry>
-                    <entry>
-                        <key>readLatency</key>
-                        <value>1</value>
-                    </entry>
-                    <entry>
-                        <key>readWaitStates</key>
-                        <value>0</value>
-                    </entry>
-                    <entry>
-                        <key>readWaitTime</key>
-                        <value>0</value>
-                    </entry>
-                    <entry>
-                        <key>registerIncomingSignals</key>
-                        <value>false</value>
-                    </entry>
-                    <entry>
-                        <key>registerOutgoingSignals</key>
-                        <value>false</value>
-                    </entry>
-                    <entry>
-                        <key>setupTime</key>
-                        <value>0</value>
-                    </entry>
-                    <entry>
-                        <key>timingUnits</key>
-                        <value>Cycles</value>
-                    </entry>
-                    <entry>
-                        <key>transparentBridge</key>
-                        <value>false</value>
-                    </entry>
-                    <entry>
-                        <key>waitrequestAllowance</key>
-                        <value>0</value>
-                    </entry>
-                    <entry>
-                        <key>wellBehavedWaitrequest</key>
-                        <value>false</value>
-                    </entry>
-                    <entry>
-                        <key>writeLatency</key>
-                        <value>0</value>
-                    </entry>
-                    <entry>
-                        <key>writeWaitStates</key>
-                        <value>0</value>
-                    </entry>
-                    <entry>
-                        <key>writeWaitTime</key>
-                        <value>0</value>
-                    </entry>
                 </parameterValueMap>
             </parameters>
         </interface>
@@ -29904,78 +28924,13 @@
             </parameters>
         </interface>
         <interface>
-            <name>reset</name>
+            <name>waitrequest</name>
             <type>conduit</type>
             <isStart>false</isStart>
             <ports>
                 <port>
-                    <name>coe_reset_export</name>
+                    <name>coe_waitrequest_export</name>
                     <role>export</role>
-                    <direction>Output</direction>
-                    <width>1</width>
-                    <lowerBound>0</lowerBound>
-                    <vhdlType>STD_LOGIC</vhdlType>
-                </port>
-            </ports>
-            <assignments>
-                <assignmentValueMap/>
-            </assignments>
-            <parameters>
-                <parameterValueMap>
-                    <entry>
-                        <key>associatedClock</key>
-                    </entry>
-                    <entry>
-                        <key>associatedReset</key>
-                    </entry>
-                    <entry>
-                        <key>prSafe</key>
-                        <value>false</value>
-                    </entry>
-                </parameterValueMap>
-            </parameters>
-        </interface>
-        <interface>
-            <name>system</name>
-            <type>clock</type>
-            <isStart>false</isStart>
-            <ports>
-                <port>
-                    <name>csi_system_clk</name>
-                    <role>clk</role>
-                    <direction>Input</direction>
-                    <width>1</width>
-                    <lowerBound>0</lowerBound>
-                    <vhdlType>STD_LOGIC</vhdlType>
-                </port>
-            </ports>
-            <assignments>
-                <assignmentValueMap/>
-            </assignments>
-            <parameters>
-                <parameterValueMap>
-                    <entry>
-                        <key>clockRate</key>
-                        <value>0</value>
-                    </entry>
-                    <entry>
-                        <key>externallyDriven</key>
-                        <value>false</value>
-                    </entry>
-                    <entry>
-                        <key>ptfSchematicName</key>
-                    </entry>
-                </parameterValueMap>
-            </parameters>
-        </interface>
-        <interface>
-            <name>system_reset</name>
-            <type>reset</type>
-            <isStart>false</isStart>
-            <ports>
-                <port>
-                    <name>csi_system_reset</name>
-                    <role>reset</role>
                     <direction>Input</direction>
                     <width>1</width>
                     <lowerBound>0</lowerBound>
@@ -29985,68 +28940,6 @@
             <assignments>
                 <assignmentValueMap/>
             </assignments>
-            <parameters>
-                <parameterValueMap>
-                    <entry>
-                        <key>associatedClock</key>
-                        <value>system</value>
-                    </entry>
-                    <entry>
-                        <key>synchronousEdges</key>
-                        <value>DEASSERT</value>
-                    </entry>
-                </parameterValueMap>
-            </parameters>
-        </interface>
-        <interface>
-            <name>write</name>
-            <type>conduit</type>
-            <isStart>false</isStart>
-            <ports>
-                <port>
-                    <name>coe_write_export</name>
-                    <role>export</role>
-                    <direction>Output</direction>
-                    <width>1</width>
-                    <lowerBound>0</lowerBound>
-                    <vhdlType>STD_LOGIC</vhdlType>
-                </port>
-            </ports>
-            <assignments>
-                <assignmentValueMap/>
-            </assignments>
-            <parameters>
-                <parameterValueMap>
-                    <entry>
-                        <key>associatedClock</key>
-                    </entry>
-                    <entry>
-                        <key>associatedReset</key>
-                    </entry>
-                    <entry>
-                        <key>prSafe</key>
-                        <value>false</value>
-                    </entry>
-                </parameterValueMap>
-            </parameters>
-        </interface>
-        <interface>
-            <name>writedata</name>
-            <type>conduit</type>
-            <isStart>false</isStart>
-            <ports>
-                <port>
-                    <name>coe_writedata_export</name>
-                    <role>export</role>
-                    <direction>Output</direction>
-                    <width>32</width>
-                    <lowerBound>0</lowerBound>
-                    <vhdlType>STD_LOGIC_VECTOR</vhdlType>
-                </port>
-            </ports>
-            <assignments>
-                <assignmentValueMap/>
-            </assignments>
             <parameters>
                 <parameterValueMap>
                     <entry>
@@ -30065,37 +28958,37 @@
     </interfaces>
 </boundaryDefinition>]]></parameter>
   <parameter name="generationInfoDefinition"><![CDATA[<generationInfoDefinition>
-    <hdlLibraryName>board_reg_remu</hdlLibraryName>
+    <hdlLibraryName>board_reg_ta2_unb2b_jesd204b</hdlLibraryName>
     <fileSets>
         <fileSet>
-            <fileSetName>board_reg_remu</fileSetName>
-            <fileSetFixedName>board_reg_remu</fileSetFixedName>
+            <fileSetName>board_reg_ta2_unb2b_jesd204b</fileSetName>
+            <fileSetFixedName>board_reg_ta2_unb2b_jesd204b</fileSetFixedName>
             <fileSetKind>QUARTUS_SYNTH</fileSetKind>
             <fileSetFiles/>
         </fileSet>
         <fileSet>
-            <fileSetName>board_reg_remu</fileSetName>
-            <fileSetFixedName>board_reg_remu</fileSetFixedName>
+            <fileSetName>board_reg_ta2_unb2b_jesd204b</fileSetName>
+            <fileSetFixedName>board_reg_ta2_unb2b_jesd204b</fileSetFixedName>
             <fileSetKind>SIM_VERILOG</fileSetKind>
             <fileSetFiles/>
         </fileSet>
         <fileSet>
-            <fileSetName>board_reg_remu</fileSetName>
-            <fileSetFixedName>board_reg_remu</fileSetFixedName>
+            <fileSetName>board_reg_ta2_unb2b_jesd204b</fileSetName>
+            <fileSetFixedName>board_reg_ta2_unb2b_jesd204b</fileSetFixedName>
             <fileSetKind>SIM_VHDL</fileSetKind>
             <fileSetFiles/>
         </fileSet>
     </fileSets>
 </generationInfoDefinition>]]></parameter>
   <parameter name="hlsFile" value="" />
-  <parameter name="logicalView">ip/board/board_reg_remu.ip</parameter>
+  <parameter name="logicalView">ip/board/board_reg_ta2_unb2b_jesd204b.ip</parameter>
   <parameter name="moduleAssignmentDefinition"><![CDATA[<assignmentDefinition>
     <assignmentValueMap/>
 </assignmentDefinition>]]></parameter>
   <parameter name="svInterfaceDefinition" value="" />
  </module>
  <module
-   name="reg_ta2_unb2b_jesd204b"
+   name="reg_ta2_unb2b_mm_io"
    kind="altera_generic_component"
    version="1.0"
    enabled="1">
@@ -30103,17 +28996,17 @@
     <boundary>
         <interfaces>
             <interface>
-                <name>address</name>
-                <type>conduit</type>
+                <name>system</name>
+                <type>clock</type>
                 <isStart>false</isStart>
                 <ports>
                     <port>
-                        <name>coe_address_export</name>
-                        <role>export</role>
-                        <direction>Output</direction>
-                        <width>8</width>
+                        <name>csi_system_clk</name>
+                        <role>clk</role>
+                        <direction>Input</direction>
+                        <width>1</width>
                         <lowerBound>0</lowerBound>
-                        <vhdlType>STD_LOGIC_VECTOR</vhdlType>
+                        <vhdlType>STD_LOGIC</vhdlType>
                     </port>
                 </ports>
                 <assignments>
@@ -30122,27 +29015,28 @@
                 <parameters>
                     <parameterValueMap>
                         <entry>
-                            <key>associatedClock</key>
+                            <key>clockRate</key>
+                            <value>0</value>
                         </entry>
                         <entry>
-                            <key>associatedReset</key>
+                            <key>externallyDriven</key>
+                            <value>false</value>
                         </entry>
                         <entry>
-                            <key>prSafe</key>
-                            <value>false</value>
+                            <key>ptfSchematicName</key>
                         </entry>
                     </parameterValueMap>
                 </parameters>
             </interface>
             <interface>
-                <name>clk</name>
-                <type>conduit</type>
+                <name>system_reset</name>
+                <type>reset</type>
                 <isStart>false</isStart>
                 <ports>
                     <port>
-                        <name>coe_clk_export</name>
-                        <role>export</role>
-                        <direction>Output</direction>
+                        <name>csi_system_reset</name>
+                        <role>reset</role>
+                        <direction>Input</direction>
                         <width>1</width>
                         <lowerBound>0</lowerBound>
                         <vhdlType>STD_LOGIC</vhdlType>
@@ -30155,13 +29049,11 @@
                     <parameterValueMap>
                         <entry>
                             <key>associatedClock</key>
+                            <value>system</value>
                         </entry>
                         <entry>
-                            <key>associatedReset</key>
-                        </entry>
-                        <entry>
-                            <key>prSafe</key>
-                            <value>false</value>
+                            <key>synchronousEdges</key>
+                            <value>DEASSERT</value>
                         </entry>
                     </parameterValueMap>
                 </parameters>
@@ -30409,12 +29301,12 @@
                 </parameters>
             </interface>
             <interface>
-                <name>read</name>
+                <name>reset</name>
                 <type>conduit</type>
                 <isStart>false</isStart>
                 <ports>
                     <port>
-                        <name>coe_read_export</name>
+                        <name>coe_reset_export</name>
                         <role>export</role>
                         <direction>Output</direction>
                         <width>1</width>
@@ -30441,17 +29333,17 @@
                 </parameters>
             </interface>
             <interface>
-                <name>readdata</name>
+                <name>clk</name>
                 <type>conduit</type>
                 <isStart>false</isStart>
                 <ports>
                     <port>
-                        <name>coe_readdata_export</name>
+                        <name>coe_clk_export</name>
                         <role>export</role>
-                        <direction>Input</direction>
-                        <width>32</width>
+                        <direction>Output</direction>
+                        <width>1</width>
                         <lowerBound>0</lowerBound>
-                        <vhdlType>STD_LOGIC_VECTOR</vhdlType>
+                        <vhdlType>STD_LOGIC</vhdlType>
                     </port>
                 </ports>
                 <assignments>
@@ -30473,17 +29365,17 @@
                 </parameters>
             </interface>
             <interface>
-                <name>reset</name>
+                <name>address</name>
                 <type>conduit</type>
                 <isStart>false</isStart>
                 <ports>
                     <port>
-                        <name>coe_reset_export</name>
+                        <name>coe_address_export</name>
                         <role>export</role>
                         <direction>Output</direction>
-                        <width>1</width>
+                        <width>8</width>
                         <lowerBound>0</lowerBound>
-                        <vhdlType>STD_LOGIC</vhdlType>
+                        <vhdlType>STD_LOGIC_VECTOR</vhdlType>
                     </port>
                 </ports>
                 <assignments>
@@ -30505,14 +29397,14 @@
                 </parameters>
             </interface>
             <interface>
-                <name>system</name>
-                <type>clock</type>
+                <name>write</name>
+                <type>conduit</type>
                 <isStart>false</isStart>
                 <ports>
                     <port>
-                        <name>csi_system_clk</name>
-                        <role>clk</role>
-                        <direction>Input</direction>
+                        <name>coe_write_export</name>
+                        <role>export</role>
+                        <direction>Output</direction>
                         <width>1</width>
                         <lowerBound>0</lowerBound>
                         <vhdlType>STD_LOGIC</vhdlType>
@@ -30524,31 +29416,30 @@
                 <parameters>
                     <parameterValueMap>
                         <entry>
-                            <key>clockRate</key>
-                            <value>0</value>
+                            <key>associatedClock</key>
                         </entry>
                         <entry>
-                            <key>externallyDriven</key>
-                            <value>false</value>
+                            <key>associatedReset</key>
                         </entry>
                         <entry>
-                            <key>ptfSchematicName</key>
+                            <key>prSafe</key>
+                            <value>false</value>
                         </entry>
                     </parameterValueMap>
                 </parameters>
             </interface>
             <interface>
-                <name>system_reset</name>
-                <type>reset</type>
+                <name>writedata</name>
+                <type>conduit</type>
                 <isStart>false</isStart>
                 <ports>
                     <port>
-                        <name>csi_system_reset</name>
-                        <role>reset</role>
-                        <direction>Input</direction>
-                        <width>1</width>
+                        <name>coe_writedata_export</name>
+                        <role>export</role>
+                        <direction>Output</direction>
+                        <width>32</width>
                         <lowerBound>0</lowerBound>
-                        <vhdlType>STD_LOGIC</vhdlType>
+                        <vhdlType>STD_LOGIC_VECTOR</vhdlType>
                     </port>
                 </ports>
                 <assignments>
@@ -30558,24 +29449,26 @@
                     <parameterValueMap>
                         <entry>
                             <key>associatedClock</key>
-                            <value>system</value>
                         </entry>
                         <entry>
-                            <key>synchronousEdges</key>
-                            <value>DEASSERT</value>
+                            <key>associatedReset</key>
+                        </entry>
+                        <entry>
+                            <key>prSafe</key>
+                            <value>false</value>
                         </entry>
                     </parameterValueMap>
                 </parameters>
             </interface>
             <interface>
-                <name>waitrequest</name>
+                <name>read</name>
                 <type>conduit</type>
                 <isStart>false</isStart>
                 <ports>
                     <port>
-                        <name>coe_waitrequest_export</name>
+                        <name>coe_read_export</name>
                         <role>export</role>
-                        <direction>Input</direction>
+                        <direction>Output</direction>
                         <width>1</width>
                         <lowerBound>0</lowerBound>
                         <vhdlType>STD_LOGIC</vhdlType>
@@ -30600,17 +29493,17 @@
                 </parameters>
             </interface>
             <interface>
-                <name>write</name>
+                <name>readdata</name>
                 <type>conduit</type>
                 <isStart>false</isStart>
                 <ports>
                     <port>
-                        <name>coe_write_export</name>
+                        <name>coe_readdata_export</name>
                         <role>export</role>
-                        <direction>Output</direction>
-                        <width>1</width>
+                        <direction>Input</direction>
+                        <width>32</width>
                         <lowerBound>0</lowerBound>
-                        <vhdlType>STD_LOGIC</vhdlType>
+                        <vhdlType>STD_LOGIC_VECTOR</vhdlType>
                     </port>
                 </ports>
                 <assignments>
@@ -30632,17 +29525,17 @@
                 </parameters>
             </interface>
             <interface>
-                <name>writedata</name>
+                <name>waitrequest</name>
                 <type>conduit</type>
                 <isStart>false</isStart>
                 <ports>
                     <port>
-                        <name>coe_writedata_export</name>
+                        <name>coe_waitrequest_export</name>
                         <role>export</role>
-                        <direction>Output</direction>
-                        <width>32</width>
+                        <direction>Input</direction>
+                        <width>1</width>
                         <lowerBound>0</lowerBound>
-                        <vhdlType>STD_LOGIC_VECTOR</vhdlType>
+                        <vhdlType>STD_LOGIC</vhdlType>
                     </port>
                 </ports>
                 <assignments>
@@ -30723,17 +29616,17 @@
   <parameter name="defaultBoundary"><![CDATA[<boundaryDefinition>
     <interfaces>
         <interface>
-            <name>address</name>
-            <type>conduit</type>
+            <name>system</name>
+            <type>clock</type>
             <isStart>false</isStart>
             <ports>
                 <port>
-                    <name>coe_address_export</name>
-                    <role>export</role>
-                    <direction>Output</direction>
-                    <width>8</width>
+                    <name>csi_system_clk</name>
+                    <role>clk</role>
+                    <direction>Input</direction>
+                    <width>1</width>
                     <lowerBound>0</lowerBound>
-                    <vhdlType>STD_LOGIC_VECTOR</vhdlType>
+                    <vhdlType>STD_LOGIC</vhdlType>
                 </port>
             </ports>
             <assignments>
@@ -30742,27 +29635,28 @@
             <parameters>
                 <parameterValueMap>
                     <entry>
-                        <key>associatedClock</key>
+                        <key>clockRate</key>
+                        <value>0</value>
                     </entry>
                     <entry>
-                        <key>associatedReset</key>
+                        <key>externallyDriven</key>
+                        <value>false</value>
                     </entry>
                     <entry>
-                        <key>prSafe</key>
-                        <value>false</value>
+                        <key>ptfSchematicName</key>
                     </entry>
                 </parameterValueMap>
             </parameters>
         </interface>
         <interface>
-            <name>clk</name>
-            <type>conduit</type>
+            <name>system_reset</name>
+            <type>reset</type>
             <isStart>false</isStart>
             <ports>
                 <port>
-                    <name>coe_clk_export</name>
-                    <role>export</role>
-                    <direction>Output</direction>
+                    <name>csi_system_reset</name>
+                    <role>reset</role>
+                    <direction>Input</direction>
                     <width>1</width>
                     <lowerBound>0</lowerBound>
                     <vhdlType>STD_LOGIC</vhdlType>
@@ -30775,13 +29669,11 @@
                 <parameterValueMap>
                     <entry>
                         <key>associatedClock</key>
+                        <value>system</value>
                     </entry>
                     <entry>
-                        <key>associatedReset</key>
-                    </entry>
-                    <entry>
-                        <key>prSafe</key>
-                        <value>false</value>
+                        <key>synchronousEdges</key>
+                        <value>DEASSERT</value>
                     </entry>
                 </parameterValueMap>
             </parameters>
@@ -31029,12 +29921,12 @@
             </parameters>
         </interface>
         <interface>
-            <name>read</name>
+            <name>reset</name>
             <type>conduit</type>
             <isStart>false</isStart>
             <ports>
                 <port>
-                    <name>coe_read_export</name>
+                    <name>coe_reset_export</name>
                     <role>export</role>
                     <direction>Output</direction>
                     <width>1</width>
@@ -31061,17 +29953,17 @@
             </parameters>
         </interface>
         <interface>
-            <name>readdata</name>
+            <name>clk</name>
             <type>conduit</type>
             <isStart>false</isStart>
             <ports>
                 <port>
-                    <name>coe_readdata_export</name>
+                    <name>coe_clk_export</name>
                     <role>export</role>
-                    <direction>Input</direction>
-                    <width>32</width>
+                    <direction>Output</direction>
+                    <width>1</width>
                     <lowerBound>0</lowerBound>
-                    <vhdlType>STD_LOGIC_VECTOR</vhdlType>
+                    <vhdlType>STD_LOGIC</vhdlType>
                 </port>
             </ports>
             <assignments>
@@ -31093,17 +29985,17 @@
             </parameters>
         </interface>
         <interface>
-            <name>reset</name>
+            <name>address</name>
             <type>conduit</type>
             <isStart>false</isStart>
             <ports>
                 <port>
-                    <name>coe_reset_export</name>
+                    <name>coe_address_export</name>
                     <role>export</role>
                     <direction>Output</direction>
-                    <width>1</width>
+                    <width>8</width>
                     <lowerBound>0</lowerBound>
-                    <vhdlType>STD_LOGIC</vhdlType>
+                    <vhdlType>STD_LOGIC_VECTOR</vhdlType>
                 </port>
             </ports>
             <assignments>
@@ -31125,14 +30017,14 @@
             </parameters>
         </interface>
         <interface>
-            <name>system</name>
-            <type>clock</type>
+            <name>write</name>
+            <type>conduit</type>
             <isStart>false</isStart>
             <ports>
                 <port>
-                    <name>csi_system_clk</name>
-                    <role>clk</role>
-                    <direction>Input</direction>
+                    <name>coe_write_export</name>
+                    <role>export</role>
+                    <direction>Output</direction>
                     <width>1</width>
                     <lowerBound>0</lowerBound>
                     <vhdlType>STD_LOGIC</vhdlType>
@@ -31144,31 +30036,30 @@
             <parameters>
                 <parameterValueMap>
                     <entry>
-                        <key>clockRate</key>
-                        <value>0</value>
+                        <key>associatedClock</key>
                     </entry>
                     <entry>
-                        <key>externallyDriven</key>
-                        <value>false</value>
+                        <key>associatedReset</key>
                     </entry>
                     <entry>
-                        <key>ptfSchematicName</key>
+                        <key>prSafe</key>
+                        <value>false</value>
                     </entry>
                 </parameterValueMap>
             </parameters>
         </interface>
         <interface>
-            <name>system_reset</name>
-            <type>reset</type>
+            <name>writedata</name>
+            <type>conduit</type>
             <isStart>false</isStart>
             <ports>
                 <port>
-                    <name>csi_system_reset</name>
-                    <role>reset</role>
-                    <direction>Input</direction>
-                    <width>1</width>
+                    <name>coe_writedata_export</name>
+                    <role>export</role>
+                    <direction>Output</direction>
+                    <width>32</width>
                     <lowerBound>0</lowerBound>
-                    <vhdlType>STD_LOGIC</vhdlType>
+                    <vhdlType>STD_LOGIC_VECTOR</vhdlType>
                 </port>
             </ports>
             <assignments>
@@ -31178,24 +30069,26 @@
                 <parameterValueMap>
                     <entry>
                         <key>associatedClock</key>
-                        <value>system</value>
                     </entry>
                     <entry>
-                        <key>synchronousEdges</key>
-                        <value>DEASSERT</value>
+                        <key>associatedReset</key>
+                    </entry>
+                    <entry>
+                        <key>prSafe</key>
+                        <value>false</value>
                     </entry>
                 </parameterValueMap>
             </parameters>
         </interface>
         <interface>
-            <name>waitrequest</name>
+            <name>read</name>
             <type>conduit</type>
             <isStart>false</isStart>
             <ports>
                 <port>
-                    <name>coe_waitrequest_export</name>
+                    <name>coe_read_export</name>
                     <role>export</role>
-                    <direction>Input</direction>
+                    <direction>Output</direction>
                     <width>1</width>
                     <lowerBound>0</lowerBound>
                     <vhdlType>STD_LOGIC</vhdlType>
@@ -31220,17 +30113,17 @@
             </parameters>
         </interface>
         <interface>
-            <name>write</name>
+            <name>readdata</name>
             <type>conduit</type>
             <isStart>false</isStart>
             <ports>
                 <port>
-                    <name>coe_write_export</name>
+                    <name>coe_readdata_export</name>
                     <role>export</role>
-                    <direction>Output</direction>
-                    <width>1</width>
+                    <direction>Input</direction>
+                    <width>32</width>
                     <lowerBound>0</lowerBound>
-                    <vhdlType>STD_LOGIC</vhdlType>
+                    <vhdlType>STD_LOGIC_VECTOR</vhdlType>
                 </port>
             </ports>
             <assignments>
@@ -31252,17 +30145,17 @@
             </parameters>
         </interface>
         <interface>
-            <name>writedata</name>
+            <name>waitrequest</name>
             <type>conduit</type>
             <isStart>false</isStart>
             <ports>
                 <port>
-                    <name>coe_writedata_export</name>
+                    <name>coe_waitrequest_export</name>
                     <role>export</role>
-                    <direction>Output</direction>
-                    <width>32</width>
+                    <direction>Input</direction>
+                    <width>1</width>
                     <lowerBound>0</lowerBound>
-                    <vhdlType>STD_LOGIC_VECTOR</vhdlType>
+                    <vhdlType>STD_LOGIC</vhdlType>
                 </port>
             </ports>
             <assignments>
@@ -31286,30 +30179,30 @@
     </interfaces>
 </boundaryDefinition>]]></parameter>
   <parameter name="generationInfoDefinition"><![CDATA[<generationInfoDefinition>
-    <hdlLibraryName>board_reg_ta2_unb2b_jesd204b</hdlLibraryName>
+    <hdlLibraryName>board_reg_ta2_unb2b_mm_io</hdlLibraryName>
     <fileSets>
         <fileSet>
-            <fileSetName>board_reg_ta2_unb2b_jesd204b</fileSetName>
-            <fileSetFixedName>board_reg_ta2_unb2b_jesd204b</fileSetFixedName>
+            <fileSetName>board_reg_ta2_unb2b_mm_io</fileSetName>
+            <fileSetFixedName>board_reg_ta2_unb2b_mm_io</fileSetFixedName>
             <fileSetKind>QUARTUS_SYNTH</fileSetKind>
             <fileSetFiles/>
         </fileSet>
         <fileSet>
-            <fileSetName>board_reg_ta2_unb2b_jesd204b</fileSetName>
-            <fileSetFixedName>board_reg_ta2_unb2b_jesd204b</fileSetFixedName>
+            <fileSetName>board_reg_ta2_unb2b_mm_io</fileSetName>
+            <fileSetFixedName>board_reg_ta2_unb2b_mm_io</fileSetFixedName>
             <fileSetKind>SIM_VERILOG</fileSetKind>
             <fileSetFiles/>
         </fileSet>
         <fileSet>
-            <fileSetName>board_reg_ta2_unb2b_jesd204b</fileSetName>
-            <fileSetFixedName>board_reg_ta2_unb2b_jesd204b</fileSetFixedName>
+            <fileSetName>board_reg_ta2_unb2b_mm_io</fileSetName>
+            <fileSetFixedName>board_reg_ta2_unb2b_mm_io</fileSetFixedName>
             <fileSetKind>SIM_VHDL</fileSetKind>
             <fileSetFiles/>
         </fileSet>
     </fileSets>
 </generationInfoDefinition>]]></parameter>
   <parameter name="hlsFile" value="" />
-  <parameter name="logicalView">ip/board/board_reg_ta2_unb2b_jesd204b.ip</parameter>
+  <parameter name="logicalView">ip/board/board_reg_ta2_unb2b_mm_io.ip</parameter>
   <parameter name="moduleAssignmentDefinition"><![CDATA[<assignmentDefinition>
     <assignmentValueMap/>
 </assignmentDefinition>]]></parameter>
@@ -37189,7 +36082,7 @@
    start="cpu_0.data_master"
    end="jtag_uart_0.avalon_jtag_slave">
   <parameter name="arbitrationPriority" value="1" />
-  <parameter name="baseAddress" value="0x03c8" />
+  <parameter name="baseAddress" value="0x03b8" />
   <parameter name="defaultConnection" value="false" />
   <parameter name="domainAlias" value="" />
   <parameter name="qsys_mm.burstAdapterImplementation" value="GENERIC_CONVERTER" />
@@ -37329,7 +36222,7 @@
    start="cpu_0.data_master"
    end="pio_pps.mem">
   <parameter name="arbitrationPriority" value="1" />
-  <parameter name="baseAddress" value="0x03c0" />
+  <parameter name="baseAddress" value="0x03b0" />
   <parameter name="defaultConnection" value="false" />
   <parameter name="domainAlias" value="" />
   <parameter name="qsys_mm.burstAdapterImplementation" value="GENERIC_CONVERTER" />
@@ -37409,7 +36302,7 @@
    start="cpu_0.data_master"
    end="reg_dpmm_ctrl.mem">
   <parameter name="arbitrationPriority" value="1" />
-  <parameter name="baseAddress" value="0x03b8" />
+  <parameter name="baseAddress" value="0x03a8" />
   <parameter name="defaultConnection" value="false" />
   <parameter name="domainAlias" value="" />
   <parameter name="qsys_mm.burstAdapterImplementation" value="GENERIC_CONVERTER" />
@@ -37429,7 +36322,7 @@
    start="cpu_0.data_master"
    end="reg_dpmm_data.mem">
   <parameter name="arbitrationPriority" value="1" />
-  <parameter name="baseAddress" value="0x03b0" />
+  <parameter name="baseAddress" value="0x03a0" />
   <parameter name="defaultConnection" value="false" />
   <parameter name="domainAlias" value="" />
   <parameter name="qsys_mm.burstAdapterImplementation" value="GENERIC_CONVERTER" />
@@ -37449,7 +36342,7 @@
    start="cpu_0.data_master"
    end="reg_mmdp_ctrl.mem">
   <parameter name="arbitrationPriority" value="1" />
-  <parameter name="baseAddress" value="0x03a8" />
+  <parameter name="baseAddress" value="0x0398" />
   <parameter name="defaultConnection" value="false" />
   <parameter name="domainAlias" value="" />
   <parameter name="qsys_mm.burstAdapterImplementation" value="GENERIC_CONVERTER" />
@@ -37469,7 +36362,7 @@
    start="cpu_0.data_master"
    end="reg_mmdp_data.mem">
   <parameter name="arbitrationPriority" value="1" />
-  <parameter name="baseAddress" value="0x03a0" />
+  <parameter name="baseAddress" value="0x0390" />
   <parameter name="defaultConnection" value="false" />
   <parameter name="domainAlias" value="" />
   <parameter name="qsys_mm.burstAdapterImplementation" value="GENERIC_CONVERTER" />
@@ -37549,27 +36442,7 @@
    start="cpu_0.data_master"
    end="reg_ta2_unb2b_jesd204b.mem">
   <parameter name="arbitrationPriority" value="1" />
-  <parameter name="baseAddress" value="0x0400" />
-  <parameter name="defaultConnection" value="false" />
-  <parameter name="domainAlias" value="" />
-  <parameter name="qsys_mm.burstAdapterImplementation" value="GENERIC_CONVERTER" />
-  <parameter name="qsys_mm.clockCrossingAdapter" value="HANDSHAKE" />
-  <parameter name="qsys_mm.enableEccProtection" value="FALSE" />
-  <parameter name="qsys_mm.enableInstrumentation" value="FALSE" />
-  <parameter name="qsys_mm.insertDefaultSlave" value="FALSE" />
-  <parameter name="qsys_mm.interconnectResetSource" value="DEFAULT" />
-  <parameter name="qsys_mm.interconnectType" value="STANDARD" />
-  <parameter name="qsys_mm.maxAdditionalLatency" value="0" />
-  <parameter name="qsys_mm.syncResets" value="FALSE" />
-  <parameter name="qsys_mm.widthAdapterImplementation" value="GENERIC_CONVERTER" />
- </connection>
- <connection
-   kind="avalon"
-   version="19.2"
-   start="cpu_0.data_master"
-   end="reg_mmdp_data_1.mem">
-  <parameter name="arbitrationPriority" value="1" />
-  <parameter name="baseAddress" value="0x0398" />
+  <parameter name="baseAddress" value="0x3400" />
   <parameter name="defaultConnection" value="false" />
   <parameter name="domainAlias" value="" />
   <parameter name="qsys_mm.burstAdapterImplementation" value="GENERIC_CONVERTER" />
@@ -37587,9 +36460,9 @@
    kind="avalon"
    version="19.2"
    start="cpu_0.data_master"
-   end="reg_mmdp_ctrl_1.mem">
+   end="reg_ta2_unb2b_mm_io.mem">
   <parameter name="arbitrationPriority" value="1" />
-  <parameter name="baseAddress" value="0x0390" />
+  <parameter name="baseAddress" value="0x0400" />
   <parameter name="defaultConnection" value="false" />
   <parameter name="domainAlias" value="" />
   <parameter name="qsys_mm.burstAdapterImplementation" value="GENERIC_CONVERTER" />
@@ -37871,12 +36744,7 @@
    kind="clock"
    version="19.2"
    start="clk_0.clk"
-   end="reg_mmdp_data_1.system" />
- <connection
-   kind="clock"
-   version="19.2"
-   start="clk_0.clk"
-   end="reg_mmdp_ctrl_1.system" />
+   end="reg_ta2_unb2b_mm_io.system" />
  <connection
    kind="clock"
    version="19.2"
@@ -38044,12 +36912,7 @@
    kind="reset"
    version="19.2"
    start="clk_0.clk_reset"
-   end="reg_mmdp_data_1.system_reset" />
- <connection
-   kind="reset"
-   version="19.2"
-   start="clk_0.clk_reset"
-   end="reg_mmdp_ctrl_1.system_reset" />
+   end="reg_ta2_unb2b_mm_io.system_reset" />
  <connection
    kind="reset"
    version="19.2"
@@ -38174,12 +37037,7 @@
    kind="reset"
    version="19.2"
    start="cpu_0.debug_reset_request"
-   end="reg_mmdp_data_1.system_reset" />
- <connection
-   kind="reset"
-   version="19.2"
-   start="cpu_0.debug_reset_request"
-   end="reg_mmdp_ctrl_1.system_reset" />
+   end="reg_ta2_unb2b_mm_io.system_reset" />
  <connection
    kind="reset"
    version="19.2"
diff --git a/applications/ta2/bsp/hardware/ta2_unb2b_bsp/board_spec.xml b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/board_spec.xml
index 69812e4833dc98fb9cb89b49624748f2bf1e4695..dc120f9fc852c62604488febac88656db81d0fdd 100755
--- a/applications/ta2/bsp/hardware/ta2_unb2b_bsp/board_spec.xml
+++ b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/board_spec.xml
@@ -48,7 +48,9 @@
     <interface name="board" port="kernel_stream_snk_40GbE_ring_1" type="streamsink" width="264" chan_id="kernel_output_40GbE_ring_1"/>
 
     <interface name="board" port="kernel_stream_src_ADC" type="streamsource" width="16" chan_id="kernel_input_ADC"/>
-    <interface name="board" port="kernel_stream_src_mm_io" type="streamsource" width="32" chan_id="kernel_input_mm"/>
+
+    <interface name="board" port="kernel_stream_src_mm_io" type="streamsource" width="72" chan_id="kernel_input_mm"/>
+    <interface name="board" port="kernel_stream_snk_mm_io" type="streamsink" width="32" chan_id="kernel_output_mm"/>
   </channels>
 
   <host>
diff --git a/applications/ta2/bsp/hardware/ta2_unb2b_bsp/flat.qsf b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/flat.qsf
index c3fe092879cf7958ba841ac2ab134539b33b866d..16cfdba084e75552357e1fac655713d8bd096c17 100755
--- a/applications/ta2/bsp/hardware/ta2_unb2b_bsp/flat.qsf
+++ b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/flat.qsf
@@ -1279,17 +1279,19 @@ set_location_assignment PIN_T32 -to MB_II_IO.dqs_n[7]
 set_global_assignment -name SIGNALTAP_FILE stp1.stp
 set_global_assignment -name ENABLE_SIGNALTAP ON
 set_global_assignment -name USE_SIGNALTAP_FILE stp1.stp
+
+
 set_global_assignment -name IP_FILE ip/ddr4/ddr4_ddr4a.ip
 set_global_assignment -name IP_FILE ip/board/board_kernel_ddr4a_bridge.ip
 set_global_assignment -name IP_FILE ip/mem/mem_pipe_stage_ddr4a_dimm.ip
 set_global_assignment -name IP_FILE ip/mem/mem_reset_controller_ddr4a_pipe.ip
+set_global_assignment -name IP_FILE ip/ddr4/ddr4_pipe_stage_ddr4a_dimm_post_4th.ip
 set_global_assignment -name IP_FILE ip/mem/mem_kernel_clk_in.ip
 set_global_assignment -name IP_FILE ip/ddr4/ddr4_clock_bridge_0.ip
+set_global_assignment -name IP_FILE ip/mem/mem_global_reset_in.ip
 set_global_assignment -name IP_FILE ip/board/board_kclk_global.ip
 set_global_assignment -name IP_FILE ip/mem/mem_reset_controller_ddr4a.ip
-set_global_assignment -name IP_FILE ip/board/reg_mmdp_ctrl_1.ip
-set_global_assignment -name IP_FILE ip/ddr4/ddr4_pipe_stage_ddr4a_dimm_post_4th.ip
-set_global_assignment -name IP_FILE ip/mem/mem_global_reset_in.ip
 set_global_assignment -name IP_FILE ip/ddr4/ddr4_reset_bridge_0.ip
-set_global_assignment -name IP_FILE ip/board/reg_mmdp_data_1.ip
 set_global_assignment -name IP_FILE ip/mem/mem_clock_cross_kernel_to_ddr4a.ip
+set_global_assignment -name IP_FILE ip/board/board_reg_ta2_unb2b_mm_io.ip
+set_global_assignment -name QSYS_FILE mem.qsys
diff --git a/applications/ta2/bsp/hardware/ta2_unb2b_bsp/hdllib.cfg b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/hdllib.cfg
index 26ca021eb672156b79fb414bff3718581b1e726f..a78a5c77389ed7fc19c552470e057bc0db344ffb 100644
--- a/applications/ta2/bsp/hardware/ta2_unb2b_bsp/hdllib.cfg
+++ b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/hdllib.cfg
@@ -1,6 +1,6 @@
 hdl_lib_name = ta2_unb2b_bsp
 hdl_library_clause_name = ta2_unb2b_bsp_lib
-hdl_lib_uses_synth = common technology dp unb2b_board ta2_unb2b_40GbE ta2_unb2b_10GbE ta2_unb2b_1GbE_mc ta2_unb2b_jesd204b ta2_unb2b_mm_io ta2_unb2b_ddr 
+hdl_lib_uses_synth = common technology dp unb2b_board ta2_unb2b_40GbE ta2_unb2b_10GbE ta2_unb2b_1GbE ta2_unb2b_jesd204b ta2_unb2b_mm_io ta2_unb2b_ddr 
 hdl_lib_uses_sim = 
 hdl_lib_technology = ip_arria10_e1sg
 hdl_lib_include_ip = 
diff --git a/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_cpu_0.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_cpu_0.ip
index 5497c27568412b96a02ccad935f07481013b5a72..81565d7d96e5165bce22f8403d9defb2713928bc 100644
--- a/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_cpu_0.ip
+++ b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_cpu_0.ip
@@ -2302,7 +2302,7 @@
         <ipxact:parameter parameterId="dataSlaveMapParam" type="string">
           <ipxact:name>dataSlaveMapParam</ipxact:name>
           <ipxact:displayName>dataSlaveMapParam</ipxact:displayName>
-          <ipxact:value>&lt;address-map&gt;&lt;slave name='pio_system_info.mem' start='0x0' end='0x80' datawidth='32' /&gt;&lt;slave name='avs_eth_0.mms_reg' start='0x80' end='0xC0' datawidth='32' /&gt;&lt;slave name='reg_fpga_voltage_sens.mem' start='0xC0' end='0x100' datawidth='32' /&gt;&lt;slave name='reg_unb_pmbus.mem' start='0x100' end='0x200' datawidth='32' /&gt;&lt;slave name='reg_unb_sens.mem' start='0x200' end='0x300' datawidth='32' /&gt;&lt;slave name='timer_0.s1' start='0x300' end='0x320' datawidth='16' /&gt;&lt;slave name='reg_fpga_temp_sens.mem' start='0x320' end='0x340' datawidth='32' /&gt;&lt;slave name='reg_epcs.mem' start='0x340' end='0x360' datawidth='32' /&gt;&lt;slave name='reg_remu.mem' start='0x360' end='0x380' datawidth='32' /&gt;&lt;slave name='pio_wdi.s1' start='0x380' end='0x390' datawidth='32' /&gt;&lt;slave name='reg_mmdp_ctrl_1.mem' start='0x390' end='0x398' datawidth='32' /&gt;&lt;slave name='reg_mmdp_data_1.mem' start='0x398' end='0x3A0' datawidth='32' /&gt;&lt;slave name='reg_mmdp_data.mem' start='0x3A0' end='0x3A8' datawidth='32' /&gt;&lt;slave name='reg_mmdp_ctrl.mem' start='0x3A8' end='0x3B0' datawidth='32' /&gt;&lt;slave name='reg_dpmm_data.mem' start='0x3B0' end='0x3B8' datawidth='32' /&gt;&lt;slave name='reg_dpmm_ctrl.mem' start='0x3B8' end='0x3C0' datawidth='32' /&gt;&lt;slave name='pio_pps.mem' start='0x3C0' end='0x3C8' datawidth='32' /&gt;&lt;slave name='jtag_uart_0.avalon_jtag_slave' start='0x3C8' end='0x3D0' datawidth='32' /&gt;&lt;slave name='reg_ta2_unb2b_jesd204b.mem' start='0x400' end='0x800' datawidth='32' /&gt;&lt;slave name='rom_system_info.mem' start='0x1000' end='0x2000' datawidth='32' /&gt;&lt;slave name='avs_eth_0.mms_tse' start='0x2000' end='0x3000' datawidth='32' /&gt;&lt;slave name='reg_wdi.mem' start='0x3000' end='0x3008' datawidth='32' /&gt;&lt;slave name='cpu_0.debug_mem_slave' start='0x3800' end='0x4000' datawidth='32' /&gt;&lt;slave name='kernel_interface.ctrl' start='0x4000' end='0x8000' datawidth='32' /&gt;&lt;slave name='avs_eth_0.mms_ram' start='0x8000' end='0x9000' datawidth='32' /&gt;&lt;slave name='kernel_clk_gen.ctrl' start='0x9000' end='0xA000' datawidth='32' /&gt;&lt;slave name='onchip_memory2_0.s1' start='0x20000' end='0x40000' datawidth='32' /&gt;&lt;/address-map&gt;</ipxact:value>
+          <ipxact:value>&lt;address-map&gt;&lt;slave name='pio_system_info.mem' start='0x0' end='0x80' datawidth='32' /&gt;&lt;slave name='avs_eth_0.mms_reg' start='0x80' end='0xC0' datawidth='32' /&gt;&lt;slave name='reg_fpga_voltage_sens.mem' start='0xC0' end='0x100' datawidth='32' /&gt;&lt;slave name='reg_unb_pmbus.mem' start='0x100' end='0x200' datawidth='32' /&gt;&lt;slave name='reg_unb_sens.mem' start='0x200' end='0x300' datawidth='32' /&gt;&lt;slave name='timer_0.s1' start='0x300' end='0x320' datawidth='16' /&gt;&lt;slave name='reg_fpga_temp_sens.mem' start='0x320' end='0x340' datawidth='32' /&gt;&lt;slave name='reg_epcs.mem' start='0x340' end='0x360' datawidth='32' /&gt;&lt;slave name='reg_remu.mem' start='0x360' end='0x380' datawidth='32' /&gt;&lt;slave name='pio_wdi.s1' start='0x380' end='0x390' datawidth='32' /&gt;&lt;slave name='reg_mmdp_data.mem' start='0x390' end='0x398' datawidth='32' /&gt;&lt;slave name='reg_mmdp_ctrl.mem' start='0x398' end='0x3A0' datawidth='32' /&gt;&lt;slave name='reg_dpmm_data.mem' start='0x3A0' end='0x3A8' datawidth='32' /&gt;&lt;slave name='reg_dpmm_ctrl.mem' start='0x3A8' end='0x3B0' datawidth='32' /&gt;&lt;slave name='pio_pps.mem' start='0x3B0' end='0x3B8' datawidth='32' /&gt;&lt;slave name='jtag_uart_0.avalon_jtag_slave' start='0x3B8' end='0x3C0' datawidth='32' /&gt;&lt;slave name='reg_ta2_unb2b_mm_io.mem' start='0x400' end='0x800' datawidth='32' /&gt;&lt;slave name='rom_system_info.mem' start='0x1000' end='0x2000' datawidth='32' /&gt;&lt;slave name='avs_eth_0.mms_tse' start='0x2000' end='0x3000' datawidth='32' /&gt;&lt;slave name='reg_wdi.mem' start='0x3000' end='0x3008' datawidth='32' /&gt;&lt;slave name='reg_ta2_unb2b_jesd204b.mem' start='0x3400' end='0x3800' datawidth='32' /&gt;&lt;slave name='cpu_0.debug_mem_slave' start='0x3800' end='0x4000' datawidth='32' /&gt;&lt;slave name='kernel_interface.ctrl' start='0x4000' end='0x8000' datawidth='32' /&gt;&lt;slave name='avs_eth_0.mms_ram' start='0x8000' end='0x9000' datawidth='32' /&gt;&lt;slave name='kernel_clk_gen.ctrl' start='0x9000' end='0xA000' datawidth='32' /&gt;&lt;slave name='onchip_memory2_0.s1' start='0x20000' end='0x40000' datawidth='32' /&gt;&lt;/address-map&gt;</ipxact:value>
         </ipxact:parameter>
         <ipxact:parameter parameterId="tightlyCoupledDataMaster0MapParam" type="string">
           <ipxact:name>tightlyCoupledDataMaster0MapParam</ipxact:name>
@@ -3589,7 +3589,7 @@
                 &lt;suppliedSystemInfos&gt;
                     &lt;entry&gt;
                         &lt;key&gt;ADDRESS_MAP&lt;/key&gt;
-                        &lt;value&gt;&amp;lt;address-map&amp;gt;&amp;lt;slave name='pio_system_info.mem' start='0x0' end='0x80' datawidth='32' /&amp;gt;&amp;lt;slave name='avs_eth_0.mms_reg' start='0x80' end='0xC0' datawidth='32' /&amp;gt;&amp;lt;slave name='reg_fpga_voltage_sens.mem' start='0xC0' end='0x100' datawidth='32' /&amp;gt;&amp;lt;slave name='reg_unb_pmbus.mem' start='0x100' end='0x200' datawidth='32' /&amp;gt;&amp;lt;slave name='reg_unb_sens.mem' start='0x200' end='0x300' datawidth='32' /&amp;gt;&amp;lt;slave name='timer_0.s1' start='0x300' end='0x320' datawidth='16' /&amp;gt;&amp;lt;slave name='reg_fpga_temp_sens.mem' start='0x320' end='0x340' datawidth='32' /&amp;gt;&amp;lt;slave name='reg_epcs.mem' start='0x340' end='0x360' datawidth='32' /&amp;gt;&amp;lt;slave name='reg_remu.mem' start='0x360' end='0x380' datawidth='32' /&amp;gt;&amp;lt;slave name='pio_wdi.s1' start='0x380' end='0x390' datawidth='32' /&amp;gt;&amp;lt;slave name='reg_mmdp_ctrl_1.mem' start='0x390' end='0x398' datawidth='32' /&amp;gt;&amp;lt;slave name='reg_mmdp_data_1.mem' start='0x398' end='0x3A0' datawidth='32' /&amp;gt;&amp;lt;slave name='reg_mmdp_data.mem' start='0x3A0' end='0x3A8' datawidth='32' /&amp;gt;&amp;lt;slave name='reg_mmdp_ctrl.mem' start='0x3A8' end='0x3B0' datawidth='32' /&amp;gt;&amp;lt;slave name='reg_dpmm_data.mem' start='0x3B0' end='0x3B8' datawidth='32' /&amp;gt;&amp;lt;slave name='reg_dpmm_ctrl.mem' start='0x3B8' end='0x3C0' datawidth='32' /&amp;gt;&amp;lt;slave name='pio_pps.mem' start='0x3C0' end='0x3C8' datawidth='32' /&amp;gt;&amp;lt;slave name='jtag_uart_0.avalon_jtag_slave' start='0x3C8' end='0x3D0' datawidth='32' /&amp;gt;&amp;lt;slave name='reg_ta2_unb2b_jesd204b.mem' start='0x400' end='0x800' datawidth='32' /&amp;gt;&amp;lt;slave name='rom_system_info.mem' start='0x1000' end='0x2000' datawidth='32' /&amp;gt;&amp;lt;slave name='avs_eth_0.mms_tse' start='0x2000' end='0x3000' datawidth='32' /&amp;gt;&amp;lt;slave name='reg_wdi.mem' start='0x3000' end='0x3008' datawidth='32' /&amp;gt;&amp;lt;slave name='cpu_0.debug_mem_slave' start='0x3800' end='0x4000' datawidth='32' /&amp;gt;&amp;lt;slave name='kernel_interface.ctrl' start='0x4000' end='0x8000' datawidth='32' /&amp;gt;&amp;lt;slave name='avs_eth_0.mms_ram' start='0x8000' end='0x9000' datawidth='32' /&amp;gt;&amp;lt;slave name='kernel_clk_gen.ctrl' start='0x9000' end='0xA000' datawidth='32' /&amp;gt;&amp;lt;slave name='onchip_memory2_0.s1' start='0x20000' end='0x40000' datawidth='32' /&amp;gt;&amp;lt;/address-map&amp;gt;&lt;/value&gt;
+                        &lt;value&gt;&amp;lt;address-map&amp;gt;&amp;lt;slave name='pio_system_info.mem' start='0x0' end='0x80' datawidth='32' /&amp;gt;&amp;lt;slave name='avs_eth_0.mms_reg' start='0x80' end='0xC0' datawidth='32' /&amp;gt;&amp;lt;slave name='reg_fpga_voltage_sens.mem' start='0xC0' end='0x100' datawidth='32' /&amp;gt;&amp;lt;slave name='reg_unb_pmbus.mem' start='0x100' end='0x200' datawidth='32' /&amp;gt;&amp;lt;slave name='reg_unb_sens.mem' start='0x200' end='0x300' datawidth='32' /&amp;gt;&amp;lt;slave name='timer_0.s1' start='0x300' end='0x320' datawidth='16' /&amp;gt;&amp;lt;slave name='reg_fpga_temp_sens.mem' start='0x320' end='0x340' datawidth='32' /&amp;gt;&amp;lt;slave name='reg_epcs.mem' start='0x340' end='0x360' datawidth='32' /&amp;gt;&amp;lt;slave name='reg_remu.mem' start='0x360' end='0x380' datawidth='32' /&amp;gt;&amp;lt;slave name='pio_wdi.s1' start='0x380' end='0x390' datawidth='32' /&amp;gt;&amp;lt;slave name='reg_mmdp_data.mem' start='0x390' end='0x398' datawidth='32' /&amp;gt;&amp;lt;slave name='reg_mmdp_ctrl.mem' start='0x398' end='0x3A0' datawidth='32' /&amp;gt;&amp;lt;slave name='reg_dpmm_data.mem' start='0x3A0' end='0x3A8' datawidth='32' /&amp;gt;&amp;lt;slave name='reg_dpmm_ctrl.mem' start='0x3A8' end='0x3B0' datawidth='32' /&amp;gt;&amp;lt;slave name='pio_pps.mem' start='0x3B0' end='0x3B8' datawidth='32' /&amp;gt;&amp;lt;slave name='jtag_uart_0.avalon_jtag_slave' start='0x3B8' end='0x3C0' datawidth='32' /&amp;gt;&amp;lt;slave name='reg_ta2_unb2b_mm_io.mem' start='0x400' end='0x800' datawidth='32' /&amp;gt;&amp;lt;slave name='rom_system_info.mem' start='0x1000' end='0x2000' datawidth='32' /&amp;gt;&amp;lt;slave name='avs_eth_0.mms_tse' start='0x2000' end='0x3000' datawidth='32' /&amp;gt;&amp;lt;slave name='reg_wdi.mem' start='0x3000' end='0x3008' datawidth='32' /&amp;gt;&amp;lt;slave name='reg_ta2_unb2b_jesd204b.mem' start='0x3400' end='0x3800' datawidth='32' /&amp;gt;&amp;lt;slave name='cpu_0.debug_mem_slave' start='0x3800' end='0x4000' datawidth='32' /&amp;gt;&amp;lt;slave name='kernel_interface.ctrl' start='0x4000' end='0x8000' datawidth='32' /&amp;gt;&amp;lt;slave name='avs_eth_0.mms_ram' start='0x8000' end='0x9000' datawidth='32' /&amp;gt;&amp;lt;slave name='kernel_clk_gen.ctrl' start='0x9000' end='0xA000' datawidth='32' /&amp;gt;&amp;lt;slave name='onchip_memory2_0.s1' start='0x20000' end='0x40000' datawidth='32' /&amp;gt;&amp;lt;/address-map&amp;gt;&lt;/value&gt;
                     &lt;/entry&gt;
                     &lt;entry&gt;
                         &lt;key&gt;ADDRESS_WIDTH&lt;/key&gt;
diff --git a/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/reg_mmdp_ctrl_1.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_reg_ta2_unb2b_mm_io.ip
similarity index 90%
rename from applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/reg_mmdp_ctrl_1.ip
rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_reg_ta2_unb2b_mm_io.ip
index 1a88dc850a2edc6ea73b7e0e3c9e79fd4c57a463..dd249ee85a1ebf948420454187f0b3e536ef4af4 100644
--- a/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/reg_mmdp_ctrl_1.ip
+++ b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_reg_ta2_unb2b_mm_io.ip
@@ -1,8 +1,8 @@
 <?xml version="1.0" ?>
 <ipxact:component xmlns:altera="http://www.altera.com/XMLSchema/IPXact2014/extensions" xmlns:ipxact="http://www.accellera.org/XMLSchema/IPXACT/1685-2014">
   <ipxact:vendor>ASTRON</ipxact:vendor>
-  <ipxact:library>reg_mmdp_ctrl_1</ipxact:library>
-  <ipxact:name>reg_mmdp_ctrl_1</ipxact:name>
+  <ipxact:library>board_reg_ta2_unb2b_mm_io</ipxact:library>
+  <ipxact:name>board_reg_ta2_unb2b_mm_io</ipxact:name>
   <ipxact:version>1.0</ipxact:version>
   <ipxact:busInterfaces>
     <ipxact:busInterface>
@@ -121,6 +121,14 @@
                 <ipxact:name>avs_mem_readdata</ipxact:name>
               </ipxact:physicalPort>
             </ipxact:portMap>
+            <ipxact:portMap>
+              <ipxact:logicalPort>
+                <ipxact:name>waitrequest</ipxact:name>
+              </ipxact:logicalPort>
+              <ipxact:physicalPort>
+                <ipxact:name>avs_mem_waitrequest</ipxact:name>
+              </ipxact:physicalPort>
+            </ipxact:portMap>
           </ipxact:portMaps>
         </ipxact:abstractionType>
       </ipxact:abstractionTypes>
@@ -139,7 +147,7 @@
         <ipxact:parameter parameterId="addressSpan" type="string">
           <ipxact:name>addressSpan</ipxact:name>
           <ipxact:displayName>Address span</ipxact:displayName>
-          <ipxact:value>8</ipxact:value>
+          <ipxact:value>1024</ipxact:value>
         </ipxact:parameter>
         <ipxact:parameter parameterId="addressUnits" type="string">
           <ipxact:name>addressUnits</ipxact:name>
@@ -269,17 +277,17 @@
         <ipxact:parameter parameterId="readLatency" type="int">
           <ipxact:name>readLatency</ipxact:name>
           <ipxact:displayName>Read latency</ipxact:displayName>
-          <ipxact:value>1</ipxact:value>
+          <ipxact:value>0</ipxact:value>
         </ipxact:parameter>
         <ipxact:parameter parameterId="readWaitStates" type="int">
           <ipxact:name>readWaitStates</ipxact:name>
           <ipxact:displayName>Read wait states</ipxact:displayName>
-          <ipxact:value>0</ipxact:value>
+          <ipxact:value>1</ipxact:value>
         </ipxact:parameter>
         <ipxact:parameter parameterId="readWaitTime" type="int">
           <ipxact:name>readWaitTime</ipxact:name>
           <ipxact:displayName>Read wait</ipxact:displayName>
-          <ipxact:value>0</ipxact:value>
+          <ipxact:value>1</ipxact:value>
         </ipxact:parameter>
         <ipxact:parameter parameterId="registerIncomingSignals" type="bit">
           <ipxact:name>registerIncomingSignals</ipxact:name>
@@ -614,6 +622,43 @@
         </ipxact:parameter>
       </ipxact:parameters>
     </ipxact:busInterface>
+    <ipxact:busInterface>
+      <ipxact:name>waitrequest</ipxact:name>
+      <ipxact:busType vendor="altera" library="altera" name="conduit" version="19.2"></ipxact:busType>
+      <ipxact:abstractionTypes>
+        <ipxact:abstractionType>
+          <ipxact:abstractionRef vendor="altera" library="altera" name="conduit" version="19.2"></ipxact:abstractionRef>
+          <ipxact:portMaps>
+            <ipxact:portMap>
+              <ipxact:logicalPort>
+                <ipxact:name>export</ipxact:name>
+              </ipxact:logicalPort>
+              <ipxact:physicalPort>
+                <ipxact:name>coe_waitrequest_export</ipxact:name>
+              </ipxact:physicalPort>
+            </ipxact:portMap>
+          </ipxact:portMaps>
+        </ipxact:abstractionType>
+      </ipxact:abstractionTypes>
+      <ipxact:slave></ipxact:slave>
+      <ipxact:parameters>
+        <ipxact:parameter parameterId="associatedClock" type="string">
+          <ipxact:name>associatedClock</ipxact:name>
+          <ipxact:displayName>associatedClock</ipxact:displayName>
+          <ipxact:value></ipxact:value>
+        </ipxact:parameter>
+        <ipxact:parameter parameterId="associatedReset" type="string">
+          <ipxact:name>associatedReset</ipxact:name>
+          <ipxact:displayName>associatedReset</ipxact:displayName>
+          <ipxact:value></ipxact:value>
+        </ipxact:parameter>
+        <ipxact:parameter parameterId="prSafe" type="bit">
+          <ipxact:name>prSafe</ipxact:name>
+          <ipxact:displayName>Partial Reconfiguration Safe</ipxact:displayName>
+          <ipxact:value>false</ipxact:value>
+        </ipxact:parameter>
+      </ipxact:parameters>
+    </ipxact:busInterface>
   </ipxact:busInterfaces>
   <ipxact:model>
     <ipxact:views>
@@ -626,7 +671,7 @@
     <ipxact:instantiations>
       <ipxact:componentInstantiation>
         <ipxact:name>QUARTUS_SYNTH</ipxact:name>
-        <ipxact:moduleName>avs_common_mm</ipxact:moduleName>
+        <ipxact:moduleName>avs_common_mm_readlatency0</ipxact:moduleName>
         <ipxact:fileSetRef>
           <ipxact:localName>QUARTUS_SYNTH</ipxact:localName>
         </ipxact:fileSetRef>
@@ -664,7 +709,12 @@
         <ipxact:name>avs_mem_address</ipxact:name>
         <ipxact:wire>
           <ipxact:direction>in</ipxact:direction>
-          <ipxact:vectors></ipxact:vectors>
+          <ipxact:vectors>
+            <ipxact:vector>
+              <ipxact:left>0</ipxact:left>
+              <ipxact:right>7</ipxact:right>
+            </ipxact:vector>
+          </ipxact:vectors>
           <ipxact:wireTypeDefs>
             <ipxact:wireTypeDef>
               <ipxact:typeName>STD_LOGIC_VECTOR</ipxact:typeName>
@@ -735,6 +785,19 @@
           </ipxact:wireTypeDefs>
         </ipxact:wire>
       </ipxact:port>
+      <ipxact:port>
+        <ipxact:name>avs_mem_waitrequest</ipxact:name>
+        <ipxact:wire>
+          <ipxact:direction>out</ipxact:direction>
+          <ipxact:vectors></ipxact:vectors>
+          <ipxact:wireTypeDefs>
+            <ipxact:wireTypeDef>
+              <ipxact:typeName>STD_LOGIC</ipxact:typeName>
+              <ipxact:viewRef>QUARTUS_SYNTH</ipxact:viewRef>
+            </ipxact:wireTypeDef>
+          </ipxact:wireTypeDefs>
+        </ipxact:wire>
+      </ipxact:port>
       <ipxact:port>
         <ipxact:name>coe_reset_export</ipxact:name>
         <ipxact:wire>
@@ -765,7 +828,12 @@
         <ipxact:name>coe_address_export</ipxact:name>
         <ipxact:wire>
           <ipxact:direction>out</ipxact:direction>
-          <ipxact:vectors></ipxact:vectors>
+          <ipxact:vectors>
+            <ipxact:vector>
+              <ipxact:left>0</ipxact:left>
+              <ipxact:right>7</ipxact:right>
+            </ipxact:vector>
+          </ipxact:vectors>
           <ipxact:wireTypeDefs>
             <ipxact:wireTypeDef>
               <ipxact:typeName>STD_LOGIC_VECTOR</ipxact:typeName>
@@ -836,13 +904,26 @@
           </ipxact:wireTypeDefs>
         </ipxact:wire>
       </ipxact:port>
+      <ipxact:port>
+        <ipxact:name>coe_waitrequest_export</ipxact:name>
+        <ipxact:wire>
+          <ipxact:direction>in</ipxact:direction>
+          <ipxact:vectors></ipxact:vectors>
+          <ipxact:wireTypeDefs>
+            <ipxact:wireTypeDef>
+              <ipxact:typeName>STD_LOGIC</ipxact:typeName>
+              <ipxact:viewRef>QUARTUS_SYNTH</ipxact:viewRef>
+            </ipxact:wireTypeDef>
+          </ipxact:wireTypeDefs>
+        </ipxact:wire>
+      </ipxact:port>
     </ipxact:ports>
   </ipxact:model>
   <ipxact:vendorExtensions>
     <altera:entity_info>
       <ipxact:vendor>ASTRON</ipxact:vendor>
-      <ipxact:library>reg_mmdp_ctrl_1</ipxact:library>
-      <ipxact:name>avs_common_mm</ipxact:name>
+      <ipxact:library>board_reg_ta2_unb2b_mm_io</ipxact:library>
+      <ipxact:name>avs_common_mm_readlatency0</ipxact:name>
       <ipxact:version>1.0</ipxact:version>
     </altera:entity_info>
     <altera:altera_module_parameters>
@@ -850,7 +931,7 @@
         <ipxact:parameter parameterId="g_adr_w" type="int">
           <ipxact:name>g_adr_w</ipxact:name>
           <ipxact:displayName>g_adr_w</ipxact:displayName>
-          <ipxact:value>1</ipxact:value>
+          <ipxact:value>8</ipxact:value>
         </ipxact:parameter>
         <ipxact:parameter parameterId="g_dat_w" type="int">
           <ipxact:name>g_dat_w</ipxact:name>
@@ -899,7 +980,7 @@
          type = "String";
       }
    }
-   element reg_mmdp_ctrl_1
+   element board_reg_ta2_unb2b_mm_io
    {
    }
 }
@@ -908,7 +989,7 @@
         <ipxact:parameter parameterId="hideFromIPCatalog" type="bit">
           <ipxact:name>hideFromIPCatalog</ipxact:name>
           <ipxact:displayName>Hide from IP Catalog</ipxact:displayName>
-          <ipxact:value>true</ipxact:value>
+          <ipxact:value>false</ipxact:value>
         </ipxact:parameter>
         <ipxact:parameter parameterId="lockedInterfaceDefinition" type="string">
           <ipxact:name>lockedInterfaceDefinition</ipxact:name>
@@ -987,7 +1068,7 @@
                     &lt;name&gt;avs_mem_address&lt;/name&gt;
                     &lt;role&gt;address&lt;/role&gt;
                     &lt;direction&gt;Input&lt;/direction&gt;
-                    &lt;width&gt;1&lt;/width&gt;
+                    &lt;width&gt;8&lt;/width&gt;
                     &lt;lowerBound&gt;0&lt;/lowerBound&gt;
                     &lt;vhdlType&gt;STD_LOGIC_VECTOR&lt;/vhdlType&gt;
                 &lt;/port&gt;
@@ -1023,6 +1104,14 @@
                     &lt;lowerBound&gt;0&lt;/lowerBound&gt;
                     &lt;vhdlType&gt;STD_LOGIC_VECTOR&lt;/vhdlType&gt;
                 &lt;/port&gt;
+                &lt;port&gt;
+                    &lt;name&gt;avs_mem_waitrequest&lt;/name&gt;
+                    &lt;role&gt;waitrequest&lt;/role&gt;
+                    &lt;direction&gt;Output&lt;/direction&gt;
+                    &lt;width&gt;1&lt;/width&gt;
+                    &lt;lowerBound&gt;0&lt;/lowerBound&gt;
+                    &lt;vhdlType&gt;STD_LOGIC&lt;/vhdlType&gt;
+                &lt;/port&gt;
             &lt;/ports&gt;
             &lt;assignments&gt;
                 &lt;assignmentValueMap&gt;
@@ -1056,7 +1145,7 @@
                     &lt;/entry&gt;
                     &lt;entry&gt;
                         &lt;key&gt;addressSpan&lt;/key&gt;
-                        &lt;value&gt;8&lt;/value&gt;
+                        &lt;value&gt;1024&lt;/value&gt;
                     &lt;/entry&gt;
                     &lt;entry&gt;
                         &lt;key&gt;addressUnits&lt;/key&gt;
@@ -1159,15 +1248,15 @@
                     &lt;/entry&gt;
                     &lt;entry&gt;
                         &lt;key&gt;readLatency&lt;/key&gt;
-                        &lt;value&gt;1&lt;/value&gt;
+                        &lt;value&gt;0&lt;/value&gt;
                     &lt;/entry&gt;
                     &lt;entry&gt;
                         &lt;key&gt;readWaitStates&lt;/key&gt;
-                        &lt;value&gt;0&lt;/value&gt;
+                        &lt;value&gt;1&lt;/value&gt;
                     &lt;/entry&gt;
                     &lt;entry&gt;
                         &lt;key&gt;readWaitTime&lt;/key&gt;
-                        &lt;value&gt;0&lt;/value&gt;
+                        &lt;value&gt;1&lt;/value&gt;
                     &lt;/entry&gt;
                     &lt;entry&gt;
                         &lt;key&gt;registerIncomingSignals&lt;/key&gt;
@@ -1285,7 +1374,7 @@
                     &lt;name&gt;coe_address_export&lt;/name&gt;
                     &lt;role&gt;export&lt;/role&gt;
                     &lt;direction&gt;Output&lt;/direction&gt;
-                    &lt;width&gt;1&lt;/width&gt;
+                    &lt;width&gt;8&lt;/width&gt;
                     &lt;lowerBound&gt;0&lt;/lowerBound&gt;
                     &lt;vhdlType&gt;STD_LOGIC_VECTOR&lt;/vhdlType&gt;
                 &lt;/port&gt;
@@ -1436,6 +1525,38 @@
                 &lt;/parameterValueMap&gt;
             &lt;/parameters&gt;
         &lt;/interface&gt;
+        &lt;interface&gt;
+            &lt;name&gt;waitrequest&lt;/name&gt;
+            &lt;type&gt;conduit&lt;/type&gt;
+            &lt;isStart&gt;false&lt;/isStart&gt;
+            &lt;ports&gt;
+                &lt;port&gt;
+                    &lt;name&gt;coe_waitrequest_export&lt;/name&gt;
+                    &lt;role&gt;export&lt;/role&gt;
+                    &lt;direction&gt;Input&lt;/direction&gt;
+                    &lt;width&gt;1&lt;/width&gt;
+                    &lt;lowerBound&gt;0&lt;/lowerBound&gt;
+                    &lt;vhdlType&gt;STD_LOGIC&lt;/vhdlType&gt;
+                &lt;/port&gt;
+            &lt;/ports&gt;
+            &lt;assignments&gt;
+                &lt;assignmentValueMap/&gt;
+            &lt;/assignments&gt;
+            &lt;parameters&gt;
+                &lt;parameterValueMap&gt;
+                    &lt;entry&gt;
+                        &lt;key&gt;associatedClock&lt;/key&gt;
+                    &lt;/entry&gt;
+                    &lt;entry&gt;
+                        &lt;key&gt;associatedReset&lt;/key&gt;
+                    &lt;/entry&gt;
+                    &lt;entry&gt;
+                        &lt;key&gt;prSafe&lt;/key&gt;
+                        &lt;value&gt;false&lt;/value&gt;
+                    &lt;/entry&gt;
+                &lt;/parameterValueMap&gt;
+            &lt;/parameters&gt;
+        &lt;/interface&gt;
     &lt;/interfaces&gt;
 &lt;/boundaryDefinition&gt;</ipxact:value>
         </ipxact:parameter>
@@ -1452,11 +1573,11 @@
                 &lt;consumedSystemInfos&gt;
                     &lt;entry&gt;
                         &lt;key&gt;ADDRESS_MAP&lt;/key&gt;
-                        &lt;value&gt;&amp;lt;address-map&amp;gt;&amp;lt;slave name='mem' start='0x0' end='0x8' datawidth='32' /&amp;gt;&amp;lt;/address-map&amp;gt;&lt;/value&gt;
+                        &lt;value&gt;&amp;lt;address-map&amp;gt;&amp;lt;slave name='mem' start='0x0' end='0x400' datawidth='32' /&amp;gt;&amp;lt;/address-map&amp;gt;&lt;/value&gt;
                     &lt;/entry&gt;
                     &lt;entry&gt;
                         &lt;key&gt;ADDRESS_WIDTH&lt;/key&gt;
-                        &lt;value&gt;3&lt;/value&gt;
+                        &lt;value&gt;10&lt;/value&gt;
                     &lt;/entry&gt;
                     &lt;entry&gt;
                         &lt;key&gt;MAX_SLAVE_DATA_WIDTH&lt;/key&gt;
@@ -1484,38 +1605,42 @@
       </ipxact:parameters>
     </altera:altera_system_parameters>
     <altera:altera_interface_boundary>
-      <altera:interface_mapping altera:name="address" altera:internal="reg_mmdp_ctrl_1.address" altera:type="conduit" altera:dir="end">
+      <altera:interface_mapping altera:name="address" altera:internal="board_reg_ta2_unb2b_mm_io.address" altera:type="conduit" altera:dir="end">
         <altera:port_mapping altera:name="coe_address_export" altera:internal="coe_address_export"></altera:port_mapping>
       </altera:interface_mapping>
-      <altera:interface_mapping altera:name="clk" altera:internal="reg_mmdp_ctrl_1.clk" altera:type="conduit" altera:dir="end">
+      <altera:interface_mapping altera:name="clk" altera:internal="board_reg_ta2_unb2b_mm_io.clk" altera:type="conduit" altera:dir="end">
         <altera:port_mapping altera:name="coe_clk_export" altera:internal="coe_clk_export"></altera:port_mapping>
       </altera:interface_mapping>
-      <altera:interface_mapping altera:name="mem" altera:internal="reg_mmdp_ctrl_1.mem" altera:type="avalon" altera:dir="end">
+      <altera:interface_mapping altera:name="mem" altera:internal="board_reg_ta2_unb2b_mm_io.mem" altera:type="avalon" altera:dir="end">
         <altera:port_mapping altera:name="avs_mem_address" altera:internal="avs_mem_address"></altera:port_mapping>
         <altera:port_mapping altera:name="avs_mem_read" altera:internal="avs_mem_read"></altera:port_mapping>
         <altera:port_mapping altera:name="avs_mem_readdata" altera:internal="avs_mem_readdata"></altera:port_mapping>
+        <altera:port_mapping altera:name="avs_mem_waitrequest" altera:internal="avs_mem_waitrequest"></altera:port_mapping>
         <altera:port_mapping altera:name="avs_mem_write" altera:internal="avs_mem_write"></altera:port_mapping>
         <altera:port_mapping altera:name="avs_mem_writedata" altera:internal="avs_mem_writedata"></altera:port_mapping>
       </altera:interface_mapping>
-      <altera:interface_mapping altera:name="read" altera:internal="reg_mmdp_ctrl_1.read" altera:type="conduit" altera:dir="end">
+      <altera:interface_mapping altera:name="read" altera:internal="board_reg_ta2_unb2b_mm_io.read" altera:type="conduit" altera:dir="end">
         <altera:port_mapping altera:name="coe_read_export" altera:internal="coe_read_export"></altera:port_mapping>
       </altera:interface_mapping>
-      <altera:interface_mapping altera:name="readdata" altera:internal="reg_mmdp_ctrl_1.readdata" altera:type="conduit" altera:dir="end">
+      <altera:interface_mapping altera:name="readdata" altera:internal="board_reg_ta2_unb2b_mm_io.readdata" altera:type="conduit" altera:dir="end">
         <altera:port_mapping altera:name="coe_readdata_export" altera:internal="coe_readdata_export"></altera:port_mapping>
       </altera:interface_mapping>
-      <altera:interface_mapping altera:name="reset" altera:internal="reg_mmdp_ctrl_1.reset" altera:type="conduit" altera:dir="end">
+      <altera:interface_mapping altera:name="reset" altera:internal="board_reg_ta2_unb2b_mm_io.reset" altera:type="conduit" altera:dir="end">
         <altera:port_mapping altera:name="coe_reset_export" altera:internal="coe_reset_export"></altera:port_mapping>
       </altera:interface_mapping>
-      <altera:interface_mapping altera:name="system" altera:internal="reg_mmdp_ctrl_1.system" altera:type="clock" altera:dir="end">
+      <altera:interface_mapping altera:name="system" altera:internal="board_reg_ta2_unb2b_mm_io.system" altera:type="clock" altera:dir="end">
         <altera:port_mapping altera:name="csi_system_clk" altera:internal="csi_system_clk"></altera:port_mapping>
       </altera:interface_mapping>
-      <altera:interface_mapping altera:name="system_reset" altera:internal="reg_mmdp_ctrl_1.system_reset" altera:type="reset" altera:dir="end">
+      <altera:interface_mapping altera:name="system_reset" altera:internal="board_reg_ta2_unb2b_mm_io.system_reset" altera:type="reset" altera:dir="end">
         <altera:port_mapping altera:name="csi_system_reset" altera:internal="csi_system_reset"></altera:port_mapping>
       </altera:interface_mapping>
-      <altera:interface_mapping altera:name="write" altera:internal="reg_mmdp_ctrl_1.write" altera:type="conduit" altera:dir="end">
+      <altera:interface_mapping altera:name="waitrequest" altera:internal="board_reg_ta2_unb2b_mm_io.waitrequest" altera:type="conduit" altera:dir="end">
+        <altera:port_mapping altera:name="coe_waitrequest_export" altera:internal="coe_waitrequest_export"></altera:port_mapping>
+      </altera:interface_mapping>
+      <altera:interface_mapping altera:name="write" altera:internal="board_reg_ta2_unb2b_mm_io.write" altera:type="conduit" altera:dir="end">
         <altera:port_mapping altera:name="coe_write_export" altera:internal="coe_write_export"></altera:port_mapping>
       </altera:interface_mapping>
-      <altera:interface_mapping altera:name="writedata" altera:internal="reg_mmdp_ctrl_1.writedata" altera:type="conduit" altera:dir="end">
+      <altera:interface_mapping altera:name="writedata" altera:internal="board_reg_ta2_unb2b_mm_io.writedata" altera:type="conduit" altera:dir="end">
         <altera:port_mapping altera:name="coe_writedata_export" altera:internal="coe_writedata_export"></altera:port_mapping>
       </altera:interface_mapping>
     </altera:altera_interface_boundary>
diff --git a/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/reg_mmdp_data_1.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/reg_mmdp_data_1.ip
deleted file mode 100644
index e3678f18959ad524de616ae4186e9186247e0e1d..0000000000000000000000000000000000000000
--- a/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/reg_mmdp_data_1.ip
+++ /dev/null
@@ -1,1525 +0,0 @@
-<?xml version="1.0" ?>
-<ipxact:component xmlns:altera="http://www.altera.com/XMLSchema/IPXact2014/extensions" xmlns:ipxact="http://www.accellera.org/XMLSchema/IPXACT/1685-2014">
-  <ipxact:vendor>ASTRON</ipxact:vendor>
-  <ipxact:library>reg_mmdp_data_1</ipxact:library>
-  <ipxact:name>reg_mmdp_data_1</ipxact:name>
-  <ipxact:version>1.0</ipxact:version>
-  <ipxact:busInterfaces>
-    <ipxact:busInterface>
-      <ipxact:name>system</ipxact:name>
-      <ipxact:busType vendor="altera" library="altera" name="clock" version="19.2"></ipxact:busType>
-      <ipxact:abstractionTypes>
-        <ipxact:abstractionType>
-          <ipxact:abstractionRef vendor="altera" library="altera" name="clock" version="19.2"></ipxact:abstractionRef>
-          <ipxact:portMaps>
-            <ipxact:portMap>
-              <ipxact:logicalPort>
-                <ipxact:name>clk</ipxact:name>
-              </ipxact:logicalPort>
-              <ipxact:physicalPort>
-                <ipxact:name>csi_system_clk</ipxact:name>
-              </ipxact:physicalPort>
-            </ipxact:portMap>
-          </ipxact:portMaps>
-        </ipxact:abstractionType>
-      </ipxact:abstractionTypes>
-      <ipxact:slave></ipxact:slave>
-      <ipxact:parameters>
-        <ipxact:parameter parameterId="clockRate" type="longint">
-          <ipxact:name>clockRate</ipxact:name>
-          <ipxact:displayName>Clock rate</ipxact:displayName>
-          <ipxact:value>0</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="externallyDriven" type="bit">
-          <ipxact:name>externallyDriven</ipxact:name>
-          <ipxact:displayName>Externally driven</ipxact:displayName>
-          <ipxact:value>false</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="ptfSchematicName" type="string">
-          <ipxact:name>ptfSchematicName</ipxact:name>
-          <ipxact:displayName>PTF schematic name</ipxact:displayName>
-          <ipxact:value></ipxact:value>
-        </ipxact:parameter>
-      </ipxact:parameters>
-    </ipxact:busInterface>
-    <ipxact:busInterface>
-      <ipxact:name>system_reset</ipxact:name>
-      <ipxact:busType vendor="altera" library="altera" name="reset" version="19.2"></ipxact:busType>
-      <ipxact:abstractionTypes>
-        <ipxact:abstractionType>
-          <ipxact:abstractionRef vendor="altera" library="altera" name="reset" version="19.2"></ipxact:abstractionRef>
-          <ipxact:portMaps>
-            <ipxact:portMap>
-              <ipxact:logicalPort>
-                <ipxact:name>reset</ipxact:name>
-              </ipxact:logicalPort>
-              <ipxact:physicalPort>
-                <ipxact:name>csi_system_reset</ipxact:name>
-              </ipxact:physicalPort>
-            </ipxact:portMap>
-          </ipxact:portMaps>
-        </ipxact:abstractionType>
-      </ipxact:abstractionTypes>
-      <ipxact:slave></ipxact:slave>
-      <ipxact:parameters>
-        <ipxact:parameter parameterId="associatedClock" type="string">
-          <ipxact:name>associatedClock</ipxact:name>
-          <ipxact:displayName>Associated clock</ipxact:displayName>
-          <ipxact:value>system</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="synchronousEdges" type="string">
-          <ipxact:name>synchronousEdges</ipxact:name>
-          <ipxact:displayName>Synchronous edges</ipxact:displayName>
-          <ipxact:value>DEASSERT</ipxact:value>
-        </ipxact:parameter>
-      </ipxact:parameters>
-    </ipxact:busInterface>
-    <ipxact:busInterface>
-      <ipxact:name>mem</ipxact:name>
-      <ipxact:busType vendor="altera" library="altera" name="avalon" version="19.2"></ipxact:busType>
-      <ipxact:abstractionTypes>
-        <ipxact:abstractionType>
-          <ipxact:abstractionRef vendor="altera" library="altera" name="avalon" version="19.2"></ipxact:abstractionRef>
-          <ipxact:portMaps>
-            <ipxact:portMap>
-              <ipxact:logicalPort>
-                <ipxact:name>address</ipxact:name>
-              </ipxact:logicalPort>
-              <ipxact:physicalPort>
-                <ipxact:name>avs_mem_address</ipxact:name>
-              </ipxact:physicalPort>
-            </ipxact:portMap>
-            <ipxact:portMap>
-              <ipxact:logicalPort>
-                <ipxact:name>write</ipxact:name>
-              </ipxact:logicalPort>
-              <ipxact:physicalPort>
-                <ipxact:name>avs_mem_write</ipxact:name>
-              </ipxact:physicalPort>
-            </ipxact:portMap>
-            <ipxact:portMap>
-              <ipxact:logicalPort>
-                <ipxact:name>writedata</ipxact:name>
-              </ipxact:logicalPort>
-              <ipxact:physicalPort>
-                <ipxact:name>avs_mem_writedata</ipxact:name>
-              </ipxact:physicalPort>
-            </ipxact:portMap>
-            <ipxact:portMap>
-              <ipxact:logicalPort>
-                <ipxact:name>read</ipxact:name>
-              </ipxact:logicalPort>
-              <ipxact:physicalPort>
-                <ipxact:name>avs_mem_read</ipxact:name>
-              </ipxact:physicalPort>
-            </ipxact:portMap>
-            <ipxact:portMap>
-              <ipxact:logicalPort>
-                <ipxact:name>readdata</ipxact:name>
-              </ipxact:logicalPort>
-              <ipxact:physicalPort>
-                <ipxact:name>avs_mem_readdata</ipxact:name>
-              </ipxact:physicalPort>
-            </ipxact:portMap>
-          </ipxact:portMaps>
-        </ipxact:abstractionType>
-      </ipxact:abstractionTypes>
-      <ipxact:slave></ipxact:slave>
-      <ipxact:parameters>
-        <ipxact:parameter parameterId="addressAlignment" type="string">
-          <ipxact:name>addressAlignment</ipxact:name>
-          <ipxact:displayName>Slave addressing</ipxact:displayName>
-          <ipxact:value>DYNAMIC</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="addressGroup" type="int">
-          <ipxact:name>addressGroup</ipxact:name>
-          <ipxact:displayName>Address group</ipxact:displayName>
-          <ipxact:value>0</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="addressSpan" type="string">
-          <ipxact:name>addressSpan</ipxact:name>
-          <ipxact:displayName>Address span</ipxact:displayName>
-          <ipxact:value>8</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="addressUnits" type="string">
-          <ipxact:name>addressUnits</ipxact:name>
-          <ipxact:displayName>Address units</ipxact:displayName>
-          <ipxact:value>WORDS</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="alwaysBurstMaxBurst" type="bit">
-          <ipxact:name>alwaysBurstMaxBurst</ipxact:name>
-          <ipxact:displayName>Always burst maximum burst</ipxact:displayName>
-          <ipxact:value>false</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="associatedClock" type="string">
-          <ipxact:name>associatedClock</ipxact:name>
-          <ipxact:displayName>Associated clock</ipxact:displayName>
-          <ipxact:value>system</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="associatedReset" type="string">
-          <ipxact:name>associatedReset</ipxact:name>
-          <ipxact:displayName>Associated reset</ipxact:displayName>
-          <ipxact:value>system_reset</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="bitsPerSymbol" type="int">
-          <ipxact:name>bitsPerSymbol</ipxact:name>
-          <ipxact:displayName>Bits per symbol</ipxact:displayName>
-          <ipxact:value>8</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="bridgedAddressOffset" type="string">
-          <ipxact:name>bridgedAddressOffset</ipxact:name>
-          <ipxact:displayName>Bridged Address Offset</ipxact:displayName>
-          <ipxact:value>0</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="bridgesToMaster" type="string">
-          <ipxact:name>bridgesToMaster</ipxact:name>
-          <ipxact:displayName>Bridges to master</ipxact:displayName>
-          <ipxact:value></ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="burstOnBurstBoundariesOnly" type="bit">
-          <ipxact:name>burstOnBurstBoundariesOnly</ipxact:name>
-          <ipxact:displayName>Burst on burst boundaries only</ipxact:displayName>
-          <ipxact:value>false</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="burstcountUnits" type="string">
-          <ipxact:name>burstcountUnits</ipxact:name>
-          <ipxact:displayName>Burstcount units</ipxact:displayName>
-          <ipxact:value>WORDS</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="constantBurstBehavior" type="bit">
-          <ipxact:name>constantBurstBehavior</ipxact:name>
-          <ipxact:displayName>Constant burst behavior</ipxact:displayName>
-          <ipxact:value>false</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="explicitAddressSpan" type="string">
-          <ipxact:name>explicitAddressSpan</ipxact:name>
-          <ipxact:displayName>Explicit address span</ipxact:displayName>
-          <ipxact:value>0</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="holdTime" type="int">
-          <ipxact:name>holdTime</ipxact:name>
-          <ipxact:displayName>Hold</ipxact:displayName>
-          <ipxact:value>0</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="interleaveBursts" type="bit">
-          <ipxact:name>interleaveBursts</ipxact:name>
-          <ipxact:displayName>Interleave bursts</ipxact:displayName>
-          <ipxact:value>false</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="isBigEndian" type="bit">
-          <ipxact:name>isBigEndian</ipxact:name>
-          <ipxact:displayName>Big endian</ipxact:displayName>
-          <ipxact:value>false</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="isFlash" type="bit">
-          <ipxact:name>isFlash</ipxact:name>
-          <ipxact:displayName>Flash memory</ipxact:displayName>
-          <ipxact:value>false</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="isMemoryDevice" type="bit">
-          <ipxact:name>isMemoryDevice</ipxact:name>
-          <ipxact:displayName>Memory device</ipxact:displayName>
-          <ipxact:value>false</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="isNonVolatileStorage" type="bit">
-          <ipxact:name>isNonVolatileStorage</ipxact:name>
-          <ipxact:displayName>Non-volatile storage</ipxact:displayName>
-          <ipxact:value>false</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="linewrapBursts" type="bit">
-          <ipxact:name>linewrapBursts</ipxact:name>
-          <ipxact:displayName>Linewrap bursts</ipxact:displayName>
-          <ipxact:value>false</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="maximumPendingReadTransactions" type="int">
-          <ipxact:name>maximumPendingReadTransactions</ipxact:name>
-          <ipxact:displayName>Maximum pending read transactions</ipxact:displayName>
-          <ipxact:value>0</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="maximumPendingWriteTransactions" type="int">
-          <ipxact:name>maximumPendingWriteTransactions</ipxact:name>
-          <ipxact:displayName>Maximum pending write transactions</ipxact:displayName>
-          <ipxact:value>0</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="minimumReadLatency" type="int">
-          <ipxact:name>minimumReadLatency</ipxact:name>
-          <ipxact:displayName>minimumReadLatency</ipxact:displayName>
-          <ipxact:value>1</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="minimumResponseLatency" type="int">
-          <ipxact:name>minimumResponseLatency</ipxact:name>
-          <ipxact:displayName>Minimum response latency</ipxact:displayName>
-          <ipxact:value>1</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="minimumUninterruptedRunLength" type="int">
-          <ipxact:name>minimumUninterruptedRunLength</ipxact:name>
-          <ipxact:displayName>Minimum uninterrupted run length</ipxact:displayName>
-          <ipxact:value>1</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="prSafe" type="bit">
-          <ipxact:name>prSafe</ipxact:name>
-          <ipxact:displayName>Partial Reconfiguration Safe</ipxact:displayName>
-          <ipxact:value>false</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="printableDevice" type="bit">
-          <ipxact:name>printableDevice</ipxact:name>
-          <ipxact:displayName>Can receive stdout/stderr</ipxact:displayName>
-          <ipxact:value>false</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="readLatency" type="int">
-          <ipxact:name>readLatency</ipxact:name>
-          <ipxact:displayName>Read latency</ipxact:displayName>
-          <ipxact:value>1</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="readWaitStates" type="int">
-          <ipxact:name>readWaitStates</ipxact:name>
-          <ipxact:displayName>Read wait states</ipxact:displayName>
-          <ipxact:value>0</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="readWaitTime" type="int">
-          <ipxact:name>readWaitTime</ipxact:name>
-          <ipxact:displayName>Read wait</ipxact:displayName>
-          <ipxact:value>0</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="registerIncomingSignals" type="bit">
-          <ipxact:name>registerIncomingSignals</ipxact:name>
-          <ipxact:displayName>Register incoming signals</ipxact:displayName>
-          <ipxact:value>false</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="registerOutgoingSignals" type="bit">
-          <ipxact:name>registerOutgoingSignals</ipxact:name>
-          <ipxact:displayName>Register outgoing signals</ipxact:displayName>
-          <ipxact:value>false</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="setupTime" type="int">
-          <ipxact:name>setupTime</ipxact:name>
-          <ipxact:displayName>Setup</ipxact:displayName>
-          <ipxact:value>0</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="timingUnits" type="string">
-          <ipxact:name>timingUnits</ipxact:name>
-          <ipxact:displayName>Timing units</ipxact:displayName>
-          <ipxact:value>Cycles</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="transparentBridge" type="bit">
-          <ipxact:name>transparentBridge</ipxact:name>
-          <ipxact:displayName>Transparent bridge</ipxact:displayName>
-          <ipxact:value>false</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="waitrequestAllowance" type="int">
-          <ipxact:name>waitrequestAllowance</ipxact:name>
-          <ipxact:displayName>Waitrequest allowance</ipxact:displayName>
-          <ipxact:value>0</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="wellBehavedWaitrequest" type="bit">
-          <ipxact:name>wellBehavedWaitrequest</ipxact:name>
-          <ipxact:displayName>Well-behaved waitrequest</ipxact:displayName>
-          <ipxact:value>false</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="writeLatency" type="int">
-          <ipxact:name>writeLatency</ipxact:name>
-          <ipxact:displayName>Write latency</ipxact:displayName>
-          <ipxact:value>0</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="writeWaitStates" type="int">
-          <ipxact:name>writeWaitStates</ipxact:name>
-          <ipxact:displayName>Write wait states</ipxact:displayName>
-          <ipxact:value>0</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="writeWaitTime" type="int">
-          <ipxact:name>writeWaitTime</ipxact:name>
-          <ipxact:displayName>Write wait</ipxact:displayName>
-          <ipxact:value>0</ipxact:value>
-        </ipxact:parameter>
-      </ipxact:parameters>
-      <ipxact:vendorExtensions>
-        <altera:altera_assignments>
-          <ipxact:parameters>
-            <ipxact:parameter parameterId="embeddedsw.configuration.isFlash" type="string">
-              <ipxact:name>embeddedsw.configuration.isFlash</ipxact:name>
-              <ipxact:value>0</ipxact:value>
-            </ipxact:parameter>
-            <ipxact:parameter parameterId="embeddedsw.configuration.isMemoryDevice" type="string">
-              <ipxact:name>embeddedsw.configuration.isMemoryDevice</ipxact:name>
-              <ipxact:value>0</ipxact:value>
-            </ipxact:parameter>
-            <ipxact:parameter parameterId="embeddedsw.configuration.isNonVolatileStorage" type="string">
-              <ipxact:name>embeddedsw.configuration.isNonVolatileStorage</ipxact:name>
-              <ipxact:value>0</ipxact:value>
-            </ipxact:parameter>
-            <ipxact:parameter parameterId="embeddedsw.configuration.isPrintableDevice" type="string">
-              <ipxact:name>embeddedsw.configuration.isPrintableDevice</ipxact:name>
-              <ipxact:value>0</ipxact:value>
-            </ipxact:parameter>
-          </ipxact:parameters>
-        </altera:altera_assignments>
-      </ipxact:vendorExtensions>
-    </ipxact:busInterface>
-    <ipxact:busInterface>
-      <ipxact:name>reset</ipxact:name>
-      <ipxact:busType vendor="altera" library="altera" name="conduit" version="19.2"></ipxact:busType>
-      <ipxact:abstractionTypes>
-        <ipxact:abstractionType>
-          <ipxact:abstractionRef vendor="altera" library="altera" name="conduit" version="19.2"></ipxact:abstractionRef>
-          <ipxact:portMaps>
-            <ipxact:portMap>
-              <ipxact:logicalPort>
-                <ipxact:name>export</ipxact:name>
-              </ipxact:logicalPort>
-              <ipxact:physicalPort>
-                <ipxact:name>coe_reset_export</ipxact:name>
-              </ipxact:physicalPort>
-            </ipxact:portMap>
-          </ipxact:portMaps>
-        </ipxact:abstractionType>
-      </ipxact:abstractionTypes>
-      <ipxact:slave></ipxact:slave>
-      <ipxact:parameters>
-        <ipxact:parameter parameterId="associatedClock" type="string">
-          <ipxact:name>associatedClock</ipxact:name>
-          <ipxact:displayName>associatedClock</ipxact:displayName>
-          <ipxact:value></ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="associatedReset" type="string">
-          <ipxact:name>associatedReset</ipxact:name>
-          <ipxact:displayName>associatedReset</ipxact:displayName>
-          <ipxact:value></ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="prSafe" type="bit">
-          <ipxact:name>prSafe</ipxact:name>
-          <ipxact:displayName>Partial Reconfiguration Safe</ipxact:displayName>
-          <ipxact:value>false</ipxact:value>
-        </ipxact:parameter>
-      </ipxact:parameters>
-    </ipxact:busInterface>
-    <ipxact:busInterface>
-      <ipxact:name>clk</ipxact:name>
-      <ipxact:busType vendor="altera" library="altera" name="conduit" version="19.2"></ipxact:busType>
-      <ipxact:abstractionTypes>
-        <ipxact:abstractionType>
-          <ipxact:abstractionRef vendor="altera" library="altera" name="conduit" version="19.2"></ipxact:abstractionRef>
-          <ipxact:portMaps>
-            <ipxact:portMap>
-              <ipxact:logicalPort>
-                <ipxact:name>export</ipxact:name>
-              </ipxact:logicalPort>
-              <ipxact:physicalPort>
-                <ipxact:name>coe_clk_export</ipxact:name>
-              </ipxact:physicalPort>
-            </ipxact:portMap>
-          </ipxact:portMaps>
-        </ipxact:abstractionType>
-      </ipxact:abstractionTypes>
-      <ipxact:slave></ipxact:slave>
-      <ipxact:parameters>
-        <ipxact:parameter parameterId="associatedClock" type="string">
-          <ipxact:name>associatedClock</ipxact:name>
-          <ipxact:displayName>associatedClock</ipxact:displayName>
-          <ipxact:value></ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="associatedReset" type="string">
-          <ipxact:name>associatedReset</ipxact:name>
-          <ipxact:displayName>associatedReset</ipxact:displayName>
-          <ipxact:value></ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="prSafe" type="bit">
-          <ipxact:name>prSafe</ipxact:name>
-          <ipxact:displayName>Partial Reconfiguration Safe</ipxact:displayName>
-          <ipxact:value>false</ipxact:value>
-        </ipxact:parameter>
-      </ipxact:parameters>
-    </ipxact:busInterface>
-    <ipxact:busInterface>
-      <ipxact:name>address</ipxact:name>
-      <ipxact:busType vendor="altera" library="altera" name="conduit" version="19.2"></ipxact:busType>
-      <ipxact:abstractionTypes>
-        <ipxact:abstractionType>
-          <ipxact:abstractionRef vendor="altera" library="altera" name="conduit" version="19.2"></ipxact:abstractionRef>
-          <ipxact:portMaps>
-            <ipxact:portMap>
-              <ipxact:logicalPort>
-                <ipxact:name>export</ipxact:name>
-              </ipxact:logicalPort>
-              <ipxact:physicalPort>
-                <ipxact:name>coe_address_export</ipxact:name>
-              </ipxact:physicalPort>
-            </ipxact:portMap>
-          </ipxact:portMaps>
-        </ipxact:abstractionType>
-      </ipxact:abstractionTypes>
-      <ipxact:slave></ipxact:slave>
-      <ipxact:parameters>
-        <ipxact:parameter parameterId="associatedClock" type="string">
-          <ipxact:name>associatedClock</ipxact:name>
-          <ipxact:displayName>associatedClock</ipxact:displayName>
-          <ipxact:value></ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="associatedReset" type="string">
-          <ipxact:name>associatedReset</ipxact:name>
-          <ipxact:displayName>associatedReset</ipxact:displayName>
-          <ipxact:value></ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="prSafe" type="bit">
-          <ipxact:name>prSafe</ipxact:name>
-          <ipxact:displayName>Partial Reconfiguration Safe</ipxact:displayName>
-          <ipxact:value>false</ipxact:value>
-        </ipxact:parameter>
-      </ipxact:parameters>
-    </ipxact:busInterface>
-    <ipxact:busInterface>
-      <ipxact:name>write</ipxact:name>
-      <ipxact:busType vendor="altera" library="altera" name="conduit" version="19.2"></ipxact:busType>
-      <ipxact:abstractionTypes>
-        <ipxact:abstractionType>
-          <ipxact:abstractionRef vendor="altera" library="altera" name="conduit" version="19.2"></ipxact:abstractionRef>
-          <ipxact:portMaps>
-            <ipxact:portMap>
-              <ipxact:logicalPort>
-                <ipxact:name>export</ipxact:name>
-              </ipxact:logicalPort>
-              <ipxact:physicalPort>
-                <ipxact:name>coe_write_export</ipxact:name>
-              </ipxact:physicalPort>
-            </ipxact:portMap>
-          </ipxact:portMaps>
-        </ipxact:abstractionType>
-      </ipxact:abstractionTypes>
-      <ipxact:slave></ipxact:slave>
-      <ipxact:parameters>
-        <ipxact:parameter parameterId="associatedClock" type="string">
-          <ipxact:name>associatedClock</ipxact:name>
-          <ipxact:displayName>associatedClock</ipxact:displayName>
-          <ipxact:value></ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="associatedReset" type="string">
-          <ipxact:name>associatedReset</ipxact:name>
-          <ipxact:displayName>associatedReset</ipxact:displayName>
-          <ipxact:value></ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="prSafe" type="bit">
-          <ipxact:name>prSafe</ipxact:name>
-          <ipxact:displayName>Partial Reconfiguration Safe</ipxact:displayName>
-          <ipxact:value>false</ipxact:value>
-        </ipxact:parameter>
-      </ipxact:parameters>
-    </ipxact:busInterface>
-    <ipxact:busInterface>
-      <ipxact:name>writedata</ipxact:name>
-      <ipxact:busType vendor="altera" library="altera" name="conduit" version="19.2"></ipxact:busType>
-      <ipxact:abstractionTypes>
-        <ipxact:abstractionType>
-          <ipxact:abstractionRef vendor="altera" library="altera" name="conduit" version="19.2"></ipxact:abstractionRef>
-          <ipxact:portMaps>
-            <ipxact:portMap>
-              <ipxact:logicalPort>
-                <ipxact:name>export</ipxact:name>
-              </ipxact:logicalPort>
-              <ipxact:physicalPort>
-                <ipxact:name>coe_writedata_export</ipxact:name>
-              </ipxact:physicalPort>
-            </ipxact:portMap>
-          </ipxact:portMaps>
-        </ipxact:abstractionType>
-      </ipxact:abstractionTypes>
-      <ipxact:slave></ipxact:slave>
-      <ipxact:parameters>
-        <ipxact:parameter parameterId="associatedClock" type="string">
-          <ipxact:name>associatedClock</ipxact:name>
-          <ipxact:displayName>associatedClock</ipxact:displayName>
-          <ipxact:value></ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="associatedReset" type="string">
-          <ipxact:name>associatedReset</ipxact:name>
-          <ipxact:displayName>associatedReset</ipxact:displayName>
-          <ipxact:value></ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="prSafe" type="bit">
-          <ipxact:name>prSafe</ipxact:name>
-          <ipxact:displayName>Partial Reconfiguration Safe</ipxact:displayName>
-          <ipxact:value>false</ipxact:value>
-        </ipxact:parameter>
-      </ipxact:parameters>
-    </ipxact:busInterface>
-    <ipxact:busInterface>
-      <ipxact:name>read</ipxact:name>
-      <ipxact:busType vendor="altera" library="altera" name="conduit" version="19.2"></ipxact:busType>
-      <ipxact:abstractionTypes>
-        <ipxact:abstractionType>
-          <ipxact:abstractionRef vendor="altera" library="altera" name="conduit" version="19.2"></ipxact:abstractionRef>
-          <ipxact:portMaps>
-            <ipxact:portMap>
-              <ipxact:logicalPort>
-                <ipxact:name>export</ipxact:name>
-              </ipxact:logicalPort>
-              <ipxact:physicalPort>
-                <ipxact:name>coe_read_export</ipxact:name>
-              </ipxact:physicalPort>
-            </ipxact:portMap>
-          </ipxact:portMaps>
-        </ipxact:abstractionType>
-      </ipxact:abstractionTypes>
-      <ipxact:slave></ipxact:slave>
-      <ipxact:parameters>
-        <ipxact:parameter parameterId="associatedClock" type="string">
-          <ipxact:name>associatedClock</ipxact:name>
-          <ipxact:displayName>associatedClock</ipxact:displayName>
-          <ipxact:value></ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="associatedReset" type="string">
-          <ipxact:name>associatedReset</ipxact:name>
-          <ipxact:displayName>associatedReset</ipxact:displayName>
-          <ipxact:value></ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="prSafe" type="bit">
-          <ipxact:name>prSafe</ipxact:name>
-          <ipxact:displayName>Partial Reconfiguration Safe</ipxact:displayName>
-          <ipxact:value>false</ipxact:value>
-        </ipxact:parameter>
-      </ipxact:parameters>
-    </ipxact:busInterface>
-    <ipxact:busInterface>
-      <ipxact:name>readdata</ipxact:name>
-      <ipxact:busType vendor="altera" library="altera" name="conduit" version="19.2"></ipxact:busType>
-      <ipxact:abstractionTypes>
-        <ipxact:abstractionType>
-          <ipxact:abstractionRef vendor="altera" library="altera" name="conduit" version="19.2"></ipxact:abstractionRef>
-          <ipxact:portMaps>
-            <ipxact:portMap>
-              <ipxact:logicalPort>
-                <ipxact:name>export</ipxact:name>
-              </ipxact:logicalPort>
-              <ipxact:physicalPort>
-                <ipxact:name>coe_readdata_export</ipxact:name>
-              </ipxact:physicalPort>
-            </ipxact:portMap>
-          </ipxact:portMaps>
-        </ipxact:abstractionType>
-      </ipxact:abstractionTypes>
-      <ipxact:slave></ipxact:slave>
-      <ipxact:parameters>
-        <ipxact:parameter parameterId="associatedClock" type="string">
-          <ipxact:name>associatedClock</ipxact:name>
-          <ipxact:displayName>associatedClock</ipxact:displayName>
-          <ipxact:value></ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="associatedReset" type="string">
-          <ipxact:name>associatedReset</ipxact:name>
-          <ipxact:displayName>associatedReset</ipxact:displayName>
-          <ipxact:value></ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="prSafe" type="bit">
-          <ipxact:name>prSafe</ipxact:name>
-          <ipxact:displayName>Partial Reconfiguration Safe</ipxact:displayName>
-          <ipxact:value>false</ipxact:value>
-        </ipxact:parameter>
-      </ipxact:parameters>
-    </ipxact:busInterface>
-  </ipxact:busInterfaces>
-  <ipxact:model>
-    <ipxact:views>
-      <ipxact:view>
-        <ipxact:name>QUARTUS_SYNTH</ipxact:name>
-        <ipxact:envIdentifier>:quartus.altera.com:</ipxact:envIdentifier>
-        <ipxact:componentInstantiationRef>QUARTUS_SYNTH</ipxact:componentInstantiationRef>
-      </ipxact:view>
-    </ipxact:views>
-    <ipxact:instantiations>
-      <ipxact:componentInstantiation>
-        <ipxact:name>QUARTUS_SYNTH</ipxact:name>
-        <ipxact:moduleName>avs_common_mm</ipxact:moduleName>
-        <ipxact:fileSetRef>
-          <ipxact:localName>QUARTUS_SYNTH</ipxact:localName>
-        </ipxact:fileSetRef>
-        <ipxact:parameters></ipxact:parameters>
-      </ipxact:componentInstantiation>
-    </ipxact:instantiations>
-    <ipxact:ports>
-      <ipxact:port>
-        <ipxact:name>csi_system_clk</ipxact:name>
-        <ipxact:wire>
-          <ipxact:direction>in</ipxact:direction>
-          <ipxact:vectors></ipxact:vectors>
-          <ipxact:wireTypeDefs>
-            <ipxact:wireTypeDef>
-              <ipxact:typeName>STD_LOGIC</ipxact:typeName>
-              <ipxact:viewRef>QUARTUS_SYNTH</ipxact:viewRef>
-            </ipxact:wireTypeDef>
-          </ipxact:wireTypeDefs>
-        </ipxact:wire>
-      </ipxact:port>
-      <ipxact:port>
-        <ipxact:name>csi_system_reset</ipxact:name>
-        <ipxact:wire>
-          <ipxact:direction>in</ipxact:direction>
-          <ipxact:vectors></ipxact:vectors>
-          <ipxact:wireTypeDefs>
-            <ipxact:wireTypeDef>
-              <ipxact:typeName>STD_LOGIC</ipxact:typeName>
-              <ipxact:viewRef>QUARTUS_SYNTH</ipxact:viewRef>
-            </ipxact:wireTypeDef>
-          </ipxact:wireTypeDefs>
-        </ipxact:wire>
-      </ipxact:port>
-      <ipxact:port>
-        <ipxact:name>avs_mem_address</ipxact:name>
-        <ipxact:wire>
-          <ipxact:direction>in</ipxact:direction>
-          <ipxact:vectors></ipxact:vectors>
-          <ipxact:wireTypeDefs>
-            <ipxact:wireTypeDef>
-              <ipxact:typeName>STD_LOGIC_VECTOR</ipxact:typeName>
-              <ipxact:viewRef>QUARTUS_SYNTH</ipxact:viewRef>
-            </ipxact:wireTypeDef>
-          </ipxact:wireTypeDefs>
-        </ipxact:wire>
-      </ipxact:port>
-      <ipxact:port>
-        <ipxact:name>avs_mem_write</ipxact:name>
-        <ipxact:wire>
-          <ipxact:direction>in</ipxact:direction>
-          <ipxact:vectors></ipxact:vectors>
-          <ipxact:wireTypeDefs>
-            <ipxact:wireTypeDef>
-              <ipxact:typeName>STD_LOGIC</ipxact:typeName>
-              <ipxact:viewRef>QUARTUS_SYNTH</ipxact:viewRef>
-            </ipxact:wireTypeDef>
-          </ipxact:wireTypeDefs>
-        </ipxact:wire>
-      </ipxact:port>
-      <ipxact:port>
-        <ipxact:name>avs_mem_writedata</ipxact:name>
-        <ipxact:wire>
-          <ipxact:direction>in</ipxact:direction>
-          <ipxact:vectors>
-            <ipxact:vector>
-              <ipxact:left>0</ipxact:left>
-              <ipxact:right>31</ipxact:right>
-            </ipxact:vector>
-          </ipxact:vectors>
-          <ipxact:wireTypeDefs>
-            <ipxact:wireTypeDef>
-              <ipxact:typeName>STD_LOGIC_VECTOR</ipxact:typeName>
-              <ipxact:viewRef>QUARTUS_SYNTH</ipxact:viewRef>
-            </ipxact:wireTypeDef>
-          </ipxact:wireTypeDefs>
-        </ipxact:wire>
-      </ipxact:port>
-      <ipxact:port>
-        <ipxact:name>avs_mem_read</ipxact:name>
-        <ipxact:wire>
-          <ipxact:direction>in</ipxact:direction>
-          <ipxact:vectors></ipxact:vectors>
-          <ipxact:wireTypeDefs>
-            <ipxact:wireTypeDef>
-              <ipxact:typeName>STD_LOGIC</ipxact:typeName>
-              <ipxact:viewRef>QUARTUS_SYNTH</ipxact:viewRef>
-            </ipxact:wireTypeDef>
-          </ipxact:wireTypeDefs>
-        </ipxact:wire>
-      </ipxact:port>
-      <ipxact:port>
-        <ipxact:name>avs_mem_readdata</ipxact:name>
-        <ipxact:wire>
-          <ipxact:direction>out</ipxact:direction>
-          <ipxact:vectors>
-            <ipxact:vector>
-              <ipxact:left>0</ipxact:left>
-              <ipxact:right>31</ipxact:right>
-            </ipxact:vector>
-          </ipxact:vectors>
-          <ipxact:wireTypeDefs>
-            <ipxact:wireTypeDef>
-              <ipxact:typeName>STD_LOGIC_VECTOR</ipxact:typeName>
-              <ipxact:viewRef>QUARTUS_SYNTH</ipxact:viewRef>
-            </ipxact:wireTypeDef>
-          </ipxact:wireTypeDefs>
-        </ipxact:wire>
-      </ipxact:port>
-      <ipxact:port>
-        <ipxact:name>coe_reset_export</ipxact:name>
-        <ipxact:wire>
-          <ipxact:direction>out</ipxact:direction>
-          <ipxact:vectors></ipxact:vectors>
-          <ipxact:wireTypeDefs>
-            <ipxact:wireTypeDef>
-              <ipxact:typeName>STD_LOGIC</ipxact:typeName>
-              <ipxact:viewRef>QUARTUS_SYNTH</ipxact:viewRef>
-            </ipxact:wireTypeDef>
-          </ipxact:wireTypeDefs>
-        </ipxact:wire>
-      </ipxact:port>
-      <ipxact:port>
-        <ipxact:name>coe_clk_export</ipxact:name>
-        <ipxact:wire>
-          <ipxact:direction>out</ipxact:direction>
-          <ipxact:vectors></ipxact:vectors>
-          <ipxact:wireTypeDefs>
-            <ipxact:wireTypeDef>
-              <ipxact:typeName>STD_LOGIC</ipxact:typeName>
-              <ipxact:viewRef>QUARTUS_SYNTH</ipxact:viewRef>
-            </ipxact:wireTypeDef>
-          </ipxact:wireTypeDefs>
-        </ipxact:wire>
-      </ipxact:port>
-      <ipxact:port>
-        <ipxact:name>coe_address_export</ipxact:name>
-        <ipxact:wire>
-          <ipxact:direction>out</ipxact:direction>
-          <ipxact:vectors></ipxact:vectors>
-          <ipxact:wireTypeDefs>
-            <ipxact:wireTypeDef>
-              <ipxact:typeName>STD_LOGIC_VECTOR</ipxact:typeName>
-              <ipxact:viewRef>QUARTUS_SYNTH</ipxact:viewRef>
-            </ipxact:wireTypeDef>
-          </ipxact:wireTypeDefs>
-        </ipxact:wire>
-      </ipxact:port>
-      <ipxact:port>
-        <ipxact:name>coe_write_export</ipxact:name>
-        <ipxact:wire>
-          <ipxact:direction>out</ipxact:direction>
-          <ipxact:vectors></ipxact:vectors>
-          <ipxact:wireTypeDefs>
-            <ipxact:wireTypeDef>
-              <ipxact:typeName>STD_LOGIC</ipxact:typeName>
-              <ipxact:viewRef>QUARTUS_SYNTH</ipxact:viewRef>
-            </ipxact:wireTypeDef>
-          </ipxact:wireTypeDefs>
-        </ipxact:wire>
-      </ipxact:port>
-      <ipxact:port>
-        <ipxact:name>coe_writedata_export</ipxact:name>
-        <ipxact:wire>
-          <ipxact:direction>out</ipxact:direction>
-          <ipxact:vectors>
-            <ipxact:vector>
-              <ipxact:left>0</ipxact:left>
-              <ipxact:right>31</ipxact:right>
-            </ipxact:vector>
-          </ipxact:vectors>
-          <ipxact:wireTypeDefs>
-            <ipxact:wireTypeDef>
-              <ipxact:typeName>STD_LOGIC_VECTOR</ipxact:typeName>
-              <ipxact:viewRef>QUARTUS_SYNTH</ipxact:viewRef>
-            </ipxact:wireTypeDef>
-          </ipxact:wireTypeDefs>
-        </ipxact:wire>
-      </ipxact:port>
-      <ipxact:port>
-        <ipxact:name>coe_read_export</ipxact:name>
-        <ipxact:wire>
-          <ipxact:direction>out</ipxact:direction>
-          <ipxact:vectors></ipxact:vectors>
-          <ipxact:wireTypeDefs>
-            <ipxact:wireTypeDef>
-              <ipxact:typeName>STD_LOGIC</ipxact:typeName>
-              <ipxact:viewRef>QUARTUS_SYNTH</ipxact:viewRef>
-            </ipxact:wireTypeDef>
-          </ipxact:wireTypeDefs>
-        </ipxact:wire>
-      </ipxact:port>
-      <ipxact:port>
-        <ipxact:name>coe_readdata_export</ipxact:name>
-        <ipxact:wire>
-          <ipxact:direction>in</ipxact:direction>
-          <ipxact:vectors>
-            <ipxact:vector>
-              <ipxact:left>0</ipxact:left>
-              <ipxact:right>31</ipxact:right>
-            </ipxact:vector>
-          </ipxact:vectors>
-          <ipxact:wireTypeDefs>
-            <ipxact:wireTypeDef>
-              <ipxact:typeName>STD_LOGIC_VECTOR</ipxact:typeName>
-              <ipxact:viewRef>QUARTUS_SYNTH</ipxact:viewRef>
-            </ipxact:wireTypeDef>
-          </ipxact:wireTypeDefs>
-        </ipxact:wire>
-      </ipxact:port>
-    </ipxact:ports>
-  </ipxact:model>
-  <ipxact:vendorExtensions>
-    <altera:entity_info>
-      <ipxact:vendor>ASTRON</ipxact:vendor>
-      <ipxact:library>reg_mmdp_data_1</ipxact:library>
-      <ipxact:name>avs_common_mm</ipxact:name>
-      <ipxact:version>1.0</ipxact:version>
-    </altera:entity_info>
-    <altera:altera_module_parameters>
-      <ipxact:parameters>
-        <ipxact:parameter parameterId="g_adr_w" type="int">
-          <ipxact:name>g_adr_w</ipxact:name>
-          <ipxact:displayName>g_adr_w</ipxact:displayName>
-          <ipxact:value>1</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="g_dat_w" type="int">
-          <ipxact:name>g_dat_w</ipxact:name>
-          <ipxact:displayName>g_dat_w</ipxact:displayName>
-          <ipxact:value>32</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="AUTO_SYSTEM_CLOCK_RATE" type="longint">
-          <ipxact:name>AUTO_SYSTEM_CLOCK_RATE</ipxact:name>
-          <ipxact:displayName>Auto CLOCK_RATE</ipxact:displayName>
-          <ipxact:value>100000000</ipxact:value>
-        </ipxact:parameter>
-      </ipxact:parameters>
-    </altera:altera_module_parameters>
-    <altera:altera_system_parameters>
-      <ipxact:parameters>
-        <ipxact:parameter parameterId="device" type="string">
-          <ipxact:name>device</ipxact:name>
-          <ipxact:displayName>Device</ipxact:displayName>
-          <ipxact:value>10AX115U2F45E1SG</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="deviceFamily" type="string">
-          <ipxact:name>deviceFamily</ipxact:name>
-          <ipxact:displayName>Device family</ipxact:displayName>
-          <ipxact:value>Arria 10</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="deviceSpeedGrade" type="string">
-          <ipxact:name>deviceSpeedGrade</ipxact:name>
-          <ipxact:displayName>Device Speed Grade</ipxact:displayName>
-          <ipxact:value>1</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="generationId" type="int">
-          <ipxact:name>generationId</ipxact:name>
-          <ipxact:displayName>Generation Id</ipxact:displayName>
-          <ipxact:value>0</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="bonusData" type="string">
-          <ipxact:name>bonusData</ipxact:name>
-          <ipxact:displayName>bonusData</ipxact:displayName>
-          <ipxact:value>bonusData 
-{
-   element $system
-   {
-      datum _originalDeviceFamily
-      {
-         value = "Arria 10";
-         type = "String";
-      }
-   }
-   element reg_mmdp_data_1
-   {
-   }
-}
-</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="hideFromIPCatalog" type="bit">
-          <ipxact:name>hideFromIPCatalog</ipxact:name>
-          <ipxact:displayName>Hide from IP Catalog</ipxact:displayName>
-          <ipxact:value>true</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="lockedInterfaceDefinition" type="string">
-          <ipxact:name>lockedInterfaceDefinition</ipxact:name>
-          <ipxact:displayName>lockedInterfaceDefinition</ipxact:displayName>
-          <ipxact:value>&lt;boundaryDefinition&gt;
-    &lt;interfaces&gt;
-        &lt;interface&gt;
-            &lt;name&gt;system&lt;/name&gt;
-            &lt;type&gt;clock&lt;/type&gt;
-            &lt;isStart&gt;false&lt;/isStart&gt;
-            &lt;ports&gt;
-                &lt;port&gt;
-                    &lt;name&gt;csi_system_clk&lt;/name&gt;
-                    &lt;role&gt;clk&lt;/role&gt;
-                    &lt;direction&gt;Input&lt;/direction&gt;
-                    &lt;width&gt;1&lt;/width&gt;
-                    &lt;lowerBound&gt;0&lt;/lowerBound&gt;
-                    &lt;vhdlType&gt;STD_LOGIC&lt;/vhdlType&gt;
-                &lt;/port&gt;
-            &lt;/ports&gt;
-            &lt;assignments&gt;
-                &lt;assignmentValueMap/&gt;
-            &lt;/assignments&gt;
-            &lt;parameters&gt;
-                &lt;parameterValueMap&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;clockRate&lt;/key&gt;
-                        &lt;value&gt;0&lt;/value&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;externallyDriven&lt;/key&gt;
-                        &lt;value&gt;false&lt;/value&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;ptfSchematicName&lt;/key&gt;
-                    &lt;/entry&gt;
-                &lt;/parameterValueMap&gt;
-            &lt;/parameters&gt;
-        &lt;/interface&gt;
-        &lt;interface&gt;
-            &lt;name&gt;system_reset&lt;/name&gt;
-            &lt;type&gt;reset&lt;/type&gt;
-            &lt;isStart&gt;false&lt;/isStart&gt;
-            &lt;ports&gt;
-                &lt;port&gt;
-                    &lt;name&gt;csi_system_reset&lt;/name&gt;
-                    &lt;role&gt;reset&lt;/role&gt;
-                    &lt;direction&gt;Input&lt;/direction&gt;
-                    &lt;width&gt;1&lt;/width&gt;
-                    &lt;lowerBound&gt;0&lt;/lowerBound&gt;
-                    &lt;vhdlType&gt;STD_LOGIC&lt;/vhdlType&gt;
-                &lt;/port&gt;
-            &lt;/ports&gt;
-            &lt;assignments&gt;
-                &lt;assignmentValueMap/&gt;
-            &lt;/assignments&gt;
-            &lt;parameters&gt;
-                &lt;parameterValueMap&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;associatedClock&lt;/key&gt;
-                        &lt;value&gt;system&lt;/value&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;synchronousEdges&lt;/key&gt;
-                        &lt;value&gt;DEASSERT&lt;/value&gt;
-                    &lt;/entry&gt;
-                &lt;/parameterValueMap&gt;
-            &lt;/parameters&gt;
-        &lt;/interface&gt;
-        &lt;interface&gt;
-            &lt;name&gt;mem&lt;/name&gt;
-            &lt;type&gt;avalon&lt;/type&gt;
-            &lt;isStart&gt;false&lt;/isStart&gt;
-            &lt;ports&gt;
-                &lt;port&gt;
-                    &lt;name&gt;avs_mem_address&lt;/name&gt;
-                    &lt;role&gt;address&lt;/role&gt;
-                    &lt;direction&gt;Input&lt;/direction&gt;
-                    &lt;width&gt;1&lt;/width&gt;
-                    &lt;lowerBound&gt;0&lt;/lowerBound&gt;
-                    &lt;vhdlType&gt;STD_LOGIC_VECTOR&lt;/vhdlType&gt;
-                &lt;/port&gt;
-                &lt;port&gt;
-                    &lt;name&gt;avs_mem_write&lt;/name&gt;
-                    &lt;role&gt;write&lt;/role&gt;
-                    &lt;direction&gt;Input&lt;/direction&gt;
-                    &lt;width&gt;1&lt;/width&gt;
-                    &lt;lowerBound&gt;0&lt;/lowerBound&gt;
-                    &lt;vhdlType&gt;STD_LOGIC&lt;/vhdlType&gt;
-                &lt;/port&gt;
-                &lt;port&gt;
-                    &lt;name&gt;avs_mem_writedata&lt;/name&gt;
-                    &lt;role&gt;writedata&lt;/role&gt;
-                    &lt;direction&gt;Input&lt;/direction&gt;
-                    &lt;width&gt;32&lt;/width&gt;
-                    &lt;lowerBound&gt;0&lt;/lowerBound&gt;
-                    &lt;vhdlType&gt;STD_LOGIC_VECTOR&lt;/vhdlType&gt;
-                &lt;/port&gt;
-                &lt;port&gt;
-                    &lt;name&gt;avs_mem_read&lt;/name&gt;
-                    &lt;role&gt;read&lt;/role&gt;
-                    &lt;direction&gt;Input&lt;/direction&gt;
-                    &lt;width&gt;1&lt;/width&gt;
-                    &lt;lowerBound&gt;0&lt;/lowerBound&gt;
-                    &lt;vhdlType&gt;STD_LOGIC&lt;/vhdlType&gt;
-                &lt;/port&gt;
-                &lt;port&gt;
-                    &lt;name&gt;avs_mem_readdata&lt;/name&gt;
-                    &lt;role&gt;readdata&lt;/role&gt;
-                    &lt;direction&gt;Output&lt;/direction&gt;
-                    &lt;width&gt;32&lt;/width&gt;
-                    &lt;lowerBound&gt;0&lt;/lowerBound&gt;
-                    &lt;vhdlType&gt;STD_LOGIC_VECTOR&lt;/vhdlType&gt;
-                &lt;/port&gt;
-            &lt;/ports&gt;
-            &lt;assignments&gt;
-                &lt;assignmentValueMap&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;embeddedsw.configuration.isFlash&lt;/key&gt;
-                        &lt;value&gt;0&lt;/value&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;embeddedsw.configuration.isMemoryDevice&lt;/key&gt;
-                        &lt;value&gt;0&lt;/value&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;embeddedsw.configuration.isNonVolatileStorage&lt;/key&gt;
-                        &lt;value&gt;0&lt;/value&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;embeddedsw.configuration.isPrintableDevice&lt;/key&gt;
-                        &lt;value&gt;0&lt;/value&gt;
-                    &lt;/entry&gt;
-                &lt;/assignmentValueMap&gt;
-            &lt;/assignments&gt;
-            &lt;parameters&gt;
-                &lt;parameterValueMap&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;addressAlignment&lt;/key&gt;
-                        &lt;value&gt;DYNAMIC&lt;/value&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;addressGroup&lt;/key&gt;
-                        &lt;value&gt;0&lt;/value&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;addressSpan&lt;/key&gt;
-                        &lt;value&gt;8&lt;/value&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;addressUnits&lt;/key&gt;
-                        &lt;value&gt;WORDS&lt;/value&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;alwaysBurstMaxBurst&lt;/key&gt;
-                        &lt;value&gt;false&lt;/value&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;associatedClock&lt;/key&gt;
-                        &lt;value&gt;system&lt;/value&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;associatedReset&lt;/key&gt;
-                        &lt;value&gt;system_reset&lt;/value&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;bitsPerSymbol&lt;/key&gt;
-                        &lt;value&gt;8&lt;/value&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;bridgedAddressOffset&lt;/key&gt;
-                        &lt;value&gt;0&lt;/value&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;bridgesToMaster&lt;/key&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;burstOnBurstBoundariesOnly&lt;/key&gt;
-                        &lt;value&gt;false&lt;/value&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;burstcountUnits&lt;/key&gt;
-                        &lt;value&gt;WORDS&lt;/value&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;constantBurstBehavior&lt;/key&gt;
-                        &lt;value&gt;false&lt;/value&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;explicitAddressSpan&lt;/key&gt;
-                        &lt;value&gt;0&lt;/value&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;holdTime&lt;/key&gt;
-                        &lt;value&gt;0&lt;/value&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;interleaveBursts&lt;/key&gt;
-                        &lt;value&gt;false&lt;/value&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;isBigEndian&lt;/key&gt;
-                        &lt;value&gt;false&lt;/value&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;isFlash&lt;/key&gt;
-                        &lt;value&gt;false&lt;/value&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;isMemoryDevice&lt;/key&gt;
-                        &lt;value&gt;false&lt;/value&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;isNonVolatileStorage&lt;/key&gt;
-                        &lt;value&gt;false&lt;/value&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;linewrapBursts&lt;/key&gt;
-                        &lt;value&gt;false&lt;/value&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;maximumPendingReadTransactions&lt;/key&gt;
-                        &lt;value&gt;0&lt;/value&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;maximumPendingWriteTransactions&lt;/key&gt;
-                        &lt;value&gt;0&lt;/value&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;minimumReadLatency&lt;/key&gt;
-                        &lt;value&gt;1&lt;/value&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;minimumResponseLatency&lt;/key&gt;
-                        &lt;value&gt;1&lt;/value&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;minimumUninterruptedRunLength&lt;/key&gt;
-                        &lt;value&gt;1&lt;/value&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;prSafe&lt;/key&gt;
-                        &lt;value&gt;false&lt;/value&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;printableDevice&lt;/key&gt;
-                        &lt;value&gt;false&lt;/value&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;readLatency&lt;/key&gt;
-                        &lt;value&gt;1&lt;/value&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;readWaitStates&lt;/key&gt;
-                        &lt;value&gt;0&lt;/value&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;readWaitTime&lt;/key&gt;
-                        &lt;value&gt;0&lt;/value&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;registerIncomingSignals&lt;/key&gt;
-                        &lt;value&gt;false&lt;/value&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;registerOutgoingSignals&lt;/key&gt;
-                        &lt;value&gt;false&lt;/value&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;setupTime&lt;/key&gt;
-                        &lt;value&gt;0&lt;/value&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;timingUnits&lt;/key&gt;
-                        &lt;value&gt;Cycles&lt;/value&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;transparentBridge&lt;/key&gt;
-                        &lt;value&gt;false&lt;/value&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;waitrequestAllowance&lt;/key&gt;
-                        &lt;value&gt;0&lt;/value&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;wellBehavedWaitrequest&lt;/key&gt;
-                        &lt;value&gt;false&lt;/value&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;writeLatency&lt;/key&gt;
-                        &lt;value&gt;0&lt;/value&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;writeWaitStates&lt;/key&gt;
-                        &lt;value&gt;0&lt;/value&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;writeWaitTime&lt;/key&gt;
-                        &lt;value&gt;0&lt;/value&gt;
-                    &lt;/entry&gt;
-                &lt;/parameterValueMap&gt;
-            &lt;/parameters&gt;
-        &lt;/interface&gt;
-        &lt;interface&gt;
-            &lt;name&gt;reset&lt;/name&gt;
-            &lt;type&gt;conduit&lt;/type&gt;
-            &lt;isStart&gt;false&lt;/isStart&gt;
-            &lt;ports&gt;
-                &lt;port&gt;
-                    &lt;name&gt;coe_reset_export&lt;/name&gt;
-                    &lt;role&gt;export&lt;/role&gt;
-                    &lt;direction&gt;Output&lt;/direction&gt;
-                    &lt;width&gt;1&lt;/width&gt;
-                    &lt;lowerBound&gt;0&lt;/lowerBound&gt;
-                    &lt;vhdlType&gt;STD_LOGIC&lt;/vhdlType&gt;
-                &lt;/port&gt;
-            &lt;/ports&gt;
-            &lt;assignments&gt;
-                &lt;assignmentValueMap/&gt;
-            &lt;/assignments&gt;
-            &lt;parameters&gt;
-                &lt;parameterValueMap&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;associatedClock&lt;/key&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;associatedReset&lt;/key&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;prSafe&lt;/key&gt;
-                        &lt;value&gt;false&lt;/value&gt;
-                    &lt;/entry&gt;
-                &lt;/parameterValueMap&gt;
-            &lt;/parameters&gt;
-        &lt;/interface&gt;
-        &lt;interface&gt;
-            &lt;name&gt;clk&lt;/name&gt;
-            &lt;type&gt;conduit&lt;/type&gt;
-            &lt;isStart&gt;false&lt;/isStart&gt;
-            &lt;ports&gt;
-                &lt;port&gt;
-                    &lt;name&gt;coe_clk_export&lt;/name&gt;
-                    &lt;role&gt;export&lt;/role&gt;
-                    &lt;direction&gt;Output&lt;/direction&gt;
-                    &lt;width&gt;1&lt;/width&gt;
-                    &lt;lowerBound&gt;0&lt;/lowerBound&gt;
-                    &lt;vhdlType&gt;STD_LOGIC&lt;/vhdlType&gt;
-                &lt;/port&gt;
-            &lt;/ports&gt;
-            &lt;assignments&gt;
-                &lt;assignmentValueMap/&gt;
-            &lt;/assignments&gt;
-            &lt;parameters&gt;
-                &lt;parameterValueMap&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;associatedClock&lt;/key&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;associatedReset&lt;/key&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;prSafe&lt;/key&gt;
-                        &lt;value&gt;false&lt;/value&gt;
-                    &lt;/entry&gt;
-                &lt;/parameterValueMap&gt;
-            &lt;/parameters&gt;
-        &lt;/interface&gt;
-        &lt;interface&gt;
-            &lt;name&gt;address&lt;/name&gt;
-            &lt;type&gt;conduit&lt;/type&gt;
-            &lt;isStart&gt;false&lt;/isStart&gt;
-            &lt;ports&gt;
-                &lt;port&gt;
-                    &lt;name&gt;coe_address_export&lt;/name&gt;
-                    &lt;role&gt;export&lt;/role&gt;
-                    &lt;direction&gt;Output&lt;/direction&gt;
-                    &lt;width&gt;1&lt;/width&gt;
-                    &lt;lowerBound&gt;0&lt;/lowerBound&gt;
-                    &lt;vhdlType&gt;STD_LOGIC_VECTOR&lt;/vhdlType&gt;
-                &lt;/port&gt;
-            &lt;/ports&gt;
-            &lt;assignments&gt;
-                &lt;assignmentValueMap/&gt;
-            &lt;/assignments&gt;
-            &lt;parameters&gt;
-                &lt;parameterValueMap&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;associatedClock&lt;/key&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;associatedReset&lt;/key&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;prSafe&lt;/key&gt;
-                        &lt;value&gt;false&lt;/value&gt;
-                    &lt;/entry&gt;
-                &lt;/parameterValueMap&gt;
-            &lt;/parameters&gt;
-        &lt;/interface&gt;
-        &lt;interface&gt;
-            &lt;name&gt;write&lt;/name&gt;
-            &lt;type&gt;conduit&lt;/type&gt;
-            &lt;isStart&gt;false&lt;/isStart&gt;
-            &lt;ports&gt;
-                &lt;port&gt;
-                    &lt;name&gt;coe_write_export&lt;/name&gt;
-                    &lt;role&gt;export&lt;/role&gt;
-                    &lt;direction&gt;Output&lt;/direction&gt;
-                    &lt;width&gt;1&lt;/width&gt;
-                    &lt;lowerBound&gt;0&lt;/lowerBound&gt;
-                    &lt;vhdlType&gt;STD_LOGIC&lt;/vhdlType&gt;
-                &lt;/port&gt;
-            &lt;/ports&gt;
-            &lt;assignments&gt;
-                &lt;assignmentValueMap/&gt;
-            &lt;/assignments&gt;
-            &lt;parameters&gt;
-                &lt;parameterValueMap&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;associatedClock&lt;/key&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;associatedReset&lt;/key&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;prSafe&lt;/key&gt;
-                        &lt;value&gt;false&lt;/value&gt;
-                    &lt;/entry&gt;
-                &lt;/parameterValueMap&gt;
-            &lt;/parameters&gt;
-        &lt;/interface&gt;
-        &lt;interface&gt;
-            &lt;name&gt;writedata&lt;/name&gt;
-            &lt;type&gt;conduit&lt;/type&gt;
-            &lt;isStart&gt;false&lt;/isStart&gt;
-            &lt;ports&gt;
-                &lt;port&gt;
-                    &lt;name&gt;coe_writedata_export&lt;/name&gt;
-                    &lt;role&gt;export&lt;/role&gt;
-                    &lt;direction&gt;Output&lt;/direction&gt;
-                    &lt;width&gt;32&lt;/width&gt;
-                    &lt;lowerBound&gt;0&lt;/lowerBound&gt;
-                    &lt;vhdlType&gt;STD_LOGIC_VECTOR&lt;/vhdlType&gt;
-                &lt;/port&gt;
-            &lt;/ports&gt;
-            &lt;assignments&gt;
-                &lt;assignmentValueMap/&gt;
-            &lt;/assignments&gt;
-            &lt;parameters&gt;
-                &lt;parameterValueMap&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;associatedClock&lt;/key&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;associatedReset&lt;/key&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;prSafe&lt;/key&gt;
-                        &lt;value&gt;false&lt;/value&gt;
-                    &lt;/entry&gt;
-                &lt;/parameterValueMap&gt;
-            &lt;/parameters&gt;
-        &lt;/interface&gt;
-        &lt;interface&gt;
-            &lt;name&gt;read&lt;/name&gt;
-            &lt;type&gt;conduit&lt;/type&gt;
-            &lt;isStart&gt;false&lt;/isStart&gt;
-            &lt;ports&gt;
-                &lt;port&gt;
-                    &lt;name&gt;coe_read_export&lt;/name&gt;
-                    &lt;role&gt;export&lt;/role&gt;
-                    &lt;direction&gt;Output&lt;/direction&gt;
-                    &lt;width&gt;1&lt;/width&gt;
-                    &lt;lowerBound&gt;0&lt;/lowerBound&gt;
-                    &lt;vhdlType&gt;STD_LOGIC&lt;/vhdlType&gt;
-                &lt;/port&gt;
-            &lt;/ports&gt;
-            &lt;assignments&gt;
-                &lt;assignmentValueMap/&gt;
-            &lt;/assignments&gt;
-            &lt;parameters&gt;
-                &lt;parameterValueMap&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;associatedClock&lt;/key&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;associatedReset&lt;/key&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;prSafe&lt;/key&gt;
-                        &lt;value&gt;false&lt;/value&gt;
-                    &lt;/entry&gt;
-                &lt;/parameterValueMap&gt;
-            &lt;/parameters&gt;
-        &lt;/interface&gt;
-        &lt;interface&gt;
-            &lt;name&gt;readdata&lt;/name&gt;
-            &lt;type&gt;conduit&lt;/type&gt;
-            &lt;isStart&gt;false&lt;/isStart&gt;
-            &lt;ports&gt;
-                &lt;port&gt;
-                    &lt;name&gt;coe_readdata_export&lt;/name&gt;
-                    &lt;role&gt;export&lt;/role&gt;
-                    &lt;direction&gt;Input&lt;/direction&gt;
-                    &lt;width&gt;32&lt;/width&gt;
-                    &lt;lowerBound&gt;0&lt;/lowerBound&gt;
-                    &lt;vhdlType&gt;STD_LOGIC_VECTOR&lt;/vhdlType&gt;
-                &lt;/port&gt;
-            &lt;/ports&gt;
-            &lt;assignments&gt;
-                &lt;assignmentValueMap/&gt;
-            &lt;/assignments&gt;
-            &lt;parameters&gt;
-                &lt;parameterValueMap&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;associatedClock&lt;/key&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;associatedReset&lt;/key&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;prSafe&lt;/key&gt;
-                        &lt;value&gt;false&lt;/value&gt;
-                    &lt;/entry&gt;
-                &lt;/parameterValueMap&gt;
-            &lt;/parameters&gt;
-        &lt;/interface&gt;
-    &lt;/interfaces&gt;
-&lt;/boundaryDefinition&gt;</ipxact:value>
-        </ipxact:parameter>
-        <ipxact:parameter parameterId="systemInfos" type="string">
-          <ipxact:name>systemInfos</ipxact:name>
-          <ipxact:displayName>systemInfos</ipxact:displayName>
-          <ipxact:value>&lt;systemInfosDefinition&gt;
-    &lt;connPtSystemInfos&gt;
-        &lt;entry&gt;
-            &lt;key&gt;mem&lt;/key&gt;
-            &lt;value&gt;
-                &lt;connectionPointName&gt;mem&lt;/connectionPointName&gt;
-                &lt;suppliedSystemInfos/&gt;
-                &lt;consumedSystemInfos&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;ADDRESS_MAP&lt;/key&gt;
-                        &lt;value&gt;&amp;lt;address-map&amp;gt;&amp;lt;slave name='mem' start='0x0' end='0x8' datawidth='32' /&amp;gt;&amp;lt;/address-map&amp;gt;&lt;/value&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;ADDRESS_WIDTH&lt;/key&gt;
-                        &lt;value&gt;3&lt;/value&gt;
-                    &lt;/entry&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;MAX_SLAVE_DATA_WIDTH&lt;/key&gt;
-                        &lt;value&gt;32&lt;/value&gt;
-                    &lt;/entry&gt;
-                &lt;/consumedSystemInfos&gt;
-            &lt;/value&gt;
-        &lt;/entry&gt;
-        &lt;entry&gt;
-            &lt;key&gt;system&lt;/key&gt;
-            &lt;value&gt;
-                &lt;connectionPointName&gt;system&lt;/connectionPointName&gt;
-                &lt;suppliedSystemInfos&gt;
-                    &lt;entry&gt;
-                        &lt;key&gt;CLOCK_RATE&lt;/key&gt;
-                        &lt;value&gt;100000000&lt;/value&gt;
-                    &lt;/entry&gt;
-                &lt;/suppliedSystemInfos&gt;
-                &lt;consumedSystemInfos/&gt;
-            &lt;/value&gt;
-        &lt;/entry&gt;
-    &lt;/connPtSystemInfos&gt;
-&lt;/systemInfosDefinition&gt;</ipxact:value>
-        </ipxact:parameter>
-      </ipxact:parameters>
-    </altera:altera_system_parameters>
-    <altera:altera_interface_boundary>
-      <altera:interface_mapping altera:name="address" altera:internal="reg_mmdp_data_1.address" altera:type="conduit" altera:dir="end">
-        <altera:port_mapping altera:name="coe_address_export" altera:internal="coe_address_export"></altera:port_mapping>
-      </altera:interface_mapping>
-      <altera:interface_mapping altera:name="clk" altera:internal="reg_mmdp_data_1.clk" altera:type="conduit" altera:dir="end">
-        <altera:port_mapping altera:name="coe_clk_export" altera:internal="coe_clk_export"></altera:port_mapping>
-      </altera:interface_mapping>
-      <altera:interface_mapping altera:name="mem" altera:internal="reg_mmdp_data_1.mem" altera:type="avalon" altera:dir="end">
-        <altera:port_mapping altera:name="avs_mem_address" altera:internal="avs_mem_address"></altera:port_mapping>
-        <altera:port_mapping altera:name="avs_mem_read" altera:internal="avs_mem_read"></altera:port_mapping>
-        <altera:port_mapping altera:name="avs_mem_readdata" altera:internal="avs_mem_readdata"></altera:port_mapping>
-        <altera:port_mapping altera:name="avs_mem_write" altera:internal="avs_mem_write"></altera:port_mapping>
-        <altera:port_mapping altera:name="avs_mem_writedata" altera:internal="avs_mem_writedata"></altera:port_mapping>
-      </altera:interface_mapping>
-      <altera:interface_mapping altera:name="read" altera:internal="reg_mmdp_data_1.read" altera:type="conduit" altera:dir="end">
-        <altera:port_mapping altera:name="coe_read_export" altera:internal="coe_read_export"></altera:port_mapping>
-      </altera:interface_mapping>
-      <altera:interface_mapping altera:name="readdata" altera:internal="reg_mmdp_data_1.readdata" altera:type="conduit" altera:dir="end">
-        <altera:port_mapping altera:name="coe_readdata_export" altera:internal="coe_readdata_export"></altera:port_mapping>
-      </altera:interface_mapping>
-      <altera:interface_mapping altera:name="reset" altera:internal="reg_mmdp_data_1.reset" altera:type="conduit" altera:dir="end">
-        <altera:port_mapping altera:name="coe_reset_export" altera:internal="coe_reset_export"></altera:port_mapping>
-      </altera:interface_mapping>
-      <altera:interface_mapping altera:name="system" altera:internal="reg_mmdp_data_1.system" altera:type="clock" altera:dir="end">
-        <altera:port_mapping altera:name="csi_system_clk" altera:internal="csi_system_clk"></altera:port_mapping>
-      </altera:interface_mapping>
-      <altera:interface_mapping altera:name="system_reset" altera:internal="reg_mmdp_data_1.system_reset" altera:type="reset" altera:dir="end">
-        <altera:port_mapping altera:name="csi_system_reset" altera:internal="csi_system_reset"></altera:port_mapping>
-      </altera:interface_mapping>
-      <altera:interface_mapping altera:name="write" altera:internal="reg_mmdp_data_1.write" altera:type="conduit" altera:dir="end">
-        <altera:port_mapping altera:name="coe_write_export" altera:internal="coe_write_export"></altera:port_mapping>
-      </altera:interface_mapping>
-      <altera:interface_mapping altera:name="writedata" altera:internal="reg_mmdp_data_1.writedata" altera:type="conduit" altera:dir="end">
-        <altera:port_mapping altera:name="coe_writedata_export" altera:internal="coe_writedata_export"></altera:port_mapping>
-      </altera:interface_mapping>
-    </altera:altera_interface_boundary>
-    <altera:altera_has_warnings>false</altera:altera_has_warnings>
-    <altera:altera_has_errors>false</altera:altera_has_errors>
-  </ipxact:vendorExtensions>
-</ipxact:component>
\ No newline at end of file
diff --git a/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/freeze_wrapper.v b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/freeze_wrapper.v
index 23f1c90760cfb5a47c118f4294b506a8ea50bffb..e0f4da2ea13db7ad51b97d0bbabfb49304206ad4 100755
--- a/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/freeze_wrapper.v
+++ b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/freeze_wrapper.v
@@ -42,9 +42,12 @@ module freeze_wrapper(
   input  wire         board_kernel_stream_src_ADC_valid,
   output wire         board_kernel_stream_src_ADC_ready,
 
-  input  wire [31:0]  board_kernel_stream_src_mm_io_data,
+  input  wire [71:0]  board_kernel_stream_src_mm_io_data,
   input  wire         board_kernel_stream_src_mm_io_valid,
   output wire         board_kernel_stream_src_mm_io_ready,
+  output wire [31:0]  board_kernel_stream_snk_mm_io_data,
+  output wire         board_kernel_stream_snk_mm_io_valid,
+  input  wire         board_kernel_stream_snk_mm_io_ready,
 
   input  wire [39:0]  board_kernel_stream_src_1GbE_data,
   input  wire         board_kernel_stream_src_1GbE_valid,
@@ -255,6 +258,9 @@ pr_region pr_region_inst
   .kernel_stream_src_ADC_ready(board_kernel_stream_src_ADC_ready),
   .kernel_stream_src_ADC_valid(board_kernel_stream_src_ADC_valid),
 
+  .kernel_stream_snk_mm_io_data(board_kernel_stream_snk_mm_io_data),
+  .kernel_stream_snk_mm_io_ready(board_kernel_stream_snk_mm_io_ready),
+  .kernel_stream_snk_mm_io_valid(board_kernel_stream_snk_mm_io_valid),
   .kernel_stream_src_mm_io_data(board_kernel_stream_src_mm_io_data),
   .kernel_stream_src_mm_io_ready(board_kernel_stream_src_mm_io_ready),
   .kernel_stream_src_mm_io_valid(board_kernel_stream_src_mm_io_valid),
diff --git a/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/pr_region.v b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/pr_region.v
index 9328a1f416615d50d203cb4f6d7bea302a00a35c..a24b63b57ffe6d086fa8616c320955f48da97480 100755
--- a/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/pr_region.v
+++ b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/pr_region.v
@@ -57,9 +57,12 @@ module pr_region (
   input  wire         kernel_stream_src_ADC_valid,
   output wire         kernel_stream_src_ADC_ready,
 
-  input  wire [31:0]  kernel_stream_src_mm_io_data,
+  input  wire [71:0]  kernel_stream_src_mm_io_data,
   input  wire         kernel_stream_src_mm_io_valid,
   output wire         kernel_stream_src_mm_io_ready,
+  output wire [31:0]  kernel_stream_snk_mm_io_data,
+  output wire         kernel_stream_snk_mm_io_valid,
+  input  wire         kernel_stream_snk_mm_io_ready,
 
   input  wire [39:0]  kernel_stream_src_1GbE_data,
   input  wire         kernel_stream_src_1GbE_valid,
@@ -251,6 +254,9 @@ kernel_system kernel_system_inst
   .kernel_input_mm_ready(kernel_stream_src_mm_io_ready),
   .kernel_input_mm_valid(kernel_stream_src_mm_io_valid),
 
+  .kernel_output_mm_data(kernel_stream_snk_mm_io_data),
+  .kernel_output_mm_ready(kernel_stream_snk_mm_io_ready),
+  .kernel_output_mm_valid(kernel_stream_snk_mm_io_valid),
 
   .kernel_mem0_address(pipelined_kernel_mem0_s0_address),
   .kernel_mem0_read(pipelined_kernel_mem0_s0_read),
diff --git a/applications/ta2/bsp/hardware/ta2_unb2b_bsp/opencl_bsp_ip.qsf b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/opencl_bsp_ip.qsf
index 170b847576e8a796004097f7e8b8e621c464c406..1b449e26dbfe739ee08472ab1d77b56517d682b6 100755
--- a/applications/ta2/bsp/hardware/ta2_unb2b_bsp/opencl_bsp_ip.qsf
+++ b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/opencl_bsp_ip.qsf
@@ -68,3 +68,4 @@ set_global_assignment -name IP_FILE ip/board/board_jtag_uart_0.ip
 set_global_assignment -name IP_FILE ip/board/board_kernel_clk.ip
 set_global_assignment -name IP_FILE ip/board/board_onchip_memory.ip
 set_global_assignment -name IP_FILE ip/board/board_reg_ta2_unb2b_jesd204b.ip
+set_global_assignment -name IP_FILE ip/board/board_reg_ta2_unb2b_mm_io.ip
diff --git a/applications/ta2/bsp/hardware/ta2_unb2b_bsp/scripts/pre_flow_pr.tcl b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/scripts/pre_flow_pr.tcl
index cb6dd4342ad9156b7dad6fe50dac2c6d5b40c65e..438f99f0a12e80fd74dd8ceef9eeedd90060c6d4 100755
--- a/applications/ta2/bsp/hardware/ta2_unb2b_bsp/scripts/pre_flow_pr.tcl
+++ b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/scripts/pre_flow_pr.tcl
@@ -108,7 +108,7 @@ if {[file exists "$::env(RADIOHDL_BUILD_DIR)/unb2b/quartus/$board_name/$board_na
   exit 2
 
 }
-# Copy memory initialization file
+# Copy memory initialization files
 if {[file exists "$::env(RADIOHDL_BUILD_DIR)/unb2b/quartus/$board_name/onchip_memory2_0.hex"] == 1} {
   file copy -force $::env(RADIOHDL_BUILD_DIR)/unb2b/quartus/$board_name/onchip_memory2_0.hex onchip_memory2_0.hex 
 } else {
@@ -116,9 +116,15 @@ if {[file exists "$::env(RADIOHDL_BUILD_DIR)/unb2b/quartus/$board_name/onchip_me
   post_message -type error "quartus_config unb2b; run_qsys unb2b $board_name board.qsys"
   post_message -type error "Terminating pre-flow script"
   exit 2
-
 }
-
+if {[file exists "$::env(RADIOHDL_BUILD_DIR)/unb2b/quartus/$board_name/$board_name.mif"] == 1} {
+  file copy -force $::env(RADIOHDL_BUILD_DIR)/unb2b/quartus/$board_name/$board_name.mif $board_name.mif
+} else {
+  post_message -type error "It seems that the BSP has not been initialized yet, please execute the following commands and try again:"
+  post_message -type error "quartus_config unb2b; run_qsys unb2b $board_name board.qsys"
+  post_message -type error "Terminating pre-flow script"
+  exit 2
+}
 post_message "Compiling $revision_name revision: generating and archiving board.qsys"
 post_message "    qsys-generate -syn --family=\"Arria 10\" --part=$device_name board.qsys"
 qexec "qsys-generate -syn --family=\"Arria 10\" --part=$device_name board.qsys"
diff --git a/applications/ta2/bsp/hardware/ta2_unb2b_bsp/top.vhd b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/top.vhd
index 3c62c1dbe2fa0a74007b6f83f743fec452e88fd0..e92596380c9dc9b8d115918eaf2876b9f4b37f71 100644
--- a/applications/ta2/bsp/hardware/ta2_unb2b_bsp/top.vhd
+++ b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/top.vhd
@@ -26,11 +26,12 @@
 --   include:
 --   . 40 GbE
 --   . 10 GbE
+--   . 1 GbE
 --   . ADC
---   . 1 GbE M&C
+--   . M&C
 -- --------------------------------------------------------------------------
 
-LIBRARY IEEE, common_lib, unb2b_board_lib, technology_lib, dp_lib, tech_ddr_lib, ta2_unb2b_40GbE_lib, ta2_unb2b_10gbe_lib, ta2_unb2b_1gbe_mc_lib, ta2_unb2b_mm_io_lib, ta2_unb2b_jesd204b_lib ;
+LIBRARY IEEE, common_lib, unb2b_board_lib, technology_lib, dp_lib, tech_ddr_lib, ta2_unb2b_40GbE_lib, ta2_unb2b_10gbe_lib, ta2_unb2b_1gbe_lib, ta2_unb2b_mm_io_lib, ta2_unb2b_jesd204b_lib ;
 USE IEEE.STD_LOGIC_1164.ALL;
 USE IEEE.NUMERIC_STD.ALL;
 USE common_lib.common_pkg.ALL;
@@ -245,14 +246,10 @@ ARCHITECTURE str OF top IS
   SIGNAL reg_ta2_unb2b_jesd204b_mosi : t_mem_mosi;
   SIGNAL reg_ta2_unb2b_jesd204b_miso : t_mem_miso;
 
-  -- MM IO Reg
-  SIGNAL ta2_unb2b_mm_io_ctrl_mosi   : t_mem_mosi;
-  SIGNAL ta2_unb2b_mm_io_ctrl_miso   : t_mem_miso;
+  -- MM IO 
+  SIGNAL reg_ta2_unb2b_mm_io_mosi   : t_mem_mosi;
+  SIGNAL reg_ta2_unb2b_mm_io_miso   : t_mem_miso;
   
-  -- MM IO Data
-  SIGNAL ta2_unb2b_mm_io_data_mosi   : t_mem_mosi;
-  SIGNAL ta2_unb2b_mm_io_data_miso   : t_mem_miso;
-
 
   -- QSFP
   SIGNAL i_QSFP_TX                  : t_unb2b_board_qsfp_bus_2arr(c_nof_qsfp_bus-1 DOWNTO 0); 
@@ -342,11 +339,12 @@ ARCHITECTURE str OF top IS
   SIGNAL ta2_unb2b_ADC_src_out_arr                    : t_dp_sosi_arr(c_nof_ADC-1 DOWNTO 0);
   SIGNAL ta2_unb2b_ADC_src_in_arr                     : t_dp_siso_arr(c_nof_ADC-1 DOWNTO 0);
 
+  SIGNAL ta2_unb2b_mm_io_snk_in                       : t_dp_sosi;
+  SIGNAL ta2_unb2b_mm_io_snk_out                      : t_dp_siso;
   SIGNAL ta2_unb2b_mm_io_src_out                      : t_dp_sosi;
   SIGNAL ta2_unb2b_mm_io_src_in                       : t_dp_siso;
 
 
-
   CONSTANT c_ones : STD_LOGIC_VECTOR(511 DOWNTO 0) := (OTHERS => '1');
 
 BEGIN
@@ -501,7 +499,7 @@ BEGIN
   -----------------------------
   -- 1GbE Monitoring & Control
   -----------------------------
-  u_ta2_unb2b_1GbE_mc : ENTITY ta2_unb2b_1GbE_mc_lib.ta2_unb2b_1GbE_mc
+  u_ta2_unb2b_1GbE : ENTITY ta2_unb2b_1GbE_lib.ta2_unb2b_1GbE
   PORT MAP (
     st_clk           => st_clk,
     st_rst           => st_rst,
@@ -521,10 +519,13 @@ BEGIN
   );
 
 
-  -----------------------------
+  --------------------------------------
   -- Monitoring & Control UNB protocol
-  -----------------------------
+  --------------------------------------
   u_ta2_unb2b_mm_io : ENTITY ta2_unb2b_mm_io_lib.ta2_unb2b_mm_io
+  GENERIC MAP(
+    g_use_opencl => TRUE
+  )
   PORT MAP (
     mm_clk        =>  mm_clk,         
     mm_rst        =>  mm_rst,
@@ -532,20 +533,17 @@ BEGIN
     kernel_clk    =>  board_kernel_clk_clk,
     kernel_reset  =>  i_kernel_rst,   
 
-    ctrl_mosi     =>  ta2_unb2b_mm_io_ctrl_mosi,   
-    ctrl_miso     =>  ta2_unb2b_mm_io_ctrl_miso,     
-    data_mosi     =>  ta2_unb2b_mm_io_data_mosi,     
-    data_miso     =>  ta2_unb2b_mm_io_data_miso,
+    mm_mosi       =>  reg_ta2_unb2b_mm_io_mosi,   
+    mm_miso       =>  reg_ta2_unb2b_mm_io_miso,     
 
+    snk_in        =>  ta2_unb2b_mm_io_snk_in,        
+    snk_out       =>  ta2_unb2b_mm_io_snk_out,  
     src_out       =>  ta2_unb2b_mm_io_src_out,        
     src_in        =>  ta2_unb2b_mm_io_src_in         
 
   );
 
 
-
-
-
   ----------
   -- ADC
   ----------
@@ -689,9 +687,12 @@ BEGIN
     board_kernel_stream_snk_1GbE_valid          => ta2_unb2b_1GbE_snk_in.valid,
     board_kernel_stream_snk_1GbE_ready          => ta2_unb2b_1GbE_snk_out.ready,
 
-    board_kernel_stream_src_mm_io_data          => ta2_unb2b_mm_io_src_out.data(31 DOWNTO 0),
+    board_kernel_stream_src_mm_io_data          => ta2_unb2b_mm_io_src_out.data(71 DOWNTO 0),
     board_kernel_stream_src_mm_io_valid         => ta2_unb2b_mm_io_src_out.valid,
     board_kernel_stream_src_mm_io_ready         => ta2_unb2b_mm_io_src_in.ready,
+    board_kernel_stream_snk_mm_io_data          => ta2_unb2b_mm_io_snk_in.data(31 DOWNTO 0),
+    board_kernel_stream_snk_mm_io_valid         => ta2_unb2b_mm_io_snk_in.valid,
+    board_kernel_stream_snk_mm_io_ready         => ta2_unb2b_mm_io_snk_out.ready,
 
     board_kernel_stream_src_ADC_data            => ta2_unb2b_ADC_src_out_arr(0).data(15 DOWNTO 0),
     board_kernel_stream_src_ADC_valid           => ta2_unb2b_ADC_src_out_arr(0).valid,
@@ -1003,19 +1004,12 @@ BEGIN
       kernel_register_mem_writedata             => board_kernel_register_mem_writedata,
       kernel_register_mem_byteenable            => board_kernel_register_mem_byteenable,        
 
-      reg_mmdp_data_1_address_export              => ta2_unb2b_mm_io_data_mosi.address(0 DOWNTO 0),
-      reg_mmdp_data_1_write_export                => ta2_unb2b_mm_io_data_mosi.wr,
-      reg_mmdp_data_1_writedata_export            => ta2_unb2b_mm_io_data_mosi.wrdata(c_word_w-1 DOWNTO 0),
-      reg_mmdp_data_1_read_export                 => ta2_unb2b_mm_io_data_mosi.rd,
-      reg_mmdp_data_1_readdata_export             => ta2_unb2b_mm_io_data_miso.rddata(c_word_w-1 DOWNTO 0),
-
-      reg_mmdp_ctrl_1_address_export              => ta2_unb2b_mm_io_ctrl_mosi.address(0 DOWNTO 0),
-      reg_mmdp_ctrl_1_read_export                 => ta2_unb2b_mm_io_ctrl_mosi.rd,
-      reg_mmdp_ctrl_1_readdata_export             => ta2_unb2b_mm_io_ctrl_miso.rddata(c_word_w-1 DOWNTO 0),
-      reg_mmdp_ctrl_1_write_export                => ta2_unb2b_mm_io_ctrl_mosi.wr,
-      reg_mmdp_ctrl_1_writedata_export            => ta2_unb2b_mm_io_ctrl_mosi.wrdata(c_word_w-1 DOWNTO 0),
-
-
+      reg_ta2_unb2b_mm_io_address_export        => reg_ta2_unb2b_mm_io_mosi.address(7 DOWNTO 0),
+      reg_ta2_unb2b_mm_io_read_export           => reg_ta2_unb2b_mm_io_mosi.rd,
+      reg_ta2_unb2b_mm_io_readdata_export       => reg_ta2_unb2b_mm_io_miso.rddata(c_word_w-1 DOWNTO 0),
+      reg_ta2_unb2b_mm_io_write_export          => reg_ta2_unb2b_mm_io_mosi.wr,
+      reg_ta2_unb2b_mm_io_writedata_export      => reg_ta2_unb2b_mm_io_mosi.wrdata(c_word_w-1 DOWNTO 0),
+      reg_ta2_unb2b_mm_io_waitrequest_export    => reg_ta2_unb2b_mm_io_miso.waitrequest,
 
       kernel_mem0_waitrequest                   => board_kernel_mem0_waitrequest,         
       kernel_mem0_readdata                      => board_kernel_mem0_readdata,      
diff --git a/applications/ta2/bsp/hardware/ta2_unb2b_bsp/top_components_pkg.vhd b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/top_components_pkg.vhd
index 2196157cf8ceb144ad6c9c8876ceed3a3ee051cf..382c0043c8d7ca95566d025ab4f51a55926a5fe2 100644
--- a/applications/ta2/bsp/hardware/ta2_unb2b_bsp/top_components_pkg.vhd
+++ b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/top_components_pkg.vhd
@@ -29,7 +29,6 @@ USE IEEE.STD_LOGIC_1164.ALL;
 
 PACKAGE top_components_pkg IS
 
-
     component board is
         port (
             avs_eth_0_clk_export                      : out   std_logic;                                         -- export
@@ -85,6 +84,24 @@ PACKAGE top_components_pkg IS
             kernel_cra_debugaccess                    : out   std_logic;                                         -- debugaccess
             kernel_irq_irq                            : in    std_logic_vector(0 downto 0)   := (others => 'X'); -- irq
             kernel_interface_sw_reset_in_reset        : in    std_logic                      := 'X';             -- reset
+            ddr4a_pll_ref_clk                         : in    std_logic                      := 'X';             -- clk
+            ddr4a_oct_oct_rzqin                       : in    std_logic                      := 'X';             -- oct_rzqin
+            ddr4a_mem_ck                              : out   std_logic_vector(1 downto 0);                      -- mem_ck
+            ddr4a_mem_ck_n                            : out   std_logic_vector(1 downto 0);                      -- mem_ck_n
+            ddr4a_mem_a                               : out   std_logic_vector(16 downto 0);                     -- mem_a
+            ddr4a_mem_act_n                           : out   std_logic_vector(0 downto 0);                      -- mem_act_n
+            ddr4a_mem_ba                              : out   std_logic_vector(1 downto 0);                      -- mem_ba
+            ddr4a_mem_bg                              : out   std_logic_vector(1 downto 0);                      -- mem_bg
+            ddr4a_mem_cke                             : out   std_logic_vector(1 downto 0);                      -- mem_cke
+            ddr4a_mem_cs_n                            : out   std_logic_vector(1 downto 0);                      -- mem_cs_n
+            ddr4a_mem_odt                             : out   std_logic_vector(1 downto 0);                      -- mem_odt
+            ddr4a_mem_reset_n                         : out   std_logic_vector(0 downto 0);                      -- mem_reset_n
+            ddr4a_mem_par                             : out   std_logic_vector(0 downto 0);                      -- mem_par
+            ddr4a_mem_alert_n                         : in    std_logic_vector(0 downto 0)   := (others => 'X'); -- mem_alert_n
+            ddr4a_mem_dqs                             : inout std_logic_vector(7 downto 0)   := (others => 'X'); -- mem_dqs
+            ddr4a_mem_dqs_n                           : inout std_logic_vector(7 downto 0)   := (others => 'X'); -- mem_dqs_n
+            ddr4a_mem_dq                              : inout std_logic_vector(63 downto 0)  := (others => 'X'); -- mem_dq
+            ddr4a_mem_dbi_n                           : inout std_logic_vector(7 downto 0)   := (others => 'X'); -- mem_dbi_n
             pio_pps_address_export                    : out   std_logic_vector(0 downto 0);                      -- export
             pio_pps_clk_export                        : out   std_logic;                                         -- export
             pio_pps_read_export                       : out   std_logic;                                         -- export
@@ -164,6 +181,14 @@ PACKAGE top_components_pkg IS
             reg_ta2_unb2b_jesd204b_waitrequest_export : in    std_logic                      := 'X';             -- export
             reg_ta2_unb2b_jesd204b_write_export       : out   std_logic;                                         -- export
             reg_ta2_unb2b_jesd204b_writedata_export   : out   std_logic_vector(31 downto 0);                     -- export
+            reg_ta2_unb2b_mm_io_reset_export          : out   std_logic;                                         -- export
+            reg_ta2_unb2b_mm_io_clk_export            : out   std_logic;                                         -- export
+            reg_ta2_unb2b_mm_io_address_export        : out   std_logic_vector(7 downto 0);                      -- export
+            reg_ta2_unb2b_mm_io_write_export          : out   std_logic;                                         -- export
+            reg_ta2_unb2b_mm_io_writedata_export      : out   std_logic_vector(31 downto 0);                     -- export
+            reg_ta2_unb2b_mm_io_read_export           : out   std_logic;                                         -- export
+            reg_ta2_unb2b_mm_io_readdata_export       : in    std_logic_vector(31 downto 0)  := (others => 'X'); -- export
+            reg_ta2_unb2b_mm_io_waitrequest_export    : in    std_logic                      := 'X';             -- export
             reg_unb_pmbus_address_export              : out   std_logic_vector(5 downto 0);                      -- export
             reg_unb_pmbus_clk_export                  : out   std_logic;                                         -- export
             reg_unb_pmbus_read_export                 : out   std_logic;                                         -- export
@@ -191,197 +216,10 @@ PACKAGE top_components_pkg IS
             rom_system_info_readdata_export           : in    std_logic_vector(31 downto 0)  := (others => 'X'); -- export
             rom_system_info_reset_export              : out   std_logic;                                         -- export
             rom_system_info_write_export              : out   std_logic;                                         -- export
-            rom_system_info_writedata_export          : out   std_logic_vector(31 downto 0);                     -- export
-            reg_mmdp_ctrl_1_address_export            : out   std_logic_vector(0 downto 0);                      -- export
-            reg_mmdp_ctrl_1_clk_export                : out   std_logic;                                         -- export
-            reg_mmdp_ctrl_1_read_export               : out   std_logic;                                         -- export
-            reg_mmdp_ctrl_1_readdata_export           : in    std_logic_vector(31 downto 0)  := (others => 'X'); -- export
-            reg_mmdp_ctrl_1_reset_export              : out   std_logic;                                         -- export
-            reg_mmdp_ctrl_1_write_export              : out   std_logic;                                         -- export
-            reg_mmdp_ctrl_1_writedata_export          : out   std_logic_vector(31 downto 0);                     -- export
-            reg_mmdp_data_1_address_export            : out   std_logic_vector(0 downto 0);                      -- export
-            reg_mmdp_data_1_clk_export                : out   std_logic;                                         -- export
-            reg_mmdp_data_1_read_export               : out   std_logic;                                         -- export
-            reg_mmdp_data_1_readdata_export           : in    std_logic_vector(31 downto 0)  := (others => 'X'); -- export
-            reg_mmdp_data_1_reset_export              : out   std_logic;                                         -- export
-            reg_mmdp_data_1_write_export              : out   std_logic;                                         -- export
-            reg_mmdp_data_1_writedata_export          : out   std_logic_vector(31 downto 0);                     -- export
-            ddr4a_pll_ref_clk                         : in    std_logic                      := 'X';             -- clk
-            ddr4a_oct_oct_rzqin                       : in    std_logic                      := 'X';             -- oct_rzqin
-            ddr4a_mem_ck                              : out   std_logic_vector(1 downto 0);                      -- mem_ck
-            ddr4a_mem_ck_n                            : out   std_logic_vector(1 downto 0);                      -- mem_ck_n
-            ddr4a_mem_a                               : out   std_logic_vector(16 downto 0);                     -- mem_a
-            ddr4a_mem_act_n                           : out   std_logic_vector(0 downto 0);                      -- mem_act_n
-            ddr4a_mem_ba                              : out   std_logic_vector(1 downto 0);                      -- mem_ba
-            ddr4a_mem_bg                              : out   std_logic_vector(1 downto 0);                      -- mem_bg
-            ddr4a_mem_cke                             : out   std_logic_vector(1 downto 0);                      -- mem_cke
-            ddr4a_mem_cs_n                            : out   std_logic_vector(1 downto 0);                      -- mem_cs_n
-            ddr4a_mem_odt                             : out   std_logic_vector(1 downto 0);                      -- mem_odt
-            ddr4a_mem_reset_n                         : out   std_logic_vector(0 downto 0);                      -- mem_reset_n
-            ddr4a_mem_par                             : out   std_logic_vector(0 downto 0);                      -- mem_par
-            ddr4a_mem_alert_n                         : in    std_logic_vector(0 downto 0)   := (others => 'X'); -- mem_alert_n
-            ddr4a_mem_dqs                             : inout std_logic_vector(7 downto 0)   := (others => 'X'); -- mem_dqs
-            ddr4a_mem_dqs_n                           : inout std_logic_vector(7 downto 0)   := (others => 'X'); -- mem_dqs_n
-            ddr4a_mem_dq                              : inout std_logic_vector(63 downto 0)  := (others => 'X'); -- mem_dq
-            ddr4a_mem_dbi_n                           : inout std_logic_vector(7 downto 0)   := (others => 'X')  -- mem_dbi_n
+            rom_system_info_writedata_export          : out   std_logic_vector(31 downto 0)                      -- export
         );
     end component board;
 
---    component board is
---        port (
---            avs_eth_0_clk_export                      : out   std_logic;                                         -- export
---            avs_eth_0_irq_export                      : in    std_logic                      := 'X';             -- export
---            avs_eth_0_ram_address_export              : out   std_logic_vector(9 downto 0);                      -- export
---            avs_eth_0_ram_read_export                 : out   std_logic;                                         -- export
---            avs_eth_0_ram_readdata_export             : in    std_logic_vector(31 downto 0)  := (others => 'X'); -- export
---            avs_eth_0_ram_write_export                : out   std_logic;                                         -- export
---            avs_eth_0_ram_writedata_export            : out   std_logic_vector(31 downto 0);                     -- export
---            avs_eth_0_reg_address_export              : out   std_logic_vector(3 downto 0);                      -- export
---            avs_eth_0_reg_read_export                 : out   std_logic;                                         -- export
---            avs_eth_0_reg_readdata_export             : in    std_logic_vector(31 downto 0)  := (others => 'X'); -- export
---            avs_eth_0_reg_write_export                : out   std_logic;                                         -- export
---            avs_eth_0_reg_writedata_export            : out   std_logic_vector(31 downto 0);                     -- export
---            avs_eth_0_reset_export                    : out   std_logic;                                         -- export
---            avs_eth_0_tse_address_export              : out   std_logic_vector(9 downto 0);                      -- export
---            avs_eth_0_tse_read_export                 : out   std_logic;                                         -- export
---            avs_eth_0_tse_readdata_export             : in    std_logic_vector(31 downto 0)  := (others => 'X'); -- export
---            avs_eth_0_tse_waitrequest_export          : in    std_logic                      := 'X';             -- export
---            avs_eth_0_tse_write_export                : out   std_logic;                                         -- export
---            avs_eth_0_tse_writedata_export            : out   std_logic_vector(31 downto 0);                     -- export
---            clk_clk                                   : in    std_logic                      := 'X';             -- clk
---            kernel_clk_clk                            : out   std_logic;                                         -- clk
---            kernel_clk2x_clk                          : out   std_logic;                                         -- clk
---            kernel_cra_waitrequest                    : in    std_logic                      := 'X';             -- waitrequest
---            kernel_cra_readdata                       : in    std_logic_vector(63 downto 0)  := (others => 'X'); -- readdata
---            kernel_cra_readdatavalid                  : in    std_logic                      := 'X';             -- readdatavalid
---            kernel_cra_burstcount                     : out   std_logic_vector(0 downto 0);                      -- burstcount
---            kernel_cra_writedata                      : out   std_logic_vector(63 downto 0);                     -- writedata
---            kernel_cra_address                        : out   std_logic_vector(29 downto 0);                     -- address
---            kernel_cra_write                          : out   std_logic;                                         -- write
---            kernel_cra_read                           : out   std_logic;                                         -- read
---            kernel_cra_byteenable                     : out   std_logic_vector(7 downto 0);                      -- byteenable
---            kernel_cra_debugaccess                    : out   std_logic;                                         -- debugaccess
---            kernel_interface_sw_reset_in_reset        : in    std_logic                      := 'X';             -- reset
---            kernel_irq_irq                            : in    std_logic_vector(0 downto 0)   := (others => 'X'); -- irq
---            kernel_register_mem_address               : in    std_logic_vector(6 downto 0)   := (others => 'X'); -- address
---            kernel_register_mem_clken                 : in    std_logic                      := 'X';             -- clken
---            kernel_register_mem_chipselect            : in    std_logic                      := 'X';             -- chipselect
---            kernel_register_mem_write                 : in    std_logic                      := 'X';             -- write
---            kernel_register_mem_readdata              : out   std_logic_vector(255 downto 0);                    -- readdata
---            kernel_register_mem_writedata             : in    std_logic_vector(255 downto 0) := (others => 'X'); -- writedata
---            kernel_register_mem_byteenable            : in    std_logic_vector(31 downto 0)  := (others => 'X'); -- byteenable
---            kernel_reset_reset_n                      : out   std_logic;                                         -- reset_n
---            pio_pps_address_export                    : out   std_logic_vector(0 downto 0);                      -- export
---            pio_pps_clk_export                        : out   std_logic;                                         -- export
---            pio_pps_read_export                       : out   std_logic;                                         -- export
---            pio_pps_readdata_export                   : in    std_logic_vector(31 downto 0)  := (others => 'X'); -- export
---            pio_pps_reset_export                      : out   std_logic;                                         -- export
---            pio_pps_write_export                      : out   std_logic;                                         -- export
---            pio_pps_writedata_export                  : out   std_logic_vector(31 downto 0);                     -- export
---            pio_system_info_address_export            : out   std_logic_vector(4 downto 0);                      -- export
---            pio_system_info_clk_export                : out   std_logic;                                         -- export
---            pio_system_info_read_export               : out   std_logic;                                         -- export
---            pio_system_info_readdata_export           : in    std_logic_vector(31 downto 0)  := (others => 'X'); -- export
---            pio_system_info_reset_export              : out   std_logic;                                         -- export
---            pio_system_info_write_export              : out   std_logic;                                         -- export
---            pio_system_info_writedata_export          : out   std_logic_vector(31 downto 0);                     -- export
---            pio_wdi_external_connection_export        : out   std_logic;                                         -- export
---            reg_dpmm_ctrl_address_export              : out   std_logic_vector(0 downto 0);                      -- export
---            reg_dpmm_ctrl_clk_export                  : out   std_logic;                                         -- export
---            reg_dpmm_ctrl_read_export                 : out   std_logic;                                         -- export
---            reg_dpmm_ctrl_readdata_export             : in    std_logic_vector(31 downto 0)  := (others => 'X'); -- export
---            reg_dpmm_ctrl_reset_export                : out   std_logic;                                         -- export
---            reg_dpmm_ctrl_write_export                : out   std_logic;                                         -- export
---            reg_dpmm_ctrl_writedata_export            : out   std_logic_vector(31 downto 0);                     -- export
---            reg_dpmm_data_address_export              : out   std_logic_vector(0 downto 0);                      -- export
---            reg_dpmm_data_clk_export                  : out   std_logic;                                         -- export
---            reg_dpmm_data_read_export                 : out   std_logic;                                         -- export
---            reg_dpmm_data_readdata_export             : in    std_logic_vector(31 downto 0)  := (others => 'X'); -- export
---            reg_dpmm_data_reset_export                : out   std_logic;                                         -- export
---            reg_dpmm_data_write_export                : out   std_logic;                                         -- export
---            reg_dpmm_data_writedata_export            : out   std_logic_vector(31 downto 0);                     -- export
---            reg_epcs_address_export                   : out   std_logic_vector(2 downto 0);                      -- export
---            reg_epcs_clk_export                       : out   std_logic;                                         -- export
---            reg_epcs_read_export                      : out   std_logic;                                         -- export
---            reg_epcs_readdata_export                  : in    std_logic_vector(31 downto 0)  := (others => 'X'); -- export
---            reg_epcs_reset_export                     : out   std_logic;                                         -- export
---            reg_epcs_write_export                     : out   std_logic;                                         -- export
---            reg_epcs_writedata_export                 : out   std_logic_vector(31 downto 0);                     -- export
---            reg_fpga_temp_sens_address_export         : out   std_logic_vector(2 downto 0);                      -- export
---            reg_fpga_temp_sens_clk_export             : out   std_logic;                                         -- export
---            reg_fpga_temp_sens_read_export            : out   std_logic;                                         -- export
---            reg_fpga_temp_sens_readdata_export        : in    std_logic_vector(31 downto 0)  := (others => 'X'); -- export
---            reg_fpga_temp_sens_reset_export           : out   std_logic;                                         -- export
---            reg_fpga_temp_sens_write_export           : out   std_logic;                                         -- export
---            reg_fpga_temp_sens_writedata_export       : out   std_logic_vector(31 downto 0);                     -- export
---            reg_fpga_voltage_sens_address_export      : out   std_logic_vector(3 downto 0);                      -- export
---            reg_fpga_voltage_sens_clk_export          : out   std_logic;                                         -- export
---            reg_fpga_voltage_sens_read_export         : out   std_logic;                                         -- export
---            reg_fpga_voltage_sens_readdata_export     : in    std_logic_vector(31 downto 0)  := (others => 'X'); -- export
---            reg_fpga_voltage_sens_reset_export        : out   std_logic;                                         -- export
---            reg_fpga_voltage_sens_write_export        : out   std_logic;                                         -- export
---            reg_fpga_voltage_sens_writedata_export    : out   std_logic_vector(31 downto 0);                     -- export
---            reg_mmdp_ctrl_address_export              : out   std_logic_vector(0 downto 0);                      -- export
---            reg_mmdp_ctrl_clk_export                  : out   std_logic;                                         -- export
---            reg_mmdp_ctrl_read_export                 : out   std_logic;                                         -- export
---            reg_mmdp_ctrl_readdata_export             : in    std_logic_vector(31 downto 0)  := (others => 'X'); -- export
---            reg_mmdp_ctrl_reset_export                : out   std_logic;                                         -- export
---            reg_mmdp_ctrl_write_export                : out   std_logic;                                         -- export
---            reg_mmdp_ctrl_writedata_export            : out   std_logic_vector(31 downto 0);                     -- export
---            reg_mmdp_data_address_export              : out   std_logic_vector(0 downto 0);                      -- export
---            reg_mmdp_data_clk_export                  : out   std_logic;                                         -- export
---            reg_mmdp_data_read_export                 : out   std_logic;                                         -- export
---            reg_mmdp_data_readdata_export             : in    std_logic_vector(31 downto 0)  := (others => 'X'); -- export
---            reg_mmdp_data_reset_export                : out   std_logic;                                         -- export
---            reg_mmdp_data_write_export                : out   std_logic;                                         -- export
---            reg_mmdp_data_writedata_export            : out   std_logic_vector(31 downto 0);                     -- export
---            reg_remu_address_export                   : out   std_logic_vector(2 downto 0);                      -- export
---            reg_remu_clk_export                       : out   std_logic;                                         -- export
---            reg_remu_read_export                      : out   std_logic;                                         -- export
---            reg_remu_readdata_export                  : in    std_logic_vector(31 downto 0)  := (others => 'X'); -- export
---            reg_remu_reset_export                     : out   std_logic;                                         -- export
---            reg_remu_write_export                     : out   std_logic;                                         -- export
---            reg_remu_writedata_export                 : out   std_logic_vector(31 downto 0);                     -- export
---            reg_ta2_unb2b_jesd204b_address_export     : out   std_logic_vector(7 downto 0);                      -- export
---            reg_ta2_unb2b_jesd204b_clk_export         : out   std_logic;                                         -- export
---            reg_ta2_unb2b_jesd204b_read_export        : out   std_logic;                                         -- export
---            reg_ta2_unb2b_jesd204b_readdata_export    : in    std_logic_vector(31 downto 0)  := (others => 'X'); -- export
---            reg_ta2_unb2b_jesd204b_reset_export       : out   std_logic;                                         -- export
---            reg_ta2_unb2b_jesd204b_waitrequest_export : in    std_logic                      := 'X';             -- export
---            reg_ta2_unb2b_jesd204b_write_export       : out   std_logic;                                         -- export
---            reg_ta2_unb2b_jesd204b_writedata_export   : out   std_logic_vector(31 downto 0);                     -- export
---            reg_unb_pmbus_address_export              : out   std_logic_vector(5 downto 0);                      -- export
---            reg_unb_pmbus_clk_export                  : out   std_logic;                                         -- export
---            reg_unb_pmbus_read_export                 : out   std_logic;                                         -- export
---            reg_unb_pmbus_readdata_export             : in    std_logic_vector(31 downto 0)  := (others => 'X'); -- export
---            reg_unb_pmbus_reset_export                : out   std_logic;                                         -- export
---            reg_unb_pmbus_write_export                : out   std_logic;                                         -- export
---            reg_unb_pmbus_writedata_export            : out   std_logic_vector(31 downto 0);                     -- export
---            reg_unb_sens_address_export               : out   std_logic_vector(5 downto 0);                      -- export
---            reg_unb_sens_clk_export                   : out   std_logic;                                         -- export
---            reg_unb_sens_read_export                  : out   std_logic;                                         -- export
---            reg_unb_sens_readdata_export              : in    std_logic_vector(31 downto 0)  := (others => 'X'); -- export
---            reg_unb_sens_reset_export                 : out   std_logic;                                         -- export
---            reg_unb_sens_write_export                 : out   std_logic;                                         -- export
---            reg_unb_sens_writedata_export             : out   std_logic_vector(31 downto 0);                     -- export
---            reg_wdi_address_export                    : out   std_logic_vector(0 downto 0);                      -- export
---            reg_wdi_clk_export                        : out   std_logic;                                         -- export
---            reg_wdi_read_export                       : out   std_logic;                                         -- export
---            reg_wdi_readdata_export                   : in    std_logic_vector(31 downto 0)  := (others => 'X'); -- export
---            reg_wdi_reset_export                      : out   std_logic;                                         -- export
---            reg_wdi_write_export                      : out   std_logic;                                         -- export
---            reg_wdi_writedata_export                  : out   std_logic_vector(31 downto 0);                     -- export
---            reset_reset_n                             : in    std_logic                      := 'X';             -- reset_n
---            rom_system_info_address_export            : out   std_logic_vector(9 downto 0);                      -- export
---            rom_system_info_clk_export                : out   std_logic;                                         -- export
---            rom_system_info_read_export               : out   std_logic;                                         -- export
---            rom_system_info_readdata_export           : in    std_logic_vector(31 downto 0)  := (others => 'X'); -- export
---            rom_system_info_reset_export              : out   std_logic;                                         -- export
---            rom_system_info_write_export              : out   std_logic;                                         -- export
---            rom_system_info_writedata_export          : out   std_logic_vector(31 downto 0)                      -- export
---        );
---    end component board;
-
   component freeze_wrapper is
     port (
       board_kernel_clk_clk               : in   std_logic; --input           
@@ -452,11 +290,14 @@ PACKAGE top_components_pkg IS
       board_kernel_stream_snk_1GbE_data   : out std_logic_vector(39 downto 0); 
       board_kernel_stream_snk_1GbE_valid  : out std_logic; 
       board_kernel_stream_snk_1GbE_ready  : in  std_logic;
-                                          
-      board_kernel_stream_src_mm_io_data   : in  std_logic_vector(31 downto 0); 
+
+      board_kernel_stream_src_mm_io_data   : in  std_logic_vector(71 downto 0); 
       board_kernel_stream_src_mm_io_valid  : in  std_logic; 
-      board_kernel_stream_src_mm_io_ready  : out std_logic; 
-                                          
+      board_kernel_stream_src_mm_io_ready  : out std_logic;                                           
+      board_kernel_stream_snk_mm_io_data   : out std_logic_vector(31 downto 0); 
+      board_kernel_stream_snk_mm_io_valid  : out std_logic; 
+      board_kernel_stream_snk_mm_io_ready  : out std_logic; 
+                                                                                  
       board_kernel_stream_src_ADC_data   : in  std_logic_vector(15 downto 0); 
       board_kernel_stream_src_ADC_valid  : in  std_logic; 
       board_kernel_stream_src_ADC_ready  : out std_logic 
diff --git a/applications/ta2/designs/ta2_unb2b_mm_demo/Makefile b/applications/ta2/designs/ta2_unb2b_mm_demo/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..7a1ca2b4383711917a2453849b38e57cfe290c47
--- /dev/null
+++ b/applications/ta2/designs/ta2_unb2b_mm_demo/Makefile
@@ -0,0 +1,121 @@
+######################
+###     SETUP      ###
+######################
+ifeq ($(VERBOSE),1)
+ECHO := 
+else
+ECHO := @
+endif
+
+# Where is the Intel(R) FPGA SDK for OpenCL(TM) software?
+ifeq ($(wildcard $(INTELFPGAOCLSDKROOT)),)
+$(error Set INTELFPGAOCLSDKROOT to the root directory of the Intel(R) FPGA SDK for OpenCL(TM) software installation)
+endif
+ifeq ($(wildcard $(INTELFPGAOCLSDKROOT)/host/include/CL/opencl.h),)
+$(error Set INTELFPGAOCLSDKROOT to the root directory of the Intel(R) FPGA SDK for OpenCL(TM) software installation.)
+endif
+
+###########################
+### Basic configuration ###
+###########################
+
+# Name of unb2b BSP
+UNB2B_BSP=ta2_unb2b_bsp
+
+# Compile directory
+BUILDDIR=$(RADIOHDL_BUILD_DIR)/unb2b/OpenCL/$(lastword $(subst /, ,$(abspath $(dir $(lastword $(MAKEFILE_LIST))))))
+
+
+##############################
+### Advanced Configuration ###
+##############################
+
+CXX=			g++ #-mcmodel=medium
+CXXFLAGS=		-std=c++11 -mavx2 -g -O3 -fopenmp #-DCL_ALTERA
+AOC=			aoc
+AOCFLAGS=		-v -g
+#AOCRFLAGS+=		-fp-relaxed
+AOCRFLAGS+=		-report
+AOCOFLAGS+=   -Wno-error=analyze-channels-usage
+AOCRFLAGS+=   -opt-arg=-allow-io-channel-autorun-kernel
+#AOCRFLAGS+=		-board=p385a_min_ax115_1710240
+AOCOFLAGS+=		-board=$(UNB2B_BSP)
+
+AOCOFLAGS+=		-I$(INTELOCLSDKROOT)/include/kernel_headers
+AOCXFLAGS+=   -bsp-flow=flat
+ifneq ("$(SEED)", "")
+AOCXFLAGS+=		-seed=$(SEED)
+endif
+INCLUDES=		$(shell aocl compile-config) #-I..
+LDFLAGS=		$(shell aocl link-config) #-ldl -lacl_emulator_kernel_rt #-lbfd
+CXXFLAGS+=		$(INCLUDES)
+
+### Emulator configuration
+# Emulation Compilation flags
+ifeq ($(DEBUG),1)
+EMUCXXFLAGS += -g
+else
+EMUCXXFLAGS += -O2
+endif
+
+# Target
+TARGET := host
+TARGET_DIR := $(BUILDDIR)/bin
+
+# Directories
+INC_DIRS := host/lib/common/inc
+LIB_DIRS := 
+
+# Files
+INCS := $(wildcard )
+SRCS := $(wildcard host/src/*.cpp host/lib/common/src/*.cpp host/lib/common/src/AOCLUtils/*.cpp)
+LIBS := rt pthread
+
+### Emulator compilation
+# Make it all!
+%:	%.cl	$(TARGET_DIR)/$(TARGET) 
+	(unset DISPLAY; mkdir -p $(BUILDDIR)/$* && $(AOC) -march=emulator -DEMULATOR $< -o $(TARGET_DIR)/$@.aocx -legacy-emulator $(AOCOFLAGS) $(AOCRFLAGS))
+
+# Host executable target.
+$(TARGET_DIR)/$(TARGET) : Makefile $(SRCS) $(INCS) $(TARGET_DIR)
+	$(ECHO)$(CXX) $(CPPFLAGS) $(CXXFLAGS) -fPIC $(foreach D,$(INC_DIRS),-I$D) \
+			$(INCLUDES) $(SRCS) $(LDFLAGS) \
+			$(foreach D,$(LIB_DIRS),-L$D) \
+			$(foreach L,$(LIBS),-l$L) \
+			-o $(TARGET_DIR)/$(TARGET)
+
+$(TARGET_DIR) :
+	$(ECHO)mkdir -p $(TARGET_DIR)
+	
+# Standard make targets
+clean :
+	$(ECHO)rm -rf $(TARGET_DIR)/*
+
+
+### Device compilation
+%.d:			%.cc
+			-$(CXX) $(CXXFLAGS) -MM -MT $@ -MT ${@:%.d=%.o} $< -o $@
+
+%.o:			%.cc
+			$(CXX) -c $(CXXFLAGS) -o $@ $<
+
+%.aoco:			%.cl
+			(unset DISPLAY; mkdir -p $(BUILDDIR)/$* && cp -a  $< $(BUILDDIR)/$* && cd $(BUILDDIR)/$* && $(AOC) -c $(AOCOFLAGS) $< && cd - && cp -a $(BUILDDIR)/$*/$@ .)
+
+%.aocr:			%.aoco
+			(unset DISPLAY; cp -a  $< $(BUILDDIR)/$* && cd $(BUILDDIR)/$* && $(AOC) -rtl $(AOCRFLAGS) $< && cd - && cp -a $(BUILDDIR)/$*/$@ .)
+
+%.aocx:			%.aocr
+			(unset DISPLAY; cp -a  $< $(BUILDDIR)/$* && cd $(BUILDDIR)/$* && $(AOC) $(AOCXFLAGS) $< && cd - && cp -a $(BUILDDIR)/$*/$@ .)
+
+%.sof:     %.aocx      
+			(unset DISPLAY; cp -a $(BUILDDIR)/$*/flat.sof ./$@)
+
+%.rbf:     %.sof      
+			(unset DISPLAY; cp -a $(BUILDDIR)/$*/flat.rbf ./$@)
+
+
+%.build:
+			test -f $@ || test -f /tmp/stop || (echo `hostname` && cp `basename $* _$(lastword $(subst _, ,$*))`.cl $*.cl && SEED=$(lastword $(subst _, ,$*)) time make -j1 $*.aocx && fgrep MHz $(BUILDDIR)/$*/$*/quartus_sh_compile.log|tail -n 1) >$@ 2>&1
+
+
diff --git a/applications/ta2/designs/ta2_unb2b_mm_demo/host/lib/common/inc/common.h b/applications/ta2/designs/ta2_unb2b_mm_demo/host/lib/common/inc/common.h
new file mode 100644
index 0000000000000000000000000000000000000000..d16ade9618880b8bba4bfcbd42b218f6efb69773
--- /dev/null
+++ b/applications/ta2/designs/ta2_unb2b_mm_demo/host/lib/common/inc/common.h
@@ -0,0 +1,48 @@
+#include <iostream>
+#include <sstream>
+#include <fstream>
+#include <iomanip>
+
+#define CL_HPP_ENABLE_EXCEPTIONS
+#define CL_HPP_MINIMUM_OPENCL_VERSION 120
+#define CL_HPP_TARGET_OPENCL_VERSION 120
+#define CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY
+#include <CL/cl2.hpp>
+
+void init(
+    cl::Context &context,
+    std::vector<cl::Device> &devices);
+
+void print_platform(
+    cl::Platform &platform);
+
+void print_device(
+    cl::Device &device,
+    bool marker = false);
+
+std::string get_source(
+    std::string& filename);
+
+std::string get_flags();
+
+cl::Program compile_program(
+    cl::Context& context,
+    cl::Device& device,
+    std::string& source);
+
+void write_source(
+    std::string& source,
+    std::string& filename);
+
+cl::Program get_program(
+    cl::Context& context,
+    cl::Device& device,
+    std::string& filename);
+
+cl::Kernel get_kernel(
+    cl::Program& program,
+    std::string& name);
+
+double compute_runtime(
+    cl::Event& start,
+    cl::Event& end);
diff --git a/applications/ta2/designs/ta2_unb2b_mm_demo/host/lib/common/readme.css b/applications/ta2/designs/ta2_unb2b_mm_demo/host/lib/common/readme.css
new file mode 100644
index 0000000000000000000000000000000000000000..ce1c649289c93957c5eeefe2dec8a7b9d8b7d36a
--- /dev/null
+++ b/applications/ta2/designs/ta2_unb2b_mm_demo/host/lib/common/readme.css
@@ -0,0 +1,261 @@
+/*
+Copyright (C) 2013-2018 Altera Corporation, San Jose, California, USA. All rights reserved.
+Permission is hereby granted, free of charge, to any person obtaining a copy of this
+software and associated documentation files (the "Software"), to deal in the Software
+without restriction, including without limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to
+whom the Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included in all copies or
+substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+This agreement shall be governed in all respects by the laws of the State of California and
+by the laws of the United States of America.
+*/
+
+body {
+  margin: 0 1em 1em 1em;
+  font-family: sans-serif;
+}
+ul {
+  list-style-type: square;
+}
+pre, code, kbd, samp, tt {
+  font-family: monospace, sans-serif;
+  font-size: 1em;
+}
+
+h1 {
+  font-size: 200%;
+  color: #fff;
+  background-color: #0067a6;
+  margin: 0 -0.5em;
+  padding: 0.25em 0.5em;
+}
+h1 .preheading {
+  font-size: 40%;
+  font-weight: normal;
+}
+h2 {
+  font-size: 125%;
+  background-color: #bae5ff;
+  margin: 1.5em -0.8em 0 -0.8em;
+  padding: 0.2em 0.8em;
+}
+h3 {
+  margin-top: 1.5em;
+  font-size: 100%;
+  border-bottom: 1px dotted #000;
+}
+
+table {
+  border: 2px solid #0067a6;
+  border-collapse: collapse;
+}
+th {
+  border-bottom: 1px solid #0067a6;
+  border-left: 1px dotted #0067a6;
+  border-right: 1px dotted #0067a6;
+  background-color: #bae5ff;
+  padding: 0.3em;
+  font-size: 90%;
+}
+td {
+  padding: 0.3em;
+  border: 1px dotted #0067a6;
+}
+
+table.reqs {
+  margin: 0 auto;
+}
+table.reqs td {
+  white-space: nowrap;
+  text-align: center;
+}
+table.reqs td:first-child,
+table.reqs tr:first-child th:first-child {
+  text-align: left;
+}
+table.reqs td.req {
+  background-color: #b3ef71;
+  font-size: 150%;
+  padding: 0 0.3em;
+}
+table.reqs td.req .either {
+  font-size: 50%;
+}
+table.reqs td.unsupported {
+  white-space: normal;
+  background-color: #ccc;
+  max-width: 20em;
+}
+table.reqs a.note {
+  text-decoration: none;
+}
+ol.req-notes > li {
+  margin-bottom: 0.75em;
+}
+
+table.history {
+  margin: 0 auto;
+}
+table.history td {
+  text-align: center;
+  vertical-align: top;
+}
+table.history .changes {
+  text-align: left;
+}
+table.history tbody tr:first-child td {
+  background-color: #b3ef71;
+}
+table.history ul {
+  margin: 0;
+  padding-left: 1em;
+}
+
+table.pkg-contents {
+  margin: 0 auto;
+}
+table.pkg-contents th,
+table.pkg-contents td {
+  text-align: left;
+  vertical-align: top;
+}
+table.pkg-contents td.path {
+  font-family: monospace, sans-serif;
+  font-size: 1em;
+}
+table.pkg-contents tr.highlight td {
+  background-color: #ffc;
+  font-weight: bold;
+  color: #000;
+}
+table.pkg-contents td p:first-child {
+  margin-top: 0;
+}
+table.pkg-contents td p:last-child {
+  margin-bottom: 0;
+}
+
+table.parameters {
+  margin-left: 3em;
+  margin-right: 3em;
+  font-family: monospace, sans-serif;
+  font-size: 1em;
+}
+table.parameters th,
+table.parameters td {
+  font-family: sans-serif;
+  text-align: center;
+  vertical-align: top;
+}
+table.parameters .name,
+table.parameters .desc {
+  text-align: left;
+}
+table.parameters .name {
+  white-space: nowrap;
+}
+table.parameters td.name,
+table.parameters td.default {
+  font-family: monospace, sans-serif;
+  font-size: 1em;
+}
+table.parameters ul {
+  margin-top: 0;
+}
+table.parameters td ul:last-child {
+  margin-bottom: 0;
+}
+
+table.indent {
+  margin-left: 3em;
+}
+
+.doc .title {
+  background-color: #eee;
+  padding: 0.35em;
+  margin-bottom: 0.5em;
+}
+.doc .title a {
+  font-weight: bold;
+}
+.doc .desc {
+  margin-left: 2em;
+  margin-right: 2em;
+}
+
+.left {
+  text-align: left;
+}
+.center {
+  text-align: center;
+}
+.right {
+  text-align: right;
+}
+
+.mono {
+  font-family: monospace, sans-serif;
+  font-size: 1em;
+}
+.highlight {
+  font-weight: bold;
+  color: #0067a6;
+}
+.nowrap {
+  white-space: nowrap;
+}
+
+.command {
+  font-family: monospace, sans-serif;
+  font-size: 1em;
+  margin: 0 3em;
+  background-color: #ffc;
+  border: 1px solid #aaa;
+  padding: 0.5em 1em;
+}
+.console-output,
+.code-block {
+  display: block;
+  font-family: monospace, sans-serif;
+  font-size: 1em;
+  margin: 0 3em;
+  background-color: #fff;
+  border: 1px solid #aaa !important;
+  padding: 1.8em 1em 0.5em 1em !important;
+  position: relative;
+}
+.console-output .heading,
+.code-block .heading {
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 100%;
+  font-size: 80%;
+  text-transform: uppercase;
+  background-color: #e8e8e8;
+  padding: 0.3125em 0;
+  border-bottom: 1px dotted #888;
+}
+.console-output .heading span,
+.code-block .heading span {
+  padding: 0 1.25em;
+}
+.not-released {
+  font-weight: bold;
+  color: red;
+}
+.license,
+.trademark {
+  font-size: 80%;
+}
diff --git a/applications/ta2/designs/ta2_unb2b_mm_demo/host/lib/common/src/common.cpp b/applications/ta2/designs/ta2_unb2b_mm_demo/host/lib/common/src/common.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..928b8534b95239c6fa0a29f27640984e5605de17
--- /dev/null
+++ b/applications/ta2/designs/ta2_unb2b_mm_demo/host/lib/common/src/common.cpp
@@ -0,0 +1,189 @@
+#include "common.h"
+
+using namespace std;
+
+ostream &os = clog;
+
+void init(
+    cl::Context &context,
+    vector<cl::Device> &devices)
+{
+    vector<cl::Platform> platforms;
+    cl::Platform::get(&platforms);
+
+    // The selected device
+    int i = 0;
+    const char *platform_name = getenv("PLATFORM");
+
+    if (platform_name == 0)
+      platform_name = getenv("CL_CONTEXT_EMULATOR_DEVICE_INTELFPGA") ? "Intel(R) FPGA Emulation Platform for OpenCL(TM)" : "Intel(R) FPGA SDK for OpenCL(TM)";
+
+    os << ">>> OpenCL environment: " << endl;
+
+    // Iterate all platforms
+    for (cl::Platform &platform : platforms) {
+        print_platform(platform);
+	bool selected = platform.getInfo<CL_PLATFORM_NAME>() == platform_name;
+
+        // Get devices for the current platform
+        vector<cl::Device> devices_;
+        platform.getDevices(CL_DEVICE_TYPE_ALL, &devices_);
+
+        // Iterate all devices
+        for (cl::Device &device : devices_) {
+            if (true)//(selected)
+                devices.push_back(device);
+
+            print_device(device, selected);
+            i++;
+        }
+    }
+    os << endl;
+
+    if (devices.size() == 0) {
+        cerr << "Could not find any device in platform "  << platform_name << endl;
+        exit(EXIT_FAILURE);
+    }
+
+    context = cl::Context(devices);
+}
+
+void print_platform(
+    cl::Platform &platform)
+{
+    os << ">>> Platform: " << endl;
+    os << "Name       : " << platform.getInfo<CL_PLATFORM_NAME>() << endl;
+    os << "Version    : " << platform.getInfo<CL_PLATFORM_VERSION>() << endl;
+    os << "Extensions : " << platform.getInfo<CL_PLATFORM_EXTENSIONS>() << endl;
+    os <<  endl;
+}
+
+void print_device(
+    cl::Device &device,
+    bool marker)
+{
+    os << ">>> Device: ";
+    if (marker) os << " (selected)";
+    os << endl;
+    os << "Name            : " << device.getInfo<CL_DEVICE_NAME>() << endl;
+    os << "Driver version  : " << device.getInfo<CL_DRIVER_VERSION>() << endl;
+    os << "Device version  : " << device.getInfo<CL_DEVICE_VERSION>() << endl;
+    os << "Compute units   : " << device.getInfo<CL_DEVICE_MAX_COMPUTE_UNITS>() << endl;
+    os << "Clock frequency : " << device.getInfo<CL_DEVICE_MAX_CLOCK_FREQUENCY>() << " MHz" << endl;
+    os << "Global memory   : " << device.getInfo<CL_DEVICE_GLOBAL_MEM_SIZE>() * 1e-9 << " Gb" << endl;
+    os << "Local memory    : " << device.getInfo<CL_DEVICE_LOCAL_MEM_SIZE>() * 1e-6 << " Mb" << endl;
+    os << endl;
+}
+
+string get_source(
+    string& filename)
+{
+    // Source directory
+    string srcdir = "./cl";
+
+    // All helper files to include in build
+    vector<string> helper_files;
+    helper_files.push_back("types.cl");
+    helper_files.push_back("math.cl");
+
+    // Store helper files in string
+    stringstream source_helper_;
+
+    for (int i = 0; i < helper_files.size(); i++) {
+        // Get source filename
+        stringstream source_file_name_;
+        source_file_name_ << srcdir << "/" << helper_files[i];
+        string source_file_name = source_file_name_.str();
+
+        // Read source from file
+        ifstream source_file(source_file_name.c_str());
+        string source(istreambuf_iterator<char>(source_file),
+                          (istreambuf_iterator<char>()));
+        source_file.close();
+
+        // Update source helper stream
+        source_helper_ << source;
+    }
+
+    string source_helper = source_helper_.str();
+
+    // Get source filename
+    stringstream source_file_name_;
+    source_file_name_ << srcdir << "/" << filename;
+    string source_file_name = source_file_name_.str();
+
+    // Read kernel source from file
+    ifstream source_file(source_file_name.c_str());
+    string source_kernel(
+        istreambuf_iterator<char>(source_file),
+        (istreambuf_iterator<char>()));
+    source_file.close();
+
+    // Construct full source file
+    stringstream full_source;
+    full_source << source_helper;
+    full_source << source_kernel;
+
+    return full_source.str();
+}
+
+string get_flags()
+{
+    return string("-cl-fast-relaxed-math");
+}
+
+void write_source(
+    string& source,
+    string& filename)
+{
+    cout << ">>> Writing source to: " << filename << endl
+              << endl;
+    ofstream source_output;
+    source_output.open(filename, ofstream::out);
+    source_output << source;
+    source_output.close();
+}
+
+cl::Program get_program(
+    cl::Context& context,
+    cl::Device& device,
+    string& filename)
+{
+    os << ">>> Loading program from binary: " << filename << endl;
+    try {
+        ifstream ifs(filename, ios::in | ios::binary);
+        string str((istreambuf_iterator<char>(ifs)), istreambuf_iterator<char>());
+        cl::Program::Binaries binaries(1, std::make_pair(str.c_str(), str.length()));
+        vector<cl::Device> devices;
+        devices.push_back(device);
+        os << endl;
+        return cl::Program(context, devices, binaries);
+    } catch (cl::Error& error) {
+        cerr << "Loading binary failed: " << error.what() << endl;
+        exit(EXIT_FAILURE);
+    }
+}
+
+cl::Kernel get_kernel(
+    cl::Program& program,
+    string& name)
+{
+    os << ">>> Loading kernel: " << name << endl;
+    try {
+        os << endl;
+        return cl::Kernel(program, name.c_str());
+    } catch (cl::Error& error) {
+        cerr << "Loading kernel failed: " << error.what() << endl;
+        exit(EXIT_FAILURE);
+    }
+}
+
+double compute_runtime(
+    cl::Event& start,
+    cl::Event& end)
+{
+    double runtime = 0;
+    runtime -= start.getProfilingInfo<CL_PROFILING_COMMAND_START>();
+    runtime +=   end.getProfilingInfo<CL_PROFILING_COMMAND_START>();
+    return runtime * 1e-9;
+}
diff --git a/applications/ta2/designs/ta2_unb2b_mm_demo/host/src/main.cpp b/applications/ta2/designs/ta2_unb2b_mm_demo/host/src/main.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..4eca458dfffc455c1abff5bb81b16f76bf1dd952
--- /dev/null
+++ b/applications/ta2/designs/ta2_unb2b_mm_demo/host/src/main.cpp
@@ -0,0 +1,111 @@
+/* *************************************************************************
+* Copyright 2020
+* ASTRON (Netherlands Institute for Radio Astronomy) <http://www.astron.nl/>
+* P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* *********************************************************************** */
+
+/* *************************************************************************
+* Author:
+* . Reinier vd Walle
+* Purpose:
+* . Test the ta2_unb2b_mm_demo OpenCL application in emulator
+* Description:
+* . Run: -> make ta2_unb2b_mm_demo
+* . Navigate to -> cd $RADIOHDL_WORK/unb2b/OpenCL/ta2_unb2b_mm_demo/bin
+* . Execute -> CL_CONTEXT_EMULATOR_DEVICE_INTELFPGA=1 ./host
+* *********************************************************************** */
+#include <CL/cl_ext_intelfpga.h>
+#include <iostream>
+#include <fstream>
+#include <vector>
+#include "common.h"
+#include <unistd.h>
+
+using namespace std;
+int main(int argc, char **argv)
+{
+    if (argc > 2) {
+        cerr << "usage: " << argv[0] << " [ta2_unb2b_mm_demo.aocx]" << endl;
+        exit(1);
+    }
+
+    // Initialize OpenCL
+    cl::Context context;
+    vector<cl::Device> devices;
+    init(context, devices);
+    cl::Device &device = devices[0];
+
+    // Get program
+    string filename_bin = string(argc == 2 ? argv[1] : "ta2_unb2b_mm_demo.aocx");
+    cl::Program program = get_program(context, device, filename_bin);
+
+
+    // Setup command queues
+    vector<cl::CommandQueue> queues(4);
+
+    for (cl::CommandQueue &queue : queues) {
+        queue = cl::CommandQueue(context, device, CL_QUEUE_PROFILING_ENABLE);
+    }
+
+    cl::Event computeDone[4];
+
+    // Setup FPGA kernels
+    cl::Kernel mmInController(program, "mm_in_controller");
+    cl::Kernel mmOutController(program, "mm_out_controller");
+    cl::Kernel processA(program, "process_a");
+    cl::Kernel processB(program, "process_b");
+
+
+    // Run FPGA kernels
+    clog << ">>> Run fpga" << endl;
+    try {
+        queues[0].enqueueTask(processA, nullptr, &computeDone[0]);
+        queues[1].enqueueTask(processB, nullptr, &computeDone[1]);
+        queues[2].enqueueTask(mmOutController, nullptr, &computeDone[2]);
+        queues[3].enqueueTask(mmInController, nullptr, &computeDone[3]);
+
+    } catch (cl::Error &error) {
+        cerr << "Error launching kernel: " << error.what() << endl;
+        exit(EXIT_FAILURE);
+    }
+
+    // Write IO channel file
+    vector<char> cmdVecs[] = {{'A', 'B', 'C', 'D', 0x33, 0x00, 0x00, 0x00, 0x01}, //write on undefined address
+                     {'E', 'F', 'G', 'H', 0x00, 0x00, 0x00, 0x00, 0x01},          // write on addr 0
+                     {'I', 'J', 'K', 'L', 0x01, 0x00, 0x00, 0x00, 0x01},          // write on addr 1
+                     {'M', 'N', 'O', 'P', 0x02, 0x00, 0x00, 0x00, 0x01},          // write on addr 2
+                     {0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x00},      // read on undefined address
+                     {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},      // read on addr 0
+                     {0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00},      // read on addr 1
+                     {0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00}};     // read on addr 2
+
+    ofstream output_fileA("kernel_input_mm");
+    ostream_iterator<char> output_iteratorA(output_fileA, "");
+    for (int i = 0; i < 8; i++)
+      copy(cmdVecs[i].begin(), cmdVecs[i].end(), output_iteratorA);
+
+    output_fileA.close(); 
+    clog << ">>> Written IO file" << endl;
+
+    // wait for mm_out_controller to be finished
+    computeDone[2].wait();
+
+    // print output IO channel file
+    const string inputFileB = "kernel_output_mm";
+    ifstream fileB(inputFileB);
+    clog << fileB.rdbuf() << endl;
+
+    return EXIT_SUCCESS;
+}
diff --git a/applications/ta2/designs/ta2_unb2b_mm_demo/ta2_unb2b_mm_demo.cl b/applications/ta2/designs/ta2_unb2b_mm_demo/ta2_unb2b_mm_demo.cl
new file mode 100644
index 0000000000000000000000000000000000000000..04aedd4c2e9c22917574961f43eeada9c19030bb
--- /dev/null
+++ b/applications/ta2/designs/ta2_unb2b_mm_demo/ta2_unb2b_mm_demo.cl
@@ -0,0 +1,212 @@
+/* *************************************************************************
+* Copyright 2020
+* ASTRON (Netherlands Institute for Radio Astronomy) <http://www.astron.nl/>
+* P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+* *********************************************************************** */
+
+/* *************************************************************************
+* Author:
+* . Reinier vd Walle
+* Purpose:
+* . Demonstrate Monitor and Control interface
+* Description:
+* . This application implements a way to use the MM IO channels.
+* *********************************************************************** */
+
+#pragma OPENCL EXTENSION cl_intel_channels : enable
+
+#include <ihc_apint.h>
+
+#define DIVIDE_AND_ROUND_UP(A,B) (((A)+(B)-1)/(B))
+
+enum mm_channel {
+  CH_PROCESS_A,
+  CH_PROCESS_B,
+  LAST_MM_CHANNEL_ENTRY
+};
+
+
+struct param_process_a_struct {
+  uint keep;
+  uint acc;
+};
+
+struct param_process_b_struct {
+  uint keep;
+  uint acc;
+};
+
+union param_process_a {
+  struct param_process_a_struct parameters;
+  uint arr[DIVIDE_AND_ROUND_UP(sizeof(struct param_process_a_struct),sizeof(uint))];
+};
+
+union param_process_b {
+  struct param_process_b_struct parameters;
+  uint arr[DIVIDE_AND_ROUND_UP(sizeof(struct param_process_b_struct),sizeof(uint))];
+};
+
+
+struct reg {
+  uint offset;
+  uint size;
+} __attribute__((packed));
+
+
+struct mm_in {
+  uint wrdata;
+  uint address;
+  bool wr;
+} __attribute__((packed));
+
+struct mm_out {
+  uint rddata;
+} __attribute__((packed));
+
+channel struct mm_in ch_in_mm  __attribute__((depth(0))) __attribute__((io("kernel_input_mm")));
+channel struct mm_out ch_out_mm  __attribute__((depth(0))) __attribute__((io("kernel_output_mm")));
+
+channel struct mm_in mm_channel_in[LAST_MM_CHANNEL_ENTRY] __attribute__((depth(0)));
+channel struct mm_out mm_channel_out[LAST_MM_CHANNEL_ENTRY+1] __attribute__((depth(0))); // 1 extra channel for undefined addresses
+
+
+__attribute__((max_global_work_dim(0)))
+#ifndef EMULATOR
+__attribute__((autorun))
+#endif
+__kernel void mm_in_controller()
+{
+  // Regmap table with offset, size
+  const struct reg regmap[LAST_MM_CHANNEL_ENTRY] = {
+    {0x00, DIVIDE_AND_ROUND_UP(sizeof(struct param_process_a_struct),sizeof(uint))},
+    {0x02, DIVIDE_AND_ROUND_UP(sizeof(struct param_process_b_struct),sizeof(uint))}
+  };
+  while(1)
+  {
+    bool undefined = true;
+    struct mm_in mm_request = read_channel_intel(ch_in_mm);
+    #pragma unroll
+    for (int i = 0; i < LAST_MM_CHANNEL_ENTRY; i++)
+    {
+      if (mm_request.address >= regmap[i].offset && mm_request.address < (regmap[i].offset + regmap[i].size))
+      {
+        undefined = false;
+        struct mm_in local_mm_request;
+        local_mm_request.wr = mm_request.wr;
+        local_mm_request.wrdata = mm_request.wrdata;
+        local_mm_request.address = mm_request.address - regmap[i].offset;
+        write_channel_intel(mm_channel_in[i], local_mm_request);
+      } 
+    }
+
+    if (undefined && mm_request.wr == 0)  { // undefined address
+      struct mm_out zero_response;
+      zero_response.rddata = 0;
+      write_channel_intel(mm_channel_out[LAST_MM_CHANNEL_ENTRY], zero_response);
+    }
+  }
+}
+
+__attribute__((max_global_work_dim(0)))
+#ifndef EMULATOR
+__attribute__((autorun))
+#endif
+__kernel void mm_out_controller()
+{
+#ifdef EMULATOR
+  for(int x = 0; x < 4; )
+#else
+  while(1)
+#endif
+  {
+    struct mm_out mm_response;
+    for (int i = 0; i < LAST_MM_CHANNEL_ENTRY+1; i++)
+    {
+      bool valid;
+      mm_response = read_channel_nb_intel(mm_channel_out[i], &valid);
+      if (valid)
+      {
+        write_channel_intel(ch_out_mm, mm_response);
+#ifdef EMULATOR
+        x++;
+#endif
+      }
+    }
+  }
+}
+
+
+__attribute__((max_global_work_dim(0)))
+#ifndef EMULATOR
+__attribute__((autorun))
+#endif
+__kernel void process_a()
+{
+  union param_process_a reg;
+  reg.parameters.keep = 0; //address 0, value is stored when written
+  reg.parameters.acc = 0;  //address 1, value is written value + 1
+  while(1){
+    // handle MM read/write requests
+    struct mm_in mm_request = read_channel_intel(mm_channel_in[CH_PROCESS_A]); //blocking read
+    struct mm_out mm_response;
+    if(mm_request.wr) //write request
+    {
+      reg.arr[mm_request.address] = mm_request.wrdata;
+    } else { //read request
+      mm_response.rddata = reg.arr[mm_request.address];
+      write_channel_intel(mm_channel_out[CH_PROCESS_A], mm_response);
+    }
+
+    // Do someting with parameters
+    if(mm_request.wr > 0 && mm_request.address == 1)
+      reg.parameters.acc += 1;
+  }
+}
+
+
+__attribute__((max_global_work_dim(0)))
+#ifndef EMULATOR
+__attribute__((autorun))
+#endif
+__kernel void process_b()
+{ 
+  union param_process_b reg;
+  reg.parameters.keep = 0; //address 0, value is stored when written
+  reg.parameters.acc = 0;  //address 1, value is written value + 2
+  while(1){
+    // handle MM read/write requests
+    struct mm_in mm_request = read_channel_intel(mm_channel_in[CH_PROCESS_B]); //blocking read
+    struct mm_out mm_response;
+    if(mm_request.wr) //write request
+    {
+      reg.arr[mm_request.address] = mm_request.wrdata;
+    } else { //read request
+      mm_response.rddata = reg.arr[mm_request.address];
+      write_channel_intel(mm_channel_out[CH_PROCESS_B], mm_response);
+    }
+
+    // Do someting with parameters
+    if(mm_request.wr && mm_request.address == 1)
+      reg.parameters.acc += 2;
+
+  }
+}
+
+
+__attribute__((max_global_work_dim(0)))
+__kernel void dummy()
+{
+}
+
diff --git a/applications/ta2/designs/ta2_unb2b_qsfp_demo/Makefile b/applications/ta2/designs/ta2_unb2b_qsfp_demo/Makefile
index bd3834b0e33bb0faa2fe9679b140fbc5716c69b7..cf5531d95104da9f7a01e2f0c4ad1f5c8d429971 100644
--- a/applications/ta2/designs/ta2_unb2b_qsfp_demo/Makefile
+++ b/applications/ta2/designs/ta2_unb2b_qsfp_demo/Makefile
@@ -36,10 +36,11 @@ AOC=			aoc
 AOCFLAGS=		-v -g
 #AOCRFLAGS+=		-fp-relaxed
 AOCRFLAGS+=		-report
+
 AOCRFLAGS+=   -opt-arg=-allow-io-channel-autorun-kernel
 #AOCRFLAGS+=		-board=p385a_min_ax115_1710240
 AOCOFLAGS+=		-board=$(UNB2B_BSP)
-
+AOCOFLAGS+=   -Wno-error=analyze-channels-usage
 AOCOFLAGS+=		-I$(INTELOCLSDKROOT)/include/kernel_headers
 AOCXFLAGS+=   -bsp-flow=flat
 ifneq ("$(SEED)", "")
diff --git a/applications/ta2/ip/ta2_unb2b_1GbE_mc/hdllib.cfg b/applications/ta2/ip/ta2_unb2b_1GbE/hdllib.cfg
similarity index 83%
rename from applications/ta2/ip/ta2_unb2b_1GbE_mc/hdllib.cfg
rename to applications/ta2/ip/ta2_unb2b_1GbE/hdllib.cfg
index 61d7f3d33a336ae60d9b5742b75df21e0daa3402..ec8ec20de75740c8d6d56a46fa747d844e40546d 100644
--- a/applications/ta2/ip/ta2_unb2b_1GbE_mc/hdllib.cfg
+++ b/applications/ta2/ip/ta2_unb2b_1GbE/hdllib.cfg
@@ -1,11 +1,11 @@
-hdl_lib_name = ta2_unb2b_1GbE_mc
-hdl_library_clause_name = ta2_unb2b_1GbE_mc_lib
+hdl_lib_name = ta2_unb2b_1GbE
+hdl_library_clause_name = ta2_unb2b_1GbE_lib
 hdl_lib_uses_synth = common technology dp  
 hdl_lib_uses_sim = 
 hdl_lib_technology = ip_arria10_e1sg
 
 synth_files =
-  ta2_unb2b_1GbE_mc.vhd
+  ta2_unb2b_1GbE.vhd
 test_bench_files =     
 
 regression_test_vhdl = 
diff --git a/applications/ta2/ip/ta2_unb2b_1GbE_mc/ta2_unb2b_1GbE_mc.tcl b/applications/ta2/ip/ta2_unb2b_1GbE/ta2_unb2b_1GbE.tcl
similarity index 93%
rename from applications/ta2/ip/ta2_unb2b_1GbE_mc/ta2_unb2b_1GbE_mc.tcl
rename to applications/ta2/ip/ta2_unb2b_1GbE/ta2_unb2b_1GbE.tcl
index a0b708e6678092449dd17dfc0988ba4ec88b26b0..0efe60d92c79cd5249b817c6207a2c0cb980d56b 100755
--- a/applications/ta2/ip/ta2_unb2b_1GbE_mc/ta2_unb2b_1GbE_mc.tcl
+++ b/applications/ta2/ip/ta2_unb2b_1GbE/ta2_unb2b_1GbE.tcl
@@ -1,13 +1,13 @@
-post_message "Running ta2_unb2b_1GbE_mc script"
+post_message "Running ta2_unb2b_1GbE script"
 set radiohdl_build $::env(RADIOHDL_BUILD_DIR)
 #============================================================
 # Files and basic settings
 #============================================================
 
 # Local HDL files
-set_global_assignment -name VHDL_FILE ip/ta2_unb2b_1GbE_mc/ta2_unb2b_1GbE_mc.vhd
+set_global_assignment -name VHDL_FILE ip/ta2_unb2b_1GbE/ta2_unb2b_1GbE.vhd
 
-# All used HDL library *_lib.qip files in order, copied from ta2_unb2b_1GbE_mc.qsf in RadioHDL build directory. 
+# All used HDL library *_lib.qip files in order, copied from ta2_unb2b_1GbE.qsf in RadioHDL build directory. 
 set_global_assignment -name QIP_FILE "$radiohdl_build/unb2b/quartus/technology/technology_lib.qip"
 set_global_assignment -name QIP_FILE "$radiohdl_build/unb2b/quartus/ip_arria10_e1sg_ram/ip_arria10_e1sg_ram_lib.qip"
 set_global_assignment -name QIP_FILE "$radiohdl_build/unb2b/quartus/tech_memory/tech_memory_lib.qip"
diff --git a/applications/ta2/ip/ta2_unb2b_1GbE_mc/ta2_unb2b_1GbE_mc.vhd b/applications/ta2/ip/ta2_unb2b_1GbE/ta2_unb2b_1GbE.vhd
similarity index 98%
rename from applications/ta2/ip/ta2_unb2b_1GbE_mc/ta2_unb2b_1GbE_mc.vhd
rename to applications/ta2/ip/ta2_unb2b_1GbE/ta2_unb2b_1GbE.vhd
index 9e87d67520ddcebe553a3c29b5bc0778cc5216f3..8d80fe2c193bafd22cadaf278edc218481a67f93 100644
--- a/applications/ta2/ip/ta2_unb2b_1GbE_mc/ta2_unb2b_1GbE_mc.vhd
+++ b/applications/ta2/ip/ta2_unb2b_1GbE/ta2_unb2b_1GbE.vhd
@@ -50,7 +50,7 @@ USE dp_lib.dp_stream_pkg.ALL;
 USE technology_lib.technology_pkg.ALL;
 USE common_lib.common_interface_layers_pkg.ALL;
 
-ENTITY ta2_unb2b_1GbE_mc IS       
+ENTITY ta2_unb2b_1GbE IS       
   PORT (      
     st_clk             : IN STD_LOGIC;
     st_rst             : IN STD_LOGIC;
@@ -69,10 +69,10 @@ ENTITY ta2_unb2b_1GbE_mc IS
     snk_out            : OUT t_dp_siso;
     snk_in             : IN  t_dp_sosi
   );
-END ta2_unb2b_1GbE_mc;
+END ta2_unb2b_1GbE;
 
 
-ARCHITECTURE str OF ta2_unb2b_1GbE_mc IS
+ARCHITECTURE str OF ta2_unb2b_1GbE IS
 
   CONSTANT c_sim                           : BOOLEAN := FALSE;
   CONSTANT c_empty_w                       : NATURAL := 2;
diff --git a/applications/ta2/ip/ta2_unb2b_1GbE_mc/ta2_unb2b_1GbE_mc_hw.tcl b/applications/ta2/ip/ta2_unb2b_1GbE/ta2_unb2b_1GbE_hw.tcl
similarity index 95%
rename from applications/ta2/ip/ta2_unb2b_1GbE_mc/ta2_unb2b_1GbE_mc_hw.tcl
rename to applications/ta2/ip/ta2_unb2b_1GbE/ta2_unb2b_1GbE_hw.tcl
index 417432eba6a2e00eea7ff3c4fb679c5005d46db5..addde9111a821d754c905db97d4e9c05bf2ce26d 100644
--- a/applications/ta2/ip/ta2_unb2b_1GbE_mc/ta2_unb2b_1GbE_mc_hw.tcl
+++ b/applications/ta2/ip/ta2_unb2b_1GbE/ta2_unb2b_1GbE_hw.tcl
@@ -4,7 +4,7 @@
 
 
 # 
-# ta2_unb2b_1GbE_mc "ta2_unb2b_1GbE_mc" v1.0
+# ta2_unb2b_1GbE "ta2_unb2b_1GbE" v1.0
 #  2020.01.28.08:39:40
 # 
 # 
@@ -16,15 +16,15 @@ package require -exact qsys 18.0
 
 
 # 
-# module ta2_unb2b_1GbE_mc
+# module ta2_unb2b_1GbE
 # 
 set_module_property DESCRIPTION ""
-set_module_property NAME ta2_unb2b_1GbE_mc
+set_module_property NAME ta2_unb2b_1GbE
 set_module_property VERSION 1.0
 set_module_property INTERNAL false
 set_module_property OPAQUE_ADDRESS_MAP true
 set_module_property AUTHOR ""
-set_module_property DISPLAY_NAME ta2_unb2b_1GbE_mc
+set_module_property DISPLAY_NAME ta2_unb2b_1GbE
 set_module_property INSTANTIATE_IN_SYSTEM_MODULE true
 set_module_property EDITABLE true
 set_module_property REPORT_TO_TALKBACK false
@@ -36,10 +36,10 @@ set_module_property REPORT_HIERARCHY false
 # file sets
 # 
 add_fileset QUARTUS_SYNTH QUARTUS_SYNTH "" ""
-set_fileset_property QUARTUS_SYNTH TOP_LEVEL ta2_unb2b_1GbE_mc_ip_wrapper
+set_fileset_property QUARTUS_SYNTH TOP_LEVEL ta2_unb2b_1GbE_ip_wrapper
 set_fileset_property QUARTUS_SYNTH ENABLE_RELATIVE_INCLUDE_PATHS false
 set_fileset_property QUARTUS_SYNTH ENABLE_FILE_OVERWRITE_MODE false
-add_fileset_file ta2_unb2b_1GbE_mc_ip_wrapper.vhd VHDL PATH ta2_unb2b_1GbE_mc_ip_wrapper.vhd TOP_LEVEL_FILE
+add_fileset_file ta2_unb2b_1GbE_ip_wrapper.vhd VHDL PATH ta2_unb2b_1GbE_ip_wrapper.vhd TOP_LEVEL_FILE
 
 
 # 
diff --git a/applications/ta2/ip/ta2_unb2b_1GbE_mc/ta2_unb2b_1GbE_mc_ip_wrapper.vhd b/applications/ta2/ip/ta2_unb2b_1GbE/ta2_unb2b_1GbE_ip_wrapper.vhd
similarity index 94%
rename from applications/ta2/ip/ta2_unb2b_1GbE_mc/ta2_unb2b_1GbE_mc_ip_wrapper.vhd
rename to applications/ta2/ip/ta2_unb2b_1GbE/ta2_unb2b_1GbE_ip_wrapper.vhd
index e2864d15cac46b957f2daaac1a6a3ac7561ccc5c..e9a457a71b89b6358c0891844fc2f5aaf2fdeb7c 100644
--- a/applications/ta2/ip/ta2_unb2b_1GbE_mc/ta2_unb2b_1GbE_mc_ip_wrapper.vhd
+++ b/applications/ta2/ip/ta2_unb2b_1GbE/ta2_unb2b_1GbE_ip_wrapper.vhd
@@ -22,11 +22,11 @@
 -- Author:
 -- . Reinier van der Walle
 -- Purpose:
--- . Instantiates ta2_unb2b_1GbE_mc component 
+-- . Instantiates ta2_unb2b_1GbE component 
 LIBRARY IEEE;
 USE IEEE.STD_LOGIC_1164.ALL;
 
-ENTITY ta2_unb2b_1GbE_mc_ip_wrapper IS       
+ENTITY ta2_unb2b_1GbE_ip_wrapper IS       
   PORT (      
     st_clk             : IN STD_LOGIC;
     st_rst             : IN STD_LOGIC;
@@ -59,14 +59,14 @@ ENTITY ta2_unb2b_1GbE_mc_ip_wrapper IS
     kernel_snk_valid   : IN  STD_LOGIC; -- TX data valid signal from kernel
     kernel_snk_ready   : OUT STD_LOGIC   -- Flow control towards kernel
   );
-END ta2_unb2b_1GbE_mc_ip_wrapper;
+END ta2_unb2b_1GbE_ip_wrapper;
 
 
-ARCHITECTURE str OF ta2_unb2b_1GbE_mc_ip_wrapper IS
+ARCHITECTURE str OF ta2_unb2b_1GbE_ip_wrapper IS
   ----------------------------------------------------------------------------
-  -- ta2_unb2b_1GbE_mc Component
+  -- ta2_unb2b_1GbE Component
   ----------------------------------------------------------------------------
-  COMPONENT ta2_unb2b_1GbE_mc IS
+  COMPONENT ta2_unb2b_1GbE IS
   PORT (
     st_clk             : IN STD_LOGIC;
     st_rst             : IN STD_LOGIC;
@@ -99,11 +99,11 @@ ARCHITECTURE str OF ta2_unb2b_1GbE_mc_ip_wrapper IS
     kernel_snk_valid   : IN  STD_LOGIC; -- TX data valid signal from kernel
     kernel_snk_ready   : OUT STD_LOGIC   -- Flow control towards kernel
   );
-  END COMPONENT ta2_unb2b_1GbE_mc;
+  END COMPONENT ta2_unb2b_1GbE;
 
 BEGIN
 
-  u_ta2_unb2b_1GbE_mc : ta2_unb2b_1GbE_mc 
+  u_ta2_unb2b_1GbE : ta2_unb2b_1GbE 
     PORT MAP (
       st_clk             => st_clk,
       st_rst             => st_rst,    
diff --git a/applications/ta2/ip/ta2_unb2b_40GbE/hdllib.cfg b/applications/ta2/ip/ta2_unb2b_40GbE/hdllib.cfg
index 2d3b73c77d36b4126865cd1249424953952930d0..a128fd70244f389cf29ae5d6c8305829026fe2c0 100644
--- a/applications/ta2/ip/ta2_unb2b_40GbE/hdllib.cfg
+++ b/applications/ta2/ip/ta2_unb2b_40GbE/hdllib.cfg
@@ -18,7 +18,8 @@ synth_top_level_entity =
 
 quartus_copy_files =
     arria10_40g_mac.ip .
-    arria10_40g_atx_pll.ip
+    arria10_40g_atx_pll.ip .
+
 quartus_qsf_files =
     $RADIOHDL/boards/uniboard2b/libraries/unb2b_board/quartus/unb2b_board.qsf
 
diff --git a/applications/ta2/ip/ta2_unb2b_mm_io/hdllib.cfg b/applications/ta2/ip/ta2_unb2b_mm_io/hdllib.cfg
index 734d741fb8fd037e2b4d4ff357431f1f80763302..274d179d5969d1c22bf79a8d99afe87e1f738503 100644
--- a/applications/ta2/ip/ta2_unb2b_mm_io/hdllib.cfg
+++ b/applications/ta2/ip/ta2_unb2b_mm_io/hdllib.cfg
@@ -7,6 +7,7 @@ hdl_lib_technology = ip_arria10_e1sg
 synth_files =
   ta2_unb2b_mm_io.vhd
 test_bench_files =     
+  tb_ta2_unb2b_mm_io.vhd
 
 regression_test_vhdl = 
     
diff --git a/applications/ta2/ip/ta2_unb2b_mm_io/ta2_unb2b_mm_io.vhd b/applications/ta2/ip/ta2_unb2b_mm_io/ta2_unb2b_mm_io.vhd
index f722afbfada55558f5b2fe75591a84e3b7a97561..ef0bd7d32f3a628106c7384457b1d55312dc9a1e 100644
--- a/applications/ta2/ip/ta2_unb2b_mm_io/ta2_unb2b_mm_io.vhd
+++ b/applications/ta2/ip/ta2_unb2b_mm_io/ta2_unb2b_mm_io.vhd
@@ -1,48 +1,65 @@
--------------------------------------------------------------------------------
---
--- Copyright (C) 2019
+-- --------------------------------------------------------------------------
+-- Copyright 2020
 -- 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.
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
 --
--- You should have received a copy of the GNU General Public License
--- along with this program.  If not, see <http://www.gnu.org/licenses/>.
+-- http://www.apache.org/licenses/LICENSE-2.0
 --
--------------------------------------------------------------------------------
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+-- --------------------------------------------------------------------------
 
+-- --------------------------------------------------------------------------
 -- Author:
 -- . Reinier van der Walle
 -- Purpose:
--- . Provide 1G ethernet I/O interface (BSP) for OpenCL kernel on Arria10
+-- . Provide Monitor and control I/O interface for OpenCL kernel on Arria10
 -- Description:
--- . This core consists of glue logic between the OpenCL kernel IO channel and dp sosi/siso interface to ctrl_unb2b_board:
+-- . This core consists of two dual clock fifos and glue logic to be used between 
+--   the OpenCL kernel IO channel and dp MM interface to board qsys.
+-- . After a MM write request the waitrequest is immediatly pulled low due to the
+--   fifo being ready.
+-- . After a MM read request the waitrequest is kept high until valid data has 
+--   been received back from the OpenCL kernel through the dual clock fifo. Due 
+--   to the latency of both dual clock fifos, a read request takes at least 14
+--   mm clock cycles (excluding OpenCL kernel process time).
 -- . Details:
 --   . This core was developed for use on the Uniboard2b.
---   .
---   . The data field of the ST-avalon interface is also used to provide
---   . SOP, EOP and empty meta-data. The implementation of this is shown below.
---   +-----------+---------+--------------------------------------------------------+
---   | Bit range | Name    | Description                                            |
---   +-----------+---------+--------------------------------------------------------+
---   | [0:31]    | payload | Packet payload                                         |
---   +-----------+---------+--------------------------------------------------------+
---   | 32        | sop     | Start of packet signal                                 |
---   +-----------+---------+--------------------------------------------------------+
---   | 33        | eop     | End of packet signal                                   |
---   +-----------+---------+--------------------------------------------------------+
---   | [34:37]   | -       | reserved bits                                          |
---   +-----------+---------+--------------------------------------------------------+
---   | [38:39]   | empty   | On EOP, this field indicates how many bytes are unused |
---   +-----------+---------+--------------------------------------------------------+
+--   . The implementation of the MM data mapped onto the IO channel is shown below.
+--   
+--   MOSI -> IO channel (72 bits)
+--   +-----------+---------+----------------------------------+
+--   | Bit range | Name    | Description                      |
+--   +-----------+---------+----------------------------------+
+--   | [0:31]    | wrdata  | Write data                       |
+--   +-----------+---------+----------------------------------+
+--   | [32:63]   | address | Address                          |
+--   +-----------+---------+----------------------------------+
+--   | [64]      | rd/wr   | '1' = wr, '0' = rd               |
+--   +-----------+---------+----------------------------------+
+--   | [65:71]   | -       | reserved bits                    |
+--   +-----------+---------+----------------------------------+
+--
+--   IO channel (32) bits -> MISO
+--   +-----------+---------+----------------------------------+
+--   | Bit range | Name    | Description                      |
+--   +-----------+---------+----------------------------------+
+--   | [0:31]    | rddata  | Read data                        |
+--   +-----------+---------+----------------------------------+
+--
+--   . The generic: g_use_opencl can be used for testing perposes. When g_use_opencl
+--     is FALSE, the core wil use an internal rtl model that emulates an OpenCL kernel.
+--     This model has 4 register on addresses 0:3. On addr 1, the rddata = wrdata +1 and
+--     on addr 2, the rddata = wrdata +2, to make them distinguishable. The others 
+--     registers are rddata = wrdata.
+-- --------------------------------------------------------------------------
 LIBRARY IEEE, common_lib, dp_lib, technology_lib;
 USE IEEE.STD_LOGIC_1164.ALL;
 USE common_lib.common_pkg.ALL;
@@ -51,65 +68,93 @@ USE dp_lib.dp_stream_pkg.ALL;
 USE technology_lib.technology_pkg.ALL;
 USE common_lib.common_interface_layers_pkg.ALL;
 
-ENTITY ta2_unb2b_mm_io IS       
+ENTITY ta2_unb2b_mm_io IS  
+  GENERIC (
+    g_use_opencl : BOOLEAN := TRUE
+  );  
   PORT (      
-    mm_clk             : IN STD_LOGIC;
-    mm_rst             : IN STD_LOGIC;
-
+    mm_clk        : IN  STD_LOGIC;
+    mm_rst        : IN  STD_LOGIC;
  
-    kernel_clk         : IN  STD_LOGIC; -- Kernel clock (runs the kernel_* I/O below)
-    kernel_reset       : IN  STD_LOGIC;
+    kernel_clk    : IN  STD_LOGIC; -- Kernel clock (runs the kernel_* I/O below)
+    kernel_reset  : IN  STD_LOGIC;
 
     -- MM registers
-    ctrl_mosi       : IN    t_mem_mosi := c_mem_mosi_rst;
-    ctrl_miso       : OUT   t_mem_miso;
+    mm_mosi       : IN  t_mem_mosi := c_mem_mosi_rst;
+    mm_miso       : OUT t_mem_miso;
   
-    data_mosi       : IN    t_mem_mosi := c_mem_mosi_rst;
-    data_miso       : OUT   t_mem_miso := c_mem_miso_rst;
-
-    src_out            : OUT t_dp_sosi;
-    src_in             : IN  t_dp_siso
+    -- DP 
+    snk_in        : IN  t_dp_sosi;
+    snk_out       : OUT t_dp_siso;
+ 
+    src_out       : OUT t_dp_sosi;
+    src_in        : IN  t_dp_siso
   );
 END ta2_unb2b_mm_io;
 
 
 ARCHITECTURE str OF ta2_unb2b_mm_io IS
-  CONSTANT c_fifo_size : NATURAL := 512;
+  CONSTANT c_fifo_size : NATURAL := 8;
+  CONSTANT c_wr_data_w : NATURAL := 72;
+  CONSTANT c_rd_data_w : NATURAL := 32;
 
   SIGNAL wr_usedw : STD_LOGIC_VECTOR(ceil_log2(c_fifo_size)-1 DOWNTO 0);
-  SIGNAL wr_sosi  : t_dp_sosi;
-BEGIN
+  SIGNAL rd_usedw : STD_LOGIC_VECTOR(ceil_log2(c_fifo_size)-1 DOWNTO 0);
+  SIGNAL wr_sosi  : t_dp_sosi := c_dp_sosi_rst;
+  SIGNAL wr_siso  : t_dp_siso := c_dp_siso_rdy;
+  SIGNAL rd_sosi  : t_dp_sosi := c_dp_sosi_rst;
+  SIGNAL rd_siso  : t_dp_siso := c_dp_siso_rdy;
 
+  SIGNAL busy : STD_LOGIC := '0';
+  SIGNAL done : STD_LOGIC := '0';
 
-    
-  -----------------------------------------------------------------------------
-  -- dp_fifo from mm
-  -----------------------------------------------------------------------------
+  SIGNAL is_reading : BOOLEAN := FALSE;
+  SIGNAL cnt : NATURAL := 0;
+  SIGNAL c_cnt_max : NATURAL := 3;
+
+  SIGNAL in_sosi  : t_dp_sosi := c_dp_sosi_rst;
+  SIGNAL in_siso  : t_dp_siso := c_dp_siso_rst;
+  SIGNAL out_sosi : t_dp_sosi := c_dp_sosi_rst;
+  SIGNAL out_siso : t_dp_siso := c_dp_siso_rst;
+
+  SIGNAL reg_a : STD_LOGIC_VECTOR(31 DOWNTO 0) := (OTHERS => '0');
+  SIGNAL reg_b : STD_LOGIC_VECTOR(31 DOWNTO 0) := (OTHERS => '0');
+  SIGNAL reg_c : STD_LOGIC_VECTOR(31 DOWNTO 0) := (OTHERS => '0');
+  SIGNAL reg_d : STD_LOGIC_VECTOR(31 DOWNTO 0) := (OTHERS => '0');
 
-  u_mms_dp_fifo_from_mm : ENTITY dp_lib.mms_dp_fifo_from_mm
-  GENERIC MAP (
-    g_wr_fifo_depth => c_fifo_size
-  )
-  PORT MAP (
-     mm_rst    => mm_rst,           
-     mm_clk    => mm_clk,          
-     wr_sosi   => wr_sosi,         
-     ctrl_mosi => ctrl_mosi,       
-     ctrl_miso => ctrl_miso,       
-     data_mosi => data_mosi,       
-     data_miso => data_miso,       
-     wr_usedw  => wr_usedw       
-  );   
+BEGIN
+  -- Connect MM <-> DP
+  wr_sosi.data(31 DOWNTO 0) <= mm_mosi.wrdata(31 DOWNTO 0);
+  mm_miso.rddata(31 DOWNTO 0) <= rd_sosi.data(31 DOWNTO 0);
+
+  wr_sosi.data(63 DOWNTO 32) <= mm_mosi.address(31 DOWNTO 0);
+  wr_sosi.data(64) <= mm_mosi.wr;
+  done <= wr_siso.ready WHEN mm_mosi.wr = '1' ELSE rd_sosi.valid;
+  mm_miso.waitrequest <= NOT done;
+  wr_sosi.valid <= (mm_mosi.wr OR mm_mosi.rd) WHEN busy = '0' ELSE '0';
+ 
+  p_valid : PROCESS(mm_clk)
+  BEGIN
+    IF (rising_edge(mm_clk)) THEN
+      IF (mm_mosi.wr OR mm_mosi.rd) = '1' THEN
+        busy <= '1';
+      END IF;
+      IF done = '1' THEN
+        busy <= '0';
+      END IF;
+    END IF;
+  END PROCESS;
  
   -----------------------------------------------------------------------------
-  -- dual clock FIFO
+  -- dual clock FIFOs
   -----------------------------------------------------------------------------
-
-    u_dp_fifo_dc : ENTITY dp_lib.dp_fifo_dc
+    u_dp_fifo_dc_wr : ENTITY dp_lib.dp_fifo_dc
     GENERIC MAP (
       g_technology  => c_tech_arria10_e1sg,
-      g_data_w      => c_word_w,
-      g_fifo_size   => c_fifo_size
+      g_data_w      => c_wr_data_w,
+      g_use_ctrl    => FALSE, -- No sop & eop
+      g_fifo_size   => c_fifo_size,
+      g_fifo_rl     => 0
     )
     PORT MAP (
       wr_rst      => mm_rst,
@@ -120,11 +165,99 @@ BEGIN
       wr_usedw    => wr_usedw,
 
       snk_in      => wr_sosi,
+      snk_out     => wr_siso,
+  
+      src_in      => out_siso, 
+      src_out     => out_sosi
+    );   
+
+
+    u_dp_fifo_dc_rd : ENTITY dp_lib.dp_fifo_dc
+    GENERIC MAP (
+      g_technology  => c_tech_arria10_e1sg,
+      g_data_w      => c_rd_data_w,
+      g_use_ctrl    => FALSE, -- No sop & eop
+      g_fifo_size   => c_fifo_size,
+      g_fifo_rl     => 0
+    )
+    PORT MAP (
+      wr_rst      => kernel_reset,
+      wr_clk      => kernel_clk,
+      rd_rst      => mm_rst,
+      rd_clk      => mm_clk,
+
+      wr_usedw    => rd_usedw,
+
+      snk_in      => in_sosi,
+      snk_out     => in_siso,
   
-      src_in      => src_in, 
-      src_out     => src_out
+      src_in      => rd_siso, 
+      src_out     => rd_sosi
     );   
 
+gen_no_opencl : IF NOT g_use_opencl GENERATE
+  -- simulate an OpenCL kernel response (rl=0)
+  p_is_reading : PROCESS(kernel_clk)
+  BEGIN
+    IF rising_edge(kernel_clk) THEN
+      IF cnt >= c_cnt_max THEN
+        cnt <= 0;
+        is_reading <= FALSE;
+      ELSE
+        cnt <= cnt+1;
+      END IF;
+      IF in_sosi.valid = '1' THEN
+        is_reading <= TRUE;
+        cnt <= 0;
+      END IF;
+    END IF;
+  END PROCESS;
+
+  p_stim_st : PROCESS(out_sosi, in_siso, is_reading) 
+  BEGIN
+    in_sosi.valid <= '0'; 
+    IF out_sosi.valid='1' THEN
+      IF out_sosi.data(64) = '1' THEN -- Write request
+        IF TO_UINT(out_sosi.data(63 DOWNTO 56)) = 0 THEN
+          reg_a <= out_sosi.data(31 DOWNTO 0);
+        ELSIF TO_UINT(out_sosi.data(63 DOWNTO 56)) = 1 THEN
+          reg_b <= TO_UVEC(TO_UINT(out_sosi.data(31 DOWNTO 24))+1, 8) & out_sosi.data(23 DOWNTO 0); -- wrdata +1 to make distinguishable
+        ELSIF TO_UINT(out_sosi.data(63 DOWNTO 56)) = 2 THEN
+          reg_c <= out_sosi.data(31 DOWNTO 0);
+        ELSIF TO_UINT(out_sosi.data(63 DOWNTO 56)) = 3 THEN
+          reg_d <= TO_UVEC(TO_UINT(out_sosi.data(31 DOWNTO 24))+2, 8) & out_sosi.data(23 DOWNTO 0); -- wrdata +2 to make distinguishable 
+        END IF;
+        out_siso.ready <= '1';
+      ELSE -- read request
+        IF NOT is_reading THEN
+          out_siso.ready <= '1';
+          in_sosi.valid <= '1'; 
+          IF TO_UINT(out_sosi.data(63 DOWNTO 56)) = 0 THEN
+            in_sosi.data(31 DOWNTO 0) <= reg_a;
+          ELSIF TO_UINT(out_sosi.data(63 DOWNTO 56)) = 1 THEN
+            in_sosi.data(31 DOWNTO 0) <= reg_b;
+          ELSIF TO_UINT(out_sosi.data(63 DOWNTO 56)) = 2 THEN
+            in_sosi.data(31 DOWNTO 0) <= reg_c;
+          ELSIF TO_UINT(out_sosi.data(63 DOWNTO 56)) = 3 THEN
+            in_sosi.data(31 DOWNTO 0) <= reg_d;
+          ELSE
+            in_sosi.data(31 DOWNTO 0) <= (OTHERS => '0');
+          END IF;
+        END IF;
+      END IF;     
+    END IF;
+  END PROCESS; 
+
+  src_out <= c_dp_sosi_rst;
+  snk_out <= c_dp_siso_rdy;
+END GENERATE;
+
+gen_opencl : IF g_use_opencl GENERATE
+  src_out <= out_sosi;
+  out_siso <= src_in;
+  snk_out <= in_siso;
+  in_sosi <= snk_in;
+END GENERATE;
 
 
 END str;
diff --git a/applications/ta2/ip/ta2_unb2b_mm_io/tb_ta2_unb2b_mm_io.vhd b/applications/ta2/ip/ta2_unb2b_mm_io/tb_ta2_unb2b_mm_io.vhd
new file mode 100644
index 0000000000000000000000000000000000000000..0ba60ac15b674329222a6983faa94bc9a70af329
--- /dev/null
+++ b/applications/ta2/ip/ta2_unb2b_mm_io/tb_ta2_unb2b_mm_io.vhd
@@ -0,0 +1,179 @@
+-- --------------------------------------------------------------------------
+-- Copyright 2020
+-- ASTRON (Netherlands Institute for Radio Astronomy) <http://www.astron.nl/>
+-- P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
+--
+-- Licensed under the Apache License, Version 2.0 (the "License");
+-- you may not use this file except in compliance with the License.
+-- You may obtain a copy of the License at
+--
+-- http://www.apache.org/licenses/LICENSE-2.0
+--
+-- Unless required by applicable law or agreed to in writing, software
+-- distributed under the License is distributed on an "AS IS" BASIS,
+-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+-- See the License for the specific language governing permissions and
+-- limitations under the License.
+-- --------------------------------------------------------------------------
+
+-- --------------------------------------------------------------------------
+-- Author:
+-- . Reinier van der Walle
+-- Purpose:
+-- . tb for ta2_unb2b_mm_io
+-- Description:
+-- Simple testbench that provides MM stimuli of writing a 
+-- register and then reading it back.
+-- . Usage -> as 10; run -a 
+-- --------------------------------------------------------------------------
+LIBRARY IEEE, common_lib, dp_lib, technology_lib;
+USE IEEE.STD_LOGIC_1164.ALL;
+USE common_lib.common_pkg.ALL;
+USE common_lib.common_mem_pkg.ALL;
+USE dp_lib.dp_stream_pkg.ALL;
+USE technology_lib.technology_pkg.ALL;
+USE common_lib.common_interface_layers_pkg.ALL;
+USE common_lib.tb_common_pkg.ALL;
+USE common_lib.tb_common_mem_pkg.ALL;
+USE dp_lib.tb_dp_pkg.ALL;
+
+ENTITY tb_ta2_unb2b_mm_io IS       
+END tb_ta2_unb2b_mm_io;
+
+
+ARCHITECTURE tb OF tb_ta2_unb2b_mm_io IS
+  CONSTANT c_data_value : NATURAL := 10;
+
+  SIGNAL tb_end : STD_LOGIC := '0';
+  SIGNAL clk    : STD_LOGIC := '1';
+  SIGNAL rst    : STD_LOGIC := '1';
+
+  SIGNAL reg_a : STD_LOGIC_VECTOR(31 DOWNTO 0) := (OTHERS => '0');
+  SIGNAL reg_b : STD_LOGIC_VECTOR(31 DOWNTO 0) := (OTHERS => '0');
+  SIGNAL reg_c : STD_LOGIC_VECTOR(31 DOWNTO 0) := (OTHERS => '0');
+  SIGNAL reg_d : STD_LOGIC_VECTOR(31 DOWNTO 0) := (OTHERS => '0');
+
+  SIGNAL in_sosi  : t_dp_sosi := c_dp_sosi_rst;
+  SIGNAL in_siso  : t_dp_siso := c_dp_siso_rst;
+  SIGNAL out_sosi : t_dp_sosi := c_dp_sosi_rst;
+  SIGNAL out_siso : t_dp_siso := c_dp_siso_rst;
+
+  SIGNAL mm_mosi : t_mem_mosi := c_mem_mosi_rst;
+  SIGNAL mm_miso : t_mem_miso := c_mem_miso_rst;
+
+  SIGNAL busy : BOOLEAN := FALSE;
+
+BEGIN
+
+  clk <= (NOT clk) OR tb_end AFTER clk_period/2;
+  rst <= '1', '0' AFTER clk_period*7;
+
+  p_verify : PROCESS
+  BEGIN
+    WAIT UNTIL tb_end = '1';
+    ASSERT TO_UINT(mm_miso.rddata(31 DOWNTO 0)) = c_data_value REPORT "Wrong read data." SEVERITY ERROR;
+  END PROCESS;
+
+  u_dut : ENTITY work.ta2_unb2b_mm_io
+  GENERIC MAP(
+    g_use_opencl => FALSE
+  ) 
+  PORT MAP(
+    -- Memory-mapped clock domain
+    mm_rst       => rst,
+    mm_clk       => clk,
+
+    mm_mosi     => mm_mosi,
+    mm_miso     => mm_miso,
+    
+    -- Streaming clock domain
+    kernel_reset     => rst,  
+    kernel_clk       => clk,  
+
+    -- ST sinks
+    snk_out  => in_siso,
+    snk_in   => in_sosi, 
+    -- ST source
+    src_in   => out_siso, 
+    src_out  => out_sosi
+  );
+
+
+  p_stim_mm : PROCESS
+  BEGIN
+    WAIT UNTIL rst='0';
+    proc_common_wait_some_cycles(clk, 15); -- give dc fifos time to initialize
+    proc_mem_mm_bus_wr(333, c_data_value, clk, mm_miso, mm_mosi); -- write value to unused address.
+    proc_mem_mm_bus_wr(0, c_data_value, clk, mm_miso, mm_mosi); -- write value to address 0.
+    proc_mem_mm_bus_wr(1, c_data_value+1, clk, mm_miso, mm_mosi); -- write value +1 to address 1.
+    proc_mem_mm_bus_wr(2, c_data_value+2, clk, mm_miso, mm_mosi); -- write value +2 to address 2.
+    proc_mem_mm_bus_wr(3, c_data_value+3, clk, mm_miso, mm_mosi); -- write value +3 to address 3.
+
+    proc_common_wait_some_cycles(clk, 5); 
+    proc_mem_mm_bus_rd(333, clk, mm_miso, mm_mosi); -- read address from undefined address.
+    proc_mem_mm_bus_rd(3, clk, mm_miso, mm_mosi); -- read address 3.
+    proc_mem_mm_bus_rd(2, clk, mm_miso, mm_mosi); -- read address 2.
+    proc_mem_mm_bus_rd(1, clk, mm_miso, mm_mosi); -- read address 1.
+    proc_mem_mm_bus_rd(0, clk, mm_miso, mm_mosi); -- read address 0.
+
+    proc_common_wait_some_cycles(clk, 15); 
+
+    tb_end <= '1';
+    WAIT;
+  END PROCESS;
+ 
+  -- simulate an OpenCL kernel response (rl=0)
+  p_busy : PROCESS
+  BEGIN
+    WHILE tb_end = '0' LOOP
+      IF in_sosi.valid = '1' THEN
+        proc_common_wait_some_cycles(clk, 1); 
+        busy <= TRUE;
+        proc_common_wait_some_cycles(clk, 3); -- simulate request time
+        busy <= FALSE;
+      ELSE
+        proc_common_wait_some_cycles(clk, 1); 
+      END IF;
+    END LOOP;
+    WAIT;
+  END PROCESS;
+
+  p_stim_st : PROCESS(out_sosi, in_siso, busy) 
+  BEGIN
+    in_sosi.valid <= '0'; 
+    IF out_sosi.valid='1' THEN
+      IF out_sosi.data(64) = '1' THEN -- Write request
+        IF TO_UINT(out_sosi.data(63 DOWNTO 56)) = 0 THEN
+          reg_a <= out_sosi.data(31 DOWNTO 0);
+        ELSIF TO_UINT(out_sosi.data(63 DOWNTO 56)) = 1 THEN
+          reg_b <= TO_UVEC(TO_UINT(out_sosi.data(31 DOWNTO 24))+1, 8) & out_sosi.data(23 DOWNTO 0);
+        ELSIF TO_UINT(out_sosi.data(63 DOWNTO 56)) = 2 THEN
+          reg_c <= out_sosi.data(31 DOWNTO 0);
+        ELSIF TO_UINT(out_sosi.data(63 DOWNTO 56)) = 3 THEN
+          reg_d <= TO_UVEC(TO_UINT(out_sosi.data(31 DOWNTO 24))+2, 8) & out_sosi.data(23 DOWNTO 0);
+        END IF;
+        out_siso.ready <= '1';
+      ELSE -- read request
+        IF NOT busy THEN
+          out_siso.ready <= '1';
+          in_sosi.valid <= '1'; 
+          IF TO_UINT(out_sosi.data(63 DOWNTO 56)) = 0 THEN
+            in_sosi.data(31 DOWNTO 0) <= reg_a;
+          ELSIF TO_UINT(out_sosi.data(63 DOWNTO 56)) = 1 THEN
+            in_sosi.data(31 DOWNTO 0) <= reg_b;
+          ELSIF TO_UINT(out_sosi.data(63 DOWNTO 56)) = 2 THEN
+            in_sosi.data(31 DOWNTO 0) <= reg_c;
+          ELSIF TO_UINT(out_sosi.data(63 DOWNTO 56)) = 3 THEN
+            in_sosi.data(31 DOWNTO 0) <= reg_d;
+          ELSE
+            in_sosi.data(31 DOWNTO 0) <= (OTHERS => '0');
+          END IF;
+        END IF;
+      END IF;     
+    END IF;
+  END PROCESS; 
+
+
+  
+END tb;
+