simmerv

Rust

Simmerv

Simmerv is a RISC-V SoC emulator written in Rust and compilable to WebAssembly. It started as a fork of Takahiro’s riscv-rust emulator, but by now 98% of the code has been rewritten, making it far more complete and faster. Ultimately, we expect it to become substantially faster, but this work is delayed until we are able to run standard benchmarks and off-the-shelf Linux distributions.

Online Demo

You can run Linux on the emulator in your browser: online demo is here

Screenshots

animation debugger

Features

Instructions/Features support status

The emulator supports all instructions listed above but some (like many FP instructions) are not 100% to the spec.

Current Issues Being Worked

High Priority Work Post Issues

How to run Linux

$ cargo r -r -- linux/fw_payload.elf -f linux/rootfs.img

or

$ cargo r -r -- -c linux/opensbi/fw_jump.elf,0x80000000 linux/vmlinux,0x80200000 -f linux/rootfs.img

How to run riscv-tests

$ ./run-riscv-tests.sh

How to import and use WebAssembly RISC-V emulator in a web browser

See wasm/web

How to install and use WebAssembly RISC-V emulator npm package

See wasm/npm

Linux RISC-V port

Running 64-bit RISC-V Linux on QEMU

Specifications