FPGA開発日記

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

Chiselを使ってCPUを作ろう(13. リグレッションテストを流してみる)

f:id:msyksphinz:20181123005953p:plain

Chiselを使って、非常にシンプルなCPUを作ってみるプロジェクト。 とりあえず一旦リグレッションテストを全部流してみるとどのようになるのだろうか。

リグレッションテストは、ホームディレクトリにあるtest.hexを書き換える形で行う。 本当はファイルオープンする記述を改造してリンクを差し替えなくてもよくしたいけど、Scalaのやり方が分からな過ぎて諦めた。 おかげで今のところシーケンシャルにしか実行できない。

ホームディレクトリにあるtest.hexシンボリックリンクを書き換えて対応させる。

for hex in `ls -1 tests/riscv-tests/isa/*.hex`; do rm -f test.hex; ln -s ${hex} test.hex; make cpu_run && spike-dasm < pipetrace.log > pipetrace.`basename ${hex}`.log; done

これで、pipetrace.basename ${hex}.log が生成されるので、最後の行がPASSかFAILかを見れば一応リグレッションテストになる。 この環境はすぐにでもアップデートしたい。

実行結果は以下のようになった。まだかなり落ちてるな!修正しなければ。

RV64のパタン229本のうち、Passしているのはわずか26本だった...

pipetrace.rv64mi-p-breakpoint.hex.log: PASS : Simulation Finished
pipetrace.rv64ui-p-add.hex.log: PASS : Simulation Finished
pipetrace.rv64ui-p-addi.hex.log: PASS : Simulation Finished
pipetrace.rv64ui-p-addiw.hex.log: PASS : Simulation Finished
pipetrace.rv64ui-p-addw.hex.log: PASS : Simulation Finished
pipetrace.rv64ui-p-andi.hex.log: PASS : Simulation Finished
pipetrace.rv64ui-p-jal.hex.log: PASS : Simulation Finished
pipetrace.rv64ui-p-lb.hex.log: PASS : Simulation Finished
pipetrace.rv64ui-p-lbu.hex.log: PASS : Simulation Finished
pipetrace.rv64ui-p-ld.hex.log: PASS : Simulation Finished
pipetrace.rv64ui-p-lh.hex.log: PASS : Simulation Finished
pipetrace.rv64ui-p-lhu.hex.log: PASS : Simulation Finished
pipetrace.rv64ui-p-lui.hex.log: PASS : Simulation Finished
pipetrace.rv64ui-p-ori.hex.log: PASS : Simulation Finished
pipetrace.rv64ui-p-simple.hex.log: PASS : Simulation Finished
pipetrace.rv64ui-p-slli.hex.log: PASS : Simulation Finished
pipetrace.rv64ui-p-slt.hex.log: PASS : Simulation Finished
pipetrace.rv64ui-p-slti.hex.log: PASS : Simulation Finished
pipetrace.rv64ui-p-sltiu.hex.log: PASS : Simulation Finished
pipetrace.rv64ui-p-sltu.hex.log: PASS : Simulation Finished
pipetrace.rv64ui-p-srai.hex.log: PASS : Simulation Finished
pipetrace.rv64ui-p-srli.hex.log: PASS : Simulation Finished
pipetrace.rv64ui-p-srliw.hex.log: PASS : Simulation Finished
pipetrace.rv64ui-p-sub.hex.log: PASS : Simulation Finished
pipetrace.rv64ui-p-subw.hex.log: PASS : Simulation Finished
pipetrace.rv64ui-p-xori.hex.log: PASS : Simulation Finished