簡體   English   中英

如何編寫一個 verilog 測試平台來循環 4 個輸入?

[英]How to write a verilog testbench to loop through 4 inputs?

我必須為此原理圖創建 verilog 代碼和測試平台。

問題

我這里有它的設計。

module prob1(input wire a,b,c,d, output wire out);
    assign out = (a||d)&&(!d&&b&&c);
endmodule

到目前為止,這是我對測試平台的了解。

module prob1_tb();
    reg a,b,c,d;
    wire out;

    prob1 prob1_test(a,b,c,d, out);

    initial begin
        for(i=0; i=16; i=i+1)
            <loop code here>
        end
    end
endmodule

現在我想我遇到的問題是如何將該數字轉換為原理圖中正在使用的 4 個輸入。 或者有沒有更好的方法來做到這一點?

這是使用連接運算符的簡單方法:

module prob1(input wire a,b,c,d, output wire out);
    assign out = (a||d)&&(!d&&b&&c);
endmodule

module prob1_tb();
    reg a,b,c,d;
    wire out;

    prob1 prob1_test(a,b,c,d, out);

    initial begin
        $monitor(a,b,c,d,out);
        for (int i=0; i<16; i=i+1) begin
            {a,b,c,d} = i;
            #1;
        end
    end
endmodule

輸出:

00000
00010
00100
00110
01000
01010
01100
01110
10000
10010
10100
10110
11000
11010
11101
11110

是的,有更好的方法來驗證邏輯。 首先要做的是引入隨機值(參考 IEEE Std 1800-2009 中的$urandom函數)。 當然,您還需要使用模型來檢查您的輸出,這在您的情況下是微不足道的。

根據您有多少時間(和培訓),您可以采用標准流程,例如通用驗證方法 (UVM)。 人們圍繞驗證建立職業。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM