Altifigence Academy

12 / 37 · 概念

MUX の検証:全数検査とプロパティ

組合せ入力の網羅性と記憶動作を別々に検査し、反例を最小化します。

何をもって正しいとするか

1 ビットの a・b と選択信号 sel には、全部で 8 組あります。この規模なら全数確認が効率的です。幅 W の MUXマルチプレクサ 選択信号に従い、複数の入力から一つを出力に接続する組合せ回路です。選択ビットと入力番号の対応を仕様で定めます。 詳しく見る 全体を単純に全数検査すると、選択信号も含めて 22W+12^{2W+1} 組になり、少し広くなるだけで別の戦略が必要です。

出力幅 W の各ビットの選択規則は、次の式です。

∀i∈{0,…,W−1},yi=s‾ai+sbi\forall i\in\{0,\ldots,W-1\},\quad y_i=\overline s a_i+s b_i

誤りの種類に合わせて刺激を選ぶ

検査する誤り有用な入力または観測
a/b 接続の逆転a と b を異なる値にし sel=0 と 1 を比較
ビット順の逆転1 ビットだけが 1 の walking-one パターン
stuck-at 故障全 0、全 1、交互ビットパターン
記憶エッジの誤りエッジ間で入力を変え、q の保持を確認
1 サイクルの遅延誤り連続エッジの期待値を異なる値にする

テスト数が多いだけでは良い検証にはなりません。何の不具合を検出したいか説明できる必要があります。

下は a と b が異なる場合だけの比較です。各列は一つのテストベクトルです。選択を逆にした式は、四列すべてで期待値と反対になります。

選択の反転を見つける四つの組合せ
波形データを表示
波形データ:各文字は一つの区間、ドットは前の状態の保持、p はクロック 1 周期を表します。
信号波形バスの値
a0.1.
b1.0.
sel0101
期待値01.0
選択反転のバグ10.1

参照モデルは実装から独立に作る

DUT のコードをそのままコピーすると、同じ誤りを二度実装する場合があります。仕様の真理値表真理値表 可能な入力組合せをすべて列挙し、各組合せの出力を記した表です。時間に伴う変化は波形で別途確認します。 詳しく見るやインデックス選択から期待値を作り、q は以前の取込み状態を別に追跡します。不一致が出たら、失敗を保つ最短の入力列へ縮め、原因を説明します。

最終状態だけを比較せず、各観測点の実値・期待値・入力を記録します。この記録が「シミュレーションを実行した」と「仕様を満たした」を区別する根拠になります。

自分で考えてみましょう

8 ビット MUX で a=0x00、b=0xFF だけを使い、両方の選択値を検査しました。これで出力ビット順の反転も検出できますか。

解説を見る

できません。0x00 と 0xFF はビット順を反転しても同じです。0x01、0x02 のように位置が分かるパターンを選び、各出力ビットを比較します。

選択はこのブラウザに適用されます。フッターからいつでも変更できます。