読者です 読者をやめる 読者になる 読者になる

FPGA開発日記

FPGAというより、コンピュータアーキテクチャかもね! カテゴリ別記事インデックス https://sites.google.com/site/fpgadevelopindex/

RocketChip/BOOMプロセッサの波形ダンプの方法

RISC-VのUC Berkeley実装であるRocketChip/BOOMはエミュレーション時にVerilatorを使用している。

基本的な命令トレースなどは出力することが出来るが、波形を出力するためのオプションが存在する。

make CONFIG=BOOMConfig output/rv64ui-p-add.vcd

テストベンチの名前に.vcdを付加したオプションで実行すると、波形ダンプを出力しながらシミュレーションが実行される。 ただしdebug用の新しい実行バイナリを作成し、再コンパイルには結構時間がかかる。

$ make CONFIG=BOOMConfig output/coremark.riscv.o3.vcd
mkdir -p /home/vagrant/rocket-chip/emulator/generated-src-debug/rocketchip.BOOMConfig
/home/vagrant/rocket-chip/emulator/verilator/install/bin/verilator --cc --exe --top-module TestHarness +define+PRINTF_COND=\$c\(\"verbose\",\"\&\&\"\,\"done_reset\"\) +define+STOP_COND=\$c\(\"done_reset\"\) --assert --output-split 20000
-Wno-STMTDLY --x-assign unique -I/home/vagrant/rocket-chip/vsrc -O3 -CFLAGS "-O1 -std=c++11 -I/home/vagrant/riscv/include -I/home/vagrant/rocket-chip/csrc -DVERILATOR -include /home/vagrant/rocket-chip/csrc/verilator.h" -Mdir /home/vagra
nt/rocket-chip/emulator/generated-src-debug/rocketchip.BOOMConfig  --trace \
-o /home/vagrant/rocket-chip/emulator/emulator-rocketchip-BOOMConfig-debug /home/vagrant/rocket-chip/emulator/generated-src-debug/rocketchip.BOOMConfig.v /home/vagrant/rocket-chip/csrc/emulator.cc /home/vagrant/rocket-chip/csrc/SimDTM.cc
 -LDFLAGS " -L/home/vagrant/riscv/lib -Wl,-rpath,/home/vagrant/riscv/lib -L/home/vagrant/rocket-chip/emulator -lfesvr -lpthread" \
-CFLAGS "-I/home/vagrant/rocket-chip/emulator/generated-src-debug -include /home/vagrant/rocket-chip/emulator/generated-src-debug/rocketchip.BOOMConfig/VTestHarness.h -include /home/vagrant/rocket-chip/emulator/generated-src-debug/consts
.BOOMConfig.h"
...

$ ls -lt
-rw-r--r-- 1 vagrant vagrant     1942 Oct 20 15:19 Makefile
drwxr-xr-x 4 vagrant vagrant     4096 Oct 20 17:05 verilator
drwxrwxr-x 3 vagrant vagrant     4096 Nov  2 12:08 generated-src
-rw-rw-r-- 1 vagrant vagrant    27281 Nov  2 12:15 make.log
-rw-rw-r-- 1 vagrant vagrant     3630 Dec 15 12:15 Makefrag-verilator
-rwxrwxr-x 1 vagrant vagrant  3335952 Dec 15 13:21 emulator-rocketchip-BOOMConfig
drwxrwxr-x 3 vagrant vagrant     4096 Jan 22 14:30 generated-src-debug
-rwxrwxr-x 1 vagrant vagrant 19424096 Jan 22 15:13 emulator-rocketchip-BOOMConfig-debug
drwxrwxr-x 2 vagrant vagrant    20480 Jan 22 16:24 output

生成された波形は、output/テストベンチ名.vcdに保存されている。Windowsにコピーして眺めてみた。

f:id:msyksphinz:20170123022459p:plain

一応取得できているようだ。ただしVCDだけでは波形デバッグは難しいよね。ちゃんとしたソースコードとの対応が取りたい。。。