This repository contains the sources and tests for RVEBS, an event-based sampling system compatible with the RISC-V Hardware Performance Monitor specification.
Tiago Rocha, Nuno Neves, Nuno Roma, Pedro Tomás, Leonel Sousa, "RVEBS: Event-Based Sampling on RISC-V", Design, Automation and Test in Europe Conference (DATE'2025), IEEE, Lyon - France
The following instructions have been validated on Ubuntu 22.04 and Ubuntu 24.04.
To install the dependencies run:
$ sudo apt install make gcc g++ gperf autoconf automake autotools-dev libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo python3-pexpect libexpat-dev expat libexpat1-dev file libfl-dev help2man libusb-1.0-0-dev default-jdk zlib1g-dev valgrind csh device-tree-compiler
$ git clone https://github.com/hpc-ulisboa/RVEBS.git
$ cd RVEBS
$ git submodule update --init --recursive
$ source set_env.sh
$ cd openpiton
$ source piton/piton_settings.bash
$ source piton/ariane_setup.sh
$ ./piton/ariane_build_tools.sh
$ sims -sys=manycore -vlt_build -ariane -vlt_build_args=--trace -vlt_build_args=--trace-structs -vlt_build_args=-CFLAGS -vlt_build_args=-DVERILATOR_VCD
The following benchmarks used for the experimenta validation of out paper are provided at ./openpiton/piton/verif/diag/c/riscv/ariane/
:
1. attribution-bench.c
2. accuracy-bench_1_20_ration_10000_rate.c
3. accuracy-bench_1_40_ration_10000_rate.c
4. accuracy-bench_1_60_ration_10000_rate.c
5. accuracy-bench_1_80_ration_10000_rate.c
6. accuracy-bench_1_100_ration_10000_rate.c
7. accuracy-bench_1_20_ration_100_rate.c
8. accuracy-bench_1_20_ration_1000_rate.c
9. accuracy-bench_1_20_ration_100000_rate.c
10. accuracy-bench_1_20_ration_10000_rate_instret.c
Test 1. evaluates if the samples are attributed to the instruction that actually triggered the sample. Tests 2-6 evaluate the event sample accuracy. Tests 1 and 7-9 evaluate the sensitivity of the system to sampling rate. Test 10 was used to compare the system time overhead to implementations on other instruction-ser architectures.
To run any of this tests locally run :
$ source set-env.sh
$ cd openpiton
$ source piton/piton_settings.bash
$ source piton/ariane_setup.sh
$ sims -sys=manycore -vlt_run -ariane [NAME OF PROGRAM WITH .c] -rtl_timeout=1000000
A .vcd waveform file is generated under ./openpiton
.