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にコピーして眺めてみた。
一応取得できているようだ。ただしVCDだけでは波形デバッグは難しいよね。ちゃんとしたソースコードとの対応が取りたい。。。