diff --git a/verilog/rtl/lib/wb_crossbar.v b/verilog/rtl/lib/wb_crossbar.v
index 9eb8f29..8ecd58c 100644
--- a/verilog/rtl/lib/wb_crossbar.v
+++ b/verilog/rtl/lib/wb_crossbar.v
@@ -1,12 +1,12 @@
 //////////////////////////////////////////////////////////////////////
 ////                                                              ////
-////  OMS 8051 cores common library Module                        ////
+////  yifive common library Module                                ////
 ////                                                              ////
-////  This file is part of the OMS 8051 cores project             ////
-////  http://www.opencores.org/cores/oms8051mini/                 ////
+////  This file is part of the yifive cores project               ////
+////  http://www.opencores.org/cores/yifive/                      ////
 ////                                                              ////
 ////  Description                                                 ////
-////  OMS 8051 definitions.                                       ////
+////     This module  does the WBbone crossbar network            ////
 ////                                                              ////
 ////  To Do:                                                      ////
 ////    nothing                                                   ////
@@ -15,12 +15,10 @@
 ////      - Dinesh Annayya, dinesha@opencores.org                 ////
 ////                                                              ////
 //////////////////////////////////////////////////////////////////////
-////  Revision : Nov 26, 2016                                    
-////      v-0.0 - Dinesh.A, Nov 26, 2016
-////          1. Initial Version
-////      v-0.1 - Dinesh.A, Jan 19, 2017
-////          1. Lint warning fixes, Seperated resetable and non 
-//               resetable logic                        
+////  Revision :                                                  ////
+////     v0:    Nov 26, 2016, Dinesh A                            ////
+////            This files copied from my open core               ////
+////             turbo8051 project                                ////
 //////////////////////////////////////////////////////////////////////
 ////                                                              ////
 //// Copyright (C) 2000 Authors and OPENCORES.ORG                 ////
diff --git a/verilog/rtl/lib/wb_interface.v b/verilog/rtl/lib/wb_interface.v
index aae1695..f6c05f5 100644
--- a/verilog/rtl/lib/wb_interface.v
+++ b/verilog/rtl/lib/wb_interface.v
@@ -1,12 +1,12 @@
 //////////////////////////////////////////////////////////////////////
 ////                                                              ////
-////  OMS 8051 cores common library Module                        ////
+////  yifive common library Module                                ////
 ////                                                              ////
-////  This file is part of the OMS 8051 cores project             ////
-////  http://www.opencores.org/cores/oms8051mini/                 ////
+////  This file is part of the yifive cores project               ////
+////  http://www.opencores.org/cores/yifive/                      ////
 ////                                                              ////
-////  Description                                                 ////
-////  OMS 8051 definitions.                                       ////
+////  Description:                                                ////
+////     This module does the DMA to westboone I/f                ////
 ////                                                              ////
 ////  To Do:                                                      ////
 ////    nothing                                                   ////
@@ -14,7 +14,10 @@
 ////  Author(s):                                                  ////
 ////      - Dinesh Annayya, dinesha@opencores.org                 ////
 ////                                                              ////
-////  Revision : Nov 26, 2016                                     //// 
+////  Revision :                                                  ////
+////     v0:    Nov 26, 2016, Dinesh A                            ////
+////            This files copied from my open core               ////
+////             turbo8051 project                                ////
 ////                                                              ////
 //////////////////////////////////////////////////////////////////////
 ////                                                              ////
diff --git a/verilog/rtl/syntacore_scr1/src/top/scr1_top_wb.sv b/verilog/rtl/syntacore_scr1/src/top/scr1_top_wb.sv
new file mode 100644
index 0000000..0cf1c09
--- /dev/null
+++ b/verilog/rtl/syntacore_scr1/src/top/scr1_top_wb.sv
@@ -0,0 +1,561 @@
+//////////////////////////////////////////////////////////////////////
+////                                                              ////
+////  Syntacore SCR1 interface map to westbone                    ////
+////                                                              ////
+////  This file is part of the  yifive project                    ////
+////  http://www.opencores.org/cores/yifive/                      ////
+////                                                              ////
+////  Description                                                 ////
+////   This module does the westbone interface to syntacore/scr1  ////
+////                                                              ////
+////  To Do:                                                      ////
+////    nothing                                                   ////
+////                                                              ////
+////  Author(s):                                                  ////
+////      - Dinesh Annayya, dinesha@opencores.org                 ////
+////  Initial Author: syntacore
+////      -  https://github.com/syntacore/scr1
+////                                                              ////
+//////////////////////////////////////////////////////////////////////
+////  Revision : 06-June- 2021                                    ////
+////      v-0.0 - Dinesh.A, June 06, 2021                         ////
+////          1. Initial Version picked from                      ////
+////             https://github.com/syntacore/scr1                ////
+////          2. Added westone i/f towards instruction            ////
+////             and data memory                                  ////
+//////////////////////////////////////////////////////////////////////
+////                                                              ////
+//// Copyright (C) 2000 Authors and OPENCORES.ORG                 ////
+////                                                              ////
+//// This source file may be used and distributed without         ////
+//// restriction provided that this copyright statement is not    ////
+//// removed from the file and that any derivative work contains  ////
+//// the original copyright notice and the associated disclaimer. ////
+////                                                              ////
+//// This source file is free software; you can redistribute it   ////
+//// and/or modify it under the terms of the GNU Lesser General   ////
+//// Public License as published by the Free Software Foundation; ////
+//// either version 2.1 of the License, or (at your option) any   ////
+//// later version.                                               ////
+////                                                              ////
+//// This source is distributed in the hope that it will be       ////
+//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////
+//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////
+//// PURPOSE.  See the GNU Lesser General Public License for more ////
+//// details.                                                     ////
+////                                                              ////
+//// You should have received a copy of the GNU Lesser General    ////
+//// Public License along with this source; if not, download it   ////
+//// from http://www.opencores.org/lgpl.shtml                     ////
+////                                                              ////
+//////////////////////////////////////////////////////////////////////
+
+
+`include "scr1_arch_description.svh"
+`include "scr1_memif.svh"
+`include "scr1_ahb.svh"
+`ifdef SCR1_IPIC_EN
+`include "scr1_ipic.svh"
+`endif // SCR1_IPIC_EN
+
+`ifdef SCR1_TCM_EN
+ `define SCR1_IMEM_ROUTER_EN
+`endif // SCR1_TCM_EN
+
+module scr1_top_wb (
+    // Control
+    input   logic                                   pwrup_rst_n,            // Power-Up Reset
+    input   logic                                   rst_n,                  // Regular Reset signal
+    input   logic                                   cpu_rst_n,              // CPU Reset (Core Reset)
+    input   logic                                   test_mode,              // Test mode
+    input   logic                                   test_rst_n,             // Test mode's reset
+    input   logic                                   clk,                    // System clock
+    input   logic                                   rtc_clk,                // Real-time clock
+`ifdef SCR1_DBG_EN
+    output  logic                                   sys_rst_n_o,            // External System Reset output
+                                                                            //   (for the processor cluster's components or
+                                                                            //    external SOC (could be useful in small
+                                                                            //    SCR-core-centric SOCs))
+    output  logic                                   sys_rdc_qlfy_o,         // System-to-External SOC Reset Domain Crossing Qualifier
+`endif // SCR1_DBG_EN
+
+    // Fuses
+    input   logic [`SCR1_XLEN-1:0]                  fuse_mhartid,           // Hart ID
+`ifdef SCR1_DBG_EN
+    input   logic [31:0]                            fuse_idcode,            // TAPC IDCODE
+`endif // SCR1_DBG_EN
+
+    // IRQ
+`ifdef SCR1_IPIC_EN
+    input   logic [SCR1_IRQ_LINES_NUM-1:0]          irq_lines,              // IRQ lines to IPIC
+`else // SCR1_IPIC_EN
+    input   logic                                   ext_irq,                // External IRQ input
+`endif // SCR1_IPIC_EN
+    input   logic                                   soft_irq,               // Software IRQ input
+
+`ifdef SCR1_DBG_EN
+    // -- JTAG I/F
+    input   logic                                   trst_n,
+    input   logic                                   tck,
+    input   logic                                   tms,
+    input   logic                                   tdi,
+    output  logic                                   tdo,
+    output  logic                                   tdo_en,
+`endif // SCR1_DBG_EN
+
+    // Instruction Memory Interface
+    output  logic [3:0]                             imem_hprot,
+    output  logic [2:0]                             imem_hburst,
+    output  logic [2:0]                             imem_hsize,
+    output  logic [1:0]                             imem_htrans,
+    output  logic                                   imem_hmastlock,
+    output  logic [SCR1_AHB_WIDTH-1:0]              imem_haddr,
+    input   logic                                   imem_hready,
+    input   logic [SCR1_AHB_WIDTH-1:0]              imem_hrdata,
+    input   logic                                   imem_hresp,
+
+    // Data Memory Interface
+    output  logic [3:0]                             dmem_hprot,
+    output  logic [2:0]                             dmem_hburst,
+    output  logic [2:0]                             dmem_hsize,
+    output  logic [1:0]                             dmem_htrans,
+    output  logic                                   dmem_hmastlock,
+    output  logic [SCR1_AHB_WIDTH-1:0]              dmem_haddr,
+    output  logic                                   dmem_hwrite,
+    output  logic [SCR1_AHB_WIDTH-1:0]              dmem_hwdata,
+    input   logic                                   dmem_hready,
+    input   logic [SCR1_AHB_WIDTH-1:0]              dmem_hrdata,
+    input   logic                                   dmem_hresp
+);
+
+//-------------------------------------------------------------------------------
+// Local parameters
+//-------------------------------------------------------------------------------
+localparam int unsigned SCR1_CLUSTER_TOP_RST_SYNC_STAGES_NUM            = 2;
+
+//-------------------------------------------------------------------------------
+// Local signal declaration
+//-------------------------------------------------------------------------------
+// Reset logic
+logic                                               pwrup_rst_n_sync;
+logic                                               rst_n_sync;
+logic                                               cpu_rst_n_sync;
+logic                                               core_rst_n_local;
+`ifdef SCR1_DBG_EN
+logic                                               tapc_trst_n;
+`endif // SCR1_DBG_EN
+
+// Instruction memory interface from core to router
+logic                                               core_imem_req_ack;
+logic                                               core_imem_req;
+type_scr1_mem_cmd_e                                 core_imem_cmd;
+logic [`SCR1_IMEM_AWIDTH-1:0]                       core_imem_addr;
+logic [`SCR1_IMEM_DWIDTH-1:0]                       core_imem_rdata;
+type_scr1_mem_resp_e                                core_imem_resp;
+
+// Data memory interface from core to router
+logic                                               core_dmem_req_ack;
+logic                                               core_dmem_req;
+type_scr1_mem_cmd_e                                 core_dmem_cmd;
+type_scr1_mem_width_e                               core_dmem_width;
+logic [`SCR1_DMEM_AWIDTH-1:0]                       core_dmem_addr;
+logic [`SCR1_DMEM_DWIDTH-1:0]                       core_dmem_wdata;
+logic [`SCR1_DMEM_DWIDTH-1:0]                       core_dmem_rdata;
+type_scr1_mem_resp_e                                core_dmem_resp;
+
+// Instruction memory interface from router to AHB bridge
+logic                                               ahb_imem_req_ack;
+logic                                               ahb_imem_req;
+type_scr1_mem_cmd_e                                 ahb_imem_cmd;
+logic [`SCR1_IMEM_AWIDTH-1:0]                       ahb_imem_addr;
+logic [`SCR1_IMEM_DWIDTH-1:0]                       ahb_imem_rdata;
+type_scr1_mem_resp_e                                ahb_imem_resp;
+
+// Data memory interface from router to AHB bridge
+logic                                               ahb_dmem_req_ack;
+logic                                               ahb_dmem_req;
+type_scr1_mem_cmd_e                                 ahb_dmem_cmd;
+type_scr1_mem_width_e                               ahb_dmem_width;
+logic [`SCR1_DMEM_AWIDTH-1:0]                       ahb_dmem_addr;
+logic [`SCR1_DMEM_DWIDTH-1:0]                       ahb_dmem_wdata;
+logic [`SCR1_DMEM_DWIDTH-1:0]                       ahb_dmem_rdata;
+type_scr1_mem_resp_e                                ahb_dmem_resp;
+
+`ifdef SCR1_TCM_EN
+// Instruction memory interface from router to TCM
+logic                                               tcm_imem_req_ack;
+logic                                               tcm_imem_req;
+type_scr1_mem_cmd_e                                 tcm_imem_cmd;
+logic [`SCR1_IMEM_AWIDTH-1:0]                       tcm_imem_addr;
+logic [`SCR1_IMEM_DWIDTH-1:0]                       tcm_imem_rdata;
+type_scr1_mem_resp_e                                tcm_imem_resp;
+
+// Data memory interface from router to TCM
+logic                                               tcm_dmem_req_ack;
+logic                                               tcm_dmem_req;
+type_scr1_mem_cmd_e                                 tcm_dmem_cmd;
+type_scr1_mem_width_e                               tcm_dmem_width;
+logic [`SCR1_DMEM_AWIDTH-1:0]                       tcm_dmem_addr;
+logic [`SCR1_DMEM_DWIDTH-1:0]                       tcm_dmem_wdata;
+logic [`SCR1_DMEM_DWIDTH-1:0]                       tcm_dmem_rdata;
+type_scr1_mem_resp_e                                tcm_dmem_resp;
+`endif // SCR1_TCM_EN
+
+// Data memory interface from router to memory-mapped timer
+logic                                               timer_dmem_req_ack;
+logic                                               timer_dmem_req;
+type_scr1_mem_cmd_e                                 timer_dmem_cmd;
+type_scr1_mem_width_e                               timer_dmem_width;
+logic [`SCR1_DMEM_AWIDTH-1:0]                       timer_dmem_addr;
+logic [`SCR1_DMEM_DWIDTH-1:0]                       timer_dmem_wdata;
+logic [`SCR1_DMEM_DWIDTH-1:0]                       timer_dmem_rdata;
+type_scr1_mem_resp_e                                timer_dmem_resp;
+
+logic                                               timer_irq;
+logic [63:0]                                        timer_val;
+
+
+//-------------------------------------------------------------------------------
+// Reset logic
+//-------------------------------------------------------------------------------
+// Power-Up Reset synchronizer
+scr1_reset_sync_cell #(
+    .STAGES_AMOUNT       (SCR1_CLUSTER_TOP_RST_SYNC_STAGES_NUM)
+) i_pwrup_rstn_reset_sync (
+    .rst_n          (pwrup_rst_n     ),
+    .clk            (clk             ),
+    .test_rst_n     (test_rst_n      ),
+    .test_mode      (test_mode       ),
+    .rst_n_in       (1'b1            ),
+    .rst_n_out      (pwrup_rst_n_sync)
+);
+
+// Regular Reset synchronizer
+scr1_reset_sync_cell #(
+    .STAGES_AMOUNT       (SCR1_CLUSTER_TOP_RST_SYNC_STAGES_NUM)
+) i_rstn_reset_sync (
+    .rst_n          (pwrup_rst_n     ),
+    .clk            (clk             ),
+    .test_rst_n     (test_rst_n      ),
+    .test_mode      (test_mode       ),
+    .rst_n_in       (rst_n           ),
+    .rst_n_out      (rst_n_sync      )
+);
+
+// CPU Reset synchronizer
+scr1_reset_sync_cell #(
+    .STAGES_AMOUNT       (SCR1_CLUSTER_TOP_RST_SYNC_STAGES_NUM)
+) i_cpu_rstn_reset_sync (
+    .rst_n          (pwrup_rst_n     ),
+    .clk            (clk             ),
+    .test_rst_n     (test_rst_n      ),
+    .test_mode      (test_mode       ),
+    .rst_n_in       (cpu_rst_n       ),
+    .rst_n_out      (cpu_rst_n_sync  )
+);
+
+`ifdef SCR1_DBG_EN
+// TAPC Reset
+scr1_reset_and2_cell i_tapc_rstn_and2_cell (
+    .rst_n_in       ({trst_n, pwrup_rst_n}),
+    .test_rst_n     (test_rst_n      ),
+    .test_mode      (test_mode       ),
+    .rst_n_out      (tapc_trst_n     )
+);
+`endif // SCR1_DBG_EN
+
+//-------------------------------------------------------------------------------
+// SCR1 core instance
+//-------------------------------------------------------------------------------
+scr1_core_top i_core_top (
+    // Common
+    .pwrup_rst_n                (pwrup_rst_n_sync ),
+    .rst_n                      (rst_n_sync       ),
+    .cpu_rst_n                  (cpu_rst_n_sync   ),
+    .test_mode                  (test_mode        ),
+    .test_rst_n                 (test_rst_n       ),
+    .clk                        (clk              ),
+    .core_rst_n_o               (core_rst_n_local ),
+    .core_rdc_qlfy_o            (                 ),
+`ifdef SCR1_DBG_EN
+    .sys_rst_n_o                (sys_rst_n_o      ),
+    .sys_rdc_qlfy_o             (sys_rdc_qlfy_o   ),
+`endif // SCR1_DBG_EN
+
+    // Fuses
+    .core_fuse_mhartid_i        (fuse_mhartid     ),
+`ifdef SCR1_DBG_EN
+    .tapc_fuse_idcode_i         (fuse_idcode      ),
+`endif // SCR1_DBG_EN
+
+    // IRQ
+`ifdef SCR1_IPIC_EN
+    .core_irq_lines_i           (irq_lines        ),
+`else // SCR1_IPIC_EN
+    .core_irq_ext_i             (ext_irq          ),
+`endif // SCR1_IPIC_EN
+    .core_irq_soft_i            (soft_irq         ),
+    .core_irq_mtimer_i          (timer_irq        ),
+
+    // Memory-mapped external timer
+    .core_mtimer_val_i          (timer_val        ),
+
+`ifdef SCR1_DBG_EN
+    // Debug interface
+    .tapc_trst_n                (tapc_trst_n      ),
+    .tapc_tck                   (tck              ),
+    .tapc_tms                   (tms              ),
+    .tapc_tdi                   (tdi              ),
+    .tapc_tdo                   (tdo              ),
+    .tapc_tdo_en                (tdo_en           ),
+`endif // SCR1_DBG_EN
+
+    // Instruction memory interface
+    .imem2core_req_ack_i        (core_imem_req_ack),
+    .core2imem_req_o            (core_imem_req    ),
+    .core2imem_cmd_o            (core_imem_cmd    ),
+    .core2imem_addr_o           (core_imem_addr   ),
+    .imem2core_rdata_i          (core_imem_rdata  ),
+    .imem2core_resp_i           (core_imem_resp   ),
+
+    // Data memory interface
+    .dmem2core_req_ack_i        (core_dmem_req_ack),
+    .core2dmem_req_o            (core_dmem_req    ),
+    .core2dmem_cmd_o            (core_dmem_cmd    ),
+    .core2dmem_width_o          (core_dmem_width  ),
+    .core2dmem_addr_o           (core_dmem_addr   ),
+    .core2dmem_wdata_o          (core_dmem_wdata  ),
+    .dmem2core_rdata_i          (core_dmem_rdata  ),
+    .dmem2core_resp_i           (core_dmem_resp   )
+);
+
+
+`ifdef SCR1_TCM_EN
+//-------------------------------------------------------------------------------
+// TCM instance
+//-------------------------------------------------------------------------------
+scr1_tcm #(
+    .SCR1_TCM_SIZE  (`SCR1_DMEM_AWIDTH'(~SCR1_TCM_ADDR_MASK + 1'b1))
+) i_tcm (
+    .clk            (clk             ),
+    .rst_n          (core_rst_n_local),
+
+    // Instruction interface to TCM
+    .imem_req_ack   (tcm_imem_req_ack),
+    .imem_req       (tcm_imem_req    ),
+    .imem_addr      (tcm_imem_addr   ),
+    .imem_rdata     (tcm_imem_rdata  ),
+    .imem_resp      (tcm_imem_resp   ),
+
+    // Data interface to TCM
+    .dmem_req_ack   (tcm_dmem_req_ack),
+    .dmem_req       (tcm_dmem_req    ),
+    .dmem_cmd       (tcm_dmem_cmd    ),
+    .dmem_width     (tcm_dmem_width  ),
+    .dmem_addr      (tcm_dmem_addr   ),
+    .dmem_wdata     (tcm_dmem_wdata  ),
+    .dmem_rdata     (tcm_dmem_rdata  ),
+    .dmem_resp      (tcm_dmem_resp   )
+);
+`endif // SCR1_TCM_EN
+
+
+//-------------------------------------------------------------------------------
+// Memory-mapped timer instance
+//-------------------------------------------------------------------------------
+scr1_timer i_timer (
+    // Common
+    .rst_n          (core_rst_n_local  ),
+    .clk            (clk               ),
+    .rtc_clk        (rtc_clk           ),
+
+    // Memory interface
+    .dmem_req       (timer_dmem_req    ),
+    .dmem_cmd       (timer_dmem_cmd    ),
+    .dmem_width     (timer_dmem_width  ),
+    .dmem_addr      (timer_dmem_addr   ),
+    .dmem_wdata     (timer_dmem_wdata  ),
+    .dmem_req_ack   (timer_dmem_req_ack),
+    .dmem_rdata     (timer_dmem_rdata  ),
+    .dmem_resp      (timer_dmem_resp   ),
+
+    // Timer interface
+    .timer_val      (timer_val         ),
+    .timer_irq      (timer_irq         )
+);
+
+
+`ifdef SCR1_IMEM_ROUTER_EN
+//-------------------------------------------------------------------------------
+// Instruction memory router
+//-------------------------------------------------------------------------------
+scr1_imem_router #(
+ `ifdef SCR1_TCM_EN
+    .SCR1_ADDR_MASK     (SCR1_TCM_ADDR_MASK),
+    .SCR1_ADDR_PATTERN  (SCR1_TCM_ADDR_PATTERN)
+ `endif // SCR1_TCM_EN
+) i_imem_router (
+    .rst_n          (core_rst_n_local ),
+    .clk            (clk              ),
+    // Interface to core
+    .imem_req_ack   (core_imem_req_ack),
+    .imem_req       (core_imem_req    ),
+    .imem_cmd       (core_imem_cmd    ),
+    .imem_addr      (core_imem_addr   ),
+    .imem_rdata     (core_imem_rdata  ),
+    .imem_resp      (core_imem_resp   ),
+    // Interface to AHB bridge
+    .port0_req_ack  (ahb_imem_req_ack ),
+    .port0_req      (ahb_imem_req     ),
+    .port0_cmd      (ahb_imem_cmd     ),
+    .port0_addr     (ahb_imem_addr    ),
+    .port0_rdata    (ahb_imem_rdata   ),
+    .port0_resp     (ahb_imem_resp    ),
+ `ifdef SCR1_TCM_EN
+    // Interface to TCM
+    .port1_req_ack  (tcm_imem_req_ack ),
+    .port1_req      (tcm_imem_req     ),
+    .port1_cmd      (tcm_imem_cmd     ),
+    .port1_addr     (tcm_imem_addr    ),
+    .port1_rdata    (tcm_imem_rdata   ),
+    .port1_resp     (tcm_imem_resp    )
+ `endif // SCR1_TCM_EN
+);
+
+`else // SCR1_IMEM_ROUTER_EN
+
+assign ahb_imem_req         = core_imem_req;
+assign ahb_imem_cmd         = core_imem_cmd;
+assign ahb_imem_addr        = core_imem_addr;
+assign core_imem_req_ack    = ahb_imem_req_ack;
+assign core_imem_resp       = ahb_imem_resp;
+assign core_imem_rdata      = ahb_imem_rdata;
+
+`endif // SCR1_IMEM_ROUTER_EN
+
+//-------------------------------------------------------------------------------
+// Data memory router
+//-------------------------------------------------------------------------------
+scr1_dmem_router #(
+
+`ifdef SCR1_TCM_EN
+    .SCR1_PORT1_ADDR_MASK       (SCR1_TCM_ADDR_MASK),
+    .SCR1_PORT1_ADDR_PATTERN    (SCR1_TCM_ADDR_PATTERN),
+`else // SCR1_TCM_EN
+    .SCR1_PORT1_ADDR_MASK       (32'h00000000),
+    .SCR1_PORT1_ADDR_PATTERN    (32'hFFFFFFFF),
+`endif // SCR1_TCM_EN
+
+    .SCR1_PORT2_ADDR_MASK       (SCR1_TIMER_ADDR_MASK),
+    .SCR1_PORT2_ADDR_PATTERN    (SCR1_TIMER_ADDR_PATTERN)
+
+) i_dmem_router (
+    .rst_n          (core_rst_n_local    ),
+    .clk            (clk                 ),
+    // Interface to core
+    .dmem_req_ack   (core_dmem_req_ack   ),
+    .dmem_req       (core_dmem_req       ),
+    .dmem_cmd       (core_dmem_cmd       ),
+    .dmem_width     (core_dmem_width     ),
+    .dmem_addr      (core_dmem_addr      ),
+    .dmem_wdata     (core_dmem_wdata     ),
+    .dmem_rdata     (core_dmem_rdata     ),
+    .dmem_resp      (core_dmem_resp      ),
+`ifdef SCR1_TCM_EN
+    // Interface to TCM
+    .port1_req_ack  (tcm_dmem_req_ack    ),
+    .port1_req      (tcm_dmem_req        ),
+    .port1_cmd      (tcm_dmem_cmd        ),
+    .port1_width    (tcm_dmem_width      ),
+    .port1_addr     (tcm_dmem_addr       ),
+    .port1_wdata    (tcm_dmem_wdata      ),
+    .port1_rdata    (tcm_dmem_rdata      ),
+    .port1_resp     (tcm_dmem_resp       ),
+`else // SCR1_TCM_EN
+    .port1_req_ack  (1'b0),
+    .port1_req      (                    ),
+    .port1_cmd      (                    ),
+    .port1_width    (                    ),
+    .port1_addr     (                    ),
+    .port1_wdata    (                    ),
+    .port1_rdata    ('0                  ),
+    .port1_resp     (SCR1_MEM_RESP_RDY_ER),
+`endif // SCR1_TCM_EN
+    // Interface to memory-mapped timer
+    .port2_req_ack  (timer_dmem_req_ack  ),
+    .port2_req      (timer_dmem_req      ),
+    .port2_cmd      (timer_dmem_cmd      ),
+    .port2_width    (timer_dmem_width    ),
+    .port2_addr     (timer_dmem_addr     ),
+    .port2_wdata    (timer_dmem_wdata    ),
+    .port2_rdata    (timer_dmem_rdata    ),
+    .port2_resp     (timer_dmem_resp     ),
+    // Interface to AHB bridge
+    .port0_req_ack  (ahb_dmem_req_ack    ),
+    .port0_req      (ahb_dmem_req        ),
+    .port0_cmd      (ahb_dmem_cmd        ),
+    .port0_width    (ahb_dmem_width      ),
+    .port0_addr     (ahb_dmem_addr       ),
+    .port0_wdata    (ahb_dmem_wdata      ),
+    .port0_rdata    (ahb_dmem_rdata      ),
+    .port0_resp     (ahb_dmem_resp       )
+);
+
+
+//-------------------------------------------------------------------------------
+// Instruction memory AHB bridge
+//-------------------------------------------------------------------------------
+scr1_imem_ahb i_imem_ahb (
+    .rst_n          (core_rst_n_local   ),
+    .clk            (clk                ),
+    // Interface to imem router
+    .imem_req_ack   (ahb_imem_req_ack   ),
+    .imem_req       (ahb_imem_req       ),
+    .imem_addr      (ahb_imem_addr      ),
+    .imem_rdata     (ahb_imem_rdata     ),
+    .imem_resp      (ahb_imem_resp      ),
+    // AHB interface
+    .hprot          (imem_hprot         ),
+    .hburst         (imem_hburst        ),
+    .hsize          (imem_hsize         ),
+    .htrans         (imem_htrans        ),
+    .hmastlock      (imem_hmastlock     ),
+    .haddr          (imem_haddr         ),
+    .hready         (imem_hready        ),
+    .hrdata         (imem_hrdata        ),
+    .hresp          (imem_hresp         )
+);
+
+
+//-------------------------------------------------------------------------------
+// Data memory AHB bridge
+//-------------------------------------------------------------------------------
+scr1_dmem_ahb i_dmem_ahb (
+    .rst_n          (core_rst_n_local   ),
+    .clk            (clk                ),
+    // Interface to dmem router
+    .dmem_req_ack   (ahb_dmem_req_ack   ),
+    .dmem_req       (ahb_dmem_req       ),
+    .dmem_cmd       (ahb_dmem_cmd       ),
+    .dmem_width     (ahb_dmem_width     ),
+    .dmem_addr      (ahb_dmem_addr      ),
+    .dmem_wdata     (ahb_dmem_wdata     ),
+    .dmem_rdata     (ahb_dmem_rdata     ),
+    .dmem_resp      (ahb_dmem_resp      ),
+    // AHB interface
+    .hprot          (dmem_hprot         ),
+    .hburst         (dmem_hburst        ),
+    .hsize          (dmem_hsize         ),
+    .htrans         (dmem_htrans        ),
+    .hmastlock      (dmem_hmastlock     ),
+    .haddr          (dmem_haddr         ),
+    .hwrite         (dmem_hwrite        ),
+    .hwdata         (dmem_hwdata        ),
+    .hready         (dmem_hready        ),
+    .hrdata         (dmem_hrdata        ),
+    .hresp          (dmem_hresp         )
+);
+
+endmodule : scr1_top_ahb
+
+
