Python scripts to manage parallelism and input resources for simulation tasks.
We will support or have supported these features:
- Multiple GEM5 instances on single machine restoring from the Generic checkpoint for RISC-V
- Multiple NEMU(private repo) instances on single machine restoring from the Generic checkpoint for RISC-V
- Generate checkpoint by resuming from the nearest checkpoint with NEMU
- Multiple Verilator simulation of Xiangshan instances on single machine restoring from the Generic checkpoint for RISC-V
- Bug ''generation'', bug info gathering and VCD gathering for Xiangshan
- Stats gathering for GEM5
We might support, but will not support in the near future:
- Distributed version
We use sh
package to call simulators:
pip install sh
We will use GEM5 as an Example. We have a modified version of GEM5 here that supports current MMIO space and Generic Checkpoint. A full GEM5 tutorial can be found here.
First, install dependent packages.
For debian family:
sudo apt install gcc g++ python3 zlib1g-dev m4 libprotobuf-dev git swig python-dev protobuf-compiler libgoogle-perftools-dev libevent-dev make libncurses5-dev build-essential autoconf
If scons is 2.x on your machine, you can manually download scons 3 from sourceforge. Then expose the script to PATH in bashrc/zshrc/xxrc:
export PATH=/the/path/to/scons-3.1.2/src/script:$PATH
Note that scons
is still the old scons, while scons.py
is the newly installed one.
# Do to forget to source
source ~/.blablarc
cd /where/gem5/is/cloned
scons.py build/RISCV/gem5.opt -j 40
Wait a few minutes.