diff --git a/.gitignore b/.gitignore
index 80af083907a3066018a7897631bd93657eaf36ba..06cc3b08b3f972c7bb0b0fce9253119438ae3862 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,6 +4,7 @@ logical/sie300
 logical/SMC
 logical/shared
 logical/nic400_megasoc_main
+logical/dma350
 
 software/build
 
diff --git a/flist/IP/DMA350.flist b/flist/IP/DMA350.flist
new file mode 100644
index 0000000000000000000000000000000000000000..4dbe4f24031686dda214cc84f2ab5d2a8937b212
--- /dev/null
+++ b/flist/IP/DMA350.flist
@@ -0,0 +1,150 @@
+
+
++incdir+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/shared/verilog
+
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/shared/verilog/ada_gen_regmap_sldma350_megasoc_pkg.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/shared/verilog/ada_apb_regmap_conv_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/shared/verilog/ada_reg_field_ro_ro_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/shared/verilog/ada_reg_field_rw_ro_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/shared/verilog/ada_reg_field_rw_w1c_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/shared/verilog/ada_reg_field_rw_w1s_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/shared/verilog/ada_reg_field_rw_rw_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/shared/verilog/ada_gen_coreif_dmach_sldma350_megasoc_pkg.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/shared/verilog/ada_gen_addrmap_dmach_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/shared/verilog/ada_interface_sldma350_megasoc_pkg.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/shared/verilog/ada_flop_en/verilog/ada_flop_en.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/shared/verilog/ada_or_tree/verilog/ada_or_tree.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/shared/verilog/ada_gen_regif_dmainfo_sldma350_megasoc_pkg.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/models/cells/generic/ada_arm_flop.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/models/cells/generic/ada_arm_sync.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/models/cells/generic/ada_arm_mux2.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/models/cells/generic/ada_arm_or.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/models/cells/generic/ada_arm_idbit_v1.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/shared/verilog/ada_ecorevnum.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_top_sldma350_megasoc/verilog/ada_top_sldma350_megasoc.sv
+
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_0_sldma350_megasoc/verilog/ada_gen_regif_dmach_0_sldma350_megasoc_pkg.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_0_sldma350_megasoc/verilog/ada_gen_regif_dmach_0_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_0_sldma350_megasoc/verilog/ada_gen_regmap_dmach_0_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_0_sldma350_megasoc/verilog/ada_gen_fields_coreif_dmach_0_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_0_sldma350_megasoc/verilog/ada_gen_coreif_res_dmach_0_sldma350_megasoc_pkg.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_0_sldma350_megasoc/verilog/ada_channel_0_sldma350_megasoc_pkg.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_0_sldma350_megasoc/verilog/ada_channel_0_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_0_sldma350_megasoc/verilog/ada_channel_0_ctrl_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_0_sldma350_megasoc/verilog/ada_channel_0_1d_wr_ctrl_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_0_sldma350_megasoc/verilog/ada_channel_0_2d_wr_ctrl_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_0_sldma350_megasoc/verilog/ada_channel_0_1d_rd_ctrl_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_0_sldma350_megasoc/verilog/ada_channel_0_2d_rd_ctrl_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_0_sldma350_megasoc/verilog/ada_channel_0_fifo_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_0_sldma350_megasoc/verilog/ada_channel_0_cmdlink_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_0_sldma350_megasoc/verilog/ada_channel_0_axi_rd_if_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_0_sldma350_megasoc/verilog/ada_channel_0_axi_wr_if_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_0_sldma350_megasoc/verilog/ada_channel_0_axi_stop_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_0_sldma350_megasoc/verilog/ada_channel_0_reg_bank_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_0_sldma350_megasoc/verilog/ada_channel_0_inc_gen_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_0_sldma350_megasoc/verilog/ada_channel_0_stream_wrapper_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_0_sldma350_megasoc/verilog/ada_channel_0_stream_slave_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_0_sldma350_megasoc/verilog/ada_channel_0_stream_master_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_0_sldma350_megasoc/verilog/ada_channel_0_stream_bypass_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_0_sldma350_megasoc/verilog/ada_channel_0_trig_in_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_0_sldma350_megasoc/verilog/ada_channel_0_trig_out_sldma350_megasoc.sv
+
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_1_sldma350_megasoc/verilog/ada_gen_regif_dmach_1_sldma350_megasoc_pkg.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_1_sldma350_megasoc/verilog/ada_gen_regif_dmach_1_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_1_sldma350_megasoc/verilog/ada_gen_regmap_dmach_1_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_1_sldma350_megasoc/verilog/ada_gen_fields_coreif_dmach_1_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_1_sldma350_megasoc/verilog/ada_gen_coreif_res_dmach_1_sldma350_megasoc_pkg.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_1_sldma350_megasoc/verilog/ada_channel_1_sldma350_megasoc_pkg.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_1_sldma350_megasoc/verilog/ada_channel_1_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_1_sldma350_megasoc/verilog/ada_channel_1_ctrl_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_1_sldma350_megasoc/verilog/ada_channel_1_1d_wr_ctrl_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_1_sldma350_megasoc/verilog/ada_channel_1_2d_wr_ctrl_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_1_sldma350_megasoc/verilog/ada_channel_1_1d_rd_ctrl_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_1_sldma350_megasoc/verilog/ada_channel_1_2d_rd_ctrl_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_1_sldma350_megasoc/verilog/ada_channel_1_fifo_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_1_sldma350_megasoc/verilog/ada_channel_1_cmdlink_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_1_sldma350_megasoc/verilog/ada_channel_1_axi_rd_if_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_1_sldma350_megasoc/verilog/ada_channel_1_axi_wr_if_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_1_sldma350_megasoc/verilog/ada_channel_1_axi_stop_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_1_sldma350_megasoc/verilog/ada_channel_1_reg_bank_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_1_sldma350_megasoc/verilog/ada_channel_1_inc_gen_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_1_sldma350_megasoc/verilog/ada_channel_1_stream_wrapper_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_1_sldma350_megasoc/verilog/ada_channel_1_stream_slave_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_1_sldma350_megasoc/verilog/ada_channel_1_stream_master_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_1_sldma350_megasoc/verilog/ada_channel_1_stream_bypass_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_1_sldma350_megasoc/verilog/ada_channel_1_trig_in_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_1_sldma350_megasoc/verilog/ada_channel_1_trig_out_sldma350_megasoc.sv
+
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_2_sldma350_megasoc/verilog/ada_gen_regif_dmach_2_sldma350_megasoc_pkg.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_2_sldma350_megasoc/verilog/ada_gen_regif_dmach_2_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_2_sldma350_megasoc/verilog/ada_gen_regmap_dmach_2_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_2_sldma350_megasoc/verilog/ada_gen_fields_coreif_dmach_2_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_2_sldma350_megasoc/verilog/ada_gen_coreif_res_dmach_2_sldma350_megasoc_pkg.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_2_sldma350_megasoc/verilog/ada_channel_2_sldma350_megasoc_pkg.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_2_sldma350_megasoc/verilog/ada_channel_2_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_2_sldma350_megasoc/verilog/ada_channel_2_ctrl_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_2_sldma350_megasoc/verilog/ada_channel_2_1d_wr_ctrl_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_2_sldma350_megasoc/verilog/ada_channel_2_1d_rd_ctrl_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_2_sldma350_megasoc/verilog/ada_channel_2_fifo_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_2_sldma350_megasoc/verilog/ada_channel_2_cmdlink_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_2_sldma350_megasoc/verilog/ada_channel_2_axi_rd_if_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_2_sldma350_megasoc/verilog/ada_channel_2_axi_wr_if_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_2_sldma350_megasoc/verilog/ada_channel_2_axi_stop_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_2_sldma350_megasoc/verilog/ada_channel_2_reg_bank_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_2_sldma350_megasoc/verilog/ada_channel_2_trig_in_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_2_sldma350_megasoc/verilog/ada_channel_2_trig_out_sldma350_megasoc.sv
+
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_3_sldma350_megasoc/verilog/ada_gen_regif_dmach_3_sldma350_megasoc_pkg.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_3_sldma350_megasoc/verilog/ada_gen_regif_dmach_3_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_3_sldma350_megasoc/verilog/ada_gen_regmap_dmach_3_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_3_sldma350_megasoc/verilog/ada_gen_fields_coreif_dmach_3_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_3_sldma350_megasoc/verilog/ada_gen_coreif_res_dmach_3_sldma350_megasoc_pkg.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_3_sldma350_megasoc/verilog/ada_channel_3_sldma350_megasoc_pkg.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_3_sldma350_megasoc/verilog/ada_channel_3_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_3_sldma350_megasoc/verilog/ada_channel_3_ctrl_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_3_sldma350_megasoc/verilog/ada_channel_3_1d_wr_ctrl_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_3_sldma350_megasoc/verilog/ada_channel_3_1d_rd_ctrl_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_3_sldma350_megasoc/verilog/ada_channel_3_fifo_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_3_sldma350_megasoc/verilog/ada_channel_3_cmdlink_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_3_sldma350_megasoc/verilog/ada_channel_3_axi_rd_if_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_3_sldma350_megasoc/verilog/ada_channel_3_axi_wr_if_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_3_sldma350_megasoc/verilog/ada_channel_3_axi_stop_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_3_sldma350_megasoc/verilog/ada_channel_3_reg_bank_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_3_sldma350_megasoc/verilog/ada_channel_3_trig_in_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_channel_3_sldma350_megasoc/verilog/ada_channel_3_trig_out_sldma350_megasoc.sv
+
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_biu_sldma350_megasoc/verilog/ada_biu_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_biu_sldma350_megasoc/verilog/ada_biu_read_switch_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_biu_sldma350_megasoc/verilog/ada_biu_read_switch_wrapper_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_biu_sldma350_megasoc/verilog/ada_biu_write_switch_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_biu_sldma350_megasoc/verilog/ada_biu_write_switch_wrapper_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_biu_sldma350_megasoc/verilog/ada_biu_arbiter_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_biu_sldma350_megasoc/verilog/ada_biu_qv_cmp_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_biu_sldma350_megasoc/verilog/ada_biu_lrg_arb_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_biu_sldma350_megasoc/verilog/ada_biu_grant_queue_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_biu_sldma350_megasoc/verilog/ada_biu_full_f2s_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_biu_sldma350_megasoc/verilog/ada_biu_reverse_s2f_sldma350_megasoc.sv
+
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_ctrl_sldma350_megasoc/verilog/ada_gen_regif_dmainfo_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_ctrl_sldma350_megasoc/verilog/ada_gen_regmap_dmainfo_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_ctrl_sldma350_megasoc/verilog/ada_gen_fields_coreif_dmainfo_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_ctrl_sldma350_megasoc/verilog/ada_gen_addrmap_dmainfo_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_ctrl_sldma350_megasoc/verilog/ada_gen_coreif_dmansecctrl_sldma350_megasoc_pkg.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_ctrl_sldma350_megasoc/verilog/ada_gen_regif_dmansecctrl_sldma350_megasoc_pkg.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_ctrl_sldma350_megasoc/verilog/ada_gen_regif_dmansecctrl_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_ctrl_sldma350_megasoc/verilog/ada_gen_regmap_dmansecctrl_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_ctrl_sldma350_megasoc/verilog/ada_gen_fields_coreif_dmansecctrl_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_ctrl_sldma350_megasoc/verilog/ada_gen_addrmap_dmansecctrl_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_ctrl_sldma350_megasoc/verilog/ada_ctrl_apb_slave_mux_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_ctrl_sldma350_megasoc/verilog/ada_ctrl_dmainfo_reg_bank_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_ctrl_sldma350_megasoc/verilog/ada_ctrl_dmansecctrl_reg_bank_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_ctrl_sldma350_megasoc/verilog/ada_ctrl_trigmask_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_ctrl_sldma350_megasoc/verilog/ada_ctrl_trigin_used_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_ctrl_sldma350_megasoc/verilog/ada_ctrl_trigout_used_sldma350_megasoc.sv
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_ctrl_sldma350_megasoc/verilog/ada_ctrl_sldma350_megasoc.sv
+
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_trigmtx_sldma350_megasoc/verilog/ada_trigmtx_sldma350_megasoc.sv
+
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/dma350/logical/ada_qctrl_sldma350_megasoc/verilog/ada_qctrl_sldma350_megasoc.sv
+
+
diff --git a/flist/IP/nic400_megasoc_main.flist b/flist/IP/nic400_megasoc_main.flist
index d86f90d581c91a9b1d48ad1d4679cc277f6c26b7..823d89cb3b1841de8f869e2458927997397b767e 100644
--- a/flist/IP/nic400_megasoc_main.flist
+++ b/flist/IP/nic400_megasoc_main.flist
@@ -36,6 +36,12 @@ $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_m
 $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/asib_A53/verilog/nic400_asib_A53_megasoc_main.v
 $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/asib_A53/verilog/nic400_asib_A53_rd_spi_cdas_megasoc_main.v
 $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/asib_A53/verilog/nic400_asib_A53_wr_spi_cdas_megasoc_main.v
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/asib_DMA350/verilog/nic400_asib_DMA350_chan_slice_megasoc_main.v
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/asib_DMA350/verilog/nic400_asib_DMA350_decode_megasoc_main.v
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/asib_DMA350/verilog/nic400_asib_DMA350_maskcntl_megasoc_main.v
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/asib_DMA350/verilog/nic400_asib_DMA350_megasoc_main.v
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/asib_DMA350/verilog/nic400_asib_DMA350_rd_spi_cdas_megasoc_main.v
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/asib_DMA350/verilog/nic400_asib_DMA350_wr_spi_cdas_megasoc_main.v
 $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/busmatrix_bm0/verilog/nic400_bm0_add_sel_ml0_megasoc_main.v
 $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/busmatrix_bm0/verilog/nic400_bm0_add_sel_ml1_megasoc_main.v
 $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/busmatrix_bm0/verilog/nic400_bm0_add_sel_ml2_megasoc_main.v
@@ -60,11 +66,16 @@ $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_m
 $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/busmatrix_bm0/verilog/nic400_bm0_wr_sel_ml1_megasoc_main.v
 $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/busmatrix_bm0/verilog/nic400_bm0_wr_sel_ml2_megasoc_main.v
 $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/busmatrix_bm0/verilog/nic400_bm0_wr_spi_tt_s0_megasoc_main.v
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/busmatrix_bm1/verilog/nic400_bm1_add_arb_ml0_megasoc_main.v
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/busmatrix_bm1/verilog/nic400_bm1_add_arb_ml1_megasoc_main.v
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/busmatrix_bm1/verilog/nic400_bm1_add_arb_ml3_megasoc_main.v
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/busmatrix_bm1/verilog/nic400_bm1_add_arb_ml4_megasoc_main.v
 $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/busmatrix_bm1/verilog/nic400_bm1_add_sel_ml0_megasoc_main.v
 $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/busmatrix_bm1/verilog/nic400_bm1_add_sel_ml1_megasoc_main.v
 $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/busmatrix_bm1/verilog/nic400_bm1_add_sel_ml2_megasoc_main.v
 $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/busmatrix_bm1/verilog/nic400_bm1_add_sel_ml3_megasoc_main.v
 $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/busmatrix_bm1/verilog/nic400_bm1_add_sel_ml4_megasoc_main.v
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/busmatrix_bm1/verilog/nic400_bm1_lrg_arb_megasoc_main.v
 $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/busmatrix_bm1/verilog/nic400_bm1_maskcntl_ml0_megasoc_main.v
 $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/busmatrix_bm1/verilog/nic400_bm1_maskcntl_ml1_megasoc_main.v
 $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/busmatrix_bm1/verilog/nic400_bm1_maskcntl_ml2_megasoc_main.v
@@ -72,6 +83,7 @@ $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_m
 $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/busmatrix_bm1/verilog/nic400_bm1_maskcntl_ml4_megasoc_main.v
 $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/busmatrix_bm1/verilog/nic400_bm1_megasoc_main.v
 $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/busmatrix_bm1/verilog/nic400_bm1_ml_blayer_0_megasoc_main.v
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/busmatrix_bm1/verilog/nic400_bm1_ml_blayer_1_megasoc_main.v
 $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/busmatrix_bm1/verilog/nic400_bm1_ml_build_megasoc_main.v
 $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/busmatrix_bm1/verilog/nic400_bm1_ml_map_megasoc_main.v
 $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/busmatrix_bm1/verilog/nic400_bm1_ml_mlayer_0_megasoc_main.v
