FPGA開発日記

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

AWS上で動作するRISC-VチップFireSimのチュートリアルを試す 5. FireSim v1.2 を試行する

f:id:msyksphinz:20180617195844p:plain

FireSim v1.2が公開された。主な変更点としては、Rocket-ChipだけでなくBOOMにも対応したとのことなので試行してみよう。

github.com

FireSim v1.2環境をCloneする

FireSimのリポジトリを、Tag付きでCloneする。さすがにriscv-toolsは取ってこなくても良いと思うけれども...

git clone -b 1.2 https://github.com/firesim/firesim.git firesim_v12

Rocket-ChipでのDhrystoneの実行

まずはRocket-Chipでの試行だ。sim/に移動して実行する。VCSとVerilatorをサポートしているが、今回はVerilatorを使用する。

$ make DESIGN=FireSimNoNIC
...
$ make DESIGN=FireSimNoNIC ${PWD}/output/f1/FireSimNoNIC-FireSimRocketChipConfig-FireSimConfig/dhrystone.riscv.out
...
./VFireSimNoNIC /home/masayuki/work/firesim_v12/sim/output/f1/FireSimNoNIC-FireSimRocketChipConfig-FireSimConfig/dhrystone.riscv +sample=/home/masayuki/work/firesim_v12/sim/output/f1/FireSimNoNIC-FireSimRocketChipConfig-FireSimConfig/dhr
ystone.riscv.sample +max-cycles=100000000 +mm_relaxFunctionalModel=0 +mm_writeMaxReqs=16 +mm_readMaxReqs=16 +mm_writeLatency=30 +mm_readLatency=30 +dramsim \
3>&1 1>&2 2>&3 | /home/masayuki/riscv64/bin/spike-dasm  > /home/masayuki/work/firesim_v12/sim/output/f1/FireSimNoNIC-FireSimRocketChipConfig-FireSimConfig/dhrystone.riscv.out && [ $PIPESTATUS -eq 0 ]
Microseconds for one run through Dhrystone: 469
Dhrystones per Second:                      2132
mcycle = 234636
minstret = 196530

実行できた。次はBOOMの構成を作成してみる。

$ make DESIGN=FireBoomNoNIC TARGET_CONFIG=FireSimBoomConfig
$ make DESIGN=FireBoomNoNIC TARGET_CONFIG=FireSimBoomConfig ${PWD}/output/f1/FireBoomNoNIC-FireSimBoomConfig-FireSimConfig/dhrystone.riscv.out
...
./VFireBoomNoNIC /home/masayuki/work/firesim_v12/sim/output/f1/FireBoomNoNIC-FireSimBoomConfig-FireSimConfig/dhrystone.riscv +sample=/home/masayuki/work/firesim_v12/sim/output/f1/FireBoomNoNIC-FireSimBoomConfig-FireSimConfig/dhrystone.ri
scv.sample +max-cycles=100000000 +mm_relaxFunctionalModel=0 +mm_writeMaxReqs=16 +mm_readMaxReqs=16 +mm_writeLatency=30 +mm_readLatency=30 +dramsim \
3>&1 1>&2 2>&3 | /home/masayuki/riscv64/bin/spike-dasm  > /home/masayuki/work/firesim_v12/sim/output/f1/FireBoomNoNIC-FireSimBoomConfig-FireSimConfig/dhrystone.riscv.out && [ $PIPESTATUS -eq 0 ]

このあと固まってしまった。まだサポートされていないのかな?

2018/07/20 追記。簡単なテストパタン(ISAチェック用のテスト)なら動作するようだ。何かエラーが出るけど。 Dhrystoneなどは設定の変更が必要なんだろうか?

$ make DESIGN=FireBoomNoNIC TARGET_CONFIG=FireSimBoomConfig ${PWD}/output/f1/FireBoomNoNIC-FireSimBoomConfig-FireSimConfig/rv64ui-p-add.out
...
./VFireBoomNoNIC /home/msyksphinz/work/firesim_v12/sim/output/f1/FireBoomNoNIC-FireSimBoomConfig-FireSimConfig/rv64ui-p-add +sample=/home/msyksphinz/work/firesim_v12/sim/output/f1/FireBoomNoNIC-FireSimBoomConfig-FireSimConfig/rv64ui-p-add.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/FireBoomNoNIC-FireSimBoomConfig-FireSimConfig/rv64ui-p-add.out && [ $PIPESTATUS -eq 0 ]
/bin/sh: 3: [: -eq: unexpected operator
Makefile:176: recipe for target '/home/msyksphinz/work/firesim_v12/sim/output/f1/FireBoomNoNIC-FireSimBoomConfig-FireSimConfig/rv64ui-p-add.out' failed
make: *** [/home/msyksphinz/work/firesim_v12/sim/output/f1/FireBoomNoNIC-FireSimBoomConfig-FireSimConfig/rv64ui-p-add.out] Error 2

$ cat ${PWD}/output/f1/FireBoomNoNIC-FireSimBoomConfig-FireSimConfig/rv64ui-p-add.out
random min: 0x0, random max: 0xffffffffffffffff
time elapsed: 1.8 s, simulation speed = 1.60 KHz
*** PASSED *** after 2912 cycles
Runs 2912 cycles
[PASS] FireBoomNoNIC Test
SEED: 1532017147
````