From 9f9a9c7368d992cb9b5e5fc08d5e419dd679c33b Mon Sep 17 00:00:00 2001
From: dam1n19 <dam1n19@soton.ac.uk>
Date: Tue, 23 May 2023 13:38:58 +0100
Subject: [PATCH] Updated set_env and changed nanosoc instantiation parameters

---
 flist/project/wrapper.flist        |   7 +-
 set_env.sh                         |   3 +
 system/src/nanosoc_exp.v           |  29 +++++++--
 wrapper/src/wrapper_accelerator.sv | 101 +++++++++++++++--------------
 4 files changed, 84 insertions(+), 56 deletions(-)

diff --git a/flist/project/wrapper.flist b/flist/project/wrapper.flist
index 2122cf0..bc7dfc6 100644
--- a/flist/project/wrapper.flist
+++ b/flist/project/wrapper.flist
@@ -12,7 +12,7 @@
 // Abstract : Verilog Command File for Top-level Accelerator Wrapper
 //-----------------------------------------------------------------------------
 
-// DESIGN_TOP your_wrapper
+// DESIGN_TOP wrapper_accelerator
 
 // ============= Verilog library extensions ===========
 +libext+.v+.vlib
@@ -20,9 +20,12 @@
 // =============    Wrapper IP Filelist    ========================
 -f $(PROJECT_DIR)/flist/wrapper/wrapper_ip.flist
 
+// - Corstone-101 System components
+-f $(PROJECT_DIR)/flist/corstone-101/corstone-101_ip.flist
+
 // =============    Accelerator Module search path    =============
 -y $(PROJECT_DIR)/wrapper/src/
 +incdir+$(PROJECT_DIR)/wrapper/src/
 
 // Add the source files related to your custom wrapper
-// $(PROJECT_DIR)/wrapper/src/your_wrapper.v
+$(PROJECT_DIR)/wrapper/src/wrapper_accelerator.sv
diff --git a/set_env.sh b/set_env.sh
index 133b92f..8328ecf 100755
--- a/set_env.sh
+++ b/set_env.sh
@@ -32,6 +32,9 @@ else
         export DESIGN_ROOT
     fi
 
+    # Add in location for socsim scripts
+    export SOCSIM_PATH=$PROJECT_DIR/simulate/socsim
+    
     # Source dependency environment variable script
     source $PROJECT_DIR/env/dependency_env.sh
 
diff --git a/system/src/nanosoc_exp.v b/system/src/nanosoc_exp.v
index e038ae7..b19b900 100644
--- a/system/src/nanosoc_exp.v
+++ b/system/src/nanosoc_exp.v
@@ -13,7 +13,7 @@
 
 module nanosoc_exp #(
     parameter    ADDRWIDTH=29,      // Region Address Width
