chiselで簡単なRV32Iもどきを作りました

先日からコツコツRISCVを作ってたんですが、とりあえず spikeとのレジスタチェック、命令トレースチェック環境を構築し、 簡単なMain関数の実行が適切に流れるところまで確認しました!!

以下の設計方針で簡単に作成しただけですが、ある程度早めに良い感じでできました!! さすが、chiselという感じで、トレーサについてもchisel(scala) onlyで対応できました。(一部簡単なスクリプトpythonですが)

  1. パイプラインなし。1clock動作のprocessor
     命令実行してから次の命令なのでハザードは起こらない。
  2. RV32Iの一部命令のみ実装 (後は必要に応じて実装予定です)
  3. テストはプログラムをspikeで実行させ、実行ログに記載の次PC値とWrite Backレジスタの値を、 比較して一致することを確認

ここまで来たらデバッガも欲しくなりますね。 なんとRISC-Vにはデバッガ仕様があるようなので調べて、実装してみようと思います。 いや、まずはコンプライアンステストを通すことが先決かもしれませんね。
--> 3/1(日) 1:00: 1日かけて通しました!なかなか罠みたいな点多かったですが、なんとかなりました。おかげでRV32Iの基本仕様の理解が進んだ気がしました!

進捗記録

あとがき

というわけで、RV32Iもどきを作ってみました。 実は去年にPythonでシミュレータ作っていたのですが、このときは14くらいしかパタン通せませんでした。 しかし、今回はすべてPassしたのでよかったです!

もしかしたら、成長しているかもと思えました。

RISC-Vプロセッサシミュレータ作成試行 - moamoa diary