FireSim v1.2でベンチマークプログラムを動かそうとしているのだが、なかなかうまく動かない。
NoNIC環境 (FireSim Rocket-Chip Standalone環境)の場合
これは簡単だ。riscv-testsの環境でテストパタンをビルドして、それを持ってくれば簡単なC言語のプログラムなら動作させることができる。
$ cd ${HOME}/work/firesim_v12/target-design/firechip/rocket-chip/riscv-tools/riscv-tests/benchmarks/ $ mkdir printf_sample $ # printf_sample/printf_sample.c を作成する $ cat printf_sample/printf_sample.c #include <stdio.h> int main () { printf ("Hello, World\n"); int sum = 0; for (int i = 1; i <= 10; i++) { sum += i; } printf ("1 + ... + 10 = %d\n", sum); return 0; } $ make
これをFireSimのoutputディレクトリにリンクする。
- firesim/sim
にて
$ cd output/f1/FireSimNoNIC-FireSimRocketChipConfig-FireSimConfig/ $ ln -s ${HOME}/work/firesim_v12/target-design/firechip/rocket-chip/riscv-tools/riscv-tests/benchmarks/printf_sample.riscv $ cd - $ make DESIGN=FireSimNoNIC ${PWD}/output/f1/FireSimNoNIC-FireSimRocketChipConfig-FireSimConfig/printf_sample.riscv.out cd /home/msyksphinz/work/firesim_v12/sim/generated-src/f1/FireSimNoNIC-FireSimRocketChipConfig-FireSimConfig/ && \ ./VFireSimNoNIC /home/msyksphinz/work/firesim_v12/sim/output/f1/FireSimNoNIC-FireSimRocketChipConfig-FireSimConfig/printf_sample.riscv +sample=/home/msyksphinz/work/firesim_v12/sim/output/f1/FireSimNoNIC-FireSimRocketChipConfig-FireSimConfig/printf_sample.riscv.sample +max-cycles=100000000 +mm_relaxFunctionalModel=0 +mm_writeMaxReqs=16 +mm_readMaxReqs=16 +mm_writeLatency=30 +mm_readLatency=30 +dramsim \ 2> /home/msyksphinz/work/firesim_v12/sim/output/f1/FireSimNoNIC-FireSimRocketChipConfig-FireSimConfig/printf_sample.riscv.out && [ $PIPESTATUS -eq 0 ] Hello, World 1 + ... + 10 = 55
簡単なプログラム程度は動いた。