From 35ead6d605e0ebd101e90505ee1e12dd4035d207 Mon Sep 17 00:00:00 2001 From: dam1n19 <dam1n19@soton.ac.uk> Date: Tue, 4 Jul 2023 17:23:46 +0100 Subject: [PATCH] Updated Imem ROM flow --- flist/nanosoc_ip.flist | 4 +- makefile | 2 + .../rom/verilog/nanosoc_region_imem_0.v | 63 ------------------- .../{ram => }/verilog/nanosoc_region_imem_0.v | 27 ++++++++ 4 files changed, 30 insertions(+), 66 deletions(-) delete mode 100644 nanosoc/nanosoc_regions/imem_0/rom/verilog/nanosoc_region_imem_0.v rename nanosoc/nanosoc_regions/imem_0/{ram => }/verilog/nanosoc_region_imem_0.v (77%) diff --git a/flist/nanosoc_ip.flist b/flist/nanosoc_ip.flist index 95250e2..76f4dd7 100644 --- a/flist/nanosoc_ip.flist +++ b/flist/nanosoc_ip.flist @@ -42,9 +42,7 @@ $(SOCLABS_NANOSOC_TECH_DIR)/nanosoc/nanosoc_regions/bootrom_0/verilog/nanosoc_re // NanoSoC Regions - CPU Memories $(SOCLABS_NANOSOC_TECH_DIR)/nanosoc/nanosoc_regions/dmem_0/verilog/nanosoc_region_dmem_0.v - -// TODO: Use ROM Memory for IMEM - switch back to SRAM -$(SOCLABS_NANOSOC_TECH_DIR)/nanosoc/nanosoc_regions/imem_0/rom/verilog/nanosoc_region_imem_0.v +$(SOCLABS_NANOSOC_TECH_DIR)/nanosoc/nanosoc_regions/imem_0/verilog/nanosoc_region_imem_0.v // NanoSoC Regions - Expansion Regions $(SOCLABS_NANOSOC_TECH_DIR)/nanosoc/nanosoc_regions/exp/verilog/nanosoc_region_exp.v diff --git a/makefile b/makefile index 621b279..856f9e0 100644 --- a/makefile +++ b/makefile @@ -95,6 +95,8 @@ ifeq ($(ACCELERATOR),yes) NANOSOC_DEFINES += ACCELERATOR_SUBSYSTEM endif +NANOSOC_DEFINES += IMEM_0_ROM + # Is the Arm QuickStart being used? QUICKSTART ?= no diff --git a/nanosoc/nanosoc_regions/imem_0/rom/verilog/nanosoc_region_imem_0.v b/nanosoc/nanosoc_regions/imem_0/rom/verilog/nanosoc_region_imem_0.v deleted file mode 100644 index f5575d6..0000000 --- a/nanosoc/nanosoc_regions/imem_0/rom/verilog/nanosoc_region_imem_0.v +++ /dev/null @@ -1,63 +0,0 @@ -//----------------------------------------------------------------------------- -// Nanosoc CPU Instruction Memory Region (IMEM) - ROM -// - Region Mapped to: 0x20000000-0x2fffffff -// - Memory Exhibits Wrapping Behaviour -// 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_region_imem_0 #( - parameter SYS_ADDR_W = 32, // System Address Width - parameter SYS_DATA_W = 32, // System Data Width - parameter IMEM_RAM_ADDR_W = 14, // Width of IMEM RAM Address - Default 16KB - parameter IMEM_RAM_DATA_W = 32, // Width of IMEM RAM Data Bus - Default 32 bits - parameter IMEM_MEM_FPGA_IMG = "image.hex" // Image to Preload into ROM -)( - input wire HCLK, - input wire HRESETn, - - // AHB connection to Initiator - input wire HSEL, - input wire [SYS_ADDR_W-1:0] HADDR, - input wire [1:0] HTRANS, - input wire [2:0] HSIZE, - input wire [3:0] HPROT, - input wire HWRITE, - input wire HREADY, - input wire [SYS_DATA_W-1:0] HWDATA, - - output wire HREADYOUT, - output wire HRESP, - output wire [SYS_DATA_W-1:0] HRDATA -); - - // ROM Instantiation - sl_ahb_rom #( - .SYS_DATA_W (SYS_DATA_W), - .RAM_ADDR_W (IMEM_RAM_ADDR_W), - .RAM_DATA_W (IMEM_RAM_DATA_W), - .FILENAME (IMEM_MEM_FPGA_IMG) - ) u_imem_0 ( - // AHB Inputs - .HCLK (HCLK), - .HRESETn (HRESETn), - .HSEL (HSEL), - .HADDR (HADDR [IMEM_RAM_ADDR_W-1:0]), - .HTRANS (HTRANS), - .HSIZE (HSIZE), - .HWRITE (HWRITE), - .HWDATA (HWDATA), - .HREADY (HREADY), - - // AHB Outputs - .HREADYOUT (HREADYOUT), - .HRDATA (HRDATA), - .HRESP (HRESP) - ); - -endmodule \ No newline at end of file diff --git a/nanosoc/nanosoc_regions/imem_0/ram/verilog/nanosoc_region_imem_0.v b/nanosoc/nanosoc_regions/imem_0/verilog/nanosoc_region_imem_0.v similarity index 77% rename from nanosoc/nanosoc_regions/imem_0/ram/verilog/nanosoc_region_imem_0.v rename to nanosoc/nanosoc_regions/imem_0/verilog/nanosoc_region_imem_0.v index 7c7c0e2..7229818 100644 --- a/nanosoc/nanosoc_regions/imem_0/ram/verilog/nanosoc_region_imem_0.v +++ b/nanosoc/nanosoc_regions/imem_0/verilog/nanosoc_region_imem_0.v @@ -36,6 +36,31 @@ module nanosoc_region_imem_0 #( output wire [SYS_DATA_W-1:0] HRDATA ); +`ifdef IMEM_0_ROM + // ROM Instantiation + sl_ahb_rom #( + .SYS_DATA_W (SYS_DATA_W), + .RAM_ADDR_W (IMEM_RAM_ADDR_W), + .RAM_DATA_W (IMEM_RAM_DATA_W), + .FILENAME (IMEM_MEM_FPGA_IMG) + ) u_imem_0 ( + // AHB Inputs + .HCLK (HCLK), + .HRESETn (HRESETn), + .HSEL (HSEL), + .HADDR (HADDR [IMEM_RAM_ADDR_W-1:0]), + .HTRANS (HTRANS), + .HSIZE (HSIZE), + .HWRITE (HWRITE), + .HWDATA (HWDATA), + .HREADY (HREADY), + + // AHB Outputs + .HREADYOUT (HREADYOUT), + .HRDATA (HRDATA), + .HRESP (HRESP) + ); +`else // SRAM Instantiation sl_ahb_sram #( .SYS_DATA_W (SYS_DATA_W), @@ -58,5 +83,7 @@ module nanosoc_region_imem_0 #( .HRDATA (HRDATA), .HRESP (HRESP) ); +`endif + endmodule \ No newline at end of file -- GitLab