From 887a29a24b9cb570f64109ea2da1b46f6c66cf32 Mon Sep 17 00:00:00 2001 From: dam1n19 <dam1n19@soton.ac.uk> Date: Wed, 28 Jun 2023 17:13:15 +0100 Subject: [PATCH] Got Secoworks aes accelerator added to project --- flist/mem/fpga_mem.flist | 3 +- flist/project/accelerator.flist | 3 + flist/project/system.flist | 2 +- nanosoc_tech | 2 +- proj-branch | 6 +- simulate/socsim/system_secworks_aes128.sh | 3 +- system/src/accelerator_subsystem.v | 74 +++++++++++ system/src/nanosoc_acc_wrapper.v | 76 ----------- system/src/nanosoc_exp.v | 152 ---------------------- system/src/nanosoc_exp_wrapper.v | 76 ----------- 10 files changed, 86 insertions(+), 311 deletions(-) create mode 100644 system/src/accelerator_subsystem.v delete mode 100644 system/src/nanosoc_acc_wrapper.v delete mode 100644 system/src/nanosoc_exp.v delete mode 100644 system/src/nanosoc_exp_wrapper.v diff --git a/flist/mem/fpga_mem.flist b/flist/mem/fpga_mem.flist index 75aeb75..d45130c 100644 --- a/flist/mem/fpga_mem.flist +++ b/flist/mem/fpga_mem.flist @@ -19,4 +19,5 @@ // +incdir+$(SOCLABS_FPGA_LIB_TECH_DIR)/sram/verilog/ // - Top-level testbench -$(SOCLABS_FPGA_LIB_TECH_DIR)/sram/verilog/sl_ahb_sram.v \ No newline at end of file +$(SOCLABS_FPGA_LIB_TECH_DIR)/sram/verilog/sl_ahb_sram.v +$(SOCLABS_FPGA_LIB_TECH_DIR)/rom/verilog/sl_ahb_rom.v \ No newline at end of file diff --git a/flist/project/accelerator.flist b/flist/project/accelerator.flist index a9d3db2..1b868a8 100644 --- a/flist/project/accelerator.flist +++ b/flist/project/accelerator.flist @@ -12,3 +12,6 @@ +libext+.v+.vlib // ============= Accelerator Module search path ============= ++incdir+$(ACCELERATOR_DIR)/src/rtl +$(SOCLABS_PROJECT_DIR)/system/src/accelerator_subsystem.v +$(SOCLABS_PROJECT_DIR)/wrapper/src/soclabs_ahb_aes128_ctrl.v \ No newline at end of file diff --git a/flist/project/system.flist b/flist/project/system.flist index c70ea93..c03340d 100644 --- a/flist/project/system.flist +++ b/flist/project/system.flist @@ -14,7 +14,7 @@ // ============= Accelerator Module search path ============= // ! Point this to your accelerator filelist -// -f $(SOCLABS_PROJECT_DIR)/flist/project/accelerator.flist +-f $(SOCLABS_PROJECT_DIR)/flist/project/accelerator.flist // ============= Wrapper Filelist ========================= -f $(SOCLABS_PROJECT_DIR)/flist/project/wrapper.flist diff --git a/nanosoc_tech b/nanosoc_tech index a2e3324..9408699 160000 --- a/nanosoc_tech +++ b/nanosoc_tech @@ -1 +1 @@ -Subproject commit a2e3324d42d4cad8725c3ea746119cccc094dbcf +Subproject commit 9408699b35a7fe343821afdb8cb164754ed80dda diff --git a/proj-branch b/proj-branch index ca916d0..4c11f8f 100644 --- a/proj-branch +++ b/proj-branch @@ -11,7 +11,8 @@ # Each Repo needs to have its branch set manually in here - they will defaultly be checked out to main # Project Repository Subrepository Branch Index # Add your Accelerator Repository here -# accelerator_repo: main +secworks-aes: master + nanosoc_tech: feat_nanosoc_regions nanosoc_tech/system/slcorem0_tech: main nanosoc_tech/system/sldma230_tech: main @@ -21,5 +22,4 @@ fpga_lib_tech: main generic_lib_tech: main rtl_primitives_tech: main soctools_flow: main -soctools_flow/tools/chipkit_flow: main -secworks-aes: master \ No newline at end of file +soctools_flow/tools/chipkit_flow: main \ No newline at end of file diff --git a/simulate/socsim/system_secworks_aes128.sh b/simulate/socsim/system_secworks_aes128.sh index 9819cb1..1bfacd4 100755 --- a/simulate/socsim/system_secworks_aes128.sh +++ b/simulate/socsim/system_secworks_aes128.sh @@ -24,7 +24,8 @@ cd $SOCLABS_PROJECT_DIR/simulate/sim/$SIM_NAME # Compile Simulation # Call makefile in NanoSoC Repo with options echo ${2} -make -C $SOCLABS_NANOSOC_TECH_DIR run_xm \ +make -C $SOCLABS_NANOSOC_TECH_DIR run_mti \ SIM_DIR=$SIM_DIR \ + ACCELERATOR=yes \ ${@:2} diff --git a/system/src/accelerator_subsystem.v b/system/src/accelerator_subsystem.v new file mode 100644 index 0000000..a6e5690 --- /dev/null +++ b/system/src/accelerator_subsystem.v @@ -0,0 +1,74 @@ +//----------------------------------------------------------------------------- +// SoC Labs Basic Example Accelerator Wrapper +// A joint work commissioned on behalf of SoC Labs; under Arm Academic Access license. +// +// Contributors +// +// David Mapstone (d.a.mapstone@soton.ac.uk) +// David Flynn (d.w.flynn@soton.ac.uk) +// +// Copyright (C) 2023; SoC Labs (www.soclabs.org) +//----------------------------------------------------------------------------- + +module accelerator_subsystem #( + parameter SYS_ADDR_W=32, + parameter SYS_DATA_W=32, + parameter AHBADDRWIDTH=16, + parameter INPACKETWIDTH=128, + parameter CFGSIZEWIDTH=64, + parameter CFGSCHEMEWIDTH=2, + parameter OUTPACKETWIDTH=128, + parameter CFGNUMIRQ=4 + ) ( + input wire HCLK, // Clock + input wire HRESETn, // Reset + + // AHB connection to Initiator + input wire HSEL, + input wire [AHBADDRWIDTH-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 [31:0] HWDATA, + + output wire HREADYOUT, + output wire HRESP, + output wire [31:0] HRDATA, + + // Data Request Signal to DMAC + output wire [1:0] EXP_DRQ, + input wire [1:0] EXP_DLAST, + + // Interrupts + output wire [CFGNUMIRQ-1:0] EXP_IRQ + + ); + + soclabs_ahb_aes128_ctrl u_exp_aes128 ( + .ahb_hclk (HCLK), + .ahb_hresetn (HRESETn), + .ahb_hsel (HSEL), + .ahb_haddr16 (HADDR[15:0]), + .ahb_htrans (HTRANS), + .ahb_hwrite (HWRITE), + .ahb_hsize (HSIZE), + .ahb_hprot (HPROT), + .ahb_hwdata (HWDATA), + .ahb_hready (HREADY), + .ahb_hrdata (HRDATA), + .ahb_hreadyout (HREADYOUT), + .ahb_hresp (HRESP), + .drq_ipdma128 (EXP_DRQ[0]), + .dlast_ipdma128 (1'b0), + .drq_opdma128 (EXP_DRQ[1]), + .dlast_opdma128 (1'b0), + .irq_key128 (EXP_IRQ[0]), + .irq_ip128 (EXP_IRQ[1]), + .irq_op128 (EXP_IRQ[2]), + .irq_error (EXP_IRQ[3]), + .irq_merged ( ) + ); + +endmodule diff --git a/system/src/nanosoc_acc_wrapper.v b/system/src/nanosoc_acc_wrapper.v deleted file mode 100644 index 860ed3b..0000000 --- a/system/src/nanosoc_acc_wrapper.v +++ /dev/null @@ -1,76 +0,0 @@ -//----------------------------------------------------------------------------- -// SoC Labs Basic Example Accelerator Wrapper -// A joint work commissioned on behalf of SoC Labs; under Arm Academic Access license. -// -// Contributors -// -// David Mapstone (d.a.mapstone@soton.ac.uk) -// David Flynn (d.w.flynn@soton.ac.uk) -// -// Copyright (C) 2023; SoC Labs (www.soclabs.org) -//----------------------------------------------------------------------------- - -module nanosoc_exp_wrapper #( - parameter AHBADDRWIDTH=16, - parameter INPACKETWIDTH=128, - parameter CFGSIZEWIDTH=64, - parameter CFGSCHEMEWIDTH=2, - parameter OUTPACKETWIDTH=128, - 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 - - ); - - soclabs_ahb_aes128_ctrl u_exp_aes128 ( - .ahb_hclk (HCLK), - .ahb_hresetn (HRESETn), - .ahb_hsel (HSEL_i), - .ahb_haddr16 (HADDR_i[15:0]), - .ahb_htrans (HTRANS_i), - .ahb_hwrite (HWRITE_i), - .ahb_hsize (HSIZE_i), - .ahb_hprot (HPROT_i), - .ahb_hwdata (HWDATA_i), - .ahb_hready (HREADY_i), - .ahb_hrdata (HRDATA_o), - .ahb_hreadyout (HREADYOUT_o), - .ahb_hresp (HRESP_o), - .drq_ipdma128 (exp_drq_ip_o), - .dlast_ipdma128 (1'b0), - .drq_opdma128 (exp_drq_op_o), - .dlast_opdma128 (1'b0), - .irq_key128 (exp_irq_o[0]), - .irq_ip128 (exp_irq_o[1]), - .irq_op128 (exp_irq_o[2]), - .irq_error (exp_irq_o[3]), - .irq_merged ( ) - ); - -endmodule diff --git a/system/src/nanosoc_exp.v b/system/src/nanosoc_exp.v deleted file mode 100644 index b8794b4..0000000 --- a/system/src/nanosoc_exp.v +++ /dev/null @@ -1,152 +0,0 @@ -//----------------------------------------------------------------------------- -// 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) -//----------------------------------------------------------------------------- -`include "cmsdk_ahb_default_slave.v" -`include "cmsdk_ahb_slave_mux.v" - -module nanosoc_exp #( - parameter ADDRWIDTH=29, // Region Address Width - parameter ACCEL_ADDRWIDTH=12 // Region Address Width - )( - input wire HCLK, // Clock - input wire HRESETn, // Reset - - // AHB connection to Initiator - input wire HSELS, - input wire [ADDRWIDTH-1:0] HADDRS, - input wire [1:0] HTRANSS, - input wire [2:0] HSIZES, - input wire [3:0] HPROTS, - input wire HWRITES, - input wire HREADYS, - input wire [31:0] HWDATAS, - - output wire HREADYOUTS, - output wire HRESPS, - output wire [31:0] HRDATAS, - - output wire ip_data_req, - output wire op_data_req - ); - -//******************************************************************************** -// Internal Wires -//******************************************************************************** - -// Accelerator AHB Signals -wire HSEL0; -wire HREADYOUT0; -wire HRESP0; -wire [31:0] HRDATA0; - -// Default Slave AHB Signals -wire HSEL1; -wire HREADYOUT1; -wire HRESP1; -wire [31:0] HRDATA1; - -//******************************************************************************** -// Address decoder, need to be changed for other configuration -//******************************************************************************** -// 0x00010000 - 0x00010FFF : HSEL #0 - Hash Accelerator -// Other addresses : HSEL #1 - Default target - - assign HSEL0 = (HADDRS[ADDRWIDTH-1:12] == 'h00010) ? 1'b1:1'b0; - assign HSEL1 = HSEL0 ? 1'b0:1'b1; - -//******************************************************************************** -// Slave multiplexer module: -// multiplex the target signals to master, three ports are enabled -//******************************************************************************** - -cmsdk_ahb_slave_mux #( - 1, //PORT0_ENABLE - 1, //PORT1_ENABLE - 1, //PORT2_ENABLE - 0, //PORT3_ENABLE - 0, //PORT4_ENABLE - 0, //PORT5_ENABLE - 0, //PORT6_ENABLE - 0, //PORT7_ENABLE - 0, //PORT8_ENABLE - 0 //PORT9_ENABLE - ) u_ahb_slave_mux ( - .HCLK (HCLK), - .HRESETn (HRESETn), - .HREADY (HREADYS), - .HSEL0 (HSEL0), // Input Port 0 - .HREADYOUT0 (HREADYOUT0), - .HRESP0 (HRESP0), - .HRDATA0 (HRDATA0), - .HSEL1 (HSEL1), // Input Port 1 - .HREADYOUT1 (HREADYOUT1), - .HRESP1 (HRESP1), - .HRDATA1 (HRDATA1), - .HSEL2 (1'b0), // Input Port 2 - .HREADYOUT2 (), - .HRESP2 (), - .HRDATA2 (), - .HSEL3 (1'b0), // Input Port 3 - .HREADYOUT3 (), - .HRESP3 (), - .HRDATA3 (), - .HSEL4 (1'b0), // Input Port 4 - .HREADYOUT4 (), - .HRESP4 (), - .HRDATA4 (), - .HSEL5 (1'b0), // Input Port 5 - .HREADYOUT5 (), - .HRESP5 (), - .HRDATA5 (), - .HSEL6 (1'b0), // Input Port 6 - .HREADYOUT6 (), - .HRESP6 (), - .HRDATA6 (), - .HSEL7 (1'b0), // Input Port 7 - .HREADYOUT7 (), - .HRESP7 (), - .HRDATA7 (), - .HSEL8 (1'b0), // Input Port 8 - .HREADYOUT8 (), - .HRESP8 (), - .HRDATA8 (), - .HSEL9 (1'b0), // Input Port 9 - .HREADYOUT9 (), - .HRESP9 (), - .HRDATA9 (), - - .HREADYOUT (HREADYOUTS), // Outputs - .HRESP (HRESPS), - .HRDATA (HRDATAS) - ); - - -//******************************************************************************** -// Slave module 1: Accelerator AHB target module -//******************************************************************************** - -// Instantiate your accelerator wrapper HERE - -//******************************************************************************** -// Slave module 2: AHB default target module -//******************************************************************************** - cmsdk_ahb_default_slave u_ahb_default_slave( - .HCLK (HCLK), - .HRESETn (HRESETn), - .HSEL (HSEL1), - .HTRANS (HTRANSS), - .HREADY (HREADYS), - .HREADYOUT (HREADYOUT1), - .HRESP (HRESP1) - ); - - assign HRDATA1 = {32{1'b0}}; // Default target don't have data - -endmodule diff --git a/system/src/nanosoc_exp_wrapper.v b/system/src/nanosoc_exp_wrapper.v deleted file mode 100644 index 860ed3b..0000000 --- a/system/src/nanosoc_exp_wrapper.v +++ /dev/null @@ -1,76 +0,0 @@ -//----------------------------------------------------------------------------- -// SoC Labs Basic Example Accelerator Wrapper -// A joint work commissioned on behalf of SoC Labs; under Arm Academic Access license. -// -// Contributors -// -// David Mapstone (d.a.mapstone@soton.ac.uk) -// David Flynn (d.w.flynn@soton.ac.uk) -// -// Copyright (C) 2023; SoC Labs (www.soclabs.org) -//----------------------------------------------------------------------------- - -module nanosoc_exp_wrapper #( - parameter AHBADDRWIDTH=16, - parameter INPACKETWIDTH=128, - parameter CFGSIZEWIDTH=64, - parameter CFGSCHEMEWIDTH=2, - parameter OUTPACKETWIDTH=128, - 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 - - ); - - soclabs_ahb_aes128_ctrl u_exp_aes128 ( - .ahb_hclk (HCLK), - .ahb_hresetn (HRESETn), - .ahb_hsel (HSEL_i), - .ahb_haddr16 (HADDR_i[15:0]), - .ahb_htrans (HTRANS_i), - .ahb_hwrite (HWRITE_i), - .ahb_hsize (HSIZE_i), - .ahb_hprot (HPROT_i), - .ahb_hwdata (HWDATA_i), - .ahb_hready (HREADY_i), - .ahb_hrdata (HRDATA_o), - .ahb_hreadyout (HREADYOUT_o), - .ahb_hresp (HRESP_o), - .drq_ipdma128 (exp_drq_ip_o), - .dlast_ipdma128 (1'b0), - .drq_opdma128 (exp_drq_op_o), - .dlast_opdma128 (1'b0), - .irq_key128 (exp_irq_o[0]), - .irq_ip128 (exp_irq_o[1]), - .irq_op128 (exp_irq_o[2]), - .irq_error (exp_irq_o[3]), - .irq_merged ( ) - ); - -endmodule -- GitLab