From 22c4d4d4130c6f5a4507ca2ea9a74b6680760918 Mon Sep 17 00:00:00 2001
From: dam1n19 <dam1n19@soton.ac.uk>
Date: Mon, 19 Jun 2023 15:36:56 +0100
Subject: [PATCH] Used new FPGA SRAM wrapper and passed ROM Table address to
 top of subsystem

---
 .gitmodules                                   |  6 +--
 ..._ahb_bootrom.v => nanosoc_bootrom_cpu_0.v} |  4 +-
 .../verilog/nanosoc_region_bootrom_0.v        |  4 +-
 .../dmem_0/verilog/nanosoc_region_dmem_0.v    | 41 +++---------------
 .../verilog/nanosoc_region_expram_h.v         | 40 +++---------------
 .../verilog/nanosoc_region_expram_l.v         | 40 +++---------------
 .../imem_0/verilog/nanosoc_region_imem_0.v    | 42 +++----------------
 .../sysio/verilog/nanosoc_region_sysio.v      | 16 ++++---
 .../sysio/verilog/nanosoc_sysio_decode.v      |  8 ++--
 ...m_table.v => nanosoc_coresight_systable.v} |  2 +-
 .../verilog/nanosoc_region_systable.v         |  2 +-
 .../cpu/verilog/nanosoc_ss_cpu.v              | 32 +++++++-------
 system/slcore_m0_tech                         |  1 -
 system/slcorem0_tech                          |  1 +
 14 files changed, 65 insertions(+), 174 deletions(-)
 rename system/nanosoc_regions/bootrom_0/verilog/{nanosoc_ahb_bootrom.v => nanosoc_bootrom_cpu_0.v} (94%)
 rename system/nanosoc_regions/systable/verilog/{nanosoc_ahb_cs_rom_table.v => nanosoc_coresight_systable.v} (99%)
 delete mode 160000 system/slcore_m0_tech
 create mode 160000 system/slcorem0_tech

diff --git a/.gitmodules b/.gitmodules
index 3c95adc..63ccd3e 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,9 +1,9 @@
 [submodule "system/socdebug_tech"]
 	path = system/socdebug_tech
 	url = https://git.soton.ac.uk/soclabs/socdebug_tech.git
-[submodule "system/slcore_m0_tech"]
-	path = system/slcore_m0_tech
-	url = https://git.soton.ac.uk/soclabs/slcore_m0_tech.git
 [submodule "system/sldma230_tech"]
 	path = system/sldma230_tech
 	url = https://git.soton.ac.uk/soclabs/sldma230_tech.git
+[submodule "system/slcorem0_tech"]
+	path = system/slcorem0_tech
+	url = https://git.soton.ac.uk/soclabs/slcorem0_tech.git
diff --git a/system/nanosoc_regions/bootrom_0/verilog/nanosoc_ahb_bootrom.v b/system/nanosoc_regions/bootrom_0/verilog/nanosoc_bootrom_cpu_0.v
similarity index 94%
rename from system/nanosoc_regions/bootrom_0/verilog/nanosoc_ahb_bootrom.v
rename to system/nanosoc_regions/bootrom_0/verilog/nanosoc_bootrom_cpu_0.v
index 7518659..c4efcb0 100644
--- a/system/nanosoc_regions/bootrom_0/verilog/nanosoc_ahb_bootrom.v
+++ b/system/nanosoc_regions/bootrom_0/verilog/nanosoc_bootrom_cpu_0.v
@@ -1,5 +1,5 @@
 //-----------------------------------------------------------------------------
-// NanoSoC AHB to Bootrom Interface
+// NanoSoC CPU 0 Bootrom
 // A joint work commissioned on behalf of SoC Labs, under Arm Academic Access license.
 //
 // Contributors
@@ -9,7 +9,7 @@
 // Copyright � 2021-3, SoC Labs (www.soclabs.org)
 //-----------------------------------------------------------------------------
 
-module nanosoc_ahb_bootrom #(
+module nanosoc_bootrom_cpu_0 #(
   parameter AW       = 10 // Address width
 )(
   input  wire          HCLK,      // Clock
diff --git a/system/nanosoc_regions/bootrom_0/verilog/nanosoc_region_bootrom_0.v b/system/nanosoc_regions/bootrom_0/verilog/nanosoc_region_bootrom_0.v
index c7a519a..fd393c9 100644
--- a/system/nanosoc_regions/bootrom_0/verilog/nanosoc_region_bootrom_0.v
+++ b/system/nanosoc_regions/bootrom_0/verilog/nanosoc_region_bootrom_0.v
@@ -34,9 +34,9 @@ module nanosoc_region_bootrom_0 #(
     output wire  [SYS_DATA_W-1:0] HRDATA
   );
 
