Spike, a RISC-V ISA Simulator
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Andrew Waterman 1f9205c93b Execute exactly the # of insns passed to step() 11 years ago
dummy_rocc Support building from within root directory 12 years ago
hwacha change hwacha cause to follow risc-v cause 11 years ago
riscv Execute exactly the # of insns passed to step() 11 years ago
rvc Rip out RVC for now 13 years ago
scripts temporary undoing of renaming 15 years ago
softfloat Softfloat fcvt.{w/l}.d now returns -MaxInt for -NaN 11 years ago
spike_main New RV64C proposal 11 years ago
.gitignore Use precompiled headers to speed up compilation 12 years ago
LICENSE add BSD license 13 years ago
Makefile.in Install pkg-config files for Spike 11 years ago
README.md README: use gnu-toolchain 12 years ago
aclocal.m4 temporary undoing of renaming 15 years ago
config.h.in Support setting ISA/subsets with --isa flag 11 years ago
configure autoreconf 126beb482ff6 ("Install pkg-config files for Spike") 11 years ago
configure.ac Install pkg-config files for Spike 11 years ago
riscv-dummy_rocc.pc.in Install pkg-config files for Spike 11 years ago
riscv-hwacha.pc.in Install pkg-config files for Spike 11 years ago
riscv-riscv.pc.in Install pkg-config files for Spike 11 years ago
riscv-softfloat.pc.in Install pkg-config files for Spike 11 years ago
riscv-spike.pc.in Install pkg-config files for Spike 11 years ago
riscv-spike_main.pc.in Install pkg-config files for Spike 11 years ago

README.md

RISC-V ISA Simulator

Author : Andrew Waterman, Yunsup Lee

Date : June 19, 2011

Version : (under version control)

About

The RISC-V ISA Simulator implements a functional model of one or more RISC-V processors.

Build Steps

We assume that the RISCV environment variable is set to the RISC-V tools install path, and that the riscv-fesvr package is installed there.

$ mkdir build
$ cd build
$ ../configure --prefix=$RISCV --with-fesvr=$RISCV
$ make
$ [sudo] make install

Compiling and Running a Simple C Program

Install spike (see Build Steps), riscv-gnu-toolchain, and riscv-pk.

Write a short C program and name it hello.c. Then, compile it into a RISC-V ELF binary named hello:

$ riscv64-unknown-elf-gcc -o hello hello.c

Now you can simulate the program atop the proxy kernel:

$ spike pk hello

Simulating a New Instruction

Adding an instruction to the simulator requires two steps:

  1. Describe the instruction's functional behavior in the file riscv/insns/<new_instruction_name>.h. Examine other instructions in that directory as a starting point.

  2. Add the opcode and opcode mask to riscv/opcodes.h. Alternatively, add it to the riscv-opcodes package, and it will do so for you:

    $ cd ../riscv-opcodes $ vi opcodes // add a line for the new instruction $ make install

  3. Rebuild the simulator.

Interactive Debug Mode

To invoke interactive debug mode, launch spike with -d:

$ spike -d pk hello

To see the contents of a register (0 is for core 0):

: reg 0 a0

To see the contents of a memory location (physical address in hex):

: mem 2020

To see the contents of memory with a virtual address (0 for core 0):

: mem 0 2020

You can advance by one instruction by pressing . You can also execute until a desired equality is reached:

: until pc 0 2020                   (stop when pc=2020)
: until mem 2020 50a9907311096993   (stop when mem[2020]=50a9907311096993)

Alternatively, you can execute as long as an equality is true:

: while mem 2020 50a9907311096993

You can continue execution indefinitely by:

: r

At any point during execution (even without -d), you can enter the interactive debug mode with <control>-<c>.

To end the simulation from the debug prompt, press <control>-<c> or:

: q