@@ -79,7 +91,9 @@ $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_m
 $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/busmatrix_bm1/verilog/nic400_bm1_ml_mlayer_2_megasoc_main.v
 $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/busmatrix_bm1/verilog/nic400_bm1_ml_mlayer_3_megasoc_main.v
 $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/busmatrix_bm1/verilog/nic400_bm1_ml_mlayer_4_megasoc_main.v
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/busmatrix_bm1/verilog/nic400_bm1_qv_cmp_megasoc_main.v
 $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/busmatrix_bm1/verilog/nic400_bm1_rd_spi_tt_s0_megasoc_main.v
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/busmatrix_bm1/verilog/nic400_bm1_rd_spi_tt_s1_megasoc_main.v
 $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/busmatrix_bm1/verilog/nic400_bm1_ret_sel_ml0_megasoc_main.v
 $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/busmatrix_bm1/verilog/nic400_bm1_ret_sel_ml1_megasoc_main.v
 $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/busmatrix_bm1/verilog/nic400_bm1_ret_sel_ml2_megasoc_main.v
@@ -91,6 +105,7 @@ $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_m
 $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/busmatrix_bm1/verilog/nic400_bm1_wr_sel_ml3_megasoc_main.v
 $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/busmatrix_bm1/verilog/nic400_bm1_wr_sel_ml4_megasoc_main.v
 $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/busmatrix_bm1/verilog/nic400_bm1_wr_spi_tt_s0_megasoc_main.v
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/busmatrix_bm1/verilog/nic400_bm1_wr_spi_tt_s1_megasoc_main.v
 $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/cdc_blocks/verilog/nic400_cdc_bypass_sync_megasoc_main.v
 $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/cdc_blocks/verilog/nic400_cdc_capt_nosync_megasoc_main.v
 $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/cdc_blocks/verilog/nic400_cdc_capt_sync_megasoc_main.v
@@ -158,8 +173,8 @@ $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_m
 $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/ib_ib2/verilog/nic400_ib_ib2_maskcntl_megasoc_main.v
 $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/ib_ib2/verilog/nic400_ib_ib2_master_domain_megasoc_main.v
 $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/ib_ib2/verilog/nic400_ib_ib2_slave_domain_megasoc_main.v
