diff --git a/config/cfg_dma_ahb.yaml b/config/cfg_dma_ahb.yaml
index 99b33376d8e17321cad475c6b0d56c7330fca7e3..527f9ee27664bb332050471432c54873d386b5d2 100755
--- a/config/cfg_dma_ahb.yaml
+++ b/config/cfg_dma_ahb.yaml
@@ -87,8 +87,8 @@ CH_STREAM_MASK: 0x3
 #
 #     Valid values:
 #         [1,2,4,8,16,32,64]
-CH_0_FIFO_DEPTH: 2
-CH_1_FIFO_DEPTH: 2
+CH_0_FIFO_DEPTH: 32
+CH_1_FIFO_DEPTH: 32
 
 #
 # CH_EXT_FEAT_MASK: A bitmask for enabling the extended feature set for each channel.
diff --git a/config/cfg_xhb_axi_to_ahb.cfg b/config/cfg_xhb_axi_to_ahb.cfg
new file mode 100755
index 0000000000000000000000000000000000000000..3e111857daeeb518e72b2d2a61f9c1979d96435e
--- /dev/null
+++ b/config/cfg_xhb_axi_to_ahb.cfg
@@ -0,0 +1,123 @@
+#-----------------------------------------------------------------------------
+# 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 : Configuration file for XHB-500 AXI to AHB Bridge
+# -----------------------------------------------------------------------------
+
+# -----------------------------
+# User Configuration
+# -----------------------------
+
+
+
+#
+# COMPONENT: Name of the component to configure.
+#     Valid values:
+#         [xhb500_ahb_to_axi_bridge, xhb500_axi_to_ahb_bridge]
+#
+COMPONENT: xhb500_axi_to_ahb_bridge
+
+
+#
+# CONFIG_NAME: Name of the configuration.
+#     Each unifiqued element and top is suffixed with
+#     _${CONFIG_NAME}
+#
+CONFIG_NAME: sldma350
+
+
+#
+# ADDR_WIDTH: Address Bus width
+#     Valid values:
+#         [32]
+ADDR_WIDTH: 32
+
+#
+# DATA_WIDTH: Data Bus width
+#     Valid values:
+#         [32,64,128,256,512,1024]
+DATA_WIDTH: 32
+
+
+#
+# USER_AX_WIDTH: Address channel user signal width
+#     When set to 0, the signals are not not present on the generated RTL
+#     Valid values:
+#         0-256
+USER_AX_WIDTH: 0
+
+
+#
+# USER_W_WIDTH: Write channel user signal width
+#     When set to 0, the signals are not not present on the generated RTL
+#     Valid values:
+#         0-256
+USER_W_WIDTH: 0
+
+#
+# USER_R_WIDTH: Read channel user signal width
+#     When set to 0, the signals are not not present on the generated RTL
+#     Valid values:
+#         0-256
+USER_R_WIDTH: 0
+
+
+#
+# ID_WIDTH: AXI ID and HMASTER port width
+#     Valid values:
+#         1-32
+ID_WIDTH: 1
+
+
+#
+# REGISTER_x_CNTRL: Registers AHB address and control / read data signals
+#     Valid values:
+#         [ON,OFF]
+REGISTER_AHB_CNTRL: OFF
+REGISTER_AHB_RDATA: OFF
+
+
+# REGISTER_AXI_x: Adds register slice to AXI AW/AR/W/R/B channel
+#     Valid values:
+#         - BYPASS  : no register slice
+#         - FORWARD : registers valid and payload path
+#         - REVERSE : registers ready path
+#         - FULL    : registers both directions
+REGISTER_AXI_AW: BYPASS
+REGISTER_AXI_AR: BYPASS
+REGISTER_AXI_W:  BYPASS
+REGISTER_AXI_R:  BYPASS
+REGISTER_AXI_B:  BYPASS
+
+# LB_WIDTH: Width of the user loopback signals on AXI interface
+#     Valid values:
+#         - 0..8
+LB_WIDTH: 0
+
+#HWSTRB_ENABLE: Enables hwstrb output, disables awsparse input and vice-versa. Disabled ports are removed.
+#     Valid values:
+#         - OFF : Uses AWSPARSE input
+#         - ON  : Adds HWSTRB output
+HWSTRB_ENABLE: ON
+
+#
+# Qx_SYNC_EN: Add 2 DFF synchronizer on inputs of clock Q-channel
+#     Valid values:
+#         - OFF : no synchronizer
+#         - ON  : added synchronizer
+QCLK_SYNC_EN: ON
+
diff --git a/flist/dma350_ip.flist b/flist/dma350_ip.flist
index c94e2fa14096c287942de199b8f53664b2b680ae..0c41f9272066d2108c9325522ed2929064a0ddd9 100644
--- a/flist/dma350_ip.flist
+++ b/flist/dma350_ip.flist
@@ -18,6 +18,27 @@
 // =============    DMA-350 search path    =============
 +incdir+$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/
 