-  nanosoc_ahb_bootrom #(
+  nanosoc_bootrom_cpu_0 #(
     .AW (BOOTROM_ADDR_W)  
-  ) u_ahb_bootloader (
+  ) u_bootrom_cpu_0 (
     .HCLK             (HCLK),
     .HRESETn          (HRESETn),
     .HSEL             (HSEL),
diff --git a/system/nanosoc_regions/dmem_0/verilog/nanosoc_region_dmem_0.v b/system/nanosoc_regions/dmem_0/verilog/nanosoc_region_dmem_0.v
index 74c23dd..56dfdfc 100644
--- a/system/nanosoc_regions/dmem_0/verilog/nanosoc_region_dmem_0.v
+++ b/system/nanosoc_regions/dmem_0/verilog/nanosoc_region_dmem_0.v
@@ -33,17 +33,11 @@ module nanosoc_region_dmem_0 #(
     output wire                   HRESP,
     output wire  [SYS_DATA_W-1:0] HRDATA
   );
-    
-    wire  [DMEM_RAM_ADDR_W-3:0] addr;
-    wire  [DMEM_RAM_DATA_W-1:0] wdata;
-    wire  [DMEM_RAM_DATA_W-1:0] rdata;
-    wire                  [3:0] wen;
-    wire                        cs;
 
-    // AHB to SRAM bridge
-    cmsdk_ahb_to_sram #(
-        .AW (DMEM_RAM_ADDR_W)
-    ) u_ahb_to_sdmem (
+    // SRAM Instantiation
+    sl_ahb_sram #(
+        .RAM_ADDR_W (DMEM_RAM_ADDR_W)
+    ) u_dmem_0 (
         // AHB Inputs
         .HCLK       (HCLK),
         .HRESETn    (HRESETn),
@@ -58,30 +52,7 @@ module nanosoc_region_dmem_0 #(
         // AHB Outputs
         .HREADYOUT  (HREADYOUT),
         .HRDATA     (HRDATA),
-        .HRESP      (HRESP),
-
-        // SRAM input
-        .SRAMRDATA  (rdata),
-        
-        // SRAM Outputs
-        .SRAMADDR   (addr),
-        .SRAMWDATA  (wdata),
-        .SRAMWEN    (wen),
-        .SRAMCS     (cs)
-    );
-
-    // SRAM model
-    cmsdk_fpga_sram #(
-        .AW (DMEM_RAM_ADDR_W)
-    ) u_dmem_0 (
-        // SRAM Inputs
-        .CLK        (HCLK),
-        .ADDR       (addr),
-        .WDATA      (wdata),
-        .WREN       (wen),
-        .CS         (cs),
-        
-        // SRAM Output
-        .RDATA      (rdata)
+        .HRESP      (HRESP)
     );
+    
 endmodule
\ No newline at end of file
diff --git a/system/nanosoc_regions/expram_h/verilog/nanosoc_region_expram_h.v b/system/nanosoc_regions/expram_h/verilog/nanosoc_region_expram_h.v
index 97ac03b..c93b82f 100644
--- a/system/nanosoc_regions/expram_h/verilog/nanosoc_region_expram_h.v
+++ b/system/nanosoc_regions/expram_h/verilog/nanosoc_region_expram_h.v
@@ -34,22 +34,16 @@ module nanosoc_region_expram_h #(
         output wire                   HRESP,
         output wire  [SYS_DATA_W-1:0] HRDATA
     );
-
-    wire  [EXPRAM_H_RAM_ADDR_W-3:0] addr;
-    wire  [EXPRAM_H_RAM_DATA_W-1:0] wdata;
-    wire  [EXPRAM_H_RAM_DATA_W-1:0] rdata;
-    wire                      [3:0] wen;
-    wire                            cs;
     
     // AHB to SRAM bridge
