Unlock the power of superscalar processor design with our cutting-edge RISC-V simulator! Tailored for IT students, researchers, and HPC professionals, this web-based tool brings complex architectures to life with an intuitive, customizable interface. Explore processor components, tweak configurations, and benchmark code snippets-all from your browser.
The simulator offers seamless support for C and assembly programs, built-in performance metrics, and full GCC compiler integration for various optimization levels. Whether you're learning or innovating, this tool enables you to experiment with different architectural setups, analyze results, and export configurations for sharing.
Designed to deepen your understanding of processor design and HW-SW co-design, the simulator supports both interactive exploration and batch processing via command-line. Perfect for those aiming to optimize RISC-V processors and HPC codes, it's more than just a learning tool-it's a powerful platform for research and development. Get ready to elevate your skills and performance optimization with this advanced simulator!
In this README, you'll find instructions on how to build and run the app both natively and in Docker. The project consists of two components: a web app and a Java simulator server. For more details, refer to their respective READMEs:
First, the one-line quickstart run-it-from-anywhere (x86 systems only) using Docker:
curl -L https://raw.githubusercontent.com/Sekky61/riscv-sim/refs/heads/master/Sources/docker-compose.yml | docker compose -f - up
The app will be available on https://localhost:3120
.
For proper deployment, HTTPS support and parametrization like custom base path, do:
- Clone the repository
- (Optionally) Create HTTPS certificates
- Run
cd Sources && ./manage-riscvsim.sh up
./manage-riscvsim.sh --help
explains all parameters.
Refer to Readmes in the respective directories, Dockerfiles and the Nix flake in case you need more context.
Generally, for production deployment you may need --domain
, --http-port
and --https-port
.
If the app is exposed on a specific prefix, use the --base-path
, so that the links on the web page are correct.
An extra example:
./manage-riscvsim.sh up --base-path /riscvapp --domain example.com --certs-path ~/certs
You can use the docker-compose.yml
file manually.
It uses environment variables for the parameters.
By default, the images are built using the Dockerfiles.
You can also pull prebuilt images from Docker hub (--build-strategy
).
Warning
--base-path
is a build-time paremeter, and so it will not work with Docker hub images.
Note
sudo
might be required to run the docker commands.
Note
Older Docker versions use command docker-compose
instead of docker compose
. See the --compose-command
argument.
See the frontend readme.
See the simulator readme.
Another way to use the project is through Nix. I prefer this method as it is more reproducible and doesn't require installing anything manually.
- Run
nix run .#simulator
to run the simulator andnix run .#frontend
to run the frontend. - Run
nix build .#frontend-docker
(or#backend-docker
) to create a Docker image. Load it withdocker load < result
. - Run
nix develop
in the root directory to enter the development environment with all the necessary tools.
Umami collects no PII and serves only as a visitor counter.
The data collection should work automatically, but --domain
should be specified.
After running the docker compose, the analytics dashboard is available on port 8090
.
The login is admin/umami
.
I would like to thank everyone who contributed to this project through collaboration and valuable input. Special thanks to:
- Michal Majer - [email protected]
- Jakub Horky - [email protected]
- Jan Vavra - [email protected]
- Jiri Jaros - [email protected]
For further reading, refer to the theses available in the Literature/ directory.
If you find the simulator useful for your academic work, please consider citing one or more of the following papers:
Jiri Jaros, Michal Majer, Jakub Horky, and Jan Vavra: Web-Based Simulator of Superscalar RISC-V Processors, arXiv/2411.07721, 2024
https://arxiv.org/abs/2411.07721
@misc{jaros2024webbasedsimulatorsuperscalarriscv,
title={Web-Based Simulator of Superscalar RISC-V Processors},
author={Jiri Jaros and Michal Majer and Jakub Horky and Jan Vavra},
year={2024},
eprint={2411.07721},
archivePrefix={arXiv},
primaryClass={cs.AR},
url={https://arxiv.org/abs/2411.07721},
}
.
+--Literature - Publications, references, manuals, etc.
+--Sources - Root folder for the sources.
+--Thesis - Latex sources of the thesis.
flake.(nix|lock) - Nix flake
LICENSE - The projects license
Readme.md - Read me file