+$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/shared/verilog/ada_gen_regmap_sldma350_pkg.sv
+$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/shared/verilog/ada_apb_regmap_conv_sldma350.sv
+$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/shared/verilog/ada_reg_field_ro_ro_sldma350.sv
+$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/shared/verilog/ada_reg_field_rw_ro_sldma350.sv
+$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/shared/verilog/ada_reg_field_rw_w1c_sldma350.sv
+$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/shared/verilog/ada_reg_field_rw_w1s_sldma350.sv
+$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/shared/verilog/ada_reg_field_rw_rw_sldma350.sv
+$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/shared/verilog/ada_gen_coreif_dmach_sldma350_pkg.sv
+$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/shared/verilog/ada_gen_addrmap_dmach_sldma350.sv
+$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/shared/verilog/ada_interface_sldma350_pkg.sv
+$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/shared/verilog/ada_flop_en/verilog/ada_flop_en.sv
+$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/shared/verilog/ada_or_tree/verilog/ada_or_tree.sv
+$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/shared/verilog/ada_gen_regif_dmainfo_sldma350_pkg.sv
+$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/models/cells/generic/ada_arm_flop.sv
+$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/models/cells/generic/ada_arm_sync.sv
+$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/models/cells/generic/ada_arm_mux2.sv
+$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/models/cells/generic/ada_arm_or.sv
+$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/models/cells/generic/ada_arm_idbit_v1.sv
+$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/shared/verilog/ada_ecorevnum.sv
+$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/ada_top_sldma350/verilog/ada_top_sldma350.sv
+
 $(SOCLABS_SLDMA350_TECH_DIR)/src/logical/ada_biu_sldma350/verilog/ada_biu_sldma350.sv
 $(SOCLABS_SLDMA350_TECH_DIR)/src/logical/ada_biu_sldma350/verilog/ada_biu_read_switch_sldma350.sv
 $(SOCLABS_SLDMA350_TECH_DIR)/src/logical/ada_biu_sldma350/verilog/ada_biu_read_switch_wrapper_sldma350.sv
@@ -102,25 +123,4 @@ $(SOCLABS_SLDMA350_TECH_DIR)/src/logical/ada_ctrl_sldma350/verilog/ada_ctrl_sldm
 
 $(SOCLABS_SLDMA350_TECH_DIR)/src/logical/ada_qctrl_sldma350/verilog/ada_qctrl_sldma350.sv
 
-$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/shared/verilog/ada_gen_regmap_sldma350_pkg.sv
-$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/shared/verilog/ada_apb_regmap_conv_sldma350.sv
-$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/shared/verilog/ada_reg_field_ro_ro_sldma350.sv
-$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/shared/verilog/ada_reg_field_rw_ro_sldma350.sv
-$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/shared/verilog/ada_reg_field_rw_w1c_sldma350.sv
-$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/shared/verilog/ada_reg_field_rw_w1s_sldma350.sv
-$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/shared/verilog/ada_reg_field_rw_rw_sldma350.sv
-$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/shared/verilog/ada_gen_coreif_dmach_sldma350_pkg.sv
-$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/shared/verilog/ada_gen_addrmap_dmach_sldma350.sv
-$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/shared/verilog/ada_interface_sldma350_pkg.sv
-$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/shared/verilog/ada_flop_en/verilog/ada_flop_en.sv
-$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/shared/verilog/ada_or_tree/verilog/ada_or_tree.sv
-$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/shared/verilog/ada_gen_regif_dmainfo_sldma350_pkg.sv
-$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/models/cells/generic/ada_arm_flop.sv
-$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/models/cells/generic/ada_arm_sync.sv
-$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/models/cells/generic/ada_arm_mux2.sv
-$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/models/cells/generic/ada_arm_or.sv
-$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/models/cells/generic/ada_arm_idbit_v1.sv
-$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/shared/verilog/ada_ecorevnum.sv
-$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/ada_top_sldma350/verilog/ada_top_sldma350.sv
-
 $(SOCLABS_SLDMA350_TECH_DIR)/src/logical/ada_trigmtx_sldma350/verilog/ada_trigmtx_sldma350.sv