-    cmsdk_ahb_to_sram #(
-        .AW (EXPRAM_H_RAM_ADDR_W)
-    ) u_ahb_to_sram8 (
+    sl_ahb_sram #(
+        .RAM_ADDR_W (EXPRAM_H_RAM_ADDR_W)
+    ) u_expram_h (
         // AHB Inputs
         .HCLK       (HCLK),
         .HRESETn    (HRESETn),
         .HSEL       (HSEL),  
-        .HADDR      (HADDR[EXPRAM_H_RAM_ADDR_W-1:0]),
+        .HADDR      (HADDR [EXPRAM_H_RAM_ADDR_W-1:0]),
         .HTRANS     (HTRANS),
         .HSIZE      (HSIZE),
         .HWRITE     (HWRITE),
@@ -59,31 +53,7 @@ module nanosoc_region_expram_h #(
         // AHB Outputs
         .HREADYOUT  (HREADYOUT),
         .HRDATA     (HRDATA),
-        .HRESP      (HRESP),
-
-        // SRAM input
-        .SRAMRDATA  (rdata),
-        
-        // SRAM Outputs
-        .SRAMADDR   (addr),
-        .SRAMWDATA  (wdata),
-        .SRAMWEN    (wen),
-        .SRAMCS     (cs)
+        .HRESP      (HRESP)
    );
-
-    // SRAM model
-    cmsdk_fpga_sram #(
-        .AW (EXPRAM_H_RAM_ADDR_W)
-    ) u_expram_h (
-        // SRAM Inputs
-        .CLK        (HCLK),
-        .ADDR       (addr),
-        .WDATA      (wdata),
-        .WREN       (wen),
-        .CS         (cs),
-        
-        // SRAM Output
-        .RDATA      (rdata)
-    );
     
 endmodule
\ No newline at end of file
diff --git a/system/nanosoc_regions/expram_l/verilog/nanosoc_region_expram_l.v b/system/nanosoc_regions/expram_l/verilog/nanosoc_region_expram_l.v
index 53ba0c7..5e43f89 100644
--- a/system/nanosoc_regions/expram_l/verilog/nanosoc_region_expram_l.v
+++ b/system/nanosoc_regions/expram_l/verilog/nanosoc_region_expram_l.v
@@ -34,17 +34,11 @@ module nanosoc_region_expram_l #(
         output wire                   HRESP,
         output wire  [SYS_DATA_W-1:0] HRDATA
     );
-
-    wire  [EXPRAM_L_RAM_ADDR_W-3:0] addr;
-    wire  [EXPRAM_L_RAM_DATA_W-1:0] wdata;
-    wire  [EXPRAM_L_RAM_DATA_W-1:0] rdata;
-    wire                      [3:0] wen;
-    wire                            cs;
     
-    // AHB to SRAM bridge
-    cmsdk_ahb_to_sram #(
-        .AW (EXPRAM_L_RAM_ADDR_W)
-    ) u_ahb_to_sram8 (
+    // SRAM Instantiation
+    sl_ahb_sram #(
+        .RAM_ADDR_W (EXPRAM_L_RAM_ADDR_W)
+    ) u_expram_l (
         // AHB Inputs
         .HCLK       (HCLK),
         .HRESETn    (HRESETn),
@@ -59,31 +53,7 @@ module nanosoc_region_expram_l #(
         // AHB Outputs
         .HREADYOUT  (HREADYOUT),
         .HRDATA     (HRDATA),
-        .HRESP      (HRESP),
-
-        // SRAM input
-        .SRAMRDATA  (rdata),
-        
-        // SRAM Outputs
-        .SRAMADDR   (addr),
-        .SRAMWDATA  (wdata),
-        .SRAMWEN    (wen),
-        .SRAMCS     (cs)
+        .HRESP      (HRESP)
    );
-
-    // SRAM model
-    cmsdk_fpga_sram #(
-        .AW (EXPRAM_L_RAM_ADDR_W)
-    ) u_expram_l (
-        // SRAM Inputs
-        .CLK        (HCLK),
-        .ADDR       (addr),
-        .WDATA      (wdata),
-        .WREN       (wen),
-        .CS         (cs),
-        
-        // SRAM Output
-        .RDATA      (rdata)
-    );
     
 endmodule
\ No newline at end of file
diff --git a/system/nanosoc_regions/imem_0/verilog/nanosoc_region_imem_0.v b/system/nanosoc_regions/imem_0/verilog/nanosoc_region_imem_0.v
index 16f2b7f..38f887e 100644
--- a/system/nanosoc_regions/imem_0/verilog/nanosoc_region_imem_0.v
+++ b/system/nanosoc_regions/imem_0/verilog/nanosoc_region_imem_0.v
@@ -35,17 +35,12 @@ module nanosoc_region_imem_0 #(
     output wire                   HRESP,
     output wire  [SYS_DATA_W-1:0] HRDATA
   );
