Merge pull request #1385 from jordancarlin/benchmark_verilator

Benchmark verilator
This commit is contained in:
David Harris 2025-04-24 11:06:27 -07:00 committed by GitHub
commit 78b0aade72
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 2 additions and 35 deletions

View file

@ -28,8 +28,7 @@ PORT_CFLAGS = -g -mabi=$(ABI) -march=$(ARCH) -static -falign-functions=16 \
all: $(work_dir)/coremark.bare.riscv.elf.memfile
run: $(work_dir)/coremark.bare.riscv.elf.memfile
# time wsim rv$(XLEN)gc coremark --sim verilator 2>&1 | tee $(work_dir)/coremark.sim.log
time wsim ${CONFIG} coremark 2>&1 | tee $(work_dir)/coremark.sim.log
time wsim --sim verilator ${CONFIG} coremark 2>&1 | tee $(work_dir)/coremark.sim.log
$(work_dir)/coremark.bare.riscv.elf.memfile: $(work_dir)/coremark.bare.riscv
riscv64-unknown-elf-objdump -D $< > $<.elf.objdump

View file

@ -43,7 +43,7 @@ sim: sim_build_memfile sim_run speed
# launches sim to simulate tests on wally
sim_run:
wsim rv32gc embench --params "BPRED_LOGGER=1\'b1"
wsim --sim verilator rv32gc embench --params "BPRED_LOGGER=1\'b1"
# builds the objdump based on the compiled c elf files
objdump:

View file

@ -1,32 +0,0 @@
# Simulation with Verilator
Different executables will be built for different architecture configurations, e.g., rv64gc, rv32i. A executable can run all the test suites that it can run with `+TEST=<testsuite>`.
Demand:
- Avoid unnecessary compilation by sharing the same executable for a specific configuration
- executables are stored in `obj_dir_non_profiling` and `obj_dir_profiling` correspondingly
- Wsim should support `-s verilator` option and run simulation with Verilator.
## Folder Structure
This folder contains the following files that help the simulation of Wally with Verilator:
- Makefile: simplify the usage with Verialtor
- executables
- `obj_dir_non_profiling`: non-profiling executables for different configurations
- `obj_dir_profiling`: profiling executables for different configurations
- logs in `logs` and `logs_profiling` correspondingly
- [NOT WORKING] `logs`: contains all the logs
## Examples
```shell
# non-profiling mode
make WALLYCONF=rv64gc TEST=arch64i run
# profiling mode
make WALLYCONF=rv64gc TEST=arch64i profile
# remove all the temporary files, including executables and logs
make clean
```