17 / 20 · 概念
スコアボードと不変条件
最終行列に加えて、項、タグ、エッジ、出力転送を検査します。
レッスンは無料で読めます。受講登録すると進捗を保存できます。
2つの参照モデルを分ける
独立したi/j/kループを使う直接の数学的参照モデルで、広い和を計算します。別のタイミングモデルでAを右、Bを下へ動かします。RTLの添字ヘルパを正解モデルにコピーすると、同じバグを再現する危険があります。固定した手計算例から始め、再現可能な乱数入力へ広げます。
結果スコアボードのキーはjobと全体出力座標です。受信した各値を比較し、そのキーを受信済みにします。繰り返すキーは重複、予期しないキーはアドレス誤り、未受信の期待キーは欠落です。ゼロ結果も引き渡しが必要です。範囲外のパディング座標に格納してはいけません。
アレイ内部の不変条件を検査する
各PEは正確に[0,1,...,K−1]を消費しなければなりません。対応する有効オペランドのjobとkタグは同じでなければなりません。Countは0からKの間です。停止エッジはオペランド、valid、タグ、アキュムレータ、countを保持します。クリア後はcountとアキュムレータが0で、有効トークンがありません。ブロックされた結果はvalidをアサートしたままデータとjobを保持します。
| 層 | 失敗の例 | 疑われる不具合 |
|---|---|---|
| 算術 | 19でなく23 | 添字、符号、幅 |
| 項 | [0,1,1] | トークン重複 |
| タイミング | 最終PEがE2で完了 | 早すぎる完了 |
| 停止 | 停止中にcountが変化 | 一部だけの状態保持 |
| 出力 | 同じキーを2回受信 | ハンドシェイク制御 |
2×2例では、最終PEはE2後に18、E3後に50です。E2で全体doneを上げるバグは、数値とタイミング両方の検査に失敗するはずです。逆に、同じ値の積の重複と欠落は最終和を保つ場合があり、項の追跡がその偶然を検出します。
乱数シード、行列、寸法、幅、停止位置を保存します。最初に不一致となるPE、項、物理エッジを記録します。意図したタグ誤りは黙って消えず、見える形で失敗する必要があります。
E_t後の状態を一貫して観測します。Node参照実行、RTLコンパイル、RTLシミュレーション、合成、タイミング収束、DDSプロジェクト実行、基板テストは異なる事実を示します。付属のNodeプログラムは算術とスケジュールのモデルを検証します。将来のRTLテストで例を再利用しても、独自のツール版、コマンド、ログを残す必要があります。
自分で考えてみましょう
最終和だけの検査では、1項の重複と1項の欠落を見逃す入力を作ってください。
解説を見る
A行[1,1]とB列[5,5]の正しい和は10です。[0,0]を消費しても10ですが、k0が重複しk1が欠落しています。値と厳密な項一覧[0,1]の両方を要求するとバグを検出できます。