OoOのプロセッサ
これらのソフトウェアをインストールしておく必要があります。
NixについてはNixの公式サイトやZero to Nixを参考にしてみてください。
開発
- intellij IDEA
- java
- sbt
- LLVM circt (System Verilog生成用のfirtoolコマンドラインツール)
テスト
- Verilator
- Ivarus Verilog
次のコマンドで./processor
にSystem Verilogのソースが出力されます。
$ make processor
次のコマンドで./programs
にいくつかテスト用のプログラムとriscv-testsのコンパイル結果が出力されます。
$ make programs
テスト用プログラムはnix
を使って管理しています。
いくつかの時間のかかるテストを除いたテストは次のように行います。
$ sbt "testOnly * -- -l org.scalatest.tags.Slow"
すべてのテストを実行するには次のコマンドを実行します。(とても時間がかかります)
$ sbt test
細かく実行するテストを決めたい場合はIntellij IDEAでプロジェクトを開き、各テストを実行してください。
コンパイル中に依存関係周りで問題が発生していれば、Nixの依存関係のキャッシュに問題がある場合があります。
その場合は./flake.nix
を次のように編集します。
diff --git a/flake.nix b/flake.nix
index 726feaa..478b09e 100644
--- a/flake.nix
+++ b/flake.nix
@@ -37,7 +37,7 @@
];
};
buildInputs = with pkgs; [ circt ];
- depsSha256 = "sha256-W1Kgoc58kruhLW0CDzvuUgAjuRZbT4QqStJLAAnPuhc=";
+ depsSha256 = "sha256-0000000000000000000000000000000000000000000=";
buildPhase = ''
sbt "runMain b4processor.B4Processor"
'';
また一度makeすると次のエラーメッセージが出てきます。
error: hash mismatch in fixed-output derivation '/nix/store/01ghymlaf8f1r9ssqvdhn4j5kz3gk153-B4Processor-sbt-dependencies.tar.zst.drv':
specified: sha256-0000000000000000000000000000000000000000000=
got: sha256-W1Kgoc58kruhLW0CDzvuUgAjuRZbT4QqStJLAAnPuhc=
ここで出てきたハッシュに置き換えてmakeするとうまくビルドされると思います。