diff --git a/.gitmodules b/.gitmodules index 13b71911fb8c3c24c823283f1f5ced0ef868b54d..85fb57afa1284abf83b913add0ae9423289d5dda 100644 --- a/.gitmodules +++ b/.gitmodules @@ -10,3 +10,6 @@ [submodule "socsim"] path = socsim url = git@git.soton.ac.uk:soclabs/socsim.git +[submodule "CHIPKIT"] + path = CHIPKIT + url = git@git.soton.ac.uk:soclabs/CHIPKIT.git diff --git a/CHIPKIT b/CHIPKIT new file mode 160000 index 0000000000000000000000000000000000000000..2435cd9df8ff8a7e7d2e289b4e646eed10882e27 --- /dev/null +++ b/CHIPKIT @@ -0,0 +1 @@ +Subproject commit 2435cd9df8ff8a7e7d2e289b4e646eed10882e27 diff --git a/set_env.sh b/set_env.sh index 8d0c2c3100aed43376ccc385b87d5b5234a798a1..6fa88ed6111e5803651a93d9966076f0300982f9 100755 --- a/set_env.sh +++ b/set_env.sh @@ -36,7 +36,7 @@ else # Source environment variables for all submodules for d in $SOC_TOP_DIR/* ; do - if [ -f "$d/.git" ]; then + if [ -e "$d/.git" ]; then if [ -f "$d/set_env.sh" ]; then # If .git file exists - submodule source $d/set_env.sh diff --git a/sha-2-accelerator b/sha-2-accelerator index 1dd9a82ce6170d363933240053894e8f84928e55..bbd478b94f719df99ade719c546cfad52dd24e40 160000 --- a/sha-2-accelerator +++ b/sha-2-accelerator @@ -1 +1 @@ -Subproject commit 1dd9a82ce6170d363933240053894e8f84928e55 +Subproject commit bbd478b94f719df99ade719c546cfad52dd24e40 diff --git a/wrapper/regs/cregs.csv b/wrapper/regs/cregs.csv new file mode 100644 index 0000000000000000000000000000000000000000..c68d8e50d14cf0175dfaf88bbf9b0a18bee5b30f --- /dev/null +++ b/wrapper/regs/cregs.csv @@ -0,0 +1,5 @@ +name idx nbits start access test rval desc + +# Wrapper Control Register +accelerator_en 0 32 0 rw 0 0x00000000 Accelerator Enable Register +accelerator_channel_en 1 32 0 rw 0 0x00000000 Accelerator Channel Enable Register \ No newline at end of file diff --git a/wrapper/regs/cregs/CREGS.h b/wrapper/regs/cregs/CREGS.h new file mode 100644 index 0000000000000000000000000000000000000000..03b467eacbb96e4976e6acf1f83b6ca41610f727 --- /dev/null +++ b/wrapper/regs/cregs/CREGS.h @@ -0,0 +1,16 @@ +// VGEN START: Autogenerated by /Users/davidmapstone/Documents/SoCLabs/RTL/accelerator-system-top/CHIPKIT/tools/vgen/bin/vgen.py on 10:59:11 24/03/2023 + +#ifndef CREGS_H +#define CREGS_H + + +typedef struct +{ + __IO uint32_t ACCELERATOR_EN; /* Offset: 0x0 (R/W) Accelerator Enable Register */ + __IO uint32_t ACCELERATOR_CHANNEL_EN; /* Offset: 0x4 (R/W) Accelerator Channel Enable Register */ +} CREGS_TypeDef; + +#endif + +// VGEN END: Autogenerated by /Users/davidmapstone/Documents/SoCLabs/RTL/accelerator-system-top/CHIPKIT/tools/vgen/bin/vgen.py on 10:59:11 24/03/2023 + diff --git a/wrapper/regs/cregs/cregs.inst.sv b/wrapper/regs/cregs/cregs.inst.sv new file mode 100644 index 0000000000000000000000000000000000000000..1ad2ed0a83a321531c11248a382bfbff11e8a078 --- /dev/null +++ b/wrapper/regs/cregs/cregs.inst.sv @@ -0,0 +1,24 @@ +// VGEN START: Autogenerated by /Users/davidmapstone/Documents/SoCLabs/RTL/accelerator-system-top/CHIPKIT/tools/vgen/bin/vgen.py on 10:59:11 24/03/2023 + +// START +logic [31:0] accelerator_en; +logic [31:0] accelerator_channel_en; + +cregs u_cregs ( + +// clocks and resets +.clk(pclk), +.rstn(presetn), + +// Synchronous register interface +.regbus (cregs.sink), + +// reg file signals +.accelerator_en(accelerator_en[31:0]) /* idx 0 */, +.accelerator_channel_en(accelerator_channel_en[31:0]) /* idx 1 */ + +); +// END + +// VGEN END: Autogenerated by /Users/davidmapstone/Documents/SoCLabs/RTL/accelerator-system-top/CHIPKIT/tools/vgen/bin/vgen.py on 10:59:11 24/03/2023 + diff --git a/wrapper/regs/cregs/cregs.md b/wrapper/regs/cregs/cregs.md new file mode 100644 index 0000000000000000000000000000000000000000..9e3b82cb35ffeb7efa4fc4aff652b15099b6c5a8 --- /dev/null +++ b/wrapper/regs/cregs/cregs.md @@ -0,0 +1,15 @@ +// VGEN START: Autogenerated by /Users/davidmapstone/Documents/SoCLabs/RTL/accelerator-system-top/CHIPKIT/tools/vgen/bin/vgen.py on 10:59:11 24/03/2023 + +# Programmers Model + +## Module: CREGS + +| Address Offset | Signal Name | Access | Bit width | Start bit | Description | +| --- | --- | --- | --- | --- | --- | +| +| 0x0 | **ACCELERATOR_EN** | RW | 32 | 0 | Accelerator Enable Register | +| 0x4 | **ACCELERATOR_CHANNEL_EN** | RW | 32 | 0 | Accelerator Channel Enable Register | + + +// VGEN END: Autogenerated by /Users/davidmapstone/Documents/SoCLabs/RTL/accelerator-system-top/CHIPKIT/tools/vgen/bin/vgen.py on 10:59:11 24/03/2023 + diff --git a/wrapper/regs/cregs/cregs.py b/wrapper/regs/cregs/cregs.py new file mode 100644 index 0000000000000000000000000000000000000000..de7171d029c45a3c54f1d3bc642e94ae5c8eb5bd --- /dev/null +++ b/wrapper/regs/cregs/cregs.py @@ -0,0 +1,15 @@ +# // VGEN START: Autogenerated by /Users/davidmapstone/Documents/SoCLabs/RTL/accelerator-system-top/CHIPKIT/tools/vgen/bin/vgen.py on 10:59:11 24/03/2023 + +class Cregs(object): + + def __init__(self,base_offset): + self.base_offset = base_offset + + + self.ACCELERATOR_EN = self.base_offset + 0x0 # Accelerator Enable Register + self.ACCELERATOR_CHANNEL_EN = self.base_offset + 0x4 # Accelerator Channel Enable Register + self.ACCELERATOR_CHANNEL_EN = self.base_offset + 0x4 # Accelerator Channel Enable Register + + +# // VGEN END: Autogenerated by /Users/davidmapstone/Documents/SoCLabs/RTL/accelerator-system-top/CHIPKIT/tools/vgen/bin/vgen.py on 10:59:11 24/03/2023 + diff --git a/wrapper/regs/cregs/cregs.sv b/wrapper/regs/cregs/cregs.sv new file mode 100644 index 0000000000000000000000000000000000000000..8c1d454e0d75f8fd4a6516ca743defa770529d2c --- /dev/null +++ b/wrapper/regs/cregs/cregs.sv @@ -0,0 +1,138 @@ +// VGEN START: Autogenerated by /Users/davidmapstone/Documents/SoCLabs/RTL/accelerator-system-top/CHIPKIT/tools/vgen/bin/vgen.py on 10:59:11 24/03/2023 + +//----------------------------------------------------------------------------- +// SoC Labs APB register Template +// A joint work commissioned on behalf of SoC Labs, under Arm Academic Access license. +// +// Contributors +// +// David Mapstone (d.a.mapstone@soton.ac.uk) +// +// Copyright 2023, SoC Labs (www.soclabs.org) +//----------------------------------------------------------------------------- +// VGEN: HEADER +// Register file contents: +//{'name': 'accelerator_en', 'idx': '0', 'nbits': '32', 'start': '0', 'access': 'rw', 'test': '0', 'rval': '0x00000000', 'desc': 'Accelerator Enable Register'} +//{'name': 'accelerator_channel_en', 'idx': '1', 'nbits': '32', 'start': '0', 'access': 'rw', 'test': '0', 'rval': '0x00000000', 'desc': 'Accelerator Channel Enable Register'} + + +// VGEN: MODULE NAME +module cregs ( + +// clocks and resets + input logic clk, + input logic rstn, + +// APB inteface + input logic psel, + input logic [ADDRWIDTH:0] paddr, + input logic penable, + input logic pwrite, + input logic [31:0] pwdata, + + output logic [31:0] prdata, + output logic pready, + output logic pslverr, + +// VGEN: INPUTS TO REGS + + +// VGEN: OUTPUTS FROM REGS + output logic [31:0] accelerator_en /* idx #0: Accelerator Enable Register */, + output logic [31:0] accelerator_channel_en /* idx #1: Accelerator Channel Enable Register */ + +); + +//------------------------------------------------------------------------------ +// APB Interface +//------------------------------------------------------------------------------ + +logic [ADDRWIDTH-1:0] addr; +logic read_en; +logic write_en; +logic [31:0] wdata; +logic [31:0] rdata; + +// APB interface +assign pready = 1'b1; //always ready. Can be customized to support waitstate if required. +assign pslverr = 1'b0; //alwyas OKAY. Can be customized to support error response if required. + + +// register read and write signal +assign addr = paddr; +assign read_en = psel & (~pwrite); // assert for whole apb read transfer +assign write_en = psel & (~penable) & pwrite; // assert for 1st cycle of write transfer + // It is also possible to change the design to perform the write in the 2nd + // APB cycle. E.g. + // assign write_en = psel & penable & pwrite; + // However, if the design generate waitstate, this expression will result + // in write_en being asserted for multiple cycles. +assign wdata = pwdata; +assign prdata = rdata; + +//------------------------------------------------------------------------------ +// Regsiter write +//------------------------------------------------------------------------------ + +// VGEN: REG WRITE +// idx #0 +logic [31:0] accelerator_en_reg; +always@(posedge clk or negedge rstn) begin + if(~rstn) begin + accelerator_en_reg[31:0] <= '0; + end else begin + if(write_en & (addr[9:2]==8'h0)) accelerator_en_reg[31:0] <= wdata[31:0]; + end +end +assign accelerator_en[31:0] = accelerator_en_reg[31:0]; + +// idx #1 +logic [31:0] accelerator_channel_en_reg; +always@(posedge clk or negedge rstn) begin + if(~rstn) begin + accelerator_channel_en_reg[31:0] <= '0; + end else begin + if(write_en & (addr[9:2]==8'h1)) accelerator_channel_en_reg[31:0] <= wdata[31:0]; + end +end +assign accelerator_channel_en[31:0] = accelerator_channel_en_reg[31:0]; + + + +//------------------------------------------------------------------------------ +// Regsiter read +//------------------------------------------------------------------------------ + + +logic [31:0] rdata_o; + +always @* +begin + if (read_en) + begin + rdata_o[31:0] = 32'h00000000; + + // VGEN: REG READ + if(addr[9:2]==8'h0) if(addr[9:2]==8'h0) rdata_o[31:0] = accelerator_en[31:0]; // idx #0 + if(addr[9:2]==8'h1) if(addr[9:2]==8'h1) rdata_o[31:0] = accelerator_channel_en[31:0]; // idx #1 + + end + else + begin + rdata_o[31:0] = {32'h00000000}; + end +end + +assign rdata[31:0] = rdata_o[31:0]; + + +//------------------------------------------------------------------------------ +// +//------------------------------------------------------------------------------ + + + + +endmodule +// VGEN END: Autogenerated by /Users/davidmapstone/Documents/SoCLabs/RTL/accelerator-system-top/CHIPKIT/tools/vgen/bin/vgen.py on 10:59:11 24/03/2023 + diff --git a/wrapper/regs/cregs/cregs.sv.bak b/wrapper/regs/cregs/cregs.sv.bak new file mode 100644 index 0000000000000000000000000000000000000000..d0ca98a27542bd6c55bb388c49d4e712213edec3 --- /dev/null +++ b/wrapper/regs/cregs/cregs.sv.bak @@ -0,0 +1,139 @@ +// VGEN START: Autogenerated by /Users/davidmapstone/Documents/SoCLabs/RTL/accelerator-system-top/CHIPKIT/tools/vgen/bin/vgen.py on 10:58:58 24/03/2023 + +//----------------------------------------------------------------------------- +// SoC Labs APB register Template +// A joint work commissioned on behalf of SoC Labs, under Arm Academic Access license. +// +// Contributors +// +// David Mapstone (d.a.mapstone@soton.ac.uk) +// +// Copyright 2023, SoC Labs (www.soclabs.org) +//----------------------------------------------------------------------------- +// VGEN: HEADER +// Register file contents: +//{'name': 'accelerator_en', 'idx': '0', 'nbits': '32', 'start': '0', 'access': 'rw', 'test': '0', 'rval': '0x00000000', 'desc': 'Accelerator Enable Register'} +//{'name': 'accelerator_channel_en', 'idx': '1', 'nbits': '32', 'start': '0', 'access': 'rw', 'test': '0', 'rval': '0x00000000', 'desc': 'Accelerator Channel Enable Register'} + + + +// VGEN: MODULE NAME +module cregs ( + +// clocks and resets + input logic clk, + input logic rstn, + +// APB inteface + input logic psel, + input logic [ADDRWIDTH:0] paddr, + input logic penable, + input logic pwrite, + input logic [31:0] pwdata, + + output logic [31:0] prdata, + output logic pready, + output logic pslverr, + +// VGEN: INPUTS TO REGS + + +// VGEN: OUTPUTS FROM REGS + output logic [31:0] accelerator_en /* idx #0: Accelerator Enable Register */, + output logic [31:0] accelerator_channel_en /* idx #1: Accelerator Channel Enable Register */ + +); + +//------------------------------------------------------------------------------ +// APB Interface +//------------------------------------------------------------------------------ + +logic [ADDRWIDTH-1:0] addr; +logic read_en; +logic write_en; +logic [31:0] wdata; +logic [31:0] rdata; + +// APB interface +assign pready = 1'b1; //always ready. Can be customized to support waitstate if required. +assign pslverr = 1'b0; //alwyas OKAY. Can be customized to support error response if required. + + +// register read and write signal +assign addr = paddr; +assign read_en = psel & (~pwrite); // assert for whole apb read transfer +assign write_en = psel & (~penable) & pwrite; // assert for 1st cycle of write transfer + // It is also possible to change the design to perform the write in the 2nd + // APB cycle. E.g. + // assign write_en = psel & penable & pwrite; + // However, if the design generate waitstate, this expression will result + // in write_en being asserted for multiple cycles. +assign wdata = pwdata; +assign prdata = rdata; + +//------------------------------------------------------------------------------ +// Regsiter write +//------------------------------------------------------------------------------ + +// VGEN: REG WRITE +// idx #0 +logic [31:0] accelerator_en_reg; +always@(posedge clk or negedge rstn) begin + if(~rstn) begin + accelerator_en_reg[31:0] <= '0; + end else begin + if(write_en & (addr[9:2]==8'h0)) accelerator_en_reg[31:0] <= wdata[31:0]; + end +end +assign accelerator_en[31:0] = accelerator_en_reg[31:0]; + +// idx #1 +logic [31:0] accelerator_channel_en_reg; +always@(posedge clk or negedge rstn) begin + if(~rstn) begin + accelerator_channel_en_reg[31:0] <= '0; + end else begin + if(write_en & (addr[9:2]==8'h1)) accelerator_channel_en_reg[31:0] <= wdata[31:0]; + end +end +assign accelerator_channel_en[31:0] = accelerator_channel_en_reg[31:0]; + + + +//------------------------------------------------------------------------------ +// Regsiter read +//------------------------------------------------------------------------------ + + +logic [31:0] rdata_o; + +always @* +begin + if (read_en) + begin + rdata_o[31:0] = 32'h00000000; + + // VGEN: REG READ + if(addr[9:2]==8'h0) if(addr[9:2]==8'h0) rdata_o[31:0] = accelerator_en[31:0]; // idx #0 + if(addr[9:2]==8'h1) if(addr[9:2]==8'h1) rdata_o[31:0] = accelerator_channel_en[31:0]; // idx #1 + + end + else + begin + rdata_o[31:0] = {32'h00000000}; + end +end + +assign rdata[31:0] = rdata_o[31:0]; + + +//------------------------------------------------------------------------------ +// +//------------------------------------------------------------------------------ + + + + +endmodule +// VGEN END: Autogenerated by /Users/davidmapstone/Documents/SoCLabs/RTL/accelerator-system-top/CHIPKIT/tools/vgen/bin/vgen.py on 10:58:58 24/03/2023 + diff --git a/wrapper/regs/cregs/cregs_test.c b/wrapper/regs/cregs/cregs_test.c new file mode 100644 index 0000000000000000000000000000000000000000..1e1345d7773956524a5ba397ef41b8a52ff3f2ec --- /dev/null +++ b/wrapper/regs/cregs/cregs_test.c @@ -0,0 +1,36 @@ +// VGEN END: Autogenerated by /Users/davidmapstone/Documents/SoCLabs/RTL/accelerator-system-top/CHIPKIT/tools/vgen/bin/vgen.py on 10:59:11 24/03/2023 + +#include "cregs_test.h" + +// This test is intended to check initial (reset) values of registers +int cregs_initial_value_test(void) { + int num_errors=0; + + if (SM2_CREGS->ACCELERATOR_EN != 0) {num_errors += 1; puts("ERROR: ACCELERATOR_EN");} + if (SM2_CREGS->ACCELERATOR_CHANNEL_EN != 0) {num_errors += 1; puts("ERROR: ACCELERATOR_CHANNEL_EN");} + + + return num_errors; + +} + +// This test is intended to check write read to registers +int cregs_write_read_test(void) { + int num_errors=0; + + SM2_CREGS->ACCELERATOR_EN = 0xFFFFFFFF; // write all-1s + if (SM2_CREGS->ACCELERATOR_EN != (0xFFFFFFFF >> (32-32))) {num_errors += 1; puts("ERROR: ACCELERATOR_EN");} // check field is all-1s + SM2_CREGS->ACCELERATOR_EN = 0x0; // clear field + if (SM2_CREGS->ACCELERATOR_EN != 0x0) {num_errors += 1; puts("ERROR: ACCELERATOR_EN");} // check field is all-0s + SM2_CREGS->ACCELERATOR_CHANNEL_EN = 0xFFFFFFFF; // write all-1s + if (SM2_CREGS->ACCELERATOR_CHANNEL_EN != (0xFFFFFFFF >> (32-32))) {num_errors += 1; puts("ERROR: ACCELERATOR_CHANNEL_EN");} // check field is all-1s + SM2_CREGS->ACCELERATOR_CHANNEL_EN = 0x0; // clear field + if (SM2_CREGS->ACCELERATOR_CHANNEL_EN != 0x0) {num_errors += 1; puts("ERROR: ACCELERATOR_CHANNEL_EN");} // check field is all-0s + + + return num_errors; + +} + +// VGEN END: Autogenerated by /Users/davidmapstone/Documents/SoCLabs/RTL/accelerator-system-top/CHIPKIT/tools/vgen/bin/vgen.py on 10:59:11 24/03/2023 + diff --git a/wrapper/regs/cregs/cregs_test.h b/wrapper/regs/cregs/cregs_test.h new file mode 100644 index 0000000000000000000000000000000000000000..eaafa6d2e5aff0be80ce411ad90268044ae87081 --- /dev/null +++ b/wrapper/regs/cregs/cregs_test.h @@ -0,0 +1,18 @@ +// VGEN START: Autogenerated by /Users/davidmapstone/Documents/SoCLabs/RTL/accelerator-system-top/CHIPKIT/tools/vgen/bin/vgen.py on 10:59:11 24/03/2023 + +#ifndef CREGS_TEST_H +#define CREGS_TEST_H + + +#include "SM2_CM0.h" + +// This test is intended to check initial (reset) values of registers +int cregs_initial_value_test(void); + +// This test is intended to check write and read to registers +int cregs_write_read_test(void); + +#endif + +// VGEN END: Autogenerated by /Users/davidmapstone/Documents/SoCLabs/RTL/accelerator-system-top/CHIPKIT/tools/vgen/bin/vgen.py on 10:59:11 24/03/2023 + diff --git a/wrapper/src/wrapper_sha256_hashing_stream.sv b/wrapper/src/wrapper_sha256_hashing_stream.sv index c37ee8c924d45403dae07f76d56f35744fe2a36c..781e02827c1433af79b4d59f0f968637e25b645d 100644 --- a/wrapper/src/wrapper_sha256_hashing_stream.sv +++ b/wrapper/src/wrapper_sha256_hashing_stream.sv @@ -10,7 +10,7 @@ //----------------------------------------------------------------------------- module wrapper_sha256_hashing_stream #( - parameter ADDRWIDTH=12, + parameter AHBADDRWIDTH=12, parameter INPACKETWIDTH=512, parameter CFGSIZEWIDTH=64, parameter CFGSCHEMEWIDTH=2, @@ -19,18 +19,20 @@ module wrapper_sha256_hashing_stream #( input logic HCLK, // Clock input logic HRESETn, // Reset - // AHB connection to Initiator - input logic HSELS, - input logic [ADDRWIDTH-1:0] HADDRS, - input logic [1:0] HTRANSS, - input logic [2:0] HSIZES, - input logic HWRITES, - input logic HREADYS, - input logic [31:0] HWDATAS, + // AHB connection to Initiator + input logic HSELS, + input logic [AHBADDRWIDTH-1:0] HADDRS, + input logic [1:0] HTRANSS, + input logic [2:0] HSIZES, + input logic HWRITES, + input logic HREADYS, + input logic [31:0] HWDATAS, - output logic HREADYOUTS, - output logic HRESPS, - output logic [31:0] HRDATAS, + output logic HREADYOUTS, + output logic HRESPS, + output logic [31:0] HRDATAS, + + //TODO: Add APB Interface // Input Data Request Signal to DMAC output logic in_data_req, @@ -39,20 +41,25 @@ module wrapper_sha256_hashing_stream #( output logic out_data_req ); - //---------------------------------------------------------- - // Internal Parameters - //---------------------------------------------------------- + + //********************************************************** + // Internal AHB Parameters + //********************************************************** // Input Port Parameters - localparam [ADDRWIDTH-1:0] INPORTADDR = 'h000; - localparam INPORTADDRWIDTH = ADDRWIDTH - 1; + localparam [AHBADDRWIDTH-1:0] INPORTADDR = 'h000; + localparam INPORTAHBADDRWIDTH = AHBADDRWIDTH - 1; // Output Port Parameters - localparam [ADDRWIDTH-1:0] OUTPORTADDR = 'h800; - localparam OUTPORTADDRWIDTH = ADDRWIDTH - 1; + localparam [AHBADDRWIDTH-1:0] OUTPORTADDR = 'h800; + localparam OUTPORTAHBADDRWIDTH = AHBADDRWIDTH - 1; localparam OUTPACKETBYTEWIDTH = $clog2(OUTPACKETWIDTH/8); // Number of Bytes in Packet - localparam OUTPACKETSPACEWIDTH = OUTPORTADDRWIDTH-OUTPACKETBYTEWIDTH; // Number of Bits to represent all Packets in Address Space + localparam OUTPACKETSPACEWIDTH = OUTPORTAHBADDRWIDTH-OUTPACKETBYTEWIDTH; // Number of Bits to represent all Packets in Address Space + + //********************************************************** + // Wrapper AHB Components + //********************************************************** //---------------------------------------------------------- // Internal AHB Decode Logic @@ -155,7 +162,7 @@ module wrapper_sha256_hashing_stream #( // Packet Constructor Instantiation wrapper_ahb_packet_constructor #( - ADDRWIDTH-1, + INPORTAHBADDRWIDTH, INPACKETWIDTH ) u_wrapper_data_input_port ( .hclk (HCLK), @@ -163,7 +170,7 @@ module wrapper_sha256_hashing_stream #( // Input slave port: 32 bit data bus interface .hsels (hsel0), - .haddrs (HADDRS[ADDRWIDTH-2:0]), + .haddrs (HADDRS[AHBADDRWIDTH-2:0]), .htranss (HTRANSS), .hsizes (HSIZES), .hwrites (HWRITES), @@ -213,14 +220,14 @@ module wrapper_sha256_hashing_stream #( logic out_packet_ready; // Relative Read Address for Start of Current Block - logic [OUTPORTADDRWIDTH-1:0] block_read_addr; + logic [OUTPORTAHBADDRWIDTH-1:0] block_read_addr; // Block Packets Remaining Tie-off (only ever one packet per block) assign out_packet_remain = {OUTPACKETSPACEWIDTH{1'b0}}; // Packet Deconstructor Instantiation wrapper_ahb_packet_deconstructor #( - ADDRWIDTH-1, + OUTPORTAHBADDRWIDTH, OUTPACKETWIDTH ) u_wrapper_data_output_port ( .hclk (HCLK), @@ -228,7 +235,7 @@ module wrapper_sha256_hashing_stream #( // Input slave port: 32 bit data bus interface .hsels (hsel1), - .haddrs (HADDRS[ADDRWIDTH-2:0]), + .haddrs (HADDRS[AHBADDRWIDTH-2:0]), .htranss (HTRANSS), .hsizes (HSIZES), .hwrites (HWRITES), @@ -253,6 +260,50 @@ module wrapper_sha256_hashing_stream #( .block_read_addr (block_read_addr) ); + //---------------------------------------------------------- + // Default AHB Target Logic + //---------------------------------------------------------- + + // AHB Default Target Instantiation + cmsdk_ahb_default_slave u_ahb_default_slave( + .HCLK (HCLK), + .HRESETn (HRESETn), + .HSEL (hsel2), + .HTRANS (HTRANSS), + .HREADY (HREADYS), + .HREADYOUT (hreadyout2), + .HRESP (hresp2) + ); + + // Default Targets Data is tied off + assign hrdata2 = {32{1'b0}}; + + //********************************************************** + // Wrapper APB Components + //********************************************************** + + // TODO: Instantiate APB Mux + + // TODO: Instantiate APB Default Target + + // TODO: Wrapper Register Blocks + + //********************************************************** + // Wrapper Interrupt Generation + //********************************************************** + + // TODO: Instantiate IRQ Generator + + //********************************************************** + // Wrapper DMA Data Request Generation + //********************************************************** + + // TODO: Write up data request logic through registers + + //********************************************************** + // Accelerator Engine + //********************************************************** + //---------------------------------------------------------- // Accelerator Engine Logic //---------------------------------------------------------- @@ -284,22 +335,5 @@ module wrapper_sha256_hashing_stream #( .data_out_ready (out_packet_ready) ); - //---------------------------------------------------------- - // Default AHB Target Logic - //---------------------------------------------------------- - - // AHB Default Target Instantiation - cmsdk_ahb_default_slave u_ahb_default_slave( - .HCLK (HCLK), - .HRESETn (HRESETn), - .HSEL (hsel2), - .HTRANS (HTRANSS), - .HREADY (HREADYS), - .HREADYOUT (hreadyout2), - .HRESP (hresp2) - ); - - // Default Targets Data is tied off - assign hrdata2 = {32{1'b0}}; endmodule \ No newline at end of file