diff --git a/flist/sldma350.flist b/flist/sldma350.flist
new file mode 100644
index 0000000000000000000000000000000000000000..5f44cd02d2e0c7f84bd67635f7657317cf5b2ae6
--- /dev/null
+++ b/flist/sldma350.flist
@@ -0,0 +1,41 @@
+//-----------------------------------------------------------------------------
+// MegaSoC DMA-350 Filelist
+// A joint work commissioned on behalf of SoC Labs, under Arm Academic Access license.
+//
+// Contributors
+//
+// Daniel Newbrook (d.newbrook@soton.ac.uk)
+//
+// Copyright � 2021-3, SoC Labs (www.soclabs.org)
+//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
+// Abstract : Verilog Command File for Arm DMA-350
+//-----------------------------------------------------------------------------
+
+// ============= Verilog library extensions ===========
++libext+.v+.vlib
+
+-f $(SOCLABS_SLDMA350_TECH_DIR)/flist/dma350_ip.flist
+
+$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/models/cells/generic/xhb500_or.sv
+$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/models/cells/generic/xhb500_xor.sv
+$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/models/cells/generic/xhb500_flop.sv
+$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/models/cells/generic/xhb500_sync.sv
+$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/shared/verilog/xhb500_regd_slice/verilog/xhb500_bypass_regd_slice_empty.sv
+$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/shared/verilog/xhb500_regd_slice/verilog/xhb500_forward_regd_slice.sv
+$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/shared/verilog/xhb500_regd_slice/verilog/xhb500_forward_regd_slice_empty.sv
+$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/xhb500_axi_to_ahb_bridge_sldma350/verilog/xhb500_axi_to_ahb_bridge_sldma350_pkg.sv
+$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/xhb500_axi_to_ahb_bridge_sldma350/verilog/xhb500_axi_to_ahb_bridge_sldma350.sv
+$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/xhb500_axi_to_ahb_bridge_sldma350/verilog/xhb500_axi_to_ahb_bridge_sldma350_core.sv
+$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/xhb500_axi_to_ahb_bridge_sldma350/verilog/xhb500_axi_to_ahb_bridge_sldma350_core_xin.sv
+$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/xhb500_axi_to_ahb_bridge_sldma350/verilog/xhb500_axi_to_ahb_bridge_sldma350_core_h_xout.sv
+$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/xhb500_axi_to_ahb_bridge_sldma350/verilog/xhb500_axi_to_ahb_bridge_sldma350_xreg.sv
+$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/xhb500_axi_to_ahb_bridge_sldma350/verilog/xhb500_axi_to_ahb_bridge_sldma350_hreg.sv
+$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/xhb500_axi_to_ahb_bridge_sldma350/verilog/xhb500_axi_to_ahb_bridge_sldma350_respreg_r.sv
+$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/xhb500_axi_to_ahb_bridge_sldma350/verilog/xhb500_axi_to_ahb_bridge_sldma350_respreg_b.sv
+$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/xhb500_axi_to_ahb_bridge_sldma350/verilog/xhb500_axi_to_ahb_bridge_sldma350_lpi.sv
+$(SOCLABS_SLDMA350_TECH_DIR)/src/logical/xhb500_axi_to_ahb_bridge_sldma350/verilog/xhb500_axi_to_ahb_bridge_sldma350_strbgen.sv
+
+
+$(SOCLABS_SLDMA350_TECH_DIR)/wrapper/logical/sldma350_ahb.v
+
diff --git a/makefile b/makefile
index 1096f37e655951c78637377df88a4aba0173cfc5..bf231022035d1d8b0f67b38058fdb832006baeb9 100644
--- a/makefile
+++ b/makefile
@@ -41,6 +41,7 @@ config_dma_axi:
 	@$(ARM_IP_LIBRARY_PATH)/DMA-350/CG096-r0p0-00rel0/CG096-BU-50000-r0p0-00rel0/dma350/logical/generate --config ./config/cfg_dma_axi.yaml --output ./src/
 config_dma_ahb:
 	@$(ARM_IP_LIBRARY_PATH)/DMA-350/CG096-r0p0-00rel0/CG096-BU-50000-r0p0-00rel0/dma350/logical/generate --config ./config/cfg_dma_ahb.yaml --output ./src/
