- C++ 48.8%
- SystemVerilog 40.6%
- Shell 4.2%
- Assembly 3.7%
- Makefile 2.7%
Squashed history from private repo 'fred'. Co-authored-by: Alex <alex@hegedusadkin.co.uk> Co-authored-by: georgerob801 <86919579+georgerob801@users.noreply.github.com> Co-authored-by: Joe <joseph.d.charters@gmail.com> |
||
|---|---|---|
| .github/workflows | ||
| .vscode | ||
| docs | ||
| rtl | ||
| synth | ||
| tb | ||
| .editorconfig | ||
| .gitignore | ||
| .rules.verible-lint | ||
| CLA.md | ||
| CODEOWNERS | ||
| CONTRIBUTING.md | ||
| fred.code-workspace | ||
| LICENSE | ||
| MAINTAINERS.md | ||
| Makefile | ||
| README.md | ||
FRED (FRED: a RISC-V Educational Design)
Team 12's implementation of the ELEC50010 assignment: a single-hart RISC-V core, written in SystemVerilog.
The main branch may be a work in progress. Please check releases, or in the sidebar, for finished iterations.
Release overview
| Revision | spec | Key features of uarch | Simulation verified | FPGA proven (ECP5) |
|---|---|---|---|---|
| v1* | rv32i | Single cycle, in-order, Harvard | Y | Y |
| v2 (dropped) | rv32i | 5-stage pipeline, von Neumann | - | - |
| v2.1* | rv32i | 5-stage pipeline, Harvard | Y | N |
| v3 (WIP) | rv32i + Zicsr + Zmmul (priv m-mode) | modified-Harvard (split cache) | N | N |
* History prior to first open-source release has been squashed and thus these releases may not be publically visible.
Usage
Please note: FRED's testbenches requires a recent version of Verilator, as we make use of more modern SystemVerilog constructs, such as interfaces and packed structs. Please ensure you have a recent version of verilator installed. Versions 5.040 onwards are known to be working.
-
Clone this repository:
git clone https://github.com/ELEC50010-IAC-Ridgewell-Team12/fred cd fred -
Please ensure you have the most recent version of verilator installed. For x64 linux systems, our Makefile can download a known working versions of Verilator and Yosys, by running:
make toolchain -
Run the makefile to see the output of the testbenches:
make -
(OPTIONAL) For synthesis, run the following.
Please note we only target the orangecrab ECP5 board. This project will require extra effort to port to another toolchain or target.
# Install toolchain (linux x64 only) make toolchain # Synth make all # Flash orangecrab via usb make dfu
Documentation, assignment details, and repo history
All documentation can be found in the docs/ directory. This originally contained much more coursework-specific information which has been subsequently removed. This repo's commit history has also been squashed with the first public release in order to hide references to module content and personal information.
Contributing
See CONTRIBUTING.md.