Skip to content

Commit

Permalink
fpga: Add new vregfile
Browse files Browse the repository at this point in the history
  • Loading branch information
CyrilKoe committed Apr 22, 2024
1 parent b294312 commit 446ce4f
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 1 deletion.
10 changes: 9 additions & 1 deletion Bender.yml
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,6 @@ sources:
# Level 2
- hw/ip/spatz/src/spatz_decoder.sv
- hw/ip/spatz/src/spatz_simd_lane.sv
- hw/ip/spatz/src/vregfile.sv
# Level 3
- hw/ip/spatz/src/spatz_fpu_sequencer.sv
- hw/ip/spatz/src/spatz_ipu.sv
Expand All @@ -153,6 +152,15 @@ sources:
# Level 5
- hw/ip/spatz/src/spatz.sv

- target: fpga
files:
# Level 2
- hw/ip/spatz/src/vregfile.sv
- target: not(fpga)
files:
# Level 2
- hw/ip/spatz/src/vregfile_fpga.sv

## hw/ip/spatz_cc ##

# Level 0
Expand Down
47 changes: 47 additions & 0 deletions hw/ip/spatz/src/vregfile_fpga.sv
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
// Copyright 2024 ETH Zurich and University of Bologna.
// Licensed under the Apache License, Version 2.0, see LICENSE for details.
// SPDX-License-Identifier: Apache-2.0
//
// Author: Cyril Koenig, ETH Zurich
//
// Generic vector register file that makes use of latches to store data.

module vregfile import spatz_pkg::*; #(

Check warning on line 9 in hw/ip/spatz/src/vregfile_fpga.sv

View workflow job for this annotation

GitHub Actions / verible-verilog-lint

[verible-verilog-lint] hw/ip/spatz/src/vregfile_fpga.sv#L9

Declared module does not match the first dot-delimited component of file name: "vregfile_fpga" [Style: file-names] [module-filename]
Raw output
message:"Declared module does not match the first dot-delimited component of file name: \"vregfile_fpga\" [Style: file-names] [module-filename]" location:{path:"hw/ip/spatz/src/vregfile_fpga.sv" range:{start:{line:9 column:8}}} severity:WARNING source:{name:"verible-verilog-lint" url:"https://github.com/chipsalliance/verible"}
parameter int unsigned NrReadPorts = 0,
parameter int unsigned NrWords = NRVREG,
parameter int unsigned WordWidth = VRFWordWidth,
// Derived parameters. Do not change!
parameter type addr_t = logic[$clog2(NrWords)-1:0],
parameter type data_t = logic [WordWidth-1:0],
parameter type strb_t = logic [WordWidth/8-1:0]
) (
input logic clk_i,
input logic rst_ni,
input logic testmode_i,
// Write ports
input addr_t waddr_i,
input data_t wdata_i,
input logic we_i,
input strb_t wbe_i,
// Read ports
input addr_t [NrReadPorts-1:0] raddr_i,
output data_t [NrReadPorts-1:0] rdata_o
);

// Just fall back on the snitch regfile that is already FPGA ready
snitch_regfile #(
.DATA_WIDTH(WordWidth),
.NR_READ_PORTS(NrReadPorts),
.NR_WRITE_PORTS(1),
.ZERO_REG_ZERO(0),
.ADDR_WIDTH($bits(addr_t))
) i_snitch_regfile (
.clk_i,
.raddr_i,
.rdata_o,
.waddr_i,
.wdata_i,
.we_i
);

endmodule : vregfile

0 comments on commit 446ce4f

Please sign in to comment.