+	@$(ARM_IP_LIBRARY_PATH)/DMA-350/CG096-r0p0-00rel0/PL417-BU-50000-r0p1-00rel0/xhb500/logical/generate --config ./config/cfg_xhb_axi_to_ahb.cfg --output ./src/
 
 clean_ip:
 	@rm -rf ./src/*
\ No newline at end of file
diff --git a/wrapper/logical/sldma350_ahb.v b/wrapper/logical/sldma350_ahb.v
index 90317a37bc50ed789c22a4ed8d955f838971d917..23c705b456512d2870a15dd3ea22b1873cf80051 100644
--- a/wrapper/logical/sldma350_ahb.v
+++ b/wrapper/logical/sldma350_ahb.v
@@ -13,7 +13,7 @@
 module sldma350_ahb #(
     parameter    SYS_ADDR_W  = 32,
     parameter    SYS_DATA_W  = 32,
-    parameter    CFG_ADDR_W  = 12,  // Configuration Port Address Width
+    parameter    CFG_ADDR_W  = 13,  // Configuration Port Address Width
     parameter    CHANNEL_NUM = 2    // Number of DMA Channels
 
     )(
@@ -42,7 +42,8 @@ module sldma350_ahb #(
     input  wire   [CFG_ADDR_W-1:0] PADDR,       // APB address
     input  wire   [SYS_DATA_W-1:0] PWDATA,      // APB write data
     output wire   [SYS_DATA_W-1:0] PRDATA,      // APB read data
-    
+    output wire                    PREADY,
+    output wire                    PSLVERR,
     // DMA Request and Status Port
     input  wire  [CHANNEL_NUM-1:0] DMA_REQ,     // DMA transfer request
     output wire  [CHANNEL_NUM-1:0] DMA_DONE,    // DMA transfer done
@@ -50,139 +51,133 @@ module sldma350_ahb #(
 );
 
 
-wire                    SYS_HRESETn,
-wire                    DMAC_PCLKen,
-wire                    DMAC_ACLKen,
+wire                    SYS_HRESETn;
+wire                    DMAC_ACLKen;
 
 // Q Channel Signals
-wire                    DMAC_CLK_QREQN,
-wire                    DMAC_CLK_QACCEPTN,
-wire                    DMAC_CLK_QDENY,
-wire                    DMAC_CLK_QACTIVE,
+wire                    DMAC_CLK_QREQN;
+wire                    DMAC_CLK_QACCEPTN;
+wire                    DMAC_CLK_QDENY;
+wire                    DMAC_CLK_QACTIVE;
 
 // P Channel Signals
-wire                     DMAC_PREQ,
-wire  [3:0]              DMAC_PSTATE,
-wire                     DMAC_PACCEPT,
-wire                     DMAC_PDENY,
-wire [9:0]               DMAC_PACTIVE,
-wire                     DMAC_PWAKEUP,
-wire                     DMAC_PDEBUG,
-wire                     DMAC_PSEL,
-wire                     DMAC_PENABLE,
-wire  [2:0]              DMAC_PPROT,
-wire                     DMAC_PWRITE,
-wire  [12:0]             DMAC_PADDR,
-wire  [31:0]             DMAC_PWDATA,
-wire  [3:0]              DMAC_PSTRB,
-wire                     DMAC_PREADY,
-wire                     DMAC_PSLVERR,
-wire [31:0]              DMAC_PRDATA,
+wire                     DMAC_PREQ;
+wire  [3:0]              DMAC_PSTATE;
+wire                     DMAC_PACCEPT;
+wire                     DMAC_PDENY;
+wire [9:0]               DMAC_PACTIVE;
+wire                     DMAC_PWAKEUP;
+wire                     DMAC_PDEBUG;
 //  DMAC AXI Port
-wire                     DMAC_AWAKEUP,
-wire                     DMAC_AWVALID,
-wire [SYS_ADDR_W-1:0]    DMAC_AWADDR,
-wire [1:0]               DMAC_AWBURST,
-wire [7:0]               DMAC_AWLEN,
-wire [2:0]               DMAC_AWSIZE,
-wire [3:0]               DMAC_AWQOS,
-wire [2:0]               DMAC_AWPROT,
-wire                     DMAC_AWREADY,
-wire [3:0]               DMAC_AWCACHE,
-wire [3:0]               DMAC_AWINNER,
-wire [1:0]               DMAC_AWDOMAIN,
+wire                     DMAC_AWAKEUP;
+wire                     DMAC_AWVALID;
+wire [SYS_ADDR_W-1:0]    DMAC_AWADDR;
+wire [1:0]               DMAC_AWBURST;
+wire [7:0]               DMAC_AWLEN;
+wire [2:0]               DMAC_AWSIZE;
+wire [3:0]               DMAC_AWQOS;
+wire [2:0]               DMAC_AWPROT;
+wire                     DMAC_AWREADY;
+wire [3:0]               DMAC_AWCACHE;
+wire [3:0]               DMAC_AWINNER;
+wire [1:0]               DMAC_AWDOMAIN;
 
-wire                     DMAC_ARVALID,
-wire [SYS_ADDR_W-1:0]    DMAC_ARADDR,
-wire [1:0]               DMAC_ARBURST,
-wire [7:0]               DMAC_ARLEN,
-wire [2:0]               DMAC_ARSIZE,
-wire [3:0]               DMAC_ARQOS,
-wire [2:0]               DMAC_ARPROT,
-wire                     DMAC_ARREADY,
-wire [3:0]               DMAC_ARCACHE,
-wire [3:0]               DMAC_ARINNER,
-wire [1:0]               DMAC_ARDOMAIN,
-wire                     DMAC_ARCMDLINK,
+wire                     DMAC_ARVALID;
+wire [SYS_ADDR_W-1:0]    DMAC_ARADDR;
+wire [1:0]               DMAC_ARBURST;
+wire [7:0]               DMAC_ARLEN;
+wire [2:0]               DMAC_ARSIZE;
+wire [3:0]               DMAC_ARQOS;
+wire [2:0]               DMAC_ARPROT;
+wire                     DMAC_ARREADY;
+wire [3:0]               DMAC_ARCACHE;
+wire [3:0]               DMAC_ARINNER;
+wire [1:0]               DMAC_ARDOMAIN;
+wire                     DMAC_ARCMDLINK;
 
-wire                     DMAC_WVALID,
-wire                     DMAC_WLAST,
-wire [16-1:0]            DMAC_WSTRB,
-wire [SYS_DATA_W-1:0]    DMAC_WDATA,
-wire                     DMAC_WREADY,
-wire                     DMAC_RVALID,
-wire                     DMAC_RLAST,
-wire  [SYS_DATA_W-1:0]   DMAC_RDATA,
-wire  [2-1:0]            DMAC_RPOISON,
-wire  [1:0]              DMAC_RRESP,
-wire                     DMAC_RREADY,
+wire                     DMAC_WVALID;
+wire                     DMAC_WLAST;
+wire [4-1:0]             DMAC_WSTRB;
+wire [SYS_DATA_W-1:0]    DMAC_WDATA;
+wire                     DMAC_WREADY;
+wire                     DMAC_RVALID;
+wire                     DMAC_RLAST;
+wire  [SYS_DATA_W-1:0]   DMAC_RDATA;
+wire  [2-1:0]            DMAC_RPOISON;
+wire  [1:0]              DMAC_RRESP;
+wire                     DMAC_RREADY;
 
-wire                     DMAC_BVALID,
-wire  [1:0]              DMAC_BRESP,
-wire                     DMAC_BREADY,
+wire                     DMAC_BVALID;
+wire  [1:0]              DMAC_BRESP;
+wire                     DMAC_BREADY;
+wire                     DMAC_BID;
+wire                     DMAC_WID;
+wire                     DMAC_RID;
+wire                     DMAC_ARID;
+wire                     DMAC_AWID;
 
 // Trigger 0 in
-wire                     DMAC_TRIG_IN_0_REQ,
-wire  [1:0]              DMAC_TRIG_IN_0_REQ_TYPE,
-wire                     DMAC_TRIG_IN_0_ACK,
-wire [1:0]               DMAC_TRIG_IN_0_ACK_TYPE,
-wire                     DMAC_TRIG_IN_1_REQ,
-wire  [1:0]              DMAC_TRIG_IN_1_REQ_TYPE,
-wire                     DMAC_TRIG_IN_1_ACK,
-wire [1:0]               DMAC_TRIG_IN_1_ACK_TYPE,
-wire                     DMAC_TRIG_OUT_0_REQ,
-wire                     DMAC_TRIG_OUT_0_ACK,
-wire                     DMAC_TRIG_OUT_1_REQ,
-wire                     DMAC_TRIG_OUT_1_ACK,
-wire [2-1:0]             DMAC_IRQ_CHANNEL,
-wire                     DMAC_IRQ_COMB_NONSEC,
+wire                     DMAC_TRIG_IN_0_REQ;
+wire  [1:0]              DMAC_TRIG_IN_0_REQ_TYPE;
+wire                     DMAC_TRIG_IN_0_ACK;
+wire [1:0]               DMAC_TRIG_IN_0_ACK_TYPE;
+wire                     DMAC_TRIG_IN_1_REQ;
+wire  [1:0]              DMAC_TRIG_IN_1_REQ_TYPE;
+wire                     DMAC_TRIG_IN_1_ACK;
+wire [1:0]               DMAC_TRIG_IN_1_ACK_TYPE;
+wire                     DMAC_TRIG_OUT_0_REQ;
+wire                     DMAC_TRIG_OUT_0_ACK;
+wire                     DMAC_TRIG_OUT_1_REQ;
+wire                     DMAC_TRIG_OUT_1_ACK;
+wire [2-1:0]             DMAC_IRQ_CHANNEL;
+wire                     DMAC_IRQ_COMB_NONSEC;
 
 //  DMAC Channel 0 AXI stream out
-wire                     DMAC_STR_OUT_0_TVALID,
-wire                     DMAC_STR_OUT_0_TREADY,
-wire [SYS_DATA_W-1:0]    DMAC_STR_OUT_0_TDATA,
-wire [16-1:0]            DMAC_STR_OUT_0_TSTRB,
-wire                     DMAC_STR_OUT_0_TLAST,
+wire                     DMAC_STR_OUT_0_TVALID;
+wire                     DMAC_STR_OUT_0_TREADY;
+wire [SYS_DATA_W-1:0]    DMAC_STR_OUT_0_TDATA;
+wire [16-1:0]            DMAC_STR_OUT_0_TSTRB;
+wire                     DMAC_STR_OUT_0_TLAST;
 
 //  DMAC Channel 0 AXI Stream in
-wire                     DMAC_STR_IN_0_TVALID,
-wire                     DMAC_STR_IN_0_TREADY,
-wire [SYS_DATA_W-1:0]    DMAC_STR_IN_0_TDATA,
-wire [16-1:0]            DMAC_STR_IN_0_TSTRB,
-wire                     DMAC_STR_IN_0_TLAST,
-wire                     DMAC_STR_IN_0_FLUSH,
+wire                     DMAC_STR_IN_0_TVALID;
+wire                     DMAC_STR_IN_0_TREADY;
+wire [SYS_DATA_W-1:0]    DMAC_STR_IN_0_TDATA;
+wire [16-1:0]            DMAC_STR_IN_0_TSTRB;
+wire                     DMAC_STR_IN_0_TLAST;
+wire                     DMAC_STR_IN_0_FLUSH;
 
 //  DMAC Channel 1 AXI Stream out
-wire                     DMAC_STR_OUT_1_TVALID,
-wire                     DMAC_STR_OUT_1_TREADY,
-wire [SYS_DATA_W-1:0]    DMAC_STR_OUT_1_TDATA,
-wire [16-1:0]            DMAC_STR_OUT_1_TSTRB,
-wire                     DMAC_STR_OUT_1_TLAST,
+wire                     DMAC_STR_OUT_1_TVALID;
+wire                     DMAC_STR_OUT_1_TREADY;
+wire [SYS_DATA_W-1:0]    DMAC_STR_OUT_1_TDATA;
+wire [16-1:0]            DMAC_STR_OUT_1_TSTRB;
+wire                     DMAC_STR_OUT_1_TLAST;
 
 //  DMAC Channel 1 AXI Stream out
-wire                     DMAC_STR_IN_1_TVALID,
-wire                     DMAC_STR_IN_1_TREADY,
-wire [SYS_DATA_W-1:0]    DMAC_STR_IN_1_TDATA,
-wire [16-1:0]            DMAC_STR_IN_1_TSTRB,
-wire                     DMAC_STR_IN_1_TLAST,
-wire                     DMAC_STR_IN_1_FLUSH,
-wire                     DMAC_ALLCH_STOP_REQ_NONSEC,
-wire                     DMAC_ALLCH_STOP_ACK_NONSEC,
-wire                     DMAC_ALLCH_PAUSE_REQ_NONSEC,
-wire                     DMAC_ALLCH_PAUSE_ACK_NONSEC,
-wire [2-1:0]             DMAC_CH_ENABLED,
-wire [2-1:0]             DMAC_CH_ERR,
-wire [2-1:0]             DMAC_CH_STOPPED,
-wire [2-1:0]             DMAC_CH_PAUSED,
-wire [2-1:0]             DMAC_CH_PRIV,
+wire                     DMAC_STR_IN_1_TVALID;
+wire                     DMAC_STR_IN_1_TREADY;
+wire [SYS_DATA_W-1:0]    DMAC_STR_IN_1_TDATA;
+wire [16-1:0]            DMAC_STR_IN_1_TSTRB;
+wire                     DMAC_STR_IN_1_TLAST;
+wire                     DMAC_STR_IN_1_FLUSH;
+wire                     DMAC_ALLCH_STOP_REQ_NONSEC;
+wire                     DMAC_ALLCH_STOP_ACK_NONSEC;
+wire                     DMAC_ALLCH_PAUSE_REQ_NONSEC;
+wire                     DMAC_ALLCH_PAUSE_ACK_NONSEC;
+wire [2-1:0]             DMAC_CH_ENABLED;
+wire [2-1:0]             DMAC_CH_ERR;
+wire [2-1:0]             DMAC_CH_STOPPED;
+wire [2-1:0]             DMAC_CH_PAUSED;
+wire [2-1:0]             DMAC_CH_PRIV;
 
-wire                     DMAC_HALT_REQ,
-wire                     DMAC_RESTART_REQ,
-wire                     DMAC_HALTED,
-wire                     DMAC_BOOT_EN,
-wire  [32-1:2]           DMAC_BOOT_ADDR,
-wire  [ 7:0]             DMAC_BOOT_MEMATTR,
-wire  [ 1:0]             DMAC_BOOT_SHAREATTR
+wire                     DMAC_HALT_REQ;
+wire                     DMAC_RESTART_REQ;
+wire                     DMAC_HALTED;
+wire                     DMAC_BOOT_EN;
+wire  [32-1:2]           DMAC_BOOT_ADDR;
+wire  [ 7:0]             DMAC_BOOT_MEMATTR;
+wire  [ 1:0]             DMAC_BOOT_SHAREATTR;
 
 // -------------------------------
 // DMA Controller Instantiation
@@ -191,38 +186,38 @@ ada_top_sldma350 u_dmac_0(
     // Clock and Reset signals
     .clk(HCLK),
     .resetn(HRESETn),
-    .aclken_m0(DMAC_ACLKen),
+    .aclken_m0(1'b1),
     .pclken(PCLKEN),
     // Q Channel signals
-    .clk_qreqn(DMAC_CLK_QREQN),
+    .clk_qreqn(1'b1),
     .clk_qacceptn(DMAC_CLK_QACCEPTN),
     .clk_qdeny(DMAC_CLK_QDENY),
     .clk_qactive(DMAC_CLK_QACTIVE),
     // P Channel Signals
-    .preq(DMAC_PREQ),
-    .pstate(DMAC_PSTATE),
+    .preq(1'b0),
+    .pstate(4'b1000),
     .paccept(DMAC_PACCEPT),
     .pdeny(DMAC_PDENY),
     .pactive(DMAC_PACTIVE),
 
-    .pwakeup(DMAC_PWAKEUP),
-    .pdebug(DMAC_PDEBUG),
+    .pwakeup(1'b1),
+    .pdebug(1'b0),
     .psel(PSEL),
     .penable(PEN),
-    .pprot(DMAC_PPROT),
+    .pprot(3'b100),
     .pwrite(PWRITE),
     .paddr(PADDR),
     .pwdata(PWDATA),
-    .pstrb(DMAC_PSTRB),
-    .pready(DMAC_PREADY),
-    .pslverr(DMAC_PSLVERR),
+    .pstrb(4'b1111),
+    .pready(PREADY),
+    .pslverr(PSLVERR),
     .prdata(PRDATA),
     // AXI Write Channel Signals
     .awakeup_m0(DMAC_AWAKEUP),
     .awvalid_m0(DMAC_AWVALID),
     .awaddr_m0(DMAC_AWADDR),
     .awburst_m0(DMAC_AWBURST),
-    .awid_m0(),
+    .awid_m0(DMAC_AWID),
     .awlen_m0(DMAC_AWLEN),
     .awsize_m0(DMAC_AWSIZE),
     .awqos_m0(DMAC_AWQOS),
@@ -235,7 +230,7 @@ ada_top_sldma350 u_dmac_0(
     .arvalid_m0(DMAC_ARVALID),
     .araddr_m0(DMAC_ARADDR),
     .arburst_m0(DMAC_ARBURST),
-    .arid_m0(),
+    .arid_m0(DMAC_ARID),
     .arlen_m0(DMAC_ARLEN),
     .arsize_m0(DMAC_ARSIZE),
     .arqos_m0(DMAC_ARQOS),
@@ -253,15 +248,15 @@ ada_top_sldma350 u_dmac_0(
     .wready_m0(DMAC_WREADY),
     // AXI Read Data Signals
     .rvalid_m0(DMAC_RVALID),
-    .rid_m0(),
+    .rid_m0(DMAC_RID),
     .rlast_m0(DMAC_RLAST),
     .rdata_m0(DMAC_RDATA),
-    .rpoison_m0(DMAC_RPOISON),
+    .rpoison_m0(1'b0),
     .rresp_m0(DMAC_RRESP),
     .rready_m0(DMAC_RREADY),
     // AXI Write response signals
     .bvalid_m0(DMAC_BVALID),
-    .bid_m0(),
+    .bid_m0(DMAC_BID),
     .bresp_m0(DMAC_BRESP),
     .bready_m0(DMAC_BREADY),
     // Trigger 0 in
@@ -310,114 +305,130 @@ ada_top_sldma350 u_dmac_0(
     .str_in_1_tlast(DMAC_STR_IN_1_TLAST),
     .str_in_1_flush(DMAC_STR_IN_1_FLUSH),
 
-    .allch_stop_req_nonsec(DMAC_ALLCH_STOP_REQ_NONSEC),
+    .allch_stop_req_nonsec(1'b0),
     .allch_stop_ack_nonsec(DMAC_ALLCH_STOP_ACK_NONSEC),
-    .allch_pause_req_nonsec(DMAC_ALLCH_PAUSE_REQ_NONSEC),
+    .allch_pause_req_nonsec(1'b0),
     .allch_pause_ack_nonsec(DMAC_ALLCH_PAUSE_ACK_NONSEC),
     .ch_enabled(DMAC_CH_ENABLED),
     .ch_err(DMAC_CH_ERR),
     .ch_stopped(DMAC_CH_STOPPED),
     .ch_paused(DMAC_CH_PAUSED),
     .ch_priv(DMAC_CH_PRIV),
-    .halt_req(DMAC_HALT_REQ),
-    .restart_req(DMAC_RESTART_REQ),
+    .halt_req(1'b0),
+    .restart_req(1'b0),
     .halted(DMAC_HALTED),
-    .boot_en(DMAC_BOOT_EN),
+    .boot_en(1'b0),
     .boot_addr(DMAC_BOOT_ADDR),
     .boot_memattr(DMAC_BOOT_MEMATTR),
     .boot_shareattr(DMAC_BOOT_SHAREATTR)
 );
 
-xhb400 #(.DATA_WIDTH(SYS_DATA_W))
+wire    HTRANS_int;
+wire    HNONSEC_int;
+
+assign HTRANS = HNONSEC_int ? 2'b10 : HTRANS_int; 
+
+xhb500_axi_to_ahb_bridge_sldma350 u_xhb
 (
     //-----------------------------------------------------------------------------
     // Clock and Reset
     //-----------------------------------------------------------------------------
 
-    .CLK(HCLK),
-    .nSYSRESET(HRESETn),
+    .clk(HCLK),
+    .resetn(HRESETn),
+    .clk_qactive(),
+    .clk_qreqn(1'b1),
+    .clk_qacceptn(),
+    .clk_qdeny(),
+    .pwr_qactive(),
+    .pwr_qreqn(1'b1),
+    .pwr_qacceptn(),
+    .pwr_qdeny(),
     //-----------------------------------------------------------------------------
     // AXI Master Interface
     //-----------------------------------------------------------------------------
 
     // Write Address Channel signals
-    .AWADDR(DMAC_AWADDR),
-    .AWBURST(DMAC_AWBURST),
-    .AWID(),
-    .AWLEN(DMAC_AWLEN),
-    .AWSIZE(DMAC_AWSIZE),
-    .AWLOCK(),
-    .AWPROT(DMAC_AWPROT),
-    .AWCACHE(DMAC_AWCACHE),
-    .AWUSER(),
-    .AWSPARSE(),
-    .AWVALID(DMAC_AWVALID),
-    .AWREADY(DMAC_AWREADY),
+    .awvalid(DMAC_AWVALID),
+    .awready(DMAC_AWREADY),
+    .awaddr(DMAC_AWADDR),
+    .awburst(DMAC_AWBURST),
+    .awid(DMAC_AWID),
+    .awlen(DMAC_AWLEN),
+    .awsize(DMAC_AWSIZE),
+    .awlock(1'b0),
+    .awprot(DMAC_AWPROT),
+    .awcache(DMAC_AWCACHE),
   
 // Read Address Channel signals  
-    .ARADDR(DMAC_ARADDR),
-    .ARBURST(DMAC_ARBURST),
-    .ARID(),
-    .ARLEN(DMAC_ARLEN),
-    .ARSIZE(DMAC_ARSIZE),
-    .ARLOCK(), 
-    .ARPROT(DMAC_ARPROT),
-    .ARCACHE(DMAC_ARCACHE),
-    .ARUSER(),
-    .ARVALID(DMAC_ARVALID),
-    .ARREADY(DMAC_ARREADY),
+    .arvalid(DMAC_ARVALID),
+    .arready(DMAC_ARREADY),
+    .araddr(DMAC_ARADDR),
+    .arburst(DMAC_ARBURST),
+    .arid(DMAC_ARID),
+    .arlen(DMAC_ARLEN),
+    .arsize(DMAC_ARSIZE),
+    .arlock(1'b0), 
+    .arprot(DMAC_ARPROT),
+    .arcache(DMAC_ARCACHE),
   
 // Write Data Channel signals   
-    .WLAST(DMAC_WLAST),
-    .WSTRB(DMAC_WSTRB),
-    .WDATA(DMAC_WDATA),
-    .WUSER(),
-    .WVALID(DMAC_WVALID),
-    .WREADY(DMAC_WREADY),
+    .wvalid(DMAC_WVALID),
+    .wready(DMAC_WREADY),
+    .wlast(DMAC_WLAST),
+    .wstrb(DMAC_WSTRB),
+    .wdata(DMAC_WDATA),
   
 // Read Data Channel signals 
-    .RREADY(DMAC_RREADY),   
-    .RVALID(DMAC_RVALID),
-    .RID(),
-    .RLAST(DMAC_RLAST),
-    .RDATA(DMAC_RDATA),
-    .RUSER(),
-    .RRESP(DMAC_RRESP),
+    .rvalid(DMAC_RVALID),
+    .rready(DMAC_RREADY),   
+    .rid(DMAC_RID),
+    .rlast(DMAC_RLAST),
+    .rdata(DMAC_RDATA),
+    .rresp(DMAC_RRESP),
   
 // Write Response Channel signals 
-    .BREADY(DMAC_BREADY),   
-    .BVALID(DMAC_BVALID),
-    .BID(),
-    .BRESP(DMAC_BRESP),
-  
+    .bready(DMAC_BREADY),   
+    .bvalid(DMAC_BVALID),
+    .bid(DMAC_BID),
+    .bresp(DMAC_BRESP),
   
+    .ardomain(DMAC_ARDOMAIN),
+    .awdomain(DMAC_AWDOMAIN),
+    .awakeup(DMAC_AWAKEUP),
+    .awnsaid(4'b0000),
+    .arnsaid(4'b0000),
+    .awqos(DMAC_AWQOS),
+    .arqos(DMAC_ARQOS),
+    .awregion(4'b0000),
+    .arregion(4'b0000),
 //-----------------------------------------------------------------------------
 // AHB-Lite Slave Interface
 //-----------------------------------------------------------------------------
 
 // AHB-Lite Master signals
-    .HTRANS(HTRANS),
-    .HBURST(HBURST),
-    .HADDR(HADDR),
-    .HWRITE(HWRITE),
-    .HSIZE(HSIZE),
-    .HWDATA(HWDATA),
-    .HPROT(HPROT),
-    .HMASTLOCK(HMASTLOCK),
+    .hnonsec(HNONSEC_int),
+    .haddr(HADDR),
+    .htrans(HTRANS_int),
+    .hsize(HSIZE),
+    .hwrite(HWRITE),
+    .hprot(HPROT),
+    .hburst(HBURST),
+    .hmastlock(HMASTLOCK),
+    .hwdata(HWDATA),
+    .hexcl(),
   
 // AHB-Lite Slave Response signals  
-    .HREADY(HREADY),
-    .HRDATA(HRDATA),
-    .HRESP(HRESP),
-  
-// Non-standard Exclusive Access signals   
-    .EXREQ,
-    .EXRESP,
+    .hrdata(HRDATA),
+    .hready(HREADY),
+    .hresp(HRESP),
+    .hexokay(1'b0),
 
 // Sideband AHB USER signals
-    .HAUSER,
-    .HWUSER,
-    .HRUSER
+    .hwstrb(),
+    .hqos(),
+    .hregion(),
+    .hnsaid()
 );
 
 endmodule