開発日記

Erlangをダラダラ書きます。

Chisel テスト

PeekPokeTester

用意するのは3つのファイル
  • DUT

  • テスト回路

  • テストオブジェクト

テストの流れ
  1. テスト対象のモジュール(DUT)をインスタンス

  2. テスト回路を準備(入力ポートに値をセットしたり...)

  3. テスト回路を駆動するテストオブジェクト準備

  4. sbtでテストオブジェクトを実行

便利なテスト関数
  • poke() ... 入力値を設定

  • peek() ... 出力値を読み出し

  • step() ... クロックサイクルを進める

  • println() ... 出力値を表示

  • expect() ... 期待値と比較

ScalaTest

ScalaJavaのテストツール

ユニットテスト(単体テスト)が便利になるっぽい

ちょっと特殊な書き方をする(またいつか紹介)

PeekPokeTester(Chiselテスト)ScalaTestでラップできる

ラップできるとsbt "testOnly testnameのように実行できる

波形表示

デジタル回路デバッグの古典的アプローチ

入力に値を入れてクロックを進めるだけのテスト回路を作成

ScalaTestとDriver.executeを用いて波形ファイル(.vcdファイル)を生成

波形の表示には「GTKWave」・「ModelSim」が使用可能

テスト回路ではfor文を活用して全ての入力信号を生成すれば良い.

printfデバッグ

ハードウェアモジュール定義の中のどこでも書ける

プログラムの実行中に気になる変数をチェック

出力はクロックの立ち上がりに実行