Chisel テスト
PeekPokeTester
用意するのは3つのファイル
DUT
テスト回路
テストオブジェクト
テストの流れ
テスト対象のモジュール(DUT)をインスタンス化
テスト回路を準備(入力ポートに値をセットしたり...)
テスト回路を駆動するテストオブジェクト準備
sbtでテストオブジェクトを実行
便利なテスト関数
poke() ... 入力値を設定
peek() ... 出力値を読み出し
step() ... クロックサイクルを進める
println() ... 出力値を表示
expect() ... 期待値と比較
ScalaTest
ちょっと特殊な書き方をする(またいつか紹介)
PeekPokeTester(Chiselテスト)をScalaTestでラップできる
ラップできるとsbt "testOnly testname
のように実行できる
波形表示
デジタル回路デバッグの古典的アプローチ
入力に値を入れてクロックを進めるだけのテスト回路を作成
ScalaTestとDriver.executeを用いて波形ファイル(.vcdファイル)を生成
波形の表示には「GTKWave」・「ModelSim」が使用可能
テスト回路ではfor文を活用して全ての入力信号を生成すれば良い.
printfデバッグ
ハードウェアモジュール定義の中のどこでも書ける
プログラムの実行中に気になる変数をチェック
出力はクロックの立ち上がりに実行