-    parameter    ACCEL_ADDRWIDTH=12 // Region Address Width
+    parameter    ACCEL_ADDRWIDTH=13 // Region Address Width
   )(
     input  wire                  HCLK,       // Clock
     input  wire                  HRESETn,    // Reset
@@ -58,7 +58,7 @@ wire [31:0]      HRDATA1;
 // 0x00010000 - 0x00010FFF : HSEL #0 - Hash Accelerator
 // Other addresses         : HSEL #1 - Default target
 
-  assign HSEL0 = (HADDRS[ADDRWIDTH-1:12] == 'h00010) ? 1'b1:1'b0;
+  assign HSEL0 = (HADDRS[ADDRWIDTH-1:16] < 'h200) ? 1'b1:1'b0;
   assign HSEL1 = HSEL0 ? 1'b0:1'b1;
 
 //********************************************************************************
@@ -131,8 +131,29 @@ cmsdk_ahb_slave_mux  #(
 //********************************************************************************
 // Slave module 1: Accelerator AHB target module
 //********************************************************************************
+  wrapper_accelerator #(ACCEL_ADDRWIDTH
+  ) u_accelerator (
+  .HCLK         (HCLK),
+  .HRESETn      (HRESETn),
+
+  //  Input target port: 32 bit data bus interface
+  .HSELS        (HSEL0),
+  .HADDRS       (HADDRS[ACCEL_ADDRWIDTH-1:0]),
+  .HTRANSS      (HTRANSS),
+  .HSIZES       (HSIZES),
+  .HPROTS       (HPROTS),
+  .HWRITES      (HWRITES),
+  .HREADYS      (HREADYS),
+  .HWDATAS      (HWDATAS),
+
+  .HREADYOUTS   (HREADYOUT0),
+  .HRESPS       (HRESP0),
+  .HRDATAS      (HRDATA0),
+  .in_data_req  (ip_data_req),
+  .out_data_req (op_data_req)
+
+  );
 
-// Instantiate your accelerator wrapper HERE
 
 //********************************************************************************
 // Slave module 2: AHB default target module
@@ -144,7 +165,7 @@ cmsdk_ahb_slave_mux  #(
   .HTRANS       (HTRANSS),
   .HREADY       (HREADYS),
   .HREADYOUT    (HREADYOUT1),
-  .HRESP        (HRESPS)
+  .HRESP        (HRESP1)
   );
 
  assign HRDATA1 = {32{1'b0}}; // Default target don't have data
diff --git a/wrapper/src/wrapper_accelerator.sv b/wrapper/src/wrapper_accelerator.sv
index e90ddf7..878cda9 100644
--- a/wrapper/src/wrapper_accelerator.sv
+++ b/wrapper/src/wrapper_accelerator.sv
@@ -10,7 +10,7 @@
 //-----------------------------------------------------------------------------
 
 module wrapper_accelerator #(
-  parameter AHBADDRWIDTH=12,
+  parameter AHBADDRWIDTH=13,
   parameter INPACKETWIDTH=512,
   parameter CFGSIZEWIDTH=64,
   parameter CFGSCHEMEWIDTH=2,
@@ -57,7 +57,7 @@ module wrapper_accelerator #(
   localparam OUTPACKETSPACEWIDTH = OUTPORTAHBADDRWIDTH-OUTPACKETBYTEWIDTH; // Number of Bits to represent all Packets in Address Space
 
   // Control and Status Register Parameters
-  localparam [AHBADDRWIDTH-1:0] CSRADDR         = 'h800;
+  localparam [AHBADDRWIDTH-1:0] CSRADDR         = 'h1000;
   localparam                    CSRADDRWIDTH    = AHBADDRWIDTH - 2;
   
   //**********************************************************
@@ -94,7 +94,7 @@ module wrapper_accelerator #(
 
   // Internal AHB Address Assignment
   assign hsel0 = ((HADDRS < OUTPORTADDR) && (HADDRS >= INPORTADDR)) ? 1'b1:1'b0; // Input Port Select
-  assign hsel1 = ((HADDRS < CSRADDR) && (HADDRS >= OUTPORTADDR)) ? 1'b1:1'b0; // Output Port Select
+  assign hsel1 = ((HADDRS < CSRADDR) && (HADDRS >= OUTPORTADDR)) ? 1'b1:1'b0;    // Output Port Select
   assign hsel2 = (HADDRS >= CSRADDR) ? 1'b1:1'b0;                                // CSR Select
   assign hsel3 = (hsel0 | hsel1 | hsel2) ? 1'b0:1'b1;                            // Default Target Select
 
@@ -367,21 +367,22 @@ module wrapper_accelerator #(
   logic ctrl_reg_write_en, ctrl_reg_read_en;
   assign ctrl_reg_write_en = csr_reg_write_en & (csr_reg_addr < 10'h100);
   assign ctrl_reg_read_en  = csr_reg_read_en  & (csr_reg_addr < 10'h100);
+
   // // Example Register Block
-  // cmsdk_apb3_eg_slave_reg #(
-  //   CSRADDRWIDTH
-  // ) u_csr_block (
-  //   .pclk            (HCLK),
-  //   .presetn         (HRESETn),
-
-  //   // Register interface
-  //   .addr            (csr_reg_addr),
-  //   .read_en         (csr_reg_read_en),
-  //   .write_en        (csr_reg_write_en),
-  //   .wdata           (csr_reg_wdata),
-  //   .ecorevnum       (4'd0),
-  //   .rdata           (csr_reg_rdata)
-  // );
+  cmsdk_apb3_eg_slave_reg #(
+    CSRADDRWIDTH
+  ) u_csr_block (
+    .pclk            (HCLK),
+    .presetn         (HRESETn),
+
+    // Register interface
+    .addr            (csr_reg_addr),
+    .read_en         (csr_reg_read_en),
+    .write_en        (csr_reg_write_en),
+    .wdata           (csr_reg_wdata),
+    .ecorevnum       (4'd0),
+    .rdata           (csr_reg_rdata)
+  );
 
   //----------------------------------------------------------
   // Default AHB Target Logic
@@ -411,39 +412,39 @@ module wrapper_accelerator #(
   // Wrapper DMA Data Request Generation
   //**********************************************************
 
-  wrapper_req_ctrl_reg #(
-    CSRADDRWIDTH
-  ) u_wrapper_req_ctrl_reg (
-    .hclk        (HCLK),       
-    .hresetn     (HRESETn),    
-    .addr        (csr_reg_addr),
-    .read_en     (ctrl_reg_read_en),
-    .write_en    (ctrl_reg_write_en),
-    .wdata       (csr_reg_wdata),
-    .rdata       (csr_reg_rdata),
-
-    // Data Transfer Request Signaling
-    .req_act_ch0 (in_dma_req_act),
-    .req_act_ch1 (out_dma_req_act),
-    .req_act_ch2 (1'b0),
-    .req_act_ch3 (1'b0),
-    .req_act_ch4 (1'b0),
-
-    // DMA Request Output
-    .drq_ch0     (in_data_req),
-    .drq_ch1     (out_data_req),
-    .drq_ch2     (),
-    .drq_ch3     (),
-    .drq_ch4     (),
-
-    // Interrupt Request Output
-    .irq_ch0     (),
-    .irq_ch1     (),
-    .irq_ch2     (),
-    .irq_ch3     (),
-    .irq_ch4     (),
-    .irq_merged  ()
-  );
+  // wrapper_req_ctrl_reg #(
+  //   CSRADDRWIDTH
+  // ) u_wrapper_req_ctrl_reg (
+  //   .hclk        (HCLK),       
+  //   .hresetn     (HRESETn),    
+  //   .addr        (csr_reg_addr),
+  //   .read_en     (ctrl_reg_read_en),
+  //   .write_en    (ctrl_reg_write_en),
+  //   .wdata       (csr_reg_wdata),
+  //   .rdata       (csr_reg_rdata),
+
+  //   // Data Transfer Request Signaling
+  //   .req_act_ch0 (in_dma_req_act),
+  //   .req_act_ch1 (out_dma_req_act),
+  //   .req_act_ch2 (1'b0),
+  //   .req_act_ch3 (1'b0),
+  //   .req_act_ch4 (1'b0),
+
+  //   // DMA Request Output
+  //   .drq_ch0     (in_data_req),
+  //   .drq_ch1     (out_data_req),
+  //   .drq_ch2     (),
+  //   .drq_ch3     (),
+  //   .drq_ch4     (),
+
+  //   // Interrupt Request Output
+  //   .irq_ch0     (),
+  //   .irq_ch1     (),
+  //   .irq_ch2     (),
+  //   .irq_ch3     (),
+  //   .irq_ch4     (),
+  //   .irq_merged  ()
+  // );
 
   //**********************************************************
   // Accelerator Engine
-- 
GitLab