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.
 
 
 
 
 
 
Scott Beamer 7812ee06e6 couple of more notes on debug mode 12 years ago
hwacha Use precompiled headers to speed up compilation 12 years ago
riscv Disallow access to FCSR when FP is disabled 12 years ago
rvc Rip out RVC for now 13 years ago
scripts temporary undoing of renaming 15 years ago
softfloat Add fclass.{s|d} instructions 12 years ago
spike fix disassembly of bnez and friends 12 years ago
.gitignore Use precompiled headers to speed up compilation 12 years ago
LICENSE add BSD license 13 years ago
Makefile.in Use precompiled headers to speed up compilation 12 years ago
README couple of more notes on debug mode 12 years ago
aclocal.m4 temporary undoing of renaming 15 years ago
config.h.in Enable runtime loading of dynamic library with --extlib 12 years ago
configure Enable runtime loading of dynamic library with --extlib 12 years ago
configure.ac Eliminate hwacha <-> riscv circular dependence 12 years ago

README

==========================================================================
RISC-V ISA Simulator
==========================================================================
# Author : Andrew Waterman, Yunsup Lee
# Date : June 19, 2011
# Version : (under version control)

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-gcc, and riscv-pk.

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

% riscv-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 14

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 <enter>. 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