From b741c3ae734723a0bc344a98626af61b8ae909ce Mon Sep 17 00:00:00 2001
From: dwf1m12 <d.w.flynn@soton.ac.uk>
Date: Tue, 23 May 2023 15:49:23 +0100
Subject: [PATCH] updated nanosoc wrapper layer and file lists

---
 flist/nanosoc/nanosoc_tb.flist     |  3 +-
 flist/project/accelerator.flist    | 12 +++--
 flist/project/system.flist         |  3 +-
 system/src/nanosoc_exp.v           | 28 +++++++---
 system/src/nanosoc_exp_wrapper.v   | 85 ++++++++++++++++++++++++++++++
 wrapper/src/wrapper_accelerator.sv | 17 +++++-
 6 files changed, 133 insertions(+), 15 deletions(-)
 create mode 100644 system/src/nanosoc_exp_wrapper.v

diff --git a/flist/nanosoc/nanosoc_tb.flist b/flist/nanosoc/nanosoc_tb.flist
index e5438e8..335e41b 100644
--- a/flist/nanosoc/nanosoc_tb.flist
+++ b/flist/nanosoc/nanosoc_tb.flist
@@ -30,4 +30,5 @@ $(NANOSOC_TECH_DIR)/system/verif/verilog/nanosoc_ft1248x1_to_axi_streamio_v1_0.v
 $(NANOSOC_TECH_DIR)/system/verif/verilog/nanosoc_axi_stream_io_8_rxd_to_file.v
 $(NANOSOC_TECH_DIR)/system/verif/verilog/nanosoc_track_tb_iostream.v
 $(NANOSOC_TECH_DIR)/system/verif/verilog/nanosoc_ft1248x1_track.v
-$(NANOSOC_TECH_DIR)/system/verif/verilog/nanosoc_dma_log_to_file.v
\ No newline at end of file
+$(NANOSOC_TECH_DIR)/system/verif/verilog/nanosoc_dma_log_to_file.v
+$(NANOSOC_TECH_DIR)/system/verif/verilog/nanosoc_acc_log_to_file.v
diff --git a/flist/project/accelerator.flist b/flist/project/accelerator.flist
index ca1d834..3af2f7a 100644
--- a/flist/project/accelerator.flist
+++ b/flist/project/accelerator.flist
@@ -13,8 +13,10 @@
 
 // =============    Accelerator Module search path    =============
 
-$(SHA256_ACC_DIR)/src/rtl/sha256.v
-$(SHA256_ACC_DIR)/src/rtl/sha256_core.v
-$(SHA256_ACC_DIR)/src/rtl/sha256_w_mem.v
-$(SHA256_ACC_DIR)/src/rtl/sha256_k_constants.v
-$(SHA256_ACC_DIR)/src/interfaces/stream/rtl/sha256_stream.v
\ No newline at end of file
+//-y (PROJECT_DIR)/sha256/src/rtl/
+//-y (PROJECT_DIR)/sha256/src/interfaces/stream/rtl/
+
+-y $(SHA256_ACC_DIR)/src/rtl/
+-y $(SHA256_ACC_DIR)/src/interfaces/stream/rtl/
++incdir+$(SHA256_ACC_DIR)/src/rtl/
++incdir+$(SHA256_ACC_DIR)/src/interfaces/stream/rtl/
diff --git a/flist/project/system.flist b/flist/project/system.flist
index c1829e8..b4b0564 100644
--- a/flist/project/system.flist
+++ b/flist/project/system.flist
@@ -58,10 +58,11 @@
 -f $(PROJECT_DIR)/flist/cortex-m0/cortex-m0_ip.flist
 
 // - NanoSoC Custom Expansion Region
+$(PROJECT_DIR)/system/src/nanosoc_exp_wrapper.v
 $(PROJECT_DIR)/system/src/nanosoc_exp.v
 
 // - Top level
 -f $(PROJECT_DIR)/flist/nanosoc/nanosoc_tb.flist
 
 // =============    Bootrom Filelist      ================
