Menu
Coddy logo textTech

4状態チェック

CoddyのVerilogジャーニー「RTL設計と検証」セクションの一部。レッスン 26/38。

テストベンチでは、未知値を意図的に扱う必要があります。通常の等価比較は X を返すことがあり、if 条件内で障害を見逃す原因となります。ケース等価比較とケース不等価比較である === と !== は、4 つの値をすべて文字どおりに比較し、既知の Boolean を返します。縮約 XOR の後に case と X を比較すると、未知のビットを検出できます。これらはシミュレーションのチェックとして使用し、物理的な X 値を検出するハードウェアのモデルとしては使用しないでください。

関連する抜粋です。周囲の宣言と接続は課題内で提供されています。

if(actual !== expected) errors = errors + 1;

X または Z を含む差異は、未知の条件に紛れて消えるのではなく、カウントされます。

シミュレーションチェッカーでは明示的な4状態比較を使用し、不明値をどのように扱うかを定義します。

challenge icon

チャレンジ

中級

これはシミュレーション専用のチェッカーであり、合成可能なデータパス論理ではありません。4状態比較で actual と expected が異なる場合に mismatch を設定してください。同じ位置に同じ X または Z がある場合は、等しいと比較されます。結果は必ず既知の 0 または 1 でなければなりません。出力列:mismatch。すべての刺激値は既知のバイナリ値です。

design.v を完成させ、モジュール名とポートを維持してください。ロックされた testbench.v は入力を変更し、値が安定した後に出力を表示します。+CASE=1 のようなシミュレーター引数を使用してシナリオを選択します。標準入力は必要ありません。design に表示、遅延、またはシミュレーション終了処理を追加しないでください。期待される出力は、各観測につき10進値を1行に並べたもので、値は1つのスペースで区切られ、末尾は改行となります。

自分で試してみよう

module dut (input [3:0] actual, input [3:0] expected, output mismatch);
    // このプレースホルダーをあなたの設計に置き換えてください。
    assign mismatch = 0;
endmodule
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

RTL設計と検証のすべてのレッスン

自分で練習してみよう: Verilogオンラインコンパイラ