Menu
Coddy logo textTech

再利用可能なチェッカータスク

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

Verilog の task は手続き的な処理をまとめ、output または inout 引数を通じて結果を返すことができます。テストベンチの task を使うと、重複したチェックを減らせます。組み合わせ function とは異なり、task には必要に応じてタイミング制御を含めることができますが、これらのチェッカー task はゼロ時間の比較のみを実行します。並行して実行される個別の呼び出しで独立したローカルストレージが必要な場合は automatic task を使用してください。この例で提供されている呼び出しは逐次的です。

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

task check_value;
    input [7:0] actual,expected;
    output ok;
    begin ok = (actual === expected); end
endtask

呼び出し元は、明示的な出力引数を通じてチェック結果を受け取ります。

失敗を収集する前に、task 引数の方向を定義し、呼び出しごとの結果変数をリセットします。

challenge icon

チャレンジ

中級

actual と expected が4状態等価で一致する場合に ok が1になり、それ以外の場合は0になるように check_value を実装してください。このモジュールには、固定されたテストベンチから呼び出されるシミュレーション専用の task が含まれています。出力列: ok。

design.v を完成させ、モジュール名とポートを保持してください。固定された testbench.v は入力の変化を与え、それらが安定した後に出力を表示します。+CASE=1 のようなシミュレータ引数を使用してシナリオを選択します。標準入力は必要ありません。表示処理とシナリオ制御は固定されたテストベンチに残し、task 本体だけを実装してください。期待される出力は、各観測結果につき10進値を1行に1つ、1つのスペースで区切り、改行で終わる形式です。

自分で試してみよう

module dut;
    task check_value;
        input [7:0] actual,expected;
        output ok;
        begin
            // チェッカータスクを完成させてください。
            ok=0;
        end
    endtask
endmodule
quiz icon腕試し

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

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

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