-
Notifications
You must be signed in to change notification settings - Fork 101
jp test simulation
QuestaSim や Verilator,Vivado を使うと,RSD プロセッサ上でテスト・プログラムを実行する様子をシミュレーションできます.
テスト・プログラムの実行結果を検証することで、 プロセッサが正しく動くかテストすることができます。 結果が正しくなかった場合は、 Kanata や QuestaSim の波形ビューアを使ってデバッグを行います。
- 下記では基本的には QuestaSim を仮定していますが,Verilator や Vivado の場合でも基本的には操作は同じです.
- Verilator の場合は,
make -f Makefile.verilator.mk
のように,Makefile.verilator を指定してください - Vivado の場合は,
make -f Makefile.vivado.mk
のように,Makefile.vivado を指定してください
テストを実行する前に、HDL コードをコンパイルする必要があります。
RSD/Processor/Src で以下のコマンドを実行すると、コンパイルが実行されます。
make rtl
コンパイルエラーが出たら、HDL コードを修正しましょう。
テストを行うには、RSD/Processor/Src で下表のコマンドを実行します。
コマンド名 | 動作 | 備考 |
---|---|---|
make test | 1つのテスト・プログラムを実行します | 実行するテスト・プログラムは RSD/Processor/Src/Makefile 内の TEST_CODE 定数で指定します |
make test-1 | 短時間で終了するテスト・プログラム群を実行します | |
make test-2 | 実行に時間がかかるテスト・プログラム群を実行します | |
make test-all | test-1 と test-2 の両方を実行します |
コンパイルが通ったら、まず
make test-1
を実行してバグをチェックするのがおススメです。 コミット前には、すべてのテストが通るか確認しましょう。 詳しくは Makefile の中身を読んでください。
テスト・プログラムを実行した後は、以下の内容を検証します。
-
プログラム実行終了時の論理レジスタの値
- 各テスト・プログラムのディレクトリの Cfg.xml に正しい値を記述しておくと、実行結果との比較が行われます。
-
シリアル通信の出力
- 各テスト・プログラムのディレクトリの serial.ref.txt に正しい出力を記述しておくと、実行結果との比較が行われます。
アーキテクチャステートの遷移も検証した方がデバッグに役立つと思いますが、未実装です。
デバッグは以下の手順で行います。
-
Kanata でテストが通らなかった原因にあたりをつける
- 代表的な原因としては以下があげられる
- 特定の命令の結果がおかしい
- 何らかの無限ループに陥り、命令がコミットできなくなっている
- シミュレーションサイクル数が不足して、最後までシミュレーションできていない(この場合は Cfg.xml または Makefile の設定を変更するだけで良い)
- 代表的な原因としては以下があげられる
-
QuestaSim の波形ビューアで各信号線の値を調べ、バグの原因を特定
-
HDL コードを修正
RSD/Processor/Src において以下のコマンドを実行すると、Kanata.log というログファイルが生成されます。
make kanata
このファイルを Kanata に入力すると、命令の実行状態を可視化することができます。 実行するテスト・プログラムは RSD/Processor/Src/Makefile の TEST_CODE 定数で指定することができます。
RSD/Processor/Src において以下のコマンドを実行すると、Register.csv というログファイルが生成されます。
make dump
このファイルによって各命令実行後の、レジスタファイルおよびPCの値を調べることができます。 実行するテスト・プログラムは RSD/Processor/Src/Makefile の TEST_CODE 定数で指定することができます。
RSD/Processor/Src において以下のコマンドを実行すると、QuestaSim の GUI が起動します。
make run-gui
ここでシミュレーションを進めると、雷上動プロセッサがテスト・プログラムを実行している時の信号線の変化を調べることができます。 実行するテスト・プログラムは RSD/Processor/Src/Makefile の TEST_CODE 定数で指定することができます。
RSD/Processor/Tools/TestDriver が、テストを実行するための python スクリプトになります。