-    
-    wire  [IMEM_RAM_ADDR_W-3:0] addr;
-    wire  [IMEM_RAM_DATA_W-1:0] wdata;
-    wire  [IMEM_RAM_DATA_W-1:0] rdata;
-    wire                  [3:0] wen;
-    wire                        cs;
 
-    // AHB to SRAM bridge
-    cmsdk_ahb_to_sram #(
-        .AW (IMEM_RAM_ADDR_W)
-    ) u_ahb_to_simem (
+    // SRAM Instantiation
+    sl_ahb_sram #(
+        .RAM_ADDR_W (IMEM_RAM_ADDR_W),
+        .FILENAME   (IMEM_RAM_FPGA_IMG)
+    ) u_imem_0 (
         // AHB Inputs
         .HCLK       (HCLK),
         .HRESETn    (HRESETn),
@@ -60,32 +55,7 @@ module nanosoc_region_imem_0 #(
         // AHB Outputs
         .HREADYOUT  (HREADYOUT),
         .HRDATA     (HRDATA),
-        .HRESP      (HRESP),
-
-        // SRAM input
-        .SRAMRDATA  (rdata),
-        
-        // SRAM Outputs
-        .SRAMADDR   (addr),
-        .SRAMWDATA  (wdata),
-        .SRAMWEN    (wen),
-        .SRAMCS     (cs)
-    );
-
-    // SRAM model
-    cmsdk_fpga_sram #(
-        .AW (IMEM_RAM_ADDR_W),
-        .filename(IMEM_RAM_FPGA_IMG)
-    ) u_imem_0 (
-        // SRAM Inputs
-        .CLK        (HCLK),
-        .ADDR       (addr),
-        .WDATA      (wdata),
-        .WREN       (wen),
-        .CS         (cs),
-        
-        // SRAM Output
-        .RDATA      (rdata)
+        .HRESP      (HRESP)
     );
     
 endmodule
\ No newline at end of file
diff --git a/system/nanosoc_regions/sysio/verilog/nanosoc_region_sysio.v b/system/nanosoc_regions/sysio/verilog/nanosoc_region_sysio.v
index f3bbc4b..9d0750d 100644
--- a/system/nanosoc_regions/sysio/verilog/nanosoc_region_sysio.v
+++ b/system/nanosoc_regions/sysio/verilog/nanosoc_region_sysio.v
@@ -15,7 +15,7 @@ module nanosoc_region_sysio #(
     parameter    SYS_ADDR_W=32,  // System Address Width
     parameter    SYS_DATA_W=32,  // System Data Width
     parameter    APB_ADDR_W=12,  // APB Peripheral Address Width
-    parameter    APB_DATA_W=32  // APB Peripheral Data Width
+    parameter    APB_DATA_W=32   // APB Peripheral Data Width
   )(
     input  wire                   FCLK,             // Free-running system clock
     input  wire                   PORESETn,         // Power-On-Reset reset (active-low)
@@ -105,9 +105,11 @@ module nanosoc_region_sysio #(
     output wire          [15:0] p1_altfunc        // GPIO 1 alternate function (pin mux)
   );
 
-
+  // Sysctrl base address
+  localparam BASEADDR_APBSS       = 32'h4000_0000; // GPIO0 peripheral base address
   localparam BASEADDR_GPIO0       = 32'h4001_0000; // GPIO0 peripheral base address
   localparam BASEADDR_GPIO1       = 32'h4001_1000; // GPIO1 peripheral base address
+  localparam BASEADDR_SYSCTRL     = 32'h4001_f000; // Sysctrl peripheral basse address
   localparam BE                   = 0;
   
    // ------------------------------------------------------------
@@ -142,8 +144,10 @@ module nanosoc_region_sysio #(
 
   // AHB address decode
   nanosoc_sysio_decode #(
+     .BASEADDR_APBSS       (BASEADDR_APBSS),
      .BASEADDR_GPIO0       (BASEADDR_GPIO0),
