FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

AWS上で動作するRISC-VチップFireSimのチュートリアルを試す 6. FireSimのシミュレーション環境解析

f:id:msyksphinz:20180617195844p:plain

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

簡単なプログラム程度は動いた。