Behavioural Simulation (Spike)
Introduction
Spike is a RISC-V functional ISA simulator. It models a RISC-V core and cache system. Note that our fork hasn’t currently been modified to include tagged memory support.
In this release, due to the peripheral mismatch between the original Rocket-chip and untethered lowRISC SoC, Spike can only be used to run a Linux Kernel and non-I/O related programs.
Please see Compile and install the RISC-V cross-compiler for the installation of Spike.
Using Spike
The command-line arguments to Spike can be listed with spike -h
:
# usage: spike [host options] <target program> [target options]
# Host Options:
# -p <n> Simulate <n> processors [default 1]
# -m <n> Provide <n> MiB of target memory [default 4096]
# -d Interactive debug mode
# -g Track histogram of PCs
# -l Generate a log of execution
# -h Print this help message
# --isa=<name> RISC-V ISA string [default RV64IMAFDC]
# --ic=<S>:<W>:<B> Instantiate a cache model with S sets,
# --dc=<S>:<W>:<B> W ways, and B-byte blocks (with S and
# --l2=<S>:<W>:<B> B both powers of 2).
# --extension=<name> Specify RoCC Extension
# --extlib=<name> Shared library to load
Note: to use the -g
argument Spike has to be compiled with the
--enable-histogram
option. This is not the case by default.
# set up the RISCV environment variables
cd $TOP/riscv-tools/riscv-isa-sim
mkdir build
cd build
../configure --prefix=$RISCV --with-fesvr=$RISCV --enable-histogram
make -j$(nproc)
make install
Running Spike
Bare metal mode
Spike can be used to run the ISA regression test cases provided in $TOP/riscv-tools/riscv-tests/isa
.
cd $TOP/riscv-tools/riscv-tests/isa
make rv64ui-p-add
spike rv64ui-p-add
# show the return value
echo $?
Since there is no peripheral support in the bare metal mode, the return value
is the only way to see the result of a test case. 0
indicates success while
non-zero identifies the failed test case.
Booting RISC-V Linux
Before booting Linux, please make sure the Linux image (vmlinux
) and the
ramdisk (root.bin
) are available. Please see Compile RISC-V Linux and
ramdisk root.bin
for more details.
cd $TOP/riscv-tools/
spike +disk=busybox-1.21.1/root.bin bbl linux-3.14.41/vmlinux