-$(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/reg_slice/verilog/nic400_ax_reg_slice_megasoc_main.v
 $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/reg_slice/verilog/nic400_ax4_reg_slice_megasoc_main.v
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/reg_slice/verilog/nic400_ax_reg_slice_megasoc_main.v
 $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/reg_slice/verilog/nic400_buf_reg_slice_megasoc_main.v
 $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/reg_slice/verilog/nic400_ful_regd_slice_megasoc_main.v
 $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/reg_slice/verilog/nic400_fwd_regd_slice_megasoc_main.v
@@ -171,21 +186,22 @@ $(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_m
 +incdir+$(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/amib_DRAM/verilog
 +incdir+$(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/amib_FLASH/verilog
 +incdir+$(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/amib_GIC/verilog
-+incdir+$(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/amib_PERIPHERAL/verilog
 +incdir+$(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/amib_RAM/verilog
 +incdir+$(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/amib_ROM/verilog
 +incdir+$(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/amib_apb_group0/verilog
 +incdir+$(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/asib_A53/verilog
++incdir+$(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/asib_DMA350/verilog
 +incdir+$(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/busmatrix_bm0/verilog
 +incdir+$(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/busmatrix_bm1/verilog
 +incdir+$(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/cdc_blocks/verilog
 +incdir+$(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/default_slave_ds_3/verilog
 +incdir+$(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/ib_FLASH_ib/verilog
 +incdir+$(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/ib_GIC_ib/verilog
-+incdir+$(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/ib_PERIPHERAL_ib/verilog
 +incdir+$(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/ib_apb_group0_ib/verilog
 +incdir+$(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/ib_ib2/verilog
 +incdir+$(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/reg_slice/verilog
+
+
 +incdir+$(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/nic400/verilog/Axi
 +incdir+$(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/nic400/verilog/Axi4PC
 +incdir+$(SOCLABS_MEGASOC_TECH_DIR)/logical/nic400_megasoc_main/logical/nic400_megasoc_main/nic400/verilog/Ahb
diff --git a/flist/megasoc_tech.flist b/flist/megasoc_tech.flist
new file mode 100644
index 0000000000000000000000000000000000000000..be2fa9195bba334eb6eb52c73d51b6e4b2615d3e
--- /dev/null
+++ b/flist/megasoc_tech.flist
@@ -0,0 +1,32 @@
+//-----------------------------------------------------------------------------
+// MegaSoC Tech Filelist
+// A joint work commissioned on behalf of SoC Labs, under Arm Academic Access license.
+//
+// Contributors
+//
+// David Mapstone (d.a.mapstone@soton.ac.uk)
+// Daniel Newbrook (d.newbrook@soton.ac.uk)
+//
+// Copyright � 2021-3, SoC Labs (www.soclabs.org)
+//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
+// Abstract : Verilog Command File for MegaSoC Tech IP
+//-----------------------------------------------------------------------------
+
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/top_megasoc_tech/megasoc_tech_wrapper.v
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/top_megasoc_tech/megasoc_tech_system_wrapper.v
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/megasoc_subsystems/megasoc_cpu_subsystem/megasoc_cpu_ss.v
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/megasoc_subsystems/megasoc_cpu_subsystem/megasoc_irq_sync.v
+
+$(SOCLABS_MEGASOC_TECH_DIR)/logical/megasoc_subsystems/peripheral_subsystem/megasoc_peripheral_subsystem.v
+
+
+// ARM IP
+-f $(SOCLABS_MEGASOC_TECH_DIR)/flist/IP/ARM_Cortex_A53.flist
+-f $(SOCLABS_MEGASOC_TECH_DIR)/flist/IP/CA53_tarmac.flist
+-f $(SOCLABS_MEGASOC_TECH_DIR)/flist/IP/GIC400.flist
+-f $(SOCLABS_MEGASOC_TECH_DIR)/flist/IP/nic400_megasoc_main.flist
+-f $(SOCLABS_MEGASOC_TECH_DIR)/flist/IP/SIE300_SRAM_controller.flist
+// -f $(SOCLABS_MEGASOC_TECH_DIR)/flist/IP/PL011.flist
+-f $(SOCLABS_MEGASOC_TECH_DIR)/flist/IP/Corstone101.flist 
+-f $(SOCLABS_MEGASOC_TECH_DIR)/flist/IP/DMA350.flist
diff --git a/flist/megasoc_tech_BEHAV.flist b/flist/megasoc_tech_BEHAV.flist
index 4adcd79e132d4144ef522184462b4ba336ede1b8..a3d51b46d989a0bd9a483c8977be0bfdd3573f05 100644
--- a/flist/megasoc_tech_BEHAV.flist
+++ b/flist/megasoc_tech_BEHAV.flist
@@ -13,25 +13,12 @@
 // Abstract : Verilog Command File for MegaSoC Tech IP
 //-----------------------------------------------------------------------------
 
-$(SOCLABS_MEGASOC_TECH_DIR)/logical/top_megasoc_tech/megasoc_tech_wrapper.v
-$(SOCLABS_MEGASOC_TECH_DIR)/logical/megasoc_subsystems/megasoc_cpu_subsystem/megasoc_cpu_ss.v
-$(SOCLABS_MEGASOC_TECH_DIR)/logical/megasoc_subsystems/megasoc_cpu_subsystem/megasoc_irq_sync.v
+-f $(SOCLABS_MEGASOC_TECH_DIR)/flist/megasoc_tech.flist
 
 $(SOCLABS_MEGASOC_TECH_DIR)/logical/ROM/behavioural/ROM_wrapper.v 
 $(SOCLABS_PROJECT_DIR)/system/src/bootrom/verilog/bootrom.v
 $(SOCLABS_MEGASOC_TECH_DIR)/logical/SRAM/behavioural/SRAM.v 
 $(SOCLABS_MEGASOC_TECH_DIR)/logical/SRAM/behavioural/SRAM_wrapper.v
 
-
-$(SOCLABS_MEGASOC_TECH_DIR)/logical/megasoc_subsystems/peripheral_subsystem/megasoc_peripheral_subsystem.v
-
 -f $(SOCLABS_MEGASOC_TECH_DIR)/logical/sl_ahb_qspi/flist/Top/ahb_QSPI_SIM.flist
 
-// ARM IP
--f $(SOCLABS_MEGASOC_TECH_DIR)/flist/IP/ARM_Cortex_A53.flist
--f $(SOCLABS_MEGASOC_TECH_DIR)/flist/IP/CA53_tarmac.flist
--f $(SOCLABS_MEGASOC_TECH_DIR)/flist/IP/GIC400.flist
--f $(SOCLABS_MEGASOC_TECH_DIR)/flist/IP/nic400_megasoc_main.flist
--f $(SOCLABS_MEGASOC_TECH_DIR)/flist/IP/SIE300_SRAM_controller.flist
-// -f $(SOCLABS_MEGASOC_TECH_DIR)/flist/IP/PL011.flist
--f $(SOCLABS_MEGASOC_TECH_DIR)/flist/IP/Corstone101.flist 
\ No newline at end of file
diff --git a/flist/megasoc_tech_FPGA.flist b/flist/megasoc_tech_FPGA.flist
index 051caecbdd192120e86ff7371cb946aaf620534b..0961433434a336243ba01f37558502b2d49ce396 100644
--- a/flist/megasoc_tech_FPGA.flist
+++ b/flist/megasoc_tech_FPGA.flist
@@ -13,22 +13,11 @@
 // Abstract : Verilog Command File for MegaSoC Tech IP
 //-----------------------------------------------------------------------------
 
-$(SOCLABS_MEGASOC_TECH_DIR)/logical/top_megasoc_tech/megasoc_tech_wrapper.v
-$(SOCLABS_MEGASOC_TECH_DIR)/logical/megasoc_subsystems/megasoc_cpu_subsystem/megasoc_cpu_ss.v
-$(SOCLABS_MEGASOC_TECH_DIR)/logical/megasoc_subsystems/megasoc_cpu_subsystem/megasoc_irq_sync.v
+-f $(SOCLABS_MEGASOC_TECH_DIR)/flist/megasoc_tech.flist
 
 $(SOCLABS_MEGASOC_TECH_DIR)/logical/ROM/behavioural/ROM_wrapper.v 
 $(SOCLABS_PROJECT_DIR)/system/src/bootrom/verilog/bootrom.v
 $(SOCLABS_MEGASOC_TECH_DIR)/logical/SRAM/logical/SRAM.v 
 $(SOCLABS_MEGASOC_TECH_DIR)/logical/SRAM/fpga/SRAM_wrapper.v
-$(SOCLABS_MEGASOC_TECH_DIR)/logical/megasoc_subsystems/peripheral_subsystem/megasoc_peripheral_subsystem.v
 
 -f $(SOCLABS_MEGASOC_TECH_DIR)/logical/sl_ahb_qspi/flist/Top/ahb_QSPI_SIM.flist
-// ARM IP
--f $(SOCLABS_MEGASOC_TECH_DIR)/flist/IP/ARM_Cortex_A53.flist
--f $(SOCLABS_MEGASOC_TECH_DIR)/flist/IP/CA53_tarmac.flist
--f $(SOCLABS_MEGASOC_TECH_DIR)/flist/IP/GIC400.flist
--f $(SOCLABS_MEGASOC_TECH_DIR)/flist/IP/nic400_megasoc_main.flist
--f $(SOCLABS_MEGASOC_TECH_DIR)/flist/IP/SIE300_SRAM_controller.flist
-// -f $(SOCLABS_MEGASOC_TECH_DIR)/flist/IP/PL011.flist
--f $(SOCLABS_MEGASOC_TECH_DIR)/flist/IP/Corstone101.flist 
\ No newline at end of file
diff --git a/logical/ROM/ASIC/TSMC16nm/ROM_wrapper.v b/logical/ROM/ASIC/TSMC16nm/ROM_wrapper.v
index c68e6b8447210a4cb16bb7a198e6a419e6986b35..3e718e8db658953b80f1f93b17c1440b2759fc3b 100644
--- a/logical/ROM/ASIC/TSMC16nm/ROM_wrapper.v
+++ b/logical/ROM/ASIC/TSMC16nm/ROM_wrapper.v
@@ -21,7 +21,7 @@ module ROM_wrapper(
 
     input  wire             AWVALID,
     output wire             AWREADY,
-    input  wire [5:0]       AWID,
+    input  wire [6:0]       AWID,
     input  wire [31:0]      AWADDR,
     input  wire [7:0]       AWLEN,
     input  wire [2:0]       AWSIZE,
@@ -39,12 +39,12 @@ module ROM_wrapper(
 
     output wire             BVALID,
     input  wire             BREADY,
-    output wire [5:0]       BID,
+    output wire [6:0]       BID,
     output wire [1:0]       BRESP,
     
     input  wire             ARVALID,
     output wire             ARREADY,
-    input  wire [5:0]       ARID,
+    input  wire [6:0]       ARID,
     input  wire [31:0]      ARADDR,
     input  wire [7:0]       ARLEN,
     input  wire [2:0]       ARSIZE,
@@ -55,7 +55,7 @@ module ROM_wrapper(
     
     output wire             RVALID,
     input  wire             RREADY,
-    output wire [5:0]       RID,
+    output wire [6:0]       RID,
     output wire [63:0]      RDATA,
     output wire [1:0]       RRESP,
     output wire             RLAST,
diff --git a/logical/ROM/ROM_wrapper.v b/logical/ROM/ROM_wrapper.v
index 5ca6f54013a761a955bc85d535ad257788bdeb67..cec055291e395a7f762b4fe182d6cf244fc6ca50 100644
--- a/logical/ROM/ROM_wrapper.v
+++ b/logical/ROM/ROM_wrapper.v
@@ -18,7 +18,7 @@ module ROM_wrapper(
 
     input  wire             AWVALID,
     output wire             AWREADY,
-    input  wire [5:0]       AWID,
+    input  wire [6:0]       AWID,
     input  wire [31:0]      AWADDR,
     input  wire [7:0]       AWLEN,
     input  wire [2:0]       AWSIZE,
@@ -36,12 +36,12 @@ module ROM_wrapper(
 
     output wire             BVALID,
     input  wire             BREADY,
-    output wire [5:0]       BID,
+    output wire [6:0]       BID,
     output wire [1:0]       BRESP,
     
     input  wire             ARVALID,
     output wire             ARREADY,
-    input  wire [5:0]       ARID,
+    input  wire [6:0]       ARID,
     input  wire [31:0]      ARADDR,
     input  wire [7:0]       ARLEN,
     input  wire [2:0]       ARSIZE,
@@ -52,7 +52,7 @@ module ROM_wrapper(
     
     output wire             RVALID,
     input  wire             RREADY,
-    output wire [5:0]       RID,
+    output wire [6:0]       RID,
     output wire [63:0]      RDATA,
     output wire [1:0]       RRESP,
     output wire             RLAST,
diff --git a/logical/ROM/behavioural/ROM_wrapper.v b/logical/ROM/behavioural/ROM_wrapper.v
index b490ed0a15ba971b901463b427e6fef7d2483499..466afbfbac98942f070374f422934e00beac537e 100644
--- a/logical/ROM/behavioural/ROM_wrapper.v
+++ b/logical/ROM/behavioural/ROM_wrapper.v
@@ -18,7 +18,7 @@ module ROM_wrapper(
 
     input  wire             AWVALID,
     output wire             AWREADY,
-    input  wire [5:0]       AWID,
+    input  wire [6:0]       AWID,
     input  wire [31:0]      AWADDR,
     input  wire [7:0]       AWLEN,
     input  wire [2:0]       AWSIZE,
@@ -36,12 +36,12 @@ module ROM_wrapper(
 
     output wire             BVALID,
     input  wire             BREADY,
-    output wire [5:0]       BID,
+    output wire [6:0]       BID,
     output wire [1:0]       BRESP,
     
     input  wire             ARVALID,
     output wire             ARREADY,
-    input  wire [5:0]       ARID,
+    input  wire [6:0]       ARID,
     input  wire [31:0]      ARADDR,
     input  wire [7:0]       ARLEN,
     input  wire [2:0]       ARSIZE,
@@ -52,7 +52,7 @@ module ROM_wrapper(
     
     output wire             RVALID,
     input  wire             RREADY,
-    output wire [5:0]       RID,
+    output wire [6:0]       RID,
     output wire [63:0]      RDATA,
     output wire [1:0]       RRESP,
     output wire             RLAST,
diff --git a/logical/SRAM/behavioural/SRAM_wrapper.v b/logical/SRAM/behavioural/SRAM_wrapper.v
index 408cc9e742290b31a5251cae0e4f59e7a6d3b88a..668ebac5d48010f0dcc6f212b70e5195ee6a3e8a 100644
--- a/logical/SRAM/behavioural/SRAM_wrapper.v
+++ b/logical/SRAM/behavioural/SRAM_wrapper.v
@@ -18,7 +18,7 @@ module SRAM_wrapper(
 
     input  wire             AWVALID,
     output wire             AWREADY,
-    input  wire [5:0]       AWID,
+    input  wire [6:0]       AWID,
     input  wire [31:0]      AWADDR,
     input  wire [7:0]       AWLEN,
     input  wire [2:0]       AWSIZE,
@@ -36,12 +36,12 @@ module SRAM_wrapper(
 
     output wire             BVALID,
     input  wire             BREADY,
-    output wire [5:0]       BID,
+    output wire [6:0]       BID,
     output wire [1:0]       BRESP,
     
     input  wire             ARVALID,
     output wire             ARREADY,
-    input  wire [5:0]       ARID,
+    input  wire [6:0]       ARID,
     input  wire [31:0]      ARADDR,
     input  wire [7:0]       ARLEN,
     input  wire [2:0]       ARSIZE,
@@ -52,7 +52,7 @@ module SRAM_wrapper(
     
     output wire             RVALID,
     input  wire             RREADY,
-    output wire [5:0]       RID,
+    output wire [6:0]       RID,
     output wire [63:0]      RDATA,
     output wire [1:0]       RRESP,
     output wire             RLAST,
diff --git a/logical/SRAM/fpga/SRAM_wrapper.v b/logical/SRAM/fpga/SRAM_wrapper.v
index 22e6267119cfa39ae8d4d6ceddf0b1c4f0bf3aa9..334924538359b68560df137d321193cb8933942f 100644
--- a/logical/SRAM/fpga/SRAM_wrapper.v
+++ b/logical/SRAM/fpga/SRAM_wrapper.v
@@ -18,7 +18,7 @@ module SRAM_wrapper(
 
     input  wire             AWVALID,
     output wire             AWREADY,
-    input  wire [5:0]       AWID,
+    input  wire [6:0]       AWID,
     input  wire [31:0]      AWADDR,
     input  wire [7:0]       AWLEN,
     input  wire [2:0]       AWSIZE,
@@ -36,12 +36,12 @@ module SRAM_wrapper(
 
     output wire             BVALID,
     input  wire             BREADY,
-    output wire [5:0]       BID,
+    output wire [6:0]       BID,
     output wire [1:0]       BRESP,
     
     input  wire             ARVALID,
     output wire             ARREADY,
-    input  wire [5:0]       ARID,
+    input  wire [6:0]       ARID,
     input  wire [31:0]      ARADDR,
     input  wire [7:0]       ARLEN,
     input  wire [2:0]       ARSIZE,
@@ -52,7 +52,7 @@ module SRAM_wrapper(
     
     output wire             RVALID,
     input  wire             RREADY,
-    output wire [5:0]       RID,
+    output wire [6:0]       RID,
     output wire [63:0]      RDATA,
     output wire [1:0]       RRESP,
     output wire             RLAST,
diff --git a/logical/top_megasoc_tech/megasoc_tech_system_wrapper.v b/logical/top_megasoc_tech/megasoc_tech_system_wrapper.v
index f03dbf60d15b18f2f35bc4e0de46175aa6c59c9a..ccae6fd92ddc8a8bcf2fe094f3ac74334acf0aaa 100644
--- a/logical/top_megasoc_tech/megasoc_tech_system_wrapper.v
+++ b/logical/top_megasoc_tech/megasoc_tech_system_wrapper.v
@@ -14,15 +14,303 @@
 //  these peripherals to DRAM
 //-----------------------------------------------------------------------------
 // Modules instantiated:
-//
+//  - ada_top_sldma350_megasoc
 //-----------------------------------------------------------------------------
 // To Do
 //  - Everything
 
 module megasoc_tech_system_wrapper(
+    input  wire             CLK,
+    input  wire             RESETn,
+
+    input  wire             DMA350_PWAKEUP,
+    input  wire             DMA350_PDEBUG,
+    input  wire             DMA350_PSEL,
+    input  wire             DMA350_PENABLE,
+    input  wire [2:0]       DMA350_PPROT,
+    input  wire             DMA350_PWRITE,
+    input  wire [12:0]      DMA350_PADDR,
+    input  wire [31:0]      DMA350_PWDATA,
+    input  wire [3:0]       DMA350_PSTRB,
+    output wire             DMA350_PREADY,
+    output wire             DMA350_PSLVERR,
+    output wire [31:0]      DMA350_PRDATA,
+
+    output wire             DMA350_AWAKEUP_M0,
+    output wire             DMA350_AWVALID_M0,
+    output wire [44-1:0]    DMA350_AWADDR_M0,
+    output wire [1:0]       DMA350_AWBURST_M0,
+    output wire [2-1:0]     DMA350_AWID_M0,
+    output wire [7:0]       DMA350_AWLEN_M0,
+    output wire [2:0]       DMA350_AWSIZE_M0,
+    output wire [3:0]       DMA350_AWQOS_M0,
+    output wire [2:0]       DMA350_AWPROT_M0,
+    input  wire             DMA350_AWREADY_M0,
+    output wire [3:0]       DMA350_AWCACHE_M0,
+    output wire [3:0]       DMA350_AWINNER_M0,
+    output wire [1:0]       DMA350_AWDOMAIN_M0,
+
+    output wire             DMA350_ARVALID_M0,
+    output wire [44-1:0]    DMA350_ARADDR_M0,
+    output wire [1:0]       DMA350_ARBURST_M0,
+    output wire [2-1:0]     DMA350_ARID_M0,
+    output wire [7:0]       DMA350_ARLEN_M0,
+    output wire [2:0]       DMA350_ARSIZE_M0,
+    output wire [3:0]       DMA350_ARQOS_M0,
+    output wire [2:0]       DMA350_ARPROT_M0,
+    input  wire             DMA350_ARREADY_M0,
+    output wire [3:0]       DMA350_ARCACHE_M0,
+    output wire [3:0]       DMA350_ARINNER_M0,
+    output wire [1:0]       DMA350_ARDOMAIN_M0,
+    output wire             DMA350_ARCMDLINK_M0,
+
+    output wire             DMA350_WVALID_M0,
+    output wire             DMA350_WLAST_M0,
+    output wire [16-1:0]    DMA350_WSTRB_M0,
+    output wire [128-1:0]   DMA350_WDATA_M0,
+    input  wire             DMA350_WREADY_M0,
+
+    input  wire             DMA350_RVALID_M0,
+    input  wire  [2-1:0]    DMA350_RID_M0,
+    input  wire             DMA350_RLAST_M0,
+    input  wire  [128-1:0]  DMA350_RDATA_M0,
+    input  wire  [2-1:0]    DMA350_RPOISON_M0,
+    input  wire  [1:0]      DMA350_RRESP_M0,
+    output wire             DMA350_RREADY_M0,
+
+    input  wire             DMA350_BVALID_M0,
+    input  wire  [2-1:0]    DMA350_BID_M0,
+    input  wire  [1:0]      DMA350_BRESP_M0,
+    output wire             DMA350_BREADY_M0,
+
+    output wire [4-1:0]     DMA350_irq_channel,
+    output wire             DMA350_irq_comb_nonsec
+
 
 );
 
+wire             DMA350_AWAKEUP_M1;
+wire             DMA350_AWVALID_M1;
+wire [44-1:0]    DMA350_AWADDR_M1;
+wire [1:0]       DMA350_AWBURST_M1;
+wire [2-1:0]     DMA350_AWID_M1;
+wire [7:0]       DMA350_AWLEN_M1;
+wire [2:0]       DMA350_AWSIZE_M1;
+wire [3:0]       DMA350_AWQOS_M1;
+wire [2:0]       DMA350_AWPROT_M1;
+wire             DMA350_AWREADY_M1;
+wire [3:0]       DMA350_AWCACHE_M1;
+wire [3:0]       DMA350_AWINNER_M1;
+wire [1:0]       DMA350_AWDOMAIN_M1;
+wire             DMA350_ARVALID_M1;
+wire [44-1:0]    DMA350_ARADDR_M1;
+wire [1:0]       DMA350_ARBURST_M1;
+wire [2-1:0]     DMA350_ARID_M1;
+wire [7:0]       DMA350_ARLEN_M1;
+wire [2:0]       DMA350_ARSIZE_M1;
+wire [3:0]       DMA350_ARQOS_M1;
+wire [2:0]       DMA350_ARPROT_M1;
+wire             DMA350_ARREADY_M1;
+wire [3:0]       DMA350_ARCACHE_M1;
+wire [3:0]       DMA350_ARINNER_M1;
+wire [1:0]       DMA350_ARDOMAIN_M1;
+wire             DMA350_ARCMDLINK_M1;
+wire             DMA350_WVALID_M1;
+wire             DMA350_WLAST_M1;
+wire [16-1:0]    DMA350_WSTRB_M1;
+wire [128-1:0]   DMA350_WDATA_M1;
+wire             DMA350_WREADY_M1;
+wire             DMA350_RVALID_M1;
+wire  [2-1:0]    DMA350_RID_M1;
+wire             DMA350_RLAST_M1;
+wire  [128-1:0]  DMA350_RDATA_M1;
+wire  [2-1:0]    DMA350_RPOISON_M1;
+wire  [1:0]      DMA350_RRESP_M1;
+wire             DMA350_RREADY_M1;
+wire             DMA350_BVALID_M1;
+wire  [2-1:0]    DMA350_BID_M1;
+wire  [1:0]      DMA350_BRESP_M1;
+wire             DMA350_BREADY_M1;
+
+
+ada_top_sldma350_megasoc u_megasoc_dma350(
+    .clk(CLK),
+    .resetn(RESETn),
+    .aclken_m0(1'b1),
+    .aclken_m1(1'b1),
+    .pclken(1'b1),
+
+    .clk_qreqn(),
+    .clk_qacceptn(),
+    .clk_qdeny(),
+    .clk_qactive(),
+
+    .preq(),
+    .pstate(),
+    .paccept(),
+    .pdeny(),
+    .pactive(),
+
+    .pwakeup        (DMA350_PWAKEUP),
+    .pdebug         (DMA350_PDEBUG),
+    .psel           (DMA350_PSEL),
+    .penable        (DMA350_PENABLE),
+    .pprot          (DMA350_PPROT),
+    .pwrite         (DMA350_PWRITE),
+    .paddr          (DMA350_PADDR),
+    .pwdata         (DMA350_PWDATA),
+    .pstrb          (DMA350_PSTRB),
+    .pready         (DMA350_PREADY),
+    .pslverr        (DMA350_PSLVERR),
+    .prdata         (DMA350_PRDATA),
+
+    .awakeup_m0     (DMA350_AWAKEUP_M0),
+    .awvalid_m0     (DMA350_AWVALID_M0),
+    .awaddr_m0      (DMA350_AWADDR_M0),
+    .awburst_m0     (DMA350_AWBURST_M0),
+    .awid_m0        (DMA350_AWID_M0),
+    .awlen_m0       (DMA350_AWLEN_M0),
+    .awsize_m0      (DMA350_AWSIZE_M0),
+    .awqos_m0       (DMA350_AWQOS_M0),
+    .awprot_m0      (DMA350_AWPROT_M0),
+    .awready_m0     (DMA350_AWREADY_M0),
+    .awcache_m0     (DMA350_AWCACHE_M0),
+    .awinner_m0     (DMA350_AWINNER_M0),
+    .awdomain_m0    (DMA350_AWDOMAIN_M0),
+    .arvalid_m0     (DMA350_ARVALID_M0),
+    .araddr_m0      (DMA350_ARADDR_M0),
+    .arburst_m0     (DMA350_ARBURST_M0),
+    .arid_m0        (DMA350_ARID_M0),
+    .arlen_m0       (DMA350_ARLEN_M0),
+    .arsize_m0      (DMA350_ARSIZE_M0),
+    .arqos_m0       (DMA350_ARQOS_M0),
+    .arprot_m0      (DMA350_ARPROT_M0),
+    .arready_m0     (DMA350_ARREADY_M0),
+    .arcache_m0     (DMA350_ARCACHE_M0),
+    .arinner_m0     (DMA350_ARINNER_M0),
+    .ardomain_m0    (DMA350_ARDOMAIN_M0),
+    .arcmdlink_m0   (DMA350_ARCMDLINK_M0),
+    .wvalid_m0      (DMA350_WVALID_M0),
+    .wlast_m0       (DMA350_WLAST_M0),
+    .wstrb_m0       (DMA350_WSTRB_M0),
+    .wdata_m0       (DMA350_WDATA_M0),
+    .wready_m0      (DMA350_WREADY_M0),
+    .rvalid_m0      (DMA350_RVALID_M0),
+    .rid_m0         (DMA350_RID_M0),
+    .rlast_m0       (DMA350_RLAST_M0),
+    .rdata_m0       (DMA350_RDATA_M0),
+    .rpoison_m0     (DMA350_RPOISON_M0),
+    .rresp_m0       (DMA350_RRESP_M0),
+    .rready_m0      (DMA350_RREADY_M0),
+    .bvalid_m0      (DMA350_BVALID_M0),
+    .bid_m0         (DMA350_BID_M0),
+    .bresp_m0       (DMA350_BRESP_M0),
+    .bready_m0      (DMA350_BREADY_M0),
+
+    .awakeup_m1     (DMA350_AWAKEUP_M1),
+    .awvalid_m1     (DMA350_AWVALID_M1),
+    .awaddr_m1      (DMA350_AWADDR_M1),
+    .awburst_m1     (DMA350_AWBURST_M1),
+    .awid_m1        (DMA350_AWID_M1),
+    .awlen_m1       (DMA350_AWLEN_M1),
+    .awsize_m1      (DMA350_AWSIZE_M1),
+    .awqos_m1       (DMA350_AWQOS_M1),
+    .awprot_m1      (DMA350_AWPROT_M1),
+    .awready_m1     (DMA350_AWREADY_M1),
+    .awcache_m1     (DMA350_AWCACHE_M1),
+    .awinner_m1     (DMA350_AWINNER_M1),
+    .awdomain_m1    (DMA350_AWDOMAIN_M1),
+    .arvalid_m1     (DMA350_ARVALID_M1),
+    .araddr_m1      (DMA350_ARADDR_M1),
+    .arburst_m1     (DMA350_ARBURST_M1),
+    .arid_m1        (DMA350_ARID_M1),
+    .arlen_m1       (DMA350_ARLEN_M1),
+    .arsize_m1      (DMA350_ARSIZE_M1),
+    .arqos_m1       (DMA350_ARQOS_M1),
+    .arprot_m1      (DMA350_ARPROT_M1),
+    .arready_m1     (DMA350_ARREADY_M1),
+    .arcache_m1     (DMA350_ARCACHE_M1),
+    .arinner_m1     (DMA350_ARINNER_M1),
+    .ardomain_m1    (DMA350_ARDOMAIN_M1),
+    .arcmdlink_m1   (DMA350_ARCMDLINK_M1),
+    .wvalid_m1      (DMA350_WVALID_M1),
+    .wlast_m1       (DMA350_WLAST_M1),
+    .wstrb_m1       (DMA350_WSTRB_M1),
+    .wdata_m1       (DMA350_WDATA_M1),
+    .wready_m1      (DMA350_WREADY_M1),
+    .rvalid_m1      (DMA350_RVALID_M1),
+    .rid_m1         (DMA350_RID_M1),
+    .rlast_m1       (DMA350_RLAST_M1),
+    .rdata_m1       (DMA350_RDATA_M1),
+    .rpoison_m1     (DMA350_RPOISON_M1),
+    .rresp_m1       (DMA350_RRESP_M1),
+    .rready_m1      (DMA350_RREADY_M1),
+    .bvalid_m1      (DMA350_BVALID_M1),
+    .bid_m1         (DMA350_BID_M1),
+    .bresp_m1       (DMA350_BRESP_M1),
+    .bready_m1      (DMA350_BREADY_M1),
+
+    .trig_in_0_req(),
+    .trig_in_0_req_type(),
+    .trig_in_0_ack(),
+    .trig_in_0_ack_type(),
+    .trig_in_1_req(),
+    .trig_in_1_req_type(),
+    .trig_in_1_ack(),
+    .trig_in_1_ack_type(),
+    .trig_out_0_req(),
+    .trig_out_0_ack(),
+    .trig_out_1_req(),
+    .trig_out_1_ack(),
+
+    .irq_channel(),
+    .irq_comb_nonsec(),
+
+    .str_out_0_tvalid(),
+    .str_out_0_tready(),
+    .str_out_0_tdata(),
+    .str_out_0_tstrb(),
+    .str_out_0_tlast(),
+    .str_in_0_tvalid(),
+    .str_in_0_tready(),
+    .str_in_0_tdata(),
+    .str_in_0_tstrb(),
+    .str_in_0_tlast(),
+    .str_in_0_flush(),
+    .str_out_1_tvalid(),
+    .str_out_1_tready(),
+    .str_out_1_tdata(),
+    .str_out_1_tstrb(),
+    .str_out_1_tlast(),
+    .str_in_1_tvalid(),
+    .str_in_1_tready(),
+    .str_in_1_tdata(),
+    .str_in_1_tstrb(),
+    .str_in_1_tlast(),
+    .str_in_1_flush(),
+
+    .gpo_ch_0(),
+    .gpo_ch_1(),
+
+    .allch_stop_req_nonsec(),
+    .allch_stop_ack_nonsec(),
+    .allch_pause_req_nonsec(),
+    .allch_pause_ack_nonsec(),
+
+    .ch_enabled(),
+    .ch_err(),
+    .ch_stopped(),
+    .ch_paused(),
+    .ch_priv(),
+
+    .halt_req(),
+    .restart_req(),
+    .halted(),
+    .boot_en(),
+    .boot_addr(),
+    .boot_memattr(),
+    .boot_shareattr()
+);
 
 
 endmodule
\ No newline at end of file
diff --git a/logical/top_megasoc_tech/megasoc_tech_wrapper.v b/logical/top_megasoc_tech/megasoc_tech_wrapper.v
index 339dc4490ce4f4446fe274b2ef53358846fe7e90..fecd4441cff427949dc49379a01b468fdd6ec3cc 100644
--- a/logical/top_megasoc_tech/megasoc_tech_wrapper.v
+++ b/logical/top_megasoc_tech/megasoc_tech_wrapper.v
@@ -18,7 +18,7 @@
 //  sl_ahb_sram                     (u_sl_ahb_sram)
 //  SRAM_wrapper                    (u_SRAM_wrapper)
 //  megasoc_peripheral_subsystem    (u_megasoc_peripheral_subsystem)
-//
+//  megasoc_tech_system_wrapper     (u_megasoc_tech_system_wrapper)
 //-----------------------------------------------------------------------------
 // To Do
 //  - Replace sl_ahb_sram with QSPI controller to use external flash
@@ -131,7 +131,7 @@ module megasoc_tech_wrapper(
 );
 
 
-parameter ID_W=6;
+parameter ID_W=7;
 parameter NUM_SPIS=480;
 
 wire                CPU_AWREADYM;
@@ -171,38 +171,38 @@ wire  [127: 0]      CPU_RDATAM;
 wire  [  1: 0]      CPU_RRESPM;
 wire                CPU_RLASTM;
 
-wire [ID_W-1:0] GIC_ARID;
-wire                [31:0] GIC_ARADDR;
-wire                 [7:0] GIC_ARLEN;
-wire                 [2:0] GIC_ARSIZE;
-wire                 [1:0] GIC_ARBURST;
-wire                 [2:0] GIC_ARPROT;
-wire                 [2:0] GIC_ARUSER;
-wire                       GIC_ARVALID;
-wire                       GIC_ARREADY;
-wire [ID_W-1:0] GIC_RID;
-wire                [31:0] GIC_RDATA;
-wire                       GIC_RLAST;
-wire                 [1:0] GIC_RRESP;
-wire                       GIC_RVALID;
-wire                       GIC_RREADY;
-wire [ID_W-1:0] GIC_AWID;
-wire                [31:0] GIC_AWADDR;
-wire                 [7:0] GIC_AWLEN;
-wire                 [2:0] GIC_AWSIZE;
-wire                 [1:0] GIC_AWBURST;
-wire                 [2:0] GIC_AWPROT;
-wire                 [2:0] GIC_AWUSER;
-wire                       GIC_AWVALID;
-wire                       GIC_AWREADY;
-wire                [31:0] GIC_WDATA;
-wire                 [3:0] GIC_WSTRB;
-wire                       GIC_WVALID;
-wire                       GIC_WREADY;
-wire [ID_W-1:0] GIC_BID;
-wire                 [1:0] GIC_BRESP;
-wire                       GIC_BVALID;
-wire                       GIC_BREADY;
+wire [ID_W-2:0]     GIC_ARID;
+wire   [31:0]       GIC_ARADDR;
+wire    [7:0]       GIC_ARLEN;
+wire    [2:0]       GIC_ARSIZE;
+wire    [1:0]       GIC_ARBURST;
+wire    [2:0]       GIC_ARPROT;
+wire    [2:0]       GIC_ARUSER;
+wire                GIC_ARVALID;
+wire                GIC_ARREADY;
+wire [ID_W-2:0]     GIC_RID;
+wire [31:0]         GIC_RDATA;
+wire                GIC_RLAST;
+wire  [1:0]         GIC_RRESP;
+wire                GIC_RVALID;
+wire                GIC_RREADY;
+wire [ID_W-2:0]     GIC_AWID;
+wire  [31:0]        GIC_AWADDR;
+wire   [7:0]        GIC_AWLEN;
+wire   [2:0]        GIC_AWSIZE;
+wire   [1:0]        GIC_AWBURST;
+wire   [2:0]        GIC_AWPROT;
+wire   [2:0]        GIC_AWUSER;
+wire                GIC_AWVALID;
+wire                GIC_AWREADY;
+wire  [31:0]        GIC_WDATA;
+wire   [3:0]        GIC_WSTRB;
+wire                GIC_WVALID;
+wire                GIC_WREADY;
+wire [ID_W-2:0]     GIC_BID;
+wire [1:0]          GIC_BRESP;
+wire                GIC_BVALID;
+wire                GIC_BREADY;
 
 assign GIC_ARUSER=3'h0;
 assign GIC_AWUSER=3'h0;
@@ -361,6 +361,59 @@ wire  [ 31: 0]      CPU_PRDATADBG;
 wire                CPU_PREADYDBG;
 wire                CPU_PSLVERRDBG;
 
+// DMA 350 APB Interface Wires
+wire [31:0]         PADDR_DMA_CTRL;
+wire [31:0]         PWDATA_DMA_CTRL;
+wire                PWRITE_DMA_CTRL;
+wire [2:0]          PPROT_DMA_CTRL;
+wire [3:0]          PSTRB_DMA_CTRL;
+wire                PENABLE_DMA_CTRL;
+wire                PSELx_DMA_CTRL;
+wire [31:0]         PRDATA_DMA_CTRL;
+wire                PSLVERR_DMA_CTRL;
+wire                PREADY_DMA_CTRL;
+
+// DMA 350 AXI Interface Wires
+wire [1:0]          AWID_DMA350;
+wire [43:0]         AWADDR_DMA350;
+wire [7:0]          AWLEN_DMA350;
+wire [2:0]          AWSIZE_DMA350;
+wire [1:0]          AWBURST_DMA350;
+wire                AWLOCK_DMA350;
+wire [3:0]          AWCACHE_DMA350;
+wire [2:0]          AWPROT_DMA350;
+wire                AWVALID_DMA350;
+wire                AWREADY_DMA350;
+
+wire [127:0]        WDATA_DMA350;
+wire [15:0]         WSTRB_DMA350;
+wire                WLAST_DMA350;
+wire                WVALID_DMA350;
+wire                WREADY_DMA350;
+
+wire [1:0]          BID_DMA350;
+wire [1:0]          BRESP_DMA350;
+wire                BVALID_DMA350;
+wire                BREADY_DMA350;
+
+wire [1:0]          ARID_DMA350;
+wire [43:0]         ARADDR_DMA350;
+wire [7:0]          ARLEN_DMA350;
+wire [2:0]          ARSIZE_DMA350;
+wire [1:0]          ARBURST_DMA350;
+wire                ARLOCK_DMA350;
+wire [3:0]          ARCACHE_DMA350;
+wire [2:0]          ARPROT_DMA350;
+wire                ARVALID_DMA350;
+wire                ARREADY_DMA350;
+
+wire [1:0]          RID_DMA350;
+wire [127:0]        RDATA_DMA350;
+wire [1:0]          RRESP_DMA350;
+wire                RLAST_DMA350;
+wire                RVALID_DMA350;
+wire                RREADY_DMA350;
+
 assign CPU_nPRESETDBG = SYS_RESETn;
 assign CPU_PCLKENDBG = 1'b1;
 assign CPU_PADDRDBG31 = 1'b0;
@@ -371,8 +424,8 @@ wire [5:0]              PERI_IRQS;
 assign CPU_IRQS={{(NUM_SPIS-38){1'b0}}, PERI_IRQS};
 
 megasoc_cpu_ss #(
-    .NUM_GICRID_BITS(ID_W),
-    .NUM_GICWID_BITS(ID_W),
+    .NUM_GICRID_BITS(ID_W-1),
+    .NUM_GICWID_BITS(ID_W-1),
     .NUM_SPIS(NUM_SPIS)
     ) u_megasoc_cpu_ss(
     .CPU_CLK(SYS_CLK),
@@ -662,6 +715,17 @@ nic400_megasoc_main u_nic400_megasoc_main(
     .PSLVERR_DEBUG(CPU_PSLVERRDBG),
     .PREADY_DEBUG(CPU_PREADYDBG),
 
+    .PADDR_DMA_CTRL(PADDR_DMA_CTRL),
+    .PWDATA_DMA_CTRL(PWDATA_DMA_CTRL),
+    .PWRITE_DMA_CTRL(PWRITE_DMA_CTRL),
+    .PPROT_DMA_CTRL(PPROT_DMA_CTRL),
+    .PSTRB_DMA_CTRL(PSTRB_DMA_CTRL),
+    .PENABLE_DMA_CTRL(PENABLE_DMA_CTRL),
+    .PSELx_DMA_CTRL(PSELx_DMA_CTRL),
+    .PRDATA_DMA_CTRL(PRDATA_DMA_CTRL),
+    .PSLVERR_DMA_CTRL(PSLVERR_DMA_CTRL),
+    .PREADY_DMA_CTRL(PREADY_DMA_CTRL),
+
 
     .PADDR_FLASH_CTRL(PADDR_FLASH_CTRL),
     .PWDATA_FLASH_CTRL(PWDATA_FLASH_CTRL),
@@ -710,6 +774,42 @@ nic400_megasoc_main u_nic400_megasoc_main(
     .RVALID_A53(CPU_RVALIDM),
     .RREADY_A53(CPU_RREADYM),
 
+    .AWID_DMA350(AWID_DMA350),
+    .AWADDR_DMA350(AWADDR_DMA350),
+    .AWLEN_DMA350(AWLEN_DMA350),
+    .AWSIZE_DMA350(AWSIZE_DMA350),
+    .AWBURST_DMA350(AWBURST_DMA350),
+    .AWLOCK_DMA350(AWLOCK_DMA350),
+    .AWCACHE_DMA350(AWCACHE_DMA350),
+    .AWPROT_DMA350(AWPROT_DMA350),
+    .AWVALID_DMA350(AWVALID_DMA350),
+    .AWREADY_DMA350(AWREADY_DMA350),
+    .WDATA_DMA350(WDATA_DMA350),
+    .WSTRB_DMA350(WSTRB_DMA350),
+    .WLAST_DMA350(WLAST_DMA350),
+    .WVALID_DMA350(WVALID_DMA350),
+    .WREADY_DMA350(WREADY_DMA350),
+    .BID_DMA350(BID_DMA350),
+    .BRESP_DMA350(BRESP_DMA350),
+    .BVALID_DMA350(BVALID_DMA350),
+    .BREADY_DMA350(BREADY_DMA350),
+    .ARID_DMA350(ARID_DMA350),
+    .ARADDR_DMA350(ARADDR_DMA350),
+    .ARLEN_DMA350(ARLEN_DMA350),
+    .ARSIZE_DMA350(ARSIZE_DMA350),
+    .ARBURST_DMA350(ARBURST_DMA350),
+    .ARLOCK_DMA350(ARLOCK_DMA350),
+    .ARCACHE_DMA350(ARCACHE_DMA350),
+    .ARPROT_DMA350(ARPROT_DMA350),
+    .ARVALID_DMA350(ARVALID_DMA350),
+    .ARREADY_DMA350(ARREADY_DMA350),
+    .RID_DMA350(RID_DMA350),
+    .RDATA_DMA350(RDATA_DMA350),
+    .RRESP_DMA350(RRESP_DMA350),
+    .RLAST_DMA350(RLAST_DMA350),
+    .RVALID_DMA350(RVALID_DMA350),
+    .RREADY_DMA350(RREADY_DMA350),
+
     .clk0clk(SYS_CLK),
     .clk0clken(SYS_CLKEN),
     .clk0resetn(SYS_RESETn)
@@ -875,4 +975,72 @@ megasoc_peripheral_subsystem u_megasoc_peripheral_subsystem(
     .PERI_IRQS(PERI_IRQS)
 );
 
+megasoc_tech_system_wrapper u_megasoc_tech_system_wrapper(
+    .CLK(SYS_CLK),
+    .RESETn(SYS_RESETn),
+
+    .DMA350_PWAKEUP(1'b1),
+    .DMA350_PDEBUG(1'b0),
+    .DMA350_PSEL(PSELx_DMA_CTRL),
+    .DMA350_PENABLE(PENABLE_DMA_CTRL),
+    .DMA350_PPROT(PPROT_DMA_CTRL),
+    .DMA350_PWRITE(PWRITE_DMA_CTRL),
+    .DMA350_PADDR(PADDR_DMA_CTRL),
+    .DMA350_PWDATA(PWDATA_DMA_CTRL),
+    .DMA350_PSTRB(PSTRB_DMA_CTRL),
+    .DMA350_PREADY(PREADY_DMA_CTRL),
+    .DMA350_PSLVERR(PSLVERR_DMA_CTRL),
+    .DMA350_PRDATA(PRDATA_DMA_CTRL),
+
+    .DMA350_AWAKEUP_M0(),
+    .DMA350_AWVALID_M0(AWVALID_DMA350),
+    .DMA350_AWADDR_M0(AWADDR_DMA350),
+    .DMA350_AWBURST_M0(AWBURST_DMA350),
+    .DMA350_AWID_M0(AWID_DMA350),
+    .DMA350_AWLEN_M0(AWLEN_DMA350),
+    .DMA350_AWSIZE_M0(AWSIZE_DMA350),
+    .DMA350_AWQOS_M0(),
+    .DMA350_AWPROT_M0(AWPROT_DMA350),
+    .DMA350_AWREADY_M0(AWREADY_DMA350),
+    .DMA350_AWCACHE_M0(AWCACHE_DMA350),
+    .DMA350_AWINNER_M0(),
+    .DMA350_AWDOMAIN_M0(),
+
+    .DMA350_ARVALID_M0(ARVALID_DMA350),
+    .DMA350_ARADDR_M0(ARADDR_DMA350),
+    .DMA350_ARBURST_M0(ARBURST_DMA350),
+    .DMA350_ARID_M0(ARID_DMA350),
+    .DMA350_ARLEN_M0(ARLEN_DMA350),
+    .DMA350_ARSIZE_M0(ARSIZE_DMA350),
+    .DMA350_ARQOS_M0(),
+    .DMA350_ARPROT_M0(ARPROT_DMA350),
+    .DMA350_ARREADY_M0(ARREADY_DMA350),
+    .DMA350_ARCACHE_M0(ARCACHE_DMA350),
+    .DMA350_ARINNER_M0(),
+    .DMA350_ARDOMAIN_M0(),
+    .DMA350_ARCMDLINK_M0(),
+
+    .DMA350_WVALID_M0(WVALID_DMA350),
+    .DMA350_WLAST_M0(WLAST_DMA350),
+    .DMA350_WSTRB_M0(WSTRB_DMA350),
+    .DMA350_WDATA_M0(WDATA_DMA350),
+    .DMA350_WREADY_M0(WREADY_DMA350),
+
+    .DMA350_RVALID_M0(RVALID_DMA350),
+    .DMA350_RID_M0(RID_DMA350),
+    .DMA350_RLAST_M0(RLAST_DMA350),
+    .DMA350_RDATA_M0(RDATA_DMA350),
+    .DMA350_RPOISON_M0(2'b00),
+    .DMA350_RRESP_M0(RRESP_DMA350),
+    .DMA350_RREADY_M0(RREADY_DMA350),
+
+    .DMA350_BVALID_M0(BVALID_DMA350),
+    .DMA350_BID_M0(BID_DMA350),
+    .DMA350_BRESP_M0(BRESP_DMA350),
+    .DMA350_BREADY_M0(BREADY_DMA350),
+
+    .DMA350_irq_channel(),
+    .DMA350_irq_comb_nonsec()
+);
+
 endmodule
\ No newline at end of file
diff --git a/make.cfg b/make.cfg
index b47d755789b772f98fd4af6ea1d310a3e97e04ca..25bf6545a4e318df886f5a5f75d12ccb155cfee9 100644
--- a/make.cfg
+++ b/make.cfg
@@ -2,3 +2,4 @@ CORTEX_A53_IP_LOGICAL_DIR:=/research/AAA/ip_library/Cortex-A53/MP030-r0p4-52rel2
 SOC600_IP_DIR:=/research/AAA/ip_library/TM200/TM200-BU-50000-r4p1-00rel0/css600
 PCK_600_IP_DIR:=/research/AAA/ip_library/PCK-600/PL608-BU-50000-r0p5-00rel0/pck600
 SIE300_IP_LOGICAL_DIR:=$(ARM_IP_LIBRARY_PATH)/BP301/BP301-BU-50000-r1p2-00rel0/sie300/logical
+DMA350_IP_LOGICAL_DIR:=$(ARM_IP_LIBRARY_PATH)/DMA-350/CG096-r0p0-00rel0/CG096-BU-50000-r0p0-00rel0/dma350/logical
diff --git a/makefile b/makefile
index dc9ebe04ffe8b55463416b31cf1462dbe52e0b54..5116330a126046d42cb76d9d97b857a7a93fad77 100644
--- a/makefile
+++ b/makefile
@@ -20,8 +20,10 @@ build_cortex_a53:
 	mkdir $(SOCLABS_MEGASOC_TECH_DIR)/logical/CortexA53_1/
 	mkdir $(SOCLABS_MEGASOC_TECH_DIR)/logical/CortexA53_1/verilog
 	@$(CORTEX_A53_IP_LOGICAL_DIR)/shared/tools/bin/RenderCORTEXA53.pl -config $(SOCLABS_MEGASOC_TECH_DIR)/socrates/CortexA53_1/CORTEXA53.cfg -input $(CORTEX_A53_IP_LOGICAL_DIR)/cortexa53/verilog/CORTEXA53_unconfigured.v -output $(SOCLABS_MEGASOC_TECH_DIR)/logical/CortexA53_1/verilog/CORTEXA53.v
+build_dma350:
+	@$(DMA350_IP_LOGICAL_DIR)/generate --config ./socrates/DMA350/config/cfg_dma_megasoc.yaml --output ./logical/dma350/
 
-build_ip: build_nic400 build_cortex_a53 build_sie300_sram_ctrl
+build_ip: build_nic400 build_cortex_a53 build_sie300_sram_ctrl build_dma350
 
 make_project:
 	socrates_cli --project megasoc_tech -data ../ --flow AddNewProject
diff --git a/socrates/DMA350/config/cfg_dma_megasoc.yaml b/socrates/DMA350/config/cfg_dma_megasoc.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..2de59513968b6368db571821e7d6fac56213a9ee
--- /dev/null
+++ b/socrates/DMA350/config/cfg_dma_megasoc.yaml
@@ -0,0 +1,168 @@
+#----------------------------------------------------------------------------
+# The confidential and proprietary information contained in this file may
+# only be used by a person authorised under and to the extent permitted
+# by a subsisting licensing agreement from Arm Limited or its affiliates.
+#
+# (C) COPYRIGHT 2021-2022 Arm Limited or its affiliates.
+# ALL RIGHTS RESERVED
+#
+# This entire notice must be reproduced on all copies of this file
+# and copies of this file may only be made by a person if such person is
+# permitted to do so under the terms of a subsisting license agreement
+# from Arm Limited or its affiliates.
+#----------------------------------------------------------------------------
+#
+# Release Information : DMA350-r0p0-00rel0
+#
+# -----------------------------------------------------------------------------
+#  Abstract : User Configuration file for ADA DMA
+# -----------------------------------------------------------------------------
+
+#
+# CONFIG_NAME: Name of the configuration.
+#     Each unifiqued element and top is suffixed with
+#     _${CONFIG_NAME}
+#
+CONFIG_NAME: sldma350_megasoc
+
+#
+# ADDR_WIDTH: Address Bus width
+#
+#     Valid values:
+#         32-64
+ADDR_WIDTH: 44
+
+#
+# DATA_WIDTH: Data Bus width
+#
+#     Valid values:
+#         [32,64,128]
+DATA_WIDTH: 128
+
+#
+# CHID_WIDTH: Width of the configurable channel ID user signal.
+#     When set to 0, then the archid and awchid ports are not present on the module.
+#
+#     Valid values:
+#         0-16
+CHID_WIDTH: 0
+
+#
+# GPO_WIDTH: Width of GPO output for every channel. When multiple channels have GPOs
+#     then the width must be set to the maximum number of GPOs a channel can have,
+#     and unused GPO ports need to be left unconnected. When all bits of CH_GPO_MASK
+#     is 0, this parameter is not relevant.
+#
+#     Valid values:
+#         1-32
+GPO_WIDTH: 1
+
+#
+# CH_GPO_MASK: A bitmask for enabling the GPO port for each channel. The width of the
+#     bitmask is NUM_CHANNELS-1. When bit n is set to 1 then the GPO is enabled for
+#     channel n and the gpo_ch_n[GPO_WIDTH-1:0] port appears on the module.
+#
+#     Valid values:
+#         0-(2^NUM_CHANNELS-1)
+CH_GPO_MASK: 0x3
+
+#
+# CH_STREAM_MASK: A bitmask for enabling the stream interfaces for each channel.
+#     The width of the bitmask is NUM_CHANNELS-1. When bit n is set to 1 then
+#     the stream interfaces are enabled for channel n and the relevant ports
+#     appears on the module. NOTE: When streaming interface is enabled the actual
+#     FIFO size of the channel will be the double of CH_<N>_FIFO_DEPTH
+#
+#     Valid values:
+#         0-(2^NUM_CHANNELS-1)
+CH_STREAM_MASK: 0x3
+
+#
+# CH_<N>_FIFO_DEPTH: Sets the FIFO depth for channel <N> that defines the number of
+#     DATA_WIDTH size entries a channel can hold for a transfer. N goes from 0 to
+#     NUM_CHANNELS-1. In combination with the TRANSIZE setting of the command, the
+#     FIFO depth defines the maximum burst size a channel can support. This setting
+#     needs to be aligned with the bandwidth requirements of the channel but it
+#     highly affects the area of the design.
+#
+#     Valid values:
+#         [1,2,4,8,16,32,64]
+CH_0_FIFO_DEPTH: 32
+CH_1_FIFO_DEPTH: 32
+CH_2_FIFO_DEPTH: 32
+CH_3_FIFO_DEPTH: 32
+
+#
+# CH_EXT_FEAT_MASK: A bitmask for enabling the extended feature set for each channel.
+#     The extension contains 2D, WRAP, TMPLT features. Default value enables it for
+#     the number of channels.
+#
+#     Valid values:
+#         0-(2^NUM_CHANNELS-1)
+CH_EXT_FEAT_MASK: 0x3
+
+#
+# NUM_CHANNELS: Number of configurable DMA channels.
+#
+#     Valid values:
+#         1-8
+NUM_CHANNELS: 4
+
+#
+# NUM_TRIGGER_IN: Number of trigger input ports.
+#
+#     Valid values:
+#         0-32
+NUM_TRIGGER_IN: 2
+
+#
+# NUM_TRIGGER_OUT: Number of trigger output ports.
+#
+#     Valid values:
+#         0-32
+NUM_TRIGGER_OUT: 2
+
+#
+# TRIG_IN_SYNC_EN_MASK: A bitmask for enabling the synchronizers on the trigger in
+#     interfaces for each trigger port. The width of the bitmask is NUM_TRIGGER_IN-1.
+#     When bit n is set to 1 then the trigger in interface is considered asynchronous
+#     and the synchronizer logic is placed on the selected input ports.
+#
+#     Valid values:
+#         0-(2^NUM_TRIGGER_IN-1)
+TRIG_IN_SYNC_EN_MASK: 0x0
+
+#
+# TRIG_OUT_SYNC_EN_MASK: A bitmask for enabling the synchronizers on the trigger out
+#     interfaces for each trigger port. The width of the bitmask is NUM_TRIGGER_OUT-1.
+#     When bit n is set to 1 then the trigger out interface is considered asynchronous
+#     and the synchronizer logic is placed on the selected input ports.
+#
+#     Valid values:
+#         0-(2^NUM_TRIGGER_OUT-1)
+TRIG_OUT_SYNC_EN_MASK: 0x0
+
+#
+# AXI5_M1_PRESENT: Enables an additional master port. When set the m1 master port is
+#     present on the top level port list and additional include file can be used with
+#     a System Verilog function that defines which address ranges are mapped to the m1
+#     interface.
+#
+#     Valid values:
+#         [0,1]
+AXI5_M1_PRESENT: 1
+
+#
+# SECEXT_PRESENT: Enables TrustZone security support.
+#
+#     Valid values:
+#         [0,1]
+SECEXT_PRESENT: 0
+
+
+#
+# AXI5_M1_ADDR_MAP: Select AXI M1 master.
+#
+#     Valid values:
+#         relative path to logical
+AXI5_M1_ADDR_MAP: models/modules/generic/address_map_m1_example1.sv
diff --git a/socrates/nic400_megasoc_main/nic400_megasoc_main.xml b/socrates/nic400_megasoc_main/nic400_megasoc_main.xml
index 863bdb0c1ecdd98d44bec618c7dfd5ce877cfa2e..ecedde4115f2c657053e672dd042e1ff9d511936 100644
--- a/socrates/nic400_megasoc_main/nic400_megasoc_main.xml
+++ b/socrates/nic400_megasoc_main/nic400_megasoc_main.xml
@@ -15,7 +15,7 @@
       <WUSERWidth>0</WUSERWidth>
       <BUSERWidth>0</BUSERWidth>
       <RUSERWidth>0</RUSERWidth>
-      <GlobalIDWidth>6</GlobalIDWidth>
+      <GlobalIDWidth>7</GlobalIDWidth>
       <HierarchicalClockGating>false</HierarchicalClockGating>
       <ClockControllerImplementation>asynchronous</ClockControllerImplementation>
       <RSBCentralRing>false</RSBCentralRing>
@@ -73,8 +73,8 @@
           <VIDWidth>6</VIDWidth>
           <MultiRegion>false</MultiRegion>
           <TrustZoneSlave>secure</TrustZoneSlave>
-          <ReadAcceptance>4</ReadAcceptance>
-          <WriteAcceptance>4</WriteAcceptance>
+          <ReadAcceptance>32</ReadAcceptance>
+          <WriteAcceptance>32</WriteAcceptance>
           <QoSTypeAXI>fixed</QoSTypeAXI>
           <QoSValue>0</QoSValue>
           <TransactionRateRegulation>false</TransactionRateRegulation>
@@ -226,10 +226,44 @@
         <GeographicDomainRef>gd0</GeographicDomainRef>
         <ClockRef>clk0</ClockRef>
       </MasterInterface>
+      <SlaveInterface>
+        <Name>DMA350</Name>
+        <AXI4SlaveProtocol>
+          <AddressWidth>44</AddressWidth>
+          <DataWidth>128</DataWidth>
+          <VIDWidth>2</VIDWidth>
+          <MultiRegion>false</MultiRegion>
+          <TrustZoneSlave>secure</TrustZoneSlave>
+          <ReadAcceptance>32</ReadAcceptance>
+          <WriteAcceptance>32</WriteAcceptance>
+          <QoSTypeAXI>fixed</QoSTypeAXI>
+          <QoSValue>0</QoSValue>
+          <TransactionRateRegulation>false</TransactionRateRegulation>
+          <OutstandingTransactionRegulation>false</OutstandingTransactionRegulation>
+          <LatencyPeriodRegulation>false</LatencyPeriodRegulation>
+          <VNExternal>false</VNExternal>
+        </AXI4SlaveProtocol>
+        <GeographicDomainRef>gd0</GeographicDomainRef>
+        <ClockRef>clk0</ClockRef>
+        <MultiPorted>false</MultiPorted>
+        <CyclicDependencyAvoidanceScheme>slave_per_id</CyclicDependencyAvoidanceScheme>
+        <LowLatency>false</LowLatency>
+      </SlaveInterface>
+      <MasterInterface>
+        <Name>DMA_CTRL</Name>
+        <APB4MasterProtocol>
+          <AddressWidth>32</AddressWidth>
+          <DataWidth>32</DataWidth>
+          <TrustZoneMasterAPB>non_secure</TrustZoneMasterAPB>
+          <APBGroupRef>apb_group0</APBGroupRef>
+        </APB4MasterProtocol>
+        <GeographicDomainRef>gd0</GeographicDomainRef>
+        <ClockRef>clk0</ClockRef>
+      </MasterInterface>
     </Interfaces>
     <MemoryMaps>
       <MemoryMap>
-        <Name>mm0</Name>
+        <Name>CPU_MM</Name>
         <MemoryMapSource>
           <InterfaceRef>A53</InterfaceRef>
         </MemoryMapSource>
@@ -281,6 +315,60 @@
           <Range>32768</Range>
           <Visibility>true</Visibility>
         </MappedBlock>
+        <MappedBlock>
+          <InterfaceRef>DMA_CTRL</InterfaceRef>
+          <Offset>16842752</Offset>
+          <Range>8192</Range>
+          <Visibility>true</Visibility>
+        </MappedBlock>
+      </MemoryMap>
+      <MemoryMap>
+        <Name>DMA_MM</Name>
+        <MemoryMapSource>
+          <InterfaceRef>DMA350</InterfaceRef>
+        </MemoryMapSource>
+        <MappedBlock>
+          <InterfaceRef>ROM</InterfaceRef>
+          <Offset>0</Offset>
+          <Range>65536</Range>
+          <Visibility>true</Visibility>
+        </MappedBlock>
+        <MappedBlock>
+          <InterfaceRef>FLASH</InterfaceRef>
+          <Offset>4194304</Offset>
+          <Range>4194304</Range>
+          <Visibility>true</Visibility>
+        </MappedBlock>
+        <MappedBlock>
+          <InterfaceRef>RAM</InterfaceRef>
+          <Offset>8388608</Offset>
+          <Range>65536</Range>
+          <Visibility>true</Visibility>
+        </MappedBlock>
+        <MappedBlock>
+          <InterfaceRef>PERIPHERAL</InterfaceRef>
+          <Offset>1073741824</Offset>
+          <Range>536870912</Range>
+          <Visibility>true</Visibility>
+        </MappedBlock>
+        <MappedBlock>
+          <InterfaceRef>DRAM</InterfaceRef>
+          <Offset>2147483648</Offset>
+          <Range>2147483648</Range>
+          <Visibility>true</Visibility>
+        </MappedBlock>
+        <MappedBlock>
+          <InterfaceRef>DEBUG</InterfaceRef>
+          <Offset>1610612736</Offset>
+          <Range>536870912</Range>
+          <Visibility>true</Visibility>
+        </MappedBlock>
+        <MappedBlock>
+          <InterfaceRef>DMA_CTRL</InterfaceRef>
+          <Offset>16842752</Offset>
+          <Range>8192</Range>
+          <Visibility>true</Visibility>
+        </MappedBlock>
       </MemoryMap>
     </MemoryMaps>
     <Paths>
@@ -313,15 +401,44 @@
           <Target>
             <InterfaceRef>GIC</InterfaceRef>
           </Target>
+          <Target>
+            <InterfaceRef>DMA_CTRL</InterfaceRef>
+          </Target>
+        </Targets>
+      </Path>
+      <Path>
+        <Source>
+          <InterfaceRef>DMA350</InterfaceRef>
+        </Source>
+        <Targets>
+          <Target>
+            <InterfaceRef>ROM</InterfaceRef>
+          </Target>
+          <Target>
+            <InterfaceRef>FLASH</InterfaceRef>
+          </Target>
+          <Target>
+            <InterfaceRef>RAM</InterfaceRef>
+          </Target>
+          <Target>
+            <InterfaceRef>PERIPHERAL</InterfaceRef>
+          </Target>
+          <Target>
+            <InterfaceRef>DRAM</InterfaceRef>
+          </Target>
+          <Target>
+            <InterfaceRef>DEBUG</InterfaceRef>
+          </Target>
         </Targets>
       </Path>
     </Paths>
     <VirtualNetworks/>
   </Specification>
   <Architecture>
-    <NICConfigFile>&lt;periph&gt;
-    &lt;product_version_info major_group=&quot;bu&quot; major_revision=&quot;1&quot; major_version=&quot;00&quot; minor_code=&quot;50000&quot; minor_revision=&quot;2&quot; minor_version=&quot;0&quot; part_quality=&quot;rel&quot; product_code=&quot;nic400&quot; /&gt;
-    &lt;validator_version_info major_revision=&quot;22&quot; minor_revision=&quot;1&quot; /&gt;
+    <NICConfigFile>&lt;?xml version=&quot;1.0&quot; encoding=&quot;iso-8859-1&quot; ?&gt;
+&lt;periph&gt;
+    &lt;product_version_info minor_code=&quot;50000&quot; minor_version=&quot;0&quot; major_group=&quot;bu&quot; minor_revision=&quot;2&quot; major_revision=&quot;1&quot; product_code=&quot;nic400&quot; major_version=&quot;00&quot; part_quality=&quot;rel&quot;/&gt;
+    &lt;validator_version_info minor_revision=&quot;1&quot; major_revision=&quot;22&quot;/&gt;
     &lt;global&gt;
         &lt;address0x0 def=&quot;true&quot;&gt;bottom&lt;/address0x0&gt;
         &lt;aruser_width&gt;0&lt;/aruser_width&gt;
@@ -336,7 +453,7 @@
         &lt;hcg_en&gt;false&lt;/hcg_en&gt;
         &lt;license_status&gt;unlicensed_nic&lt;/license_status&gt;
         &lt;periph_id3 def=&quot;true&quot;&gt;0&lt;/periph_id3&gt;
-        &lt;pl_id_width&gt;6&lt;/pl_id_width&gt;
+        &lt;pl_id_width&gt;7&lt;/pl_id_width&gt;
         &lt;qos_status&gt;false&lt;/qos_status&gt;
         &lt;rsb_arch_central_ring&gt;false&lt;/rsb_arch_central_ring&gt;
         &lt;ruser_width&gt;0&lt;/ruser_width&gt;
@@ -345,7 +462,7 @@
         &lt;taxonomy&gt;masterslave&lt;/taxonomy&gt;
         &lt;thin_links_status def=&quot;true&quot;&gt;false&lt;/thin_links_status&gt;
         &lt;uppercase_ext_sig&gt;true&lt;/uppercase_ext_sig&gt;
-        &lt;virtual_networks /&gt;
+        &lt;virtual_networks/&gt;
         &lt;virtual_networks_status&gt;false&lt;/virtual_networks_status&gt;
         &lt;wuser_width&gt;0&lt;/wuser_width&gt;
     &lt;/global&gt;
@@ -354,7 +471,7 @@
     &lt;/clocks&gt;
     &lt;asib&gt;
         &lt;address_ranges&gt;
-            &lt;name&gt;mm0&lt;/name&gt;
+            &lt;name&gt;CPU_MM&lt;/name&gt;
             &lt;range&gt;
                 &lt;addr_max&gt;0xFFFF&lt;/addr_max&gt;
                 &lt;addr_min&gt;0x0&lt;/addr_min&gt;
@@ -435,6 +552,16 @@
                     &lt;target&gt;GIC&lt;/target&gt;
                 &lt;/remap&gt;
             &lt;/range&gt;
+            &lt;range&gt;
+                &lt;addr_max&gt;0x1011FFF&lt;/addr_max&gt;
+                &lt;addr_min&gt;0x1010000&lt;/addr_min&gt;
+                &lt;remap&gt;
+                    &lt;bit&gt;default&lt;/bit&gt;
+                    &lt;present&gt;true&lt;/present&gt;
+                    &lt;region&gt;0&lt;/region&gt;
+                    &lt;target&gt;DMA_CTRL&lt;/target&gt;
+                &lt;/remap&gt;
+            &lt;/range&gt;
         &lt;/address_ranges&gt;
         &lt;apb_config&gt;false&lt;/apb_config&gt;
         &lt;apb_slave_no def=&quot;true&quot;&gt;2&lt;/apb_slave_no&gt;
@@ -559,11 +686,203 @@
         &lt;vid_width&gt;6&lt;/vid_width&gt;
         &lt;vn_external&gt;none&lt;/vn_external&gt;
         &lt;vn_external_bridge&gt;none&lt;/vn_external_bridge&gt;
-        &lt;x&gt;0&lt;/x&gt;
-        &lt;y&gt;20&lt;/y&gt;
+        &lt;x&gt;110&lt;/x&gt;
+        &lt;y&gt;91&lt;/y&gt;
         &lt;master_if_port_name&gt;A53_m&lt;/master_if_port_name&gt;
         &lt;slave_if_port_name&gt;A53_s&lt;/slave_if_port_name&gt;
     &lt;/asib&gt;
+    &lt;asib&gt;
+        &lt;address_ranges&gt;
+            &lt;name&gt;DMA_MM&lt;/name&gt;
+            &lt;range&gt;
+                &lt;addr_max&gt;0xFFFF&lt;/addr_max&gt;
+                &lt;addr_min&gt;0x0&lt;/addr_min&gt;
+                &lt;remap&gt;
+                    &lt;bit&gt;default&lt;/bit&gt;
+                    &lt;present&gt;true&lt;/present&gt;
+                    &lt;region&gt;0&lt;/region&gt;
+                    &lt;target&gt;ROM&lt;/target&gt;
+                &lt;/remap&gt;
+            &lt;/range&gt;
+            &lt;range&gt;
+                &lt;addr_max&gt;0x7FFFFF&lt;/addr_max&gt;
+                &lt;addr_min&gt;0x400000&lt;/addr_min&gt;
+                &lt;remap&gt;
+                    &lt;bit&gt;default&lt;/bit&gt;
+                    &lt;present&gt;true&lt;/present&gt;
+                    &lt;region&gt;0&lt;/region&gt;
+                    &lt;target&gt;FLASH&lt;/target&gt;
+                &lt;/remap&gt;
+            &lt;/range&gt;
+            &lt;range&gt;
+                &lt;addr_max&gt;0x80FFFF&lt;/addr_max&gt;
+                &lt;addr_min&gt;0x800000&lt;/addr_min&gt;
+                &lt;remap&gt;
+                    &lt;bit&gt;default&lt;/bit&gt;
+                    &lt;present&gt;true&lt;/present&gt;
+                    &lt;region&gt;0&lt;/region&gt;
+                    &lt;target&gt;RAM&lt;/target&gt;
+                &lt;/remap&gt;
+            &lt;/range&gt;
+            &lt;range&gt;
+                &lt;addr_max&gt;0x5FFFFFFF&lt;/addr_max&gt;
+                &lt;addr_min&gt;0x40000000&lt;/addr_min&gt;
+                &lt;remap&gt;
+                    &lt;bit&gt;default&lt;/bit&gt;
+                    &lt;present&gt;true&lt;/present&gt;
+                    &lt;region&gt;0&lt;/region&gt;
+                    &lt;target&gt;PERIPHERAL&lt;/target&gt;
+                &lt;/remap&gt;
+            &lt;/range&gt;
+            &lt;range&gt;
+                &lt;addr_max&gt;0xFFFFFFFF&lt;/addr_max&gt;
+                &lt;addr_min&gt;0x80000000&lt;/addr_min&gt;
+                &lt;remap&gt;
+                    &lt;bit&gt;default&lt;/bit&gt;
+                    &lt;present&gt;true&lt;/present&gt;
+                    &lt;region&gt;0&lt;/region&gt;
+                    &lt;target&gt;DRAM&lt;/target&gt;
+                &lt;/remap&gt;
+            &lt;/range&gt;
+            &lt;range&gt;
+                &lt;addr_max&gt;0x7FFFFFFF&lt;/addr_max&gt;
+                &lt;addr_min&gt;0x60000000&lt;/addr_min&gt;
+                &lt;remap&gt;
+                    &lt;bit&gt;default&lt;/bit&gt;
+                    &lt;present&gt;true&lt;/present&gt;
+                    &lt;region&gt;0&lt;/region&gt;
+                    &lt;target&gt;DEBUG&lt;/target&gt;
+                &lt;/remap&gt;
+            &lt;/range&gt;
+        &lt;/address_ranges&gt;
+        &lt;apb_config&gt;false&lt;/apb_config&gt;
+        &lt;apb_slave_no def=&quot;true&quot;&gt;2&lt;/apb_slave_no&gt;
+        &lt;cds&gt;slaveperid&lt;/cds&gt;
+        &lt;clock_boundary&gt;none&lt;/clock_boundary&gt;
+        &lt;clock_domain_name_master_if&gt;clk0&lt;/clock_domain_name_master_if&gt;
+        &lt;clock_domain_name_slave_if&gt;clk0&lt;/clock_domain_name_slave_if&gt;
+        &lt;master_if_data_width&gt;128&lt;/master_if_data_width&gt;
+        &lt;multi_ported&gt;false&lt;/multi_ported&gt;
+        &lt;multi_region&gt;false&lt;/multi_region&gt;
+        &lt;name&gt;DMA350&lt;/name&gt;
+        &lt;protocol&gt;axi4&lt;/protocol&gt;
+        &lt;qos_config&gt;
+            &lt;hard&gt;disable&lt;/hard&gt;
+            &lt;lqv&gt;disable&lt;/lqv&gt;
+            &lt;pot&gt;disable&lt;/pot&gt;
+        &lt;/qos_config&gt;
+        &lt;qv&gt;
+            &lt;type&gt;fixed&lt;/type&gt;
+            &lt;value&gt;0&lt;/value&gt;
+        &lt;/qv&gt;
+        &lt;reg&gt;
+            &lt;impl&gt;present&lt;/impl&gt;
+            &lt;location&gt;slave_port&lt;/location&gt;
+            &lt;name&gt;aw&lt;/name&gt;
+            &lt;type&gt;rev&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;impl&gt;present&lt;/impl&gt;
+            &lt;location&gt;slave_port&lt;/location&gt;
+            &lt;name&gt;w&lt;/name&gt;
+            &lt;type&gt;rev&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;impl&gt;present&lt;/impl&gt;
+            &lt;location&gt;slave_port&lt;/location&gt;
+            &lt;name&gt;ar&lt;/name&gt;
+            &lt;type&gt;rev&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;depth def=&quot;true&quot;&gt;2&lt;/depth&gt;
+            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;location&gt;boundary&lt;/location&gt;
+            &lt;name&gt;aw&lt;/name&gt;
+            &lt;type&gt;fifo&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;depth def=&quot;true&quot;&gt;2&lt;/depth&gt;
+            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;location&gt;boundary&lt;/location&gt;
+            &lt;name&gt;ar&lt;/name&gt;
+            &lt;type&gt;fifo&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;depth def=&quot;true&quot;&gt;2&lt;/depth&gt;
+            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;location&gt;boundary&lt;/location&gt;
+            &lt;name&gt;r&lt;/name&gt;
+            &lt;type&gt;fifo&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;depth def=&quot;true&quot;&gt;2&lt;/depth&gt;
+            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;location&gt;boundary&lt;/location&gt;
+            &lt;name&gt;w&lt;/name&gt;
+            &lt;type&gt;fifo&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;depth def=&quot;true&quot;&gt;2&lt;/depth&gt;
+            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;location&gt;boundary&lt;/location&gt;
+            &lt;name&gt;b&lt;/name&gt;
+            &lt;type&gt;fifo&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;location&gt;master_port&lt;/location&gt;
+            &lt;name&gt;aw&lt;/name&gt;
+            &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;location&gt;master_port&lt;/location&gt;
+            &lt;name&gt;ar&lt;/name&gt;
+            &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;location&gt;master_port&lt;/location&gt;
+            &lt;name&gt;r&lt;/name&gt;
+            &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;location&gt;master_port&lt;/location&gt;
+            &lt;name&gt;w&lt;/name&gt;
+            &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;location&gt;master_port&lt;/location&gt;
+            &lt;name&gt;b&lt;/name&gt;
+            &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;location&gt;slave_port&lt;/location&gt;
+            &lt;name&gt;r&lt;/name&gt;
+            &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;reg&gt;
+            &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+            &lt;location&gt;slave_port&lt;/location&gt;
+            &lt;name&gt;b&lt;/name&gt;
+            &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+        &lt;/reg&gt;
+        &lt;slave_if_addr_width&gt;44&lt;/slave_if_addr_width&gt;
+        &lt;slave_if_data_width&gt;128&lt;/slave_if_data_width&gt;
+        &lt;token_prerequest def=&quot;true&quot;&gt;false&lt;/token_prerequest&gt;
+        &lt;token_prerequest_bridge def=&quot;true&quot;&gt;false&lt;/token_prerequest_bridge&gt;
+        &lt;trustzone&gt;sec&lt;/trustzone&gt;
+        &lt;vid_width&gt;2&lt;/vid_width&gt;
+        &lt;vn_external&gt;none&lt;/vn_external&gt;
+        &lt;vn_external_bridge&gt;none&lt;/vn_external_bridge&gt;
+        &lt;x&gt;110&lt;/x&gt;
+        &lt;y&gt;61&lt;/y&gt;
+        &lt;master_if_port_name&gt;DMA350_m&lt;/master_if_port_name&gt;
+        &lt;slave_if_port_name&gt;DMA350_s&lt;/slave_if_port_name&gt;
+    &lt;/asib&gt;
     &lt;amib&gt;
         &lt;apb_config&gt;false&lt;/apb_config&gt;
         &lt;apb_slave_no&gt;65&lt;/apb_slave_no&gt;
@@ -572,6 +891,7 @@
         &lt;clock_domain_name_slave_if&gt;clk0&lt;/clock_domain_name_slave_if&gt;
         &lt;compress_id&gt;true&lt;/compress_id&gt;
         &lt;dest_type&gt;peripheral&lt;/dest_type&gt;
+        &lt;expanded&gt;false&lt;/expanded&gt;
         &lt;master_if_addr_width&gt;32&lt;/master_if_addr_width&gt;
         &lt;master_if_data_width&gt;64&lt;/master_if_data_width&gt;
         &lt;multi_ported&gt;false&lt;/multi_ported&gt;
@@ -680,8 +1000,8 @@
         &lt;trustzone&gt;nsec&lt;/trustzone&gt;
         &lt;vn_external&gt;none&lt;/vn_external&gt;
         &lt;vn_external_bridge&gt;none&lt;/vn_external_bridge&gt;
-        &lt;x&gt;0&lt;/x&gt;
-        &lt;y&gt;20&lt;/y&gt;
+        &lt;x&gt;890&lt;/x&gt;
+        &lt;y&gt;296&lt;/y&gt;
         &lt;master_if_port_name&gt;ROM_m&lt;/master_if_port_name&gt;
         &lt;slave_if_port_name&gt;ROM_s&lt;/slave_if_port_name&gt;
     &lt;/amib&gt;
@@ -693,6 +1013,7 @@
         &lt;clock_domain_name_slave_if&gt;clk0&lt;/clock_domain_name_slave_if&gt;
         &lt;compress_id def=&quot;true&quot;&gt;false&lt;/compress_id&gt;
         &lt;dest_type&gt;peripheral&lt;/dest_type&gt;
+        &lt;expanded&gt;false&lt;/expanded&gt;
         &lt;master_if_addr_width&gt;32&lt;/master_if_addr_width&gt;
         &lt;master_if_data_width&gt;32&lt;/master_if_data_width&gt;
         &lt;multi_ported&gt;false&lt;/multi_ported&gt;
@@ -775,8 +1096,8 @@
         &lt;trustzone&gt;sec&lt;/trustzone&gt;
         &lt;vn_external&gt;none&lt;/vn_external&gt;
         &lt;vn_external_bridge&gt;none&lt;/vn_external_bridge&gt;
-        &lt;x&gt;0&lt;/x&gt;
-        &lt;y&gt;40&lt;/y&gt;
+        &lt;x&gt;890&lt;/x&gt;
+        &lt;y&gt;176&lt;/y&gt;
         &lt;master_if_port_name&gt;FLASH_m&lt;/master_if_port_name&gt;
         &lt;slave_if_port_name&gt;FLASH_s&lt;/slave_if_port_name&gt;
     &lt;/amib&gt;
@@ -788,6 +1109,7 @@
         &lt;clock_domain_name_slave_if&gt;clk0&lt;/clock_domain_name_slave_if&gt;
         &lt;compress_id&gt;true&lt;/compress_id&gt;
         &lt;dest_type&gt;peripheral&lt;/dest_type&gt;
+        &lt;expanded&gt;false&lt;/expanded&gt;
         &lt;master_if_addr_width&gt;32&lt;/master_if_addr_width&gt;
         &lt;master_if_data_width&gt;64&lt;/master_if_data_width&gt;
         &lt;multi_ported&gt;false&lt;/multi_ported&gt;
@@ -896,8 +1218,8 @@
         &lt;trustzone&gt;nsec&lt;/trustzone&gt;
         &lt;vn_external&gt;none&lt;/vn_external&gt;
         &lt;vn_external_bridge&gt;none&lt;/vn_external_bridge&gt;
-        &lt;x&gt;0&lt;/x&gt;
-        &lt;y&gt;60&lt;/y&gt;
+        &lt;x&gt;890&lt;/x&gt;
+        &lt;y&gt;388&lt;/y&gt;
         &lt;master_if_port_name&gt;RAM_m&lt;/master_if_port_name&gt;
         &lt;slave_if_port_name&gt;RAM_s&lt;/slave_if_port_name&gt;
     &lt;/amib&gt;
@@ -909,6 +1231,7 @@
         &lt;clock_domain_name_slave_if&gt;clk0&lt;/clock_domain_name_slave_if&gt;
         &lt;compress_id&gt;true&lt;/compress_id&gt;
         &lt;dest_type&gt;peripheral&lt;/dest_type&gt;
+        &lt;expanded&gt;false&lt;/expanded&gt;
         &lt;master_if_addr_width&gt;32&lt;/master_if_addr_width&gt;
         &lt;master_if_data_width&gt;64&lt;/master_if_data_width&gt;
         &lt;multi_ported&gt;false&lt;/multi_ported&gt;
@@ -1017,8 +1340,8 @@
         &lt;trustzone&gt;nsec&lt;/trustzone&gt;
         &lt;vn_external&gt;none&lt;/vn_external&gt;
         &lt;vn_external_bridge&gt;none&lt;/vn_external_bridge&gt;
-        &lt;x&gt;0&lt;/x&gt;
-        &lt;y&gt;80&lt;/y&gt;
+        &lt;x&gt;890&lt;/x&gt;
+        &lt;y&gt;342&lt;/y&gt;
         &lt;master_if_port_name&gt;DRAM_m&lt;/master_if_port_name&gt;
         &lt;slave_if_port_name&gt;DRAM_s&lt;/slave_if_port_name&gt;
     &lt;/amib&gt;
@@ -1030,6 +1353,7 @@
         &lt;clock_domain_name_slave_if&gt;clk0&lt;/clock_domain_name_slave_if&gt;
         &lt;compress_id&gt;true&lt;/compress_id&gt;
         &lt;dest_type&gt;peripheral&lt;/dest_type&gt;
+        &lt;expanded&gt;false&lt;/expanded&gt;
         &lt;master_if_addr_width&gt;32&lt;/master_if_addr_width&gt;
         &lt;master_if_data_width&gt;32&lt;/master_if_data_width&gt;
         &lt;multi_ported&gt;false&lt;/multi_ported&gt;
@@ -1138,8 +1462,8 @@
         &lt;trustzone&gt;sec&lt;/trustzone&gt;
         &lt;vn_external&gt;none&lt;/vn_external&gt;
         &lt;vn_external_bridge&gt;none&lt;/vn_external_bridge&gt;
-        &lt;x&gt;0&lt;/x&gt;
-        &lt;y&gt;100&lt;/y&gt;
+        &lt;x&gt;890&lt;/x&gt;
+        &lt;y&gt;222&lt;/y&gt;
         &lt;master_if_port_name&gt;GIC_m&lt;/master_if_port_name&gt;
         &lt;slave_if_port_name&gt;GIC_s&lt;/slave_if_port_name&gt;
     &lt;/amib&gt;
@@ -1149,22 +1473,29 @@
             &lt;clock_domain&gt;clk0&lt;/clock_domain&gt;
             &lt;name&gt;PERIPHERAL&lt;/name&gt;
             &lt;trustzone&gt;nsec&lt;/trustzone&gt;
-            &lt;x&gt;0&lt;/x&gt;
-            &lt;y&gt;0&lt;/y&gt;
+            &lt;x&gt;902&lt;/x&gt;
+            &lt;y&gt;61&lt;/y&gt;
         &lt;/apb_port&gt;
         &lt;apb_port&gt;
             &lt;clock_domain&gt;clk0&lt;/clock_domain&gt;
             &lt;name&gt;FLASH_CTRL&lt;/name&gt;
             &lt;trustzone&gt;nsec&lt;/trustzone&gt;
-            &lt;x&gt;0&lt;/x&gt;
-            &lt;y&gt;0&lt;/y&gt;
+            &lt;x&gt;902&lt;/x&gt;
+            &lt;y&gt;81&lt;/y&gt;
         &lt;/apb_port&gt;
         &lt;apb_port&gt;
             &lt;clock_domain&gt;clk0&lt;/clock_domain&gt;
             &lt;name&gt;DEBUG&lt;/name&gt;
             &lt;trustzone&gt;nsec&lt;/trustzone&gt;
-            &lt;x&gt;0&lt;/x&gt;
-            &lt;y&gt;0&lt;/y&gt;
+            &lt;x&gt;902&lt;/x&gt;
+            &lt;y&gt;101&lt;/y&gt;
+        &lt;/apb_port&gt;
+        &lt;apb_port&gt;
+            &lt;clock_domain&gt;clk0&lt;/clock_domain&gt;
+            &lt;name&gt;DMA_CTRL&lt;/name&gt;
+            &lt;trustzone&gt;nsec&lt;/trustzone&gt;
+            &lt;x&gt;902&lt;/x&gt;
+            &lt;y&gt;121&lt;/y&gt;
         &lt;/apb_port&gt;
         &lt;apb_slave_no&gt;60&lt;/apb_slave_no&gt;
         &lt;clock_boundary&gt;none&lt;/clock_boundary&gt;
@@ -1172,6 +1503,7 @@
         &lt;clock_domain_name_slave_if&gt;clk0&lt;/clock_domain_name_slave_if&gt;
         &lt;compress_id def=&quot;true&quot;&gt;false&lt;/compress_id&gt;
         &lt;dest_type&gt;peripheral&lt;/dest_type&gt;
+        &lt;expanded&gt;true&lt;/expanded&gt;
         &lt;master_if_addr_width&gt;32&lt;/master_if_addr_width&gt;
         &lt;master_if_data_width&gt;32&lt;/master_if_data_width&gt;
         &lt;multi_ported&gt;false&lt;/multi_ported&gt;
@@ -1254,41 +1586,41 @@
         &lt;trustzone&gt;nsec&lt;/trustzone&gt;
         &lt;vn_external def=&quot;true&quot;&gt;none&lt;/vn_external&gt;
         &lt;vn_external_bridge def=&quot;true&quot;&gt;none&lt;/vn_external_bridge&gt;
-        &lt;x&gt;0&lt;/x&gt;
-        &lt;y&gt;120&lt;/y&gt;
-        &lt;master_if_port_name&gt;PERIPHERAL,FLASH_CTRL,DEBUG&lt;/master_if_port_name&gt;
+        &lt;x&gt;890&lt;/x&gt;
+        &lt;y&gt;61&lt;/y&gt;
+        &lt;master_if_port_name&gt;PERIPHERAL,FLASH_CTRL,DEBUG,DMA_CTRL&lt;/master_if_port_name&gt;
         &lt;slave_if_port_name&gt;apb_group0_s&lt;/slave_if_port_name&gt;
     &lt;/amib&gt;
     &lt;inter&gt;
         &lt;clock_domain&gt;clk0&lt;/clock_domain&gt;
         &lt;data_width&gt;64&lt;/data_width&gt;
-        &lt;expanded&gt;false&lt;/expanded&gt;
-        &lt;height&gt;40&lt;/height&gt;
+        &lt;expanded&gt;true&lt;/expanded&gt;
+        &lt;height&gt;127&lt;/height&gt;
         &lt;impl&gt;mlayer&lt;/impl&gt;
         &lt;master_if&gt;
             &lt;name&gt;axi_m_0&lt;/name&gt;
             &lt;post_arb_reg&gt;absent&lt;/post_arb_reg&gt;
-            &lt;x&gt;0&lt;/x&gt;
-            &lt;y&gt;63&lt;/y&gt;
+            &lt;x&gt;673&lt;/x&gt;
+            &lt;y&gt;296&lt;/y&gt;
         &lt;/master_if&gt;
         &lt;master_if&gt;
             &lt;name&gt;axi_m_1&lt;/name&gt;
             &lt;post_arb_reg&gt;absent&lt;/post_arb_reg&gt;
-            &lt;x&gt;0&lt;/x&gt;
-            &lt;y&gt;83&lt;/y&gt;
+            &lt;x&gt;673&lt;/x&gt;
+            &lt;y&gt;342&lt;/y&gt;
         &lt;/master_if&gt;
         &lt;master_if&gt;
             &lt;name&gt;axi_m_2&lt;/name&gt;
             &lt;post_arb_reg&gt;absent&lt;/post_arb_reg&gt;
-            &lt;x&gt;0&lt;/x&gt;
-            &lt;y&gt;103&lt;/y&gt;
+            &lt;x&gt;673&lt;/x&gt;
+            &lt;y&gt;388&lt;/y&gt;
         &lt;/master_if&gt;
         &lt;name&gt;bm0&lt;/name&gt;
         &lt;protocol&gt;axi4&lt;/protocol&gt;
         &lt;slave_if&gt;
             &lt;name&gt;axi_s_0&lt;/name&gt;
-            &lt;x&gt;0&lt;/x&gt;
-            &lt;y&gt;63&lt;/y&gt;
+            &lt;x&gt;580&lt;/x&gt;
+            &lt;y&gt;296&lt;/y&gt;
         &lt;/slave_if&gt;
         &lt;sparse&gt;
             &lt;cds&gt;slaveperid&lt;/cds&gt;
@@ -1380,54 +1712,59 @@
             &lt;/master_if_port&gt;
         &lt;/sparse&gt;
         &lt;type&gt;busmatrix&lt;/type&gt;
-        &lt;width&gt;0&lt;/width&gt;
-        &lt;x&gt;500&lt;/x&gt;
-        &lt;y&gt;45&lt;/y&gt;
+        &lt;width&gt;94&lt;/width&gt;
+        &lt;x&gt;626&lt;/x&gt;
+        &lt;y&gt;342&lt;/y&gt;
         &lt;master_if_port_name&gt;axi_m_0,axi_m_1,axi_m_2&lt;/master_if_port_name&gt;
         &lt;slave_if_port_name&gt;axi_s_0&lt;/slave_if_port_name&gt;
     &lt;/inter&gt;
     &lt;inter&gt;
         &lt;clock_domain&gt;clk0&lt;/clock_domain&gt;
         &lt;data_width&gt;128&lt;/data_width&gt;
-        &lt;expanded&gt;false&lt;/expanded&gt;
-        &lt;height&gt;80&lt;/height&gt;
+        &lt;expanded&gt;true&lt;/expanded&gt;
+        &lt;height&gt;242&lt;/height&gt;
         &lt;impl&gt;mlayer&lt;/impl&gt;
         &lt;master_if&gt;
             &lt;name&gt;axi_m_0&lt;/name&gt;
             &lt;post_arb_reg&gt;absent&lt;/post_arb_reg&gt;
-            &lt;x&gt;0&lt;/x&gt;
-            &lt;y&gt;108&lt;/y&gt;
+            &lt;x&gt;420&lt;/x&gt;
+            &lt;y&gt;176&lt;/y&gt;
         &lt;/master_if&gt;
         &lt;master_if&gt;
             &lt;name&gt;axi_m_1&lt;/name&gt;
             &lt;post_arb_reg&gt;absent&lt;/post_arb_reg&gt;
-            &lt;x&gt;0&lt;/x&gt;
-            &lt;y&gt;128&lt;/y&gt;
+            &lt;x&gt;420&lt;/x&gt;
+            &lt;y&gt;61&lt;/y&gt;
         &lt;/master_if&gt;
         &lt;master_if&gt;
             &lt;name&gt;axi_m_2&lt;/name&gt;
             &lt;post_arb_reg&gt;absent&lt;/post_arb_reg&gt;
-            &lt;x&gt;0&lt;/x&gt;
-            &lt;y&gt;148&lt;/y&gt;
+            &lt;x&gt;420&lt;/x&gt;
+            &lt;y&gt;222&lt;/y&gt;
         &lt;/master_if&gt;
         &lt;master_if&gt;
             &lt;name&gt;axi_m_3&lt;/name&gt;
             &lt;post_arb_reg&gt;absent&lt;/post_arb_reg&gt;
-            &lt;x&gt;0&lt;/x&gt;
-            &lt;y&gt;168&lt;/y&gt;
+            &lt;x&gt;420&lt;/x&gt;
+            &lt;y&gt;268&lt;/y&gt;
         &lt;/master_if&gt;
         &lt;master_if&gt;
             &lt;name&gt;axi_m_4&lt;/name&gt;
             &lt;post_arb_reg&gt;absent&lt;/post_arb_reg&gt;
-            &lt;x&gt;0&lt;/x&gt;
-            &lt;y&gt;188&lt;/y&gt;
+            &lt;x&gt;420&lt;/x&gt;
+            &lt;y&gt;91&lt;/y&gt;
         &lt;/master_if&gt;
         &lt;name&gt;bm1&lt;/name&gt;
         &lt;protocol&gt;axi4&lt;/protocol&gt;
         &lt;slave_if&gt;
             &lt;name&gt;axi_s_0&lt;/name&gt;
-            &lt;x&gt;0&lt;/x&gt;
-            &lt;y&gt;108&lt;/y&gt;
+            &lt;x&gt;327&lt;/x&gt;
+            &lt;y&gt;61&lt;/y&gt;
+        &lt;/slave_if&gt;
+        &lt;slave_if&gt;
+            &lt;name&gt;axi_s_1&lt;/name&gt;
+            &lt;x&gt;327&lt;/x&gt;
+            &lt;y&gt;91&lt;/y&gt;
         &lt;/slave_if&gt;
         &lt;sparse&gt;
             &lt;cds&gt;slaveperid&lt;/cds&gt;
@@ -1489,6 +1826,123 @@
                     &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
                 &lt;/reg&gt;
             &lt;/master_if_port&gt;
+            &lt;master_if_port&gt;
+                &lt;name&gt;axi_m_3&lt;/name&gt;
+                &lt;reg&gt;
+                    &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+                    &lt;name&gt;aw&lt;/name&gt;
+                    &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+                &lt;/reg&gt;
+                &lt;reg&gt;
+                    &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+                    &lt;name&gt;ar&lt;/name&gt;
+                    &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+                &lt;/reg&gt;
+                &lt;reg&gt;
+                    &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+                    &lt;name&gt;r&lt;/name&gt;
+                    &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+                &lt;/reg&gt;
+                &lt;reg&gt;
+                    &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+                    &lt;name&gt;w&lt;/name&gt;
+                    &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+                &lt;/reg&gt;
+                &lt;reg&gt;
+                    &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+                    &lt;name&gt;b&lt;/name&gt;
+                    &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+                &lt;/reg&gt;
+            &lt;/master_if_port&gt;
+            &lt;master_if_port&gt;
+                &lt;name&gt;axi_m_4&lt;/name&gt;
+                &lt;reg&gt;
+                    &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+                    &lt;name&gt;aw&lt;/name&gt;
+                    &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+                &lt;/reg&gt;
+                &lt;reg&gt;
+                    &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+                    &lt;name&gt;ar&lt;/name&gt;
+                    &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+                &lt;/reg&gt;
+                &lt;reg&gt;
+                    &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+                    &lt;name&gt;r&lt;/name&gt;
+                    &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+                &lt;/reg&gt;
+                &lt;reg&gt;
+                    &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+                    &lt;name&gt;w&lt;/name&gt;
+                    &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+                &lt;/reg&gt;
+                &lt;reg&gt;
+                    &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+                    &lt;name&gt;b&lt;/name&gt;
+                    &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+                &lt;/reg&gt;
+            &lt;/master_if_port&gt;
+        &lt;/sparse&gt;
+        &lt;sparse&gt;
+            &lt;cds&gt;slaveperid&lt;/cds&gt;
+            &lt;sas def=&quot;true&quot;&gt;false&lt;/sas&gt;
+            &lt;slave_if_port&gt;axi_s_1&lt;/slave_if_port&gt;
+            &lt;master_if_port&gt;
+                &lt;name&gt;axi_m_0&lt;/name&gt;
+                &lt;reg&gt;
+                    &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+                    &lt;name&gt;aw&lt;/name&gt;
+                    &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+                &lt;/reg&gt;
+                &lt;reg&gt;
+                    &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+                    &lt;name&gt;ar&lt;/name&gt;
+                    &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+                &lt;/reg&gt;
+                &lt;reg&gt;
+                    &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+                    &lt;name&gt;r&lt;/name&gt;
+                    &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+                &lt;/reg&gt;
+                &lt;reg&gt;
+                    &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+                    &lt;name&gt;w&lt;/name&gt;
+                    &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+                &lt;/reg&gt;
+                &lt;reg&gt;
+                    &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+                    &lt;name&gt;b&lt;/name&gt;
+                    &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+                &lt;/reg&gt;
+            &lt;/master_if_port&gt;
+            &lt;master_if_port&gt;
+                &lt;name&gt;axi_m_1&lt;/name&gt;
+                &lt;reg&gt;
+                    &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+                    &lt;name&gt;aw&lt;/name&gt;
+                    &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+                &lt;/reg&gt;
+                &lt;reg&gt;
+                    &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+                    &lt;name&gt;ar&lt;/name&gt;
+                    &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+                &lt;/reg&gt;
+                &lt;reg&gt;
+                    &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+                    &lt;name&gt;r&lt;/name&gt;
+                    &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+                &lt;/reg&gt;
+                &lt;reg&gt;
+                    &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+                    &lt;name&gt;w&lt;/name&gt;
+                    &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+                &lt;/reg&gt;
+                &lt;reg&gt;
+                    &lt;impl def=&quot;true&quot;&gt;absent&lt;/impl&gt;
+                    &lt;name&gt;b&lt;/name&gt;
+                    &lt;type def=&quot;true&quot;&gt;full&lt;/type&gt;
+                &lt;/reg&gt;
+            &lt;/master_if_port&gt;
             &lt;master_if_port&gt;
                 &lt;name&gt;axi_m_2&lt;/name&gt;
                 &lt;reg&gt;
@@ -1575,11 +2029,11 @@
             &lt;/master_if_port&gt;
         &lt;/sparse&gt;
         &lt;type&gt;busmatrix&lt;/type&gt;
-        &lt;width&gt;0&lt;/width&gt;
-        &lt;x&gt;500&lt;/x&gt;
-        &lt;y&gt;90&lt;/y&gt;
+        &lt;width&gt;94&lt;/width&gt;
+        &lt;x&gt;373&lt;/x&gt;
+        &lt;y&gt;164&lt;/y&gt;
         &lt;master_if_port_name&gt;axi_m_0,axi_m_1,axi_m_2,axi_m_3,axi_m_4&lt;/master_if_port_name&gt;
-        &lt;slave_if_port_name&gt;axi_s_0&lt;/slave_if_port_name&gt;
+        &lt;slave_if_port_name&gt;axi_s_0,axi_s_1&lt;/slave_if_port_name&gt;
     &lt;/inter&gt;
     &lt;inter&gt;
         &lt;apb_config def=&quot;true&quot;&gt;false&lt;/apb_config&gt;
@@ -1589,8 +2043,8 @@
         &lt;clock_domain_name_slave_if&gt;clk0&lt;/clock_domain_name_slave_if&gt;
         &lt;master_if&gt;
             &lt;name&gt;ib2_m&lt;/name&gt;
-            &lt;x&gt;0&lt;/x&gt;
-            &lt;y&gt;0&lt;/y&gt;
+            &lt;x&gt;515&lt;/x&gt;
+            &lt;y&gt;282&lt;/y&gt;
         &lt;/master_if&gt;
         &lt;master_if_data_width&gt;64&lt;/master_if_data_width&gt;
         &lt;name&gt;ib2&lt;/name&gt;
@@ -1696,13 +2150,13 @@
         &lt;/reg&gt;
         &lt;slave_if&gt;
             &lt;name&gt;ib2_s&lt;/name&gt;
-            &lt;x&gt;0&lt;/x&gt;
-            &lt;y&gt;0&lt;/y&gt;
+            &lt;x&gt;486&lt;/x&gt;
+            &lt;y&gt;282&lt;/y&gt;
         &lt;/slave_if&gt;
         &lt;slave_if_data_width&gt;128&lt;/slave_if_data_width&gt;
         &lt;type&gt;ib&lt;/type&gt;
-        &lt;x&gt;0&lt;/x&gt;
-        &lt;y&gt;0&lt;/y&gt;
+        &lt;x&gt;500&lt;/x&gt;
+        &lt;y&gt;282&lt;/y&gt;
         &lt;master_if_port_name&gt;ib2_m&lt;/master_if_port_name&gt;
         &lt;slave_if_port_name&gt;ib2_s&lt;/slave_if_port_name&gt;
     &lt;/inter&gt;
@@ -1710,13 +2164,13 @@
         &lt;name&gt;ds_3&lt;/name&gt;
         &lt;slave_if&gt;
             &lt;name&gt;axi_s_0&lt;/name&gt;
-            &lt;x&gt;0&lt;/x&gt;
-            &lt;y&gt;0&lt;/y&gt;
+            &lt;x&gt;436&lt;/x&gt;
+            &lt;y&gt;101&lt;/y&gt;
         &lt;/slave_if&gt;
         &lt;type&gt;default_slave&lt;/type&gt;
-        &lt;x&gt;500&lt;/x&gt;
-        &lt;y&gt;500&lt;/y&gt;
-        &lt;master_if_port_name /&gt;
+        &lt;x&gt;450&lt;/x&gt;
+        &lt;y&gt;101&lt;/y&gt;
+        &lt;master_if_port_name&gt;&lt;/master_if_port_name&gt;
         &lt;slave_if_port_name&gt;axi_s_0&lt;/slave_if_port_name&gt;
     &lt;/inter&gt;
     &lt;connect&gt;
@@ -1726,15 +2180,31 @@
         &lt;dest&gt;A53&lt;/dest&gt;
         &lt;dest_port&gt;A53_s&lt;/dest_port&gt;
         &lt;lock&gt;false&lt;/lock&gt;
-        &lt;out_reads&gt;4&lt;/out_reads&gt;
-        &lt;out_trans&gt;8&lt;/out_trans&gt;
-        &lt;out_writes&gt;4&lt;/out_writes&gt;
+        &lt;out_reads&gt;32&lt;/out_reads&gt;
+        &lt;out_trans&gt;64&lt;/out_trans&gt;
+        &lt;out_writes&gt;32&lt;/out_writes&gt;
         &lt;protocol&gt;axi4&lt;/protocol&gt;
         &lt;ruser&gt;false&lt;/ruser&gt;
         &lt;src&gt;external&lt;/src&gt;
         &lt;src_port&gt;A53&lt;/src_port&gt;
         &lt;wuser&gt;false&lt;/wuser&gt;
     &lt;/connect&gt;
+    &lt;connect&gt;
+        &lt;aruser&gt;false&lt;/aruser&gt;
+        &lt;awuser&gt;false&lt;/awuser&gt;
+        &lt;buser&gt;false&lt;/buser&gt;
+        &lt;dest&gt;DMA350&lt;/dest&gt;
+        &lt;dest_port&gt;DMA350_s&lt;/dest_port&gt;
+        &lt;lock&gt;false&lt;/lock&gt;
+        &lt;out_reads&gt;32&lt;/out_reads&gt;
+        &lt;out_trans&gt;64&lt;/out_trans&gt;
+        &lt;out_writes&gt;32&lt;/out_writes&gt;
+        &lt;protocol&gt;axi4&lt;/protocol&gt;
+        &lt;ruser&gt;false&lt;/ruser&gt;
+        &lt;src&gt;external&lt;/src&gt;
+        &lt;src_port&gt;DMA350&lt;/src_port&gt;
+        &lt;wuser&gt;false&lt;/wuser&gt;
+    &lt;/connect&gt;
     &lt;connect&gt;
         &lt;aruser&gt;false&lt;/aruser&gt;
         &lt;awuser&gt;false&lt;/awuser&gt;
@@ -1863,6 +2333,22 @@
         &lt;src_port&gt;DEBUG&lt;/src_port&gt;
         &lt;wuser&gt;false&lt;/wuser&gt;
     &lt;/connect&gt;
+    &lt;connect&gt;
+        &lt;aruser&gt;false&lt;/aruser&gt;
+        &lt;awuser&gt;false&lt;/awuser&gt;
+        &lt;buser&gt;false&lt;/buser&gt;
+        &lt;dest&gt;external&lt;/dest&gt;
+        &lt;dest_port&gt;DMA_CTRL&lt;/dest_port&gt;
+        &lt;lock&gt;false&lt;/lock&gt;
+        &lt;out_reads&gt;1&lt;/out_reads&gt;
+        &lt;out_trans&gt;1&lt;/out_trans&gt;
+        &lt;out_writes&gt;1&lt;/out_writes&gt;
+        &lt;protocol&gt;apb4&lt;/protocol&gt;
+        &lt;ruser&gt;false&lt;/ruser&gt;
+        &lt;src&gt;apb_group0&lt;/src&gt;
+        &lt;src_port&gt;DMA_CTRL&lt;/src_port&gt;
+        &lt;wuser&gt;false&lt;/wuser&gt;
+    &lt;/connect&gt;
     &lt;connect&gt;
         &lt;dest&gt;ROM&lt;/dest&gt;
         &lt;dest_port&gt;ROM_s&lt;/dest_port&gt;
@@ -1900,9 +2386,20 @@
         &lt;dest&gt;bm1&lt;/dest&gt;
         &lt;dest_port&gt;axi_s_0&lt;/dest_port&gt;
         &lt;lock&gt;false&lt;/lock&gt;
-        &lt;out_reads&gt;4&lt;/out_reads&gt;
-        &lt;out_trans&gt;8&lt;/out_trans&gt;
-        &lt;out_writes&gt;4&lt;/out_writes&gt;
+        &lt;out_reads def=&quot;true&quot;&gt;32&lt;/out_reads&gt;
+        &lt;out_trans&gt;64&lt;/out_trans&gt;
+        &lt;out_writes def=&quot;true&quot;&gt;32&lt;/out_writes&gt;
+        &lt;protocol&gt;axi4&lt;/protocol&gt;
+        &lt;src&gt;DMA350&lt;/src&gt;
+        &lt;src_port&gt;DMA350_m&lt;/src_port&gt;
+    &lt;/connect&gt;
+    &lt;connect&gt;
+        &lt;dest&gt;bm1&lt;/dest&gt;
+        &lt;dest_port&gt;axi_s_1&lt;/dest_port&gt;
+        &lt;lock&gt;false&lt;/lock&gt;
+        &lt;out_reads def=&quot;true&quot;&gt;32&lt;/out_reads&gt;
+        &lt;out_trans&gt;64&lt;/out_trans&gt;
+        &lt;out_writes def=&quot;true&quot;&gt;32&lt;/out_writes&gt;
         &lt;protocol&gt;axi4&lt;/protocol&gt;
         &lt;src&gt;A53&lt;/src&gt;
         &lt;src_port&gt;A53_m&lt;/src_port&gt;
@@ -1977,18 +2474,34 @@
         &lt;link&gt;
             &lt;slave_if&gt;
                 &lt;name&gt;A53&lt;/name&gt;
+                &lt;master_if&gt;RAM&lt;/master_if&gt;
                 &lt;master_if&gt;ROM&lt;/master_if&gt;
+                &lt;master_if&gt;PERIPHERAL&lt;parent&gt;apb_group0&lt;/parent&gt;
+                &lt;/master_if&gt;
                 &lt;master_if&gt;FLASH&lt;/master_if&gt;
-                &lt;master_if&gt;RAM&lt;/master_if&gt;
                 &lt;master_if&gt;DRAM&lt;/master_if&gt;
                 &lt;master_if&gt;GIC&lt;/master_if&gt;
                 &lt;master_if&gt;apb_group0&lt;/master_if&gt;
-                &lt;master_if&gt;PERIPHERAL&lt;parent&gt;apb_group0&lt;/parent&gt;
-                &lt;/master_if&gt;
                 &lt;master_if&gt;FLASH_CTRL&lt;parent&gt;apb_group0&lt;/parent&gt;
                 &lt;/master_if&gt;
                 &lt;master_if&gt;DEBUG&lt;parent&gt;apb_group0&lt;/parent&gt;
                 &lt;/master_if&gt;
+                &lt;master_if&gt;DMA_CTRL&lt;parent&gt;apb_group0&lt;/parent&gt;
+                &lt;/master_if&gt;
+            &lt;/slave_if&gt;
+        &lt;/link&gt;
+        &lt;link&gt;
+            &lt;slave_if&gt;
+                &lt;name&gt;DMA350&lt;/name&gt;
+                &lt;master_if&gt;RAM&lt;/master_if&gt;
+                &lt;master_if&gt;ROM&lt;/master_if&gt;
+                &lt;master_if&gt;PERIPHERAL&lt;parent&gt;apb_group0&lt;/parent&gt;
+                &lt;/master_if&gt;
+                &lt;master_if&gt;FLASH&lt;/master_if&gt;
+                &lt;master_if&gt;DRAM&lt;/master_if&gt;
+                &lt;master_if&gt;apb_group0&lt;/master_if&gt;
+                &lt;master_if&gt;DEBUG&lt;parent&gt;apb_group0&lt;/parent&gt;
+                &lt;/master_if&gt;
             &lt;/slave_if&gt;
         &lt;/link&gt;
     &lt;/architecture&gt;