From 97a177b6b756579991ef1a6d47e1bf9d4eb95a7a Mon Sep 17 00:00:00 2001
From: dam1n19 <dam1n19@soton.ac.uk>
Date: Sat, 1 Jul 2023 11:42:37 +0100
Subject: [PATCH] APB subsystem generates slave errors on unused ports (fixes
 default slaves test)

---
 .../sysio/verilog/nanosoc_region_sysio.v           |  9 ++++-----
 .../sysio/verilog/nanosoc_sysio_apb_ss.v           | 14 ++++++--------
 .../sysio/verilog/nanosoc_sysio_decode.v           |  3 +--
 software/common/validation/default_slaves_tests.c  |  4 ++--
 4 files changed, 13 insertions(+), 17 deletions(-)

diff --git a/nanosoc/nanosoc_regions/sysio/verilog/nanosoc_region_sysio.v b/nanosoc/nanosoc_regions/sysio/verilog/nanosoc_region_sysio.v
index 42784a7..23c6c1a 100644
--- a/nanosoc/nanosoc_regions/sysio/verilog/nanosoc_region_sysio.v
+++ b/nanosoc/nanosoc_regions/sysio/verilog/nanosoc_region_sysio.v
@@ -240,7 +240,7 @@ module nanosoc_region_sysio #(
 
   nanosoc_sysctrl #(
     .BE (BE)
-  ) u_nanosoc_sysctrl (
+  ) u_sysctrl (
    // AHB Inputs
     .HCLK         (HCLK),
     .HRESETn      (HRESETn),
@@ -275,7 +275,7 @@ module nanosoc_region_sysio #(
     .ALTERNATE_FUNC_DEFAULT  (16'h0000), // All pins default to GPIO
     .BE                      (BE)
     )
-    u_nanosoc_gpio_0  (
+    u_gpio_0  (
    // AHB Inputs
     .HCLK         (HCLK),
     .HRESETn      (HRESETn),
@@ -308,7 +308,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_nanosoc_gpio_1 (
+  ) u_gpio_1 (
    // AHB Inputs
     .HCLK         (HCLK),
     .HRESETn      (HRESETn),
@@ -352,8 +352,7 @@ module nanosoc_region_sysio #(
     .INCLUDE_APB_UART2       (1),  // Include simple UART #2.
     .INCLUDE_APB_WATCHDOG    (1),  // Include APB watchdog module
     .BE                      (BE)
-  ) u_nanosoc_sysio_apb_ss (
-
+  ) u_sysio_apb_ss (
   // AHB interface for AHB to APB bridge
     .HCLK          (HCLK),
     .HRESETn       (HRESETn),
diff --git a/nanosoc/nanosoc_regions/sysio/verilog/nanosoc_sysio_apb_ss.v b/nanosoc/nanosoc_regions/sysio/verilog/nanosoc_sysio_apb_ss.v
index 124d342..368acd4 100755
--- a/nanosoc/nanosoc_regions/sysio/verilog/nanosoc_sysio_apb_ss.v
+++ b/nanosoc/nanosoc_regions/sysio/verilog/nanosoc_sysio_apb_ss.v
@@ -349,8 +349,7 @@ module nanosoc_sysio_apb_ss #(
     );
 
   // APB slave multiplexer
-  cmsdk_apb_slave_mux
-    #( // Parameter to determine which ports are used
+  cmsdk_apb_slave_mux #( // Parameter to determine which ports are used
     .PORT0_ENABLE  (INCLUDE_APB_TIMER0), // timer 0
     .PORT1_ENABLE  (INCLUDE_APB_TIMER1), // timer 1
     .PORT2_ENABLE  (INCLUDE_APB_DUALTIMER0), // dual timer 0
@@ -367,8 +366,7 @@ module nanosoc_sysio_apb_ss #(
     .PORT13_ENABLE (APB_EXT_PORT13_ENABLE),
     .PORT14_ENABLE (APB_EXT_PORT14_ENABLE),
     .PORT15_ENABLE (APB_EXT_PORT15_ENABLE)
-    )
-    u_apb_slave_mux (
+  ) u_apb_slave_mux (
     // Inputs
     .DECODE4BIT        (i_paddr[15:12]),
     .PSEL              (i_psel),
@@ -391,7 +389,7 @@ module nanosoc_sysio_apb_ss #(
     .PSEL3             (psel3),
     .PREADY3           (1'b1),
     .PRDATA3           (32'h00000000),
-    .PSLVERR3          (1'b0),
+    .PSLVERR3          (1'b1),
 
     .PSEL4             (uart0_psel),
     .PREADY4           (uart0_pready),
@@ -411,7 +409,7 @@ module nanosoc_sysio_apb_ss #(
     .PSEL7             (psel7),
     .PREADY7           (1'b1),
     .PRDATA7           (32'h00000000),
-    .PSLVERR7          (1'b0),
+    .PSLVERR7          (1'b1),
 
     .PSEL8             (watchdog_psel),
     .PREADY8           (watchdog_pready),
@@ -421,12 +419,12 @@ module nanosoc_sysio_apb_ss #(
     .PSEL9             (psel9),
     .PREADY9           (1'b1),
     .PRDATA9           (32'h00000000),
-    .PSLVERR9          (1'b0),
+    .PSLVERR9          (1'b1),
 
     .PSEL10            (psel10),
     .PREADY10          (1'b1),
     .PRDATA10          (32'h00000000),
-    .PSLVERR10         (1'b0),
+    .PSLVERR10         (1'b1),
 
     .PSEL11            (test_slave_psel),
     .PREADY11          (test_slave_pready),
diff --git a/nanosoc/nanosoc_regions/sysio/verilog/nanosoc_sysio_decode.v b/nanosoc/nanosoc_regions/sysio/verilog/nanosoc_sysio_decode.v
index 2b8f6ad..dc30f11 100644
--- a/nanosoc/nanosoc_regions/sysio/verilog/nanosoc_sysio_decode.v
+++ b/nanosoc/nanosoc_regions/sysio/verilog/nanosoc_sysio_decode.v
@@ -73,8 +73,7 @@ module nanosoc_sysio_decode #(
   // Peripheral Selection decode logic
   // ----------------------------------------------------------
 
-  assign apbsys_hsel  = hsel & (haddr[31:16]==
-                         BASEADDR_APBSS[31:16]);       // 0x40000000
+  assign apbsys_hsel  = hsel & (haddr[31:16]==16'h4000); // 0x40000000
   assign gpio0_hsel   = hsel & (haddr[31:12]==
                          BASEADDR_GPIO0[31:12]);       // 0x40010000
   assign gpio1_hsel   = hsel & (haddr[31:12]==
diff --git a/software/common/validation/default_slaves_tests.c b/software/common/validation/default_slaves_tests.c
index 065dab9..3d5e826 100644
--- a/software/common/validation/default_slaves_tests.c
+++ b/software/common/validation/default_slaves_tests.c
@@ -1,12 +1,12 @@
 /*-----------------------------------------------------------------------------
-// customised Cortex-M0 'nanosoc' controller
+// Updated for NanoSoC System
 // A joint work commissioned on behalf of SoC Labs, under Arm Academic Access license.
 //
 // Contributors
 //
 // David Flynn (d.w.flynn@soton.ac.uk)
 //
-// Copyright � 2021-3, SoC Labs (www.soclabs.org)
+// Copyright � 2021-3, SoC Labs (www.soclabs.org)
 //-----------------------------------------------------------------------------
 */
 
-- 
GitLab