12 / 37 · 概念
MUX の検証:全数検査とプロパティ
組合せ入力の網羅性と記憶動作を別々に検査し、反例を最小化します。
レッスンは無料で読めます。受講登録すると進捗を保存できます。
何をもって正しいとするか
1 ビットの a・b と選択信号 sel には、全部で 8 組あります。この規模なら全数確認が効率的です。幅 W の MUXマルチプレクサ 選択信号に従い、複数の入力から一つを出力に接続する組合せ回路です。選択ビットと入力番号の対応を仕様で定めます。 詳しく見る 全体を単純に全数検査すると、選択信号も含めて 組になり、少し広くなるだけで別の戦略が必要です。
出力幅 W の各ビットの選択規則は、次の式です。
誤りの種類に合わせて刺激を選ぶ
| 検査する誤り | 有用な入力または観測 |
|---|---|
| a/b 接続の逆転 | a と b を異なる値にし sel=0 と 1 を比較 |
| ビット順の逆転 | 1 ビットだけが 1 の walking-one パターン |
| stuck-at 故障 | 全 0、全 1、交互ビットパターン |
| 記憶エッジの誤り | エッジ間で入力を変え、q の保持を確認 |
| 1 サイクルの遅延誤り | 連続エッジの期待値を異なる値にする |
テスト数が多いだけでは良い検証にはなりません。何の不具合を検出したいか説明できる必要があります。
下は a と b が異なる場合だけの比較です。各列は一つのテストベクトルです。選択を逆にした式は、四列すべてで期待値と反対になります。
波形データを表示
| 信号 | 波形 | バスの値 |
|---|---|---|
| a | 0.1. | |
| b | 1.0. | |
| sel | 0101 | |
| 期待値 | 01.0 | |
| 選択反転のバグ | 10.1 |
参照モデルは実装から独立に作る
DUT のコードをそのままコピーすると、同じ誤りを二度実装する場合があります。仕様の真理値表真理値表 可能な入力組合せをすべて列挙し、各組合せの出力を記した表です。時間に伴う変化は波形で別途確認します。 詳しく見るやインデックス選択から期待値を作り、q は以前の取込み状態を別に追跡します。不一致が出たら、失敗を保つ最短の入力列へ縮め、原因を説明します。
最終状態だけを比較せず、各観測点の実値・期待値・入力を記録します。この記録が「シミュレーションを実行した」と「仕様を満たした」を区別する根拠になります。
自分で考えてみましょう
8 ビット MUX で a=0x00、b=0xFF だけを使い、両方の選択値を検査しました。これで出力ビット順の反転も検出できますか。
解説を見る
できません。0x00 と 0xFF はビット順を反転しても同じです。0x01、0x02 のように位置が分かるパターンを選び、各出力ビットを比較します。