-$(PROJECT_DIR)/system/src/bootrom/verilog/bootrom.v
\ No newline at end of file
+$(PROJECT_DIR)/system/src/bootrom/verilog/bootrom.v
diff --git a/system/src/nanosoc_exp.v b/system/src/nanosoc_exp.v
index b19b900..26b9ddf 100644
--- a/system/src/nanosoc_exp.v
+++ b/system/src/nanosoc_exp.v
@@ -12,9 +12,14 @@
 `include "cmsdk_ahb_slave_mux.v"
 
 module nanosoc_exp #(
-    parameter    ADDRWIDTH=29,      // Region Address Width
-    parameter    ACCEL_ADDRWIDTH=13 // Region Address Width
-  )(
+    parameter ADDRWIDTH=29,       // Region Decode Address Width
+    parameter ACCEL_ADDRWIDTH=13, // Region Address Width
+    parameter INPACKETWIDTH=512,
+    parameter CFGSIZEWIDTH=64,
+    parameter CFGSCHEMEWIDTH=2,
+    parameter OUTPACKETWIDTH=256,
+    parameter CFGNUMIRQ=0
+) (
     input  wire                  HCLK,       // Clock
     input  wire                  HRESETn,    // Reset
 
@@ -32,8 +37,17 @@ module nanosoc_exp #(
     output wire                  HRESPS,
     output wire  [31:0]          HRDATAS,
 
-    output wire                  ip_data_req,
-    output wire                  op_data_req
+    // Input Data Request Signal to DMAC
+    output wire                  in_data_req,
+//    input  wire                  in_data_last,
+
+    // Output Data Request Signal to DMAC
+    output wire                  out_data_req
+//    input  wire                  out_data_last,
+    
+    // Interrupts
+//    output wire   [CFGNUMIRQ-1:0] irq
+
   );
 
 //********************************************************************************
@@ -58,8 +72,8 @@ wire [31:0]      HRDATA1;
 // 0x00010000 - 0x00010FFF : HSEL #0 - Hash Accelerator
 // Other addresses         : HSEL #1 - Default target
 
-  assign HSEL0 = (HADDRS[ADDRWIDTH-1:16] < 'h200) ? 1'b1:1'b0;
-  assign HSEL1 = HSEL0 ? 1'b0:1'b1;
+  assign HSEL0 = (HSELS & (HADDRS[ADDRWIDTH-1:12] == 'h00010)) ? 1'b1:1'b0;
+  assign HSEL1 = HSEL0 ? 1'b0:HSELS;
 
 //********************************************************************************
 // Slave multiplexer module:
diff --git a/system/src/nanosoc_exp_wrapper.v b/system/src/nanosoc_exp_wrapper.v
new file mode 100644
index 0000000..eba73e4
--- /dev/null
+++ b/system/src/nanosoc_exp_wrapper.v
@@ -0,0 +1,85 @@
+//-----------------------------------------------------------------------------
+// Nanosoc Expansion Region AHB Address Region
+// A joint work commissioned on behalf of SoC Labs, under Arm Academic Access license.
+//
+// Contributors
+//
+// David Mapstone (d.a.mapstone@soton.ac.uk)
+//
+// Copyright 2021-3, SoC Labs (www.soclabs.org)
+//-----------------------------------------------------------------------------
+
+module nanosoc_exp_wrapper #(
+    parameter AHBADDRWIDTH=29,       // Region Decode Address Width
+    parameter ACCEL_ADDRWIDTH=12, // Region Address Width
+    parameter INPACKETWIDTH=512,
+    parameter CFGSIZEWIDTH=64,
+    parameter CFGSCHEMEWIDTH=2,
+    parameter OUTPACKETWIDTH=256,
+    parameter CFGNUMIRQ=4
+  )(
+    input  wire                  HCLK,       // Clock
+    input  wire                  HRESETn,    // Reset
+
+  // AHB connection to Initiator
+    input  wire                  HSEL_i,
+    input  wire  [AHBADDRWIDTH-1:0] HADDR_i,
+    input  wire  [1:0]           HTRANS_i,
+    input  wire  [2:0]           HSIZE_i,
+    input  wire  [3:0]           HPROT_i,
+    input  wire                  HWRITE_i,
+    input  wire                  HREADY_i,
+    input  wire  [31:0]          HWDATA_i,
+
+    output wire                  HREADYOUT_o,
+    output wire                  HRESP_o,
+    output wire  [31:0]          HRDATA_o,
+
+    // Input Data Request Signal to DMAC
+    output wire                  exp_drq_ip_o,
+    input  wire                  exp_dlast_ip_i,
+
+    // Output Data Request Signal to DMAC
+    output wire                  exp_drq_op_o,
+    input  wire                  exp_dlast_op_i,
+    
+    // Interrupts
+    output wire   [CFGNUMIRQ-1:0] exp_irq_o
+
+  );
+
+//********************************************************************************
+// Slave module 1: Accelerator AHB target module
+//********************************************************************************
+
+// Instantiate your accelerator wrapper HERE
+nanosoc_exp #(
+  .AHBADDRWIDTH(12),
+  .INPACKETWIDTH(512),
+  .CFGSIZEWIDTH(64),
+  .CFGSCHEMEWIDTH(2),
+  .OUTPACKETWIDTH(256),
+  .CFGNUMIRQ(0)
+) nanosoc_exp (
+  .HCLK          (HCLK),
+  .HRESETn       (HRESETn),
+  //  AHB port: 32 bit data bus interface
+  .HSELS         (HSEL_i),
+  .HADDRS        (HADDR_i[28:0]),
+  .HTRANSS       (HTRANS_i),
+  .HSIZES        (HSIZE_i),
+  .HPROTS        (HPROT_i),
+  .HWRITES       (HWRITE_i),
+  .HREADYS       (HREADY_i),
+  .HWDATAS       (HWDATA_i),
+  .HREADYOUTS    (HREADYOUT_o),
+  .HRESPS        (HRESP_o),
+  .HRDATAS       (HRDATA_o),
+  .in_data_req   (exp_drq_ip_o),
+  .out_data_req  (exp_drq_op_o)
+);
+
+// tie off interrupts at this stage
+assign exp_irq_o[CFGNUMIRQ-1:0] = {CFGNUMIRQ{1'b0}};
+
+endmodule
diff --git a/wrapper/src/wrapper_accelerator.sv b/wrapper/src/wrapper_accelerator.sv
index 878cda9..b992c1c 100644
--- a/wrapper/src/wrapper_accelerator.sv
+++ b/wrapper/src/wrapper_accelerator.sv
@@ -9,12 +9,25 @@
 // Copyright 2023; SoC Labs (www.soclabs.org)
 //-----------------------------------------------------------------------------
 
+// import secworks sha256 IP but fix up default nettype
+`include "sha256_stream.v"
+`default_nettype wire
+`include "sha256.v"
+`default_nettype wire
+`include "sha256_core.v"
+`default_nettype wire
+`include "sha256_w_mem.v"
+`default_nettype wire
+`include "sha256_k_constants.v"
+`default_nettype wire
+
 module wrapper_accelerator #(
   parameter AHBADDRWIDTH=13,
   parameter INPACKETWIDTH=512,
   parameter CFGSIZEWIDTH=64,
   parameter CFGSCHEMEWIDTH=2,
-  parameter OUTPACKETWIDTH=256
+  parameter OUTPACKETWIDTH=256,
+  parameter CFGNUMIRQ=0
   ) (
     input  logic                     HCLK,       // Clock
     input  logic                     HRESETn,    // Reset
@@ -520,4 +533,6 @@ module wrapper_accelerator #(
     .data_out_last  (out_hash_last),
     .status_ptr_dif ()
   );
+
 endmodule
+
-- 
GitLab