Configurable RISC-V Processor
Go to file
Ross Thompson 70e207e010 Found the complex TrapM giving back the wrong instruction bug.
As I was reviewing the busfsm I found a typo.

  assign UnCachedLSUBusRead = (BusCurrState == STATE_BUS_READY & UnCachedAccess & LSURWM[1] & IgnoreRequest) |
							  (BusCurrState == STATE_BUS_UNCACHED_READ);

It should be

  assign UnCachedLSUBusRead = (BusCurrState == STATE_BUS_READY & UnCachedAccess & LSURWM[1] & ~IgnoreRequest) |
							  (BusCurrState == STATE_BUS_UNCACHED_READ);

There is a ~ missing before IgnoreRequest. I restarted the FPGA and had it trigger on the specific faulting event.  Sure enough the bus makes an IFUBusRead, which UncachedLSUBusRead feeds into.   The specific instruction in the fetch stage had an ITLBMiss with a physical address in an unmapped area which is interpreted as an uncached operation.  IgnoreRequest is is high if there is a TrapM | ITLBMissF.  Without the & ~IgnoreRequest the invalid address translation makes the request.
2022-04-11 13:07:52 -05:00
addins fixed errors and warnings in rv32e 2022-04-07 17:21:20 +00:00
benchmarks Modified makefiles to generate function address to name mappings for modelsim. 2022-02-01 18:25:03 -06:00
bin Adjusted scripts to use 2022-03-04 05:09:02 +00:00
examples Merge branch 'main' of github.com:davidharrishmc/riscv-wally into main 2022-03-04 07:21:22 -08:00
fpga Added signals to ila. 2022-04-07 21:09:50 -05:00
linux Merge branch 'main' of github.com:davidharrishmc/riscv-wally into main 2022-04-07 08:37:44 -07:00
pipelined Found the complex TrapM giving back the wrong instruction bug. 2022-04-11 13:07:52 -05:00
synthDC Updated synthesis to look at fma16.v, other scripts to use fma16.v instead of fma16.sv 2022-03-29 19:16:41 +00:00
tests Updated trap handler to check interrupt vectoring before handling them and to use the mscratch instead of sp for a stack. 2022-04-06 07:13:51 +00:00
.gitattributes Renamed wally-pipelined to pipelined 2022-01-04 19:47:41 +00:00
.gitignore Added bootmem source ccode 2022-04-05 23:22:53 +00:00
.gitmodules Added the 12T submodule to the project. 2022-02-03 19:26:41 -06:00
bugs.txt Fixed bug. 2022-02-11 14:00:01 -06:00
LICENSE Initial Checkin 2021-01-14 23:37:51 -05:00
Makefile Updated Makefile to reflect new Linux and Imperas situation. Updated setup to include Synopsys license file. 2022-03-03 11:28:22 -08:00
README.md Update README.md 2022-01-24 15:47:42 -08:00
setup.sh fixed setup.sh merge conflict 2022-03-08 23:21:06 +00:00

riscv-wally

Configurable RISC-V Processor

Wally is a 5-stage pipelined processor configurable to support all the standard RISC-V options, incluidng RV32/64, A, C, F, D, and M extensions, FENCE.I, and the various privileged modes and CSRs. It is written in SystemVerilog. It passes the RISC-V Arch Tests and Imperas tests. As of October 2021, it boots the first 10 million instructions of Buildroot Linux.

If you are new to using Linux and Github, follow the steps in the RISCV SoC Design textbook to:

See Chapter 2 of draft book of how to install and compile tests.

Download and install x2go - A.1
Download and install VSCode - A.4.2
Make sure you can log into Tera acceptly via x2go and via a terminal
	Terminal on Mac, cmd on Windows, xterm on Linux
	See A.1 about ssh -Y login from a terminal
Git started with Git configuration and authentication: B.1

Then follow Section 2.2.2 to clone the repo, source setup, make the tests and run regression

$ cd
$ export RISCV=/opt/riscv
$ git clone --recurse-submodules https://github.com/davidharrishmc/riscv-wally
$ cd riscv-wally
$ source ./setup.sh
$ make
$ cd pipelined/regression
$ ./regression-wally       (depends on having Questa installed)

Add the following lines to your .bashrc or .bash_profile

if [ -f ~/riscv-wally/setup.sh ]; then
	source ~/riscv-wally/setup.sh
fi