-     .BASEADDR_GPIO1       (BASEADDR_GPIO1)
+     .BASEADDR_GPIO1       (BASEADDR_GPIO1),
+     .BASEADDR_SYSCTRL     (BASEADDR_SYSCTRL)
   ) u_addr_decode (
     // System Address
     .hsel         (HSEL),
@@ -161,7 +165,7 @@ module nanosoc_region_sysio #(
     .PORT1_ENABLE  (1), // GPIO Port 0
     .PORT2_ENABLE  (1), // GPIO Port 1
     .PORT3_ENABLE  (1), // SYS control
-    .PORT4_ENABLE  (1), // default
+    .PORT4_ENABLE  (1), // Default
     .PORT5_ENABLE  (0),
     .PORT6_ENABLE  (0),
     .PORT7_ENABLE  (0),
@@ -272,7 +276,7 @@ module nanosoc_region_sysio #(
     .ALTERNATE_FUNC_DEFAULT  (16'h0000), // All pins default to GPIO
     .BE                      (BE)
     )
-    u_ahb_gpio_0  (
+    u_nanosoc_gpio_0  (
    // AHB Inputs
     .HCLK         (HCLK),
     .HRESETn      (HRESETn),
@@ -305,7 +309,7 @@ module nanosoc_region_sysio #(
     .ALTERNATE_FUNC_MASK     (16'h002A), // pin muxing for Port #1
     .ALTERNATE_FUNC_DEFAULT  (16'h0000), // All pins default to GPIO
     .BE                      (BE)
-  ) u_ahb_gpio_1 (
+  ) u_nanosoc_gpio_1 (
    // AHB Inputs
     .HCLK         (HCLK),
     .HRESETn      (HRESETn),
diff --git a/system/nanosoc_regions/sysio/verilog/nanosoc_sysio_decode.v b/system/nanosoc_regions/sysio/verilog/nanosoc_sysio_decode.v
index 609839a..2b8f6ad 100644
--- a/system/nanosoc_regions/sysio/verilog/nanosoc_sysio_decode.v
+++ b/system/nanosoc_regions/sysio/verilog/nanosoc_sysio_decode.v
@@ -40,11 +40,13 @@
 
 module nanosoc_sysio_decode #(
   parameter SYS_ADDR_W           = 32,
+  // APB Subsystem peripheral base address
+  parameter BASEADDR_APBSS       = 32'h4000_0000,
   // GPIO0 peripheral base address
   parameter BASEADDR_GPIO0       = 32'h4001_0000,
   // GPIO1 peripheral base address
   parameter BASEADDR_GPIO1       = 32'h4001_1000,
-  // GPIO1 peripheral base address
+  // Sysctrl base address
   parameter BASEADDR_SYSCTRL     = 32'h4001_f000
  )(
     // System Address
@@ -66,13 +68,13 @@ module nanosoc_sysio_decode #(
   // 0x40010000 - 0x40010FFF : AHB peripherals (GPIO0)
   // 0x40011000 - 0x40011FFF : AHB peripherals (GPIO1)
   // 0x4001F000 - 0x4001FFFF : AHB peripherals (SYS control)
-  // 0xF0000000 - 0xF0000FFF : System ROM Table
 
   // ----------------------------------------------------------
   // Peripheral Selection decode logic
   // ----------------------------------------------------------
 
-  assign apbsys_hsel  = hsel & (haddr[31:16]==16'h4000); // 0x40000000
+  assign apbsys_hsel  = hsel & (haddr[31:16]==
+                         BASEADDR_APBSS[31:16]);       // 0x40000000
   assign gpio0_hsel   = hsel & (haddr[31:12]==
                          BASEADDR_GPIO0[31:12]);       // 0x40010000
   assign gpio1_hsel   = hsel & (haddr[31:12]==
diff --git a/system/nanosoc_regions/systable/verilog/nanosoc_ahb_cs_rom_table.v b/system/nanosoc_regions/systable/verilog/nanosoc_coresight_systable.v
similarity index 99%
rename from system/nanosoc_regions/systable/verilog/nanosoc_ahb_cs_rom_table.v
rename to system/nanosoc_regions/systable/verilog/nanosoc_coresight_systable.v
index f6345a2..900136b 100644
--- a/system/nanosoc_regions/systable/verilog/nanosoc_ahb_cs_rom_table.v
+++ b/system/nanosoc_regions/systable/verilog/nanosoc_coresight_systable.v
@@ -74,7 +74,7 @@
 // ECOREVNUM bus should be easily identifiable and modifiable.
 //-----------------------------------------------------------------------------
 
-module nanosoc_ahb_cs_rom_table
+module nanosoc_coresight_systable
   #(
     // ------------------------------------------------------------
     // ROM Table BASE Address
diff --git a/system/nanosoc_regions/systable/verilog/nanosoc_region_systable.v b/system/nanosoc_regions/systable/verilog/nanosoc_region_systable.v
index 36b9f63..9fe8ae7 100644
--- a/system/nanosoc_regions/systable/verilog/nanosoc_region_systable.v
+++ b/system/nanosoc_regions/systable/verilog/nanosoc_region_systable.v
@@ -38,7 +38,7 @@ module nanosoc_region_systable #(
     // -------------------------------
     // System ROM Table
     // -------------------------------
-    nanosoc_ahb_cs_rom_table #(
+    nanosoc_coresight_systable #(
         .BASE              (SYSTABLE_BASE),
         // Entry 0 = Cortex-M0 Processor
         .ENTRY0BASEADDR    (32'hE00FF000),
diff --git a/system/nanosoc_subsystems/cpu/verilog/nanosoc_ss_cpu.v b/system/nanosoc_subsystems/cpu/verilog/nanosoc_ss_cpu.v
index b50f230..e41f96a 100644
--- a/system/nanosoc_subsystems/cpu/verilog/nanosoc_ss_cpu.v
+++ b/system/nanosoc_subsystems/cpu/verilog/nanosoc_ss_cpu.v
@@ -28,8 +28,11 @@ module nanosoc_ss_cpu #(
     parameter RESET_ALL_REGS    = 0,   // Do not reset all registers
     parameter INCLUDE_JTAG      = 0,   // Do not Include JTAG feature
     
+    // ROM Table Base Address
+    parameter [31:0] ROMTABLE_BASE = 32'hE00FF003,  // Defaultly Points to Core ROM Table
+    
     // Bootrom 0 Parameters
-    parameter    BOOTROM_ADDR_W = 10,  // Size of Bootrom (Based on Address Width) - Default 1KB
+    parameter    BOOTROM_ADDR_W    = 10,  // Size of Bootrom (Based on Address Width) - Default 1KB
     
     // IMEM 0 Parameters
     parameter    IMEM_RAM_ADDR_W   = 14,          // Width of IMEM RAM Address - Default 16KB
@@ -132,19 +135,20 @@ module nanosoc_ss_cpu #(
     // CPU Core 0 Instantiation
     // -------------------------------
     slcorem0 #(
-        .ACG       (CLKGATE_PRESENT), // Architectural clock gating
-        .BE        (BE),              // Big-endian
-        .BKPT      (BKPT),            // Number of breakpoint comparators
-        .DBG       (DBG),             // Debug configuration
-        .JTAGnSW   (INCLUDE_JTAG),    // Debug port interface: JTAGnSW
-        .NUMIRQ    (NUMIRQ),          // Number of Interrupts
-        .RAR       (RESET_ALL_REGS),  // Reset All Registers
-        .SMUL      (SMUL),            // Multiplier configuration
-        .SYST      (SYST),            // SysTick
-        .WIC       (WIC),             // Wake-up interrupt controller support
-        .WICLINES  (WICLINES),        // Supported WIC lines
-        .WPT       (WPT)              // Number of DWT comparators
-    ) u_manager_cpu_0 (
+        .ACG           (CLKGATE_PRESENT), // Architectural clock gating
+        .BE            (BE),              // Big-endian
+        .BKPT          (BKPT),            // Number of breakpoint comparators
+        .DBG           (DBG),             // Debug configuration
+        .JTAGnSW       (INCLUDE_JTAG),    // Debug port interface: JTAGnSW
+        .NUMIRQ        (NUMIRQ),          // Number of Interrupts
+        .RAR           (RESET_ALL_REGS),  // Reset All Registers
+        .SMUL          (SMUL),            // Multiplier configuration
+        .SYST          (SYST),            // SysTick
+        .WIC           (WIC),             // Wake-up interrupt controller support
+        .WICLINES      (WICLINES),        // Supported WIC lines
+        .WPT           (WPT),             // Number of DWT comparators
+        .ROMTABLE_BASE (ROMTABLE_BASE)
+    ) u_cpu_0 (
         // System Input Clocks and Resets
         .SYS_FCLK(SYS_FCLK),
         .SYS_SYSRESETn(SYS_SYSRESETn),
diff --git a/system/slcore_m0_tech b/system/slcore_m0_tech
deleted file mode 160000
index 0e03606..0000000
--- a/system/slcore_m0_tech
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 0e036061823074e2fe41fc7ea83d58367ea3b524
diff --git a/system/slcorem0_tech b/system/slcorem0_tech
new file mode 160000
index 0000000..3fbedbf
--- /dev/null
+++ b/system/slcorem0_tech
@@ -0,0 +1 @@
+Subproject commit 3fbedbfb068d360194d1d4b879e5a1eb28930d85
-- 
GitLab