Skip to content

jp test simulation

Susumu Mashimo edited this page May 7, 2020 · 3 revisions

機能シミュレーション

機能シミュレーション

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 コードのコンパイル

テストを実行する前に、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 コードを修正

Kanata

RSD/Processor/Src において以下のコマンドを実行すると、Kanata.log というログファイルが生成されます。

make kanata

このファイルを Kanata に入力すると、命令の実行状態を可視化することができます。 実行するテスト・プログラムは RSD/Processor/Src/Makefile の TEST_CODE 定数で指定することができます。

レジスタファイルとPCの値の遷移

RSD/Processor/Src において以下のコマンドを実行すると、Register.csv というログファイルが生成されます。

make dump

このファイルによって各命令実行後の、レジスタファイルおよびPCの値を調べることができます。 実行するテスト・プログラムは RSD/Processor/Src/Makefile の TEST_CODE 定数で指定することができます。

QuestaSim の波形ビューア

RSD/Processor/Src において以下のコマンドを実行すると、QuestaSim の GUI が起動します。

make run-gui

ここでシミュレーションを進めると、雷上動プロセッサがテスト・プログラムを実行している時の信号線の変化を調べることができます。 実行するテスト・プログラムは RSD/Processor/Src/Makefile の TEST_CODE 定数で指定することができます。

テストを行うためのスクリプト

RSD/Processor/Tools/TestDriver が、テストを実行するための python スクリプトになります。

Clone this wiki locally