RISC-V Simple Core Collection
Go to file
Mario Romero 37e0c938a3
Some checks reported errors
continuous-integration/drone/push Build was killed
Update sandbox
2023-03-02 18:16:41 -03:00
cmake Rename include folder 2023-02-27 23:26:17 -03:00
fw Update sandbox 2023-03-02 18:16:41 -03:00
include Rename include folder 2023-02-27 23:26:17 -03:00
rtl Fix cache memory test 2023-03-02 17:20:10 -03:00
scripts Update cache 2023-03-02 16:56:34 -03:00
test Fix cache memory test 2023-03-02 17:20:10 -03:00
.devcontainer.json Upgrade dev enviroment ecosystem 2023-02-19 18:08:41 +00:00
.dockerignore Update ignore files 2023-02-19 18:04:17 +00:00
.drone.yml Change platform to amd64 2023-02-08 19:40:32 +00:00
.gitignore Update ignore files 2023-02-19 18:04:17 +00:00
CMakeLists.txt Update sandbox 2023-03-02 18:16:41 -03:00
compose-dev.yaml Upgrade dev enviroment ecosystem 2023-02-19 17:25:22 +00:00
Dockerfile Add verilator-dev to the package list 2023-02-18 22:45:48 -03:00
README.md Update 'README.md' 2023-03-02 20:50:12 +00:00

RISC-V Simple Core Collection

Collection of SystemVerilog RV32I cores and modules

Table of contents

Features

  • Single cycle processor
  • 5-Stage pipelined processor with hazard detection
  • N-Way associative cache memory

Directory structure

.
├── fw                   # Firmware
│   ├── sandbox          # C/Assembly sandbox firmware source
│   └── test             # Assembly programs used for testbenchs
├── include              # SystemVerilog include directory
├── rtl                  # SystemVerilog RTL modules
├── scripts              # Utility scripts
└── test                 # SystemVerilog testbenchs

Requirements

  • Verilator or another SystemVerilog simulator
  • CMake
  • 32-bit GNU RISC-V toolchain

If your package manager does not provide the RISC-V GNU toolchain you can either download the binaries from the xPack GNU RISC-V Embedded GCC package or it can be compiled from their main repository. Also you can take a look to the docker enviroment provided.

Docker enviroment

There is a docker enviroment image with all the dependencies already pre-installed. For getting docker check their installation instruction site.

Tip: If you run into problems running docker make sure you have:

  • WSL2 installed in case of Windows
  • Secure Boot disabled and Virtualization enabled in your BIOS settings

To set up the enviroment you can create a dev enviroment pointing to this repository or you can pull the image directly from the container registry and then run it:

docker pull git.1159.cl/mario1159/rvscc
docker run -it git.1159.cl/mario1159/rvscc

Build

To build the firmware that will be loaded in the instruction memory and the simulation testbenchs execute CMake in the project root directory using your system default toolchain (the CMake toolchain file will search automatically for a RISC-V toolchain to build the firmware).

cmake -Bbuild
cmake --build build

This will generate a sandbox.mem file in the /build/fw/sandbox folder. For other simualtors than verilator make sure to add the firmware it to your simulator sources and that the memory path matches the path specified in the memory module.

Tests

After building, tests can be runned using CMake CTest.

ctest --test-dir build

Sandbox

For experimenting with a custom firmware, configure the project with one from the following options and use the examples in the sandbox folder.

cmake -Bbuild [-DSANDBOX_ASM=ON] [-DSANDBOX_C=ON]