$display 在测试台中无法正常工作

$display not working properly in testbench

我正在处理 4 位 adder/subtractor(取决于我的输入)。我使用 4 位纹波进位加法器方法来实现这一点。我正在对所有 4 位数字进行测试,因此在某些情况下会出现溢出。每当溢出在输出中显示为 1 时,我都希望测试台 $display("overflow") 。我在这里附上测试台代码。


                end
        A = 4'b0000; B = 4'b0000; #10
        A = 4'b0000; B = 4'b0001; #10
        A = 4'b0000; B = 4'b0010; #10
        A = 4'b0000; B = 4'b0011; #10
        A = 4'b0000; B = 4'b0100; #10
        A = 4'b0000; B = 4'b0101; #10
        A = 4'b0000; B = 4'b0110; #10
        A = 4'b0000; B = 4'b0111; #10
        A = 4'b0000; B = 4'b1000; #10
        A = 4'b0000; B = 4'b1001; #10
        A = 4'b0000; B = 4'b1010; #10
        A = 4'b0000; B = 4'b1011; #10
        A = 4'b0000; B = 4'b1100; #10
        A = 4'b0000; B = 4'b1101; #10
        A = 4'b0000; B = 4'b1110; #10
        A = 4'b0000; B = 4'b1111; #10
        A = 4'b0001; B = 4'b0000; #10
        A = 4'b0001; B = 4'b0001; #10
        A = 4'b0001; B = 4'b0010; #10
        A = 4'b0001; B = 4'b0011; #10
        A = 4'b0001; B = 4'b0100; #10
        A = 4'b0001; B = 4'b0101; #10
        A = 4'b0001; B = 4'b0110; #10
        A = 4'b0001; B = 4'b0111; #10
        A = 4'b0001; B = 4'b1000; #10
        A = 4'b0001; B = 4'b1001; #10
        A = 4'b0001; B = 4'b1010; #10
        A = 4'b0001; B = 4'b1011; #10
        A = 4'b0001; B = 4'b1100; #10
        A = 4'b0001; B = 4'b1101; #10
        A = 4'b0001; B = 4'b1110; #10
        A = 4'b0001; B = 4'b1111; #10
        A = 4'b0010; B = 4'b0000; #10
        A = 4'b0010; B = 4'b0001; #10
        A = 4'b0010; B = 4'b0010; #10
        A = 4'b0010; B = 4'b0011; #10
        A = 4'b0010; B = 4'b0100; #10
        A = 4'b0010; B = 4'b0101; #10
        A = 4'b0010; B = 4'b0110; #10
        A = 4'b0010; B = 4'b0111; #10
        A = 4'b0010; B = 4'b1000; #10
        A = 4'b0010; B = 4'b1001; #10
        A = 4'b0010; B = 4'b1010; #10
        A = 4'b0010; B = 4'b1011; #10
        A = 4'b0010; B = 4'b1100; #10
        A = 4'b0010; B = 4'b1101; #10
        A = 4'b0010; B = 4'b1110; #10
        A = 4'b0010; B = 4'b1111; #10
        A = 4'b0011; B = 4'b0000; #10
        A = 4'b0011; B = 4'b0001; #10
        A = 4'b0011; B = 4'b0010; #10
        A = 4'b0011; B = 4'b0011; #10
        A = 4'b0011; B = 4'b0100; #10
        A = 4'b0011; B = 4'b0101; #10
        A = 4'b0011; B = 4'b0110; #10
        A = 4'b0011; B = 4'b0111; #10
        A = 4'b0011; B = 4'b1000; #10
        A = 4'b0011; B = 4'b1001; #10
        A = 4'b0011; B = 4'b1010; #10
        A = 4'b0011; B = 4'b1011; #10
        A = 4'b0011; B = 4'b1100; #10
        A = 4'b0011; B = 4'b1101; #10
        A = 4'b0011; B = 4'b1110; #10
        A = 4'b0011; B = 4'b1111; #10
        A = 4'b0100; B = 4'b0000; #10
        A = 4'b0100; B = 4'b0001; #10
        A = 4'b0100; B = 4'b0010; #10
        A = 4'b0100; B = 4'b0011; #10
        A = 4'b0100; B = 4'b0100; #10
        A = 4'b0100; B = 4'b0101; #10
        A = 4'b0100; B = 4'b0110; #10
        A = 4'b0100; B = 4'b0111; #10
        A = 4'b0100; B = 4'b1000; #10
        A = 4'b0100; B = 4'b1001; #10
        A = 4'b0100; B = 4'b1010; #10
        A = 4'b0100; B = 4'b1011; #10
        A = 4'b0100; B = 4'b1100; #10
        A = 4'b0100; B = 4'b1101; #10
        A = 4'b0100; B = 4'b1110; #10
        A = 4'b0100; B = 4'b1111; #10
        A = 4'b0101; B = 4'b0000; #10
        A = 4'b0101; B = 4'b0001; #10
        A = 4'b0101; B = 4'b0010; #10
        A = 4'b0101; B = 4'b0011; #10
        A = 4'b0101; B = 4'b0100; #10
        A = 4'b0101; B = 4'b0101; #10
        A = 4'b0101; B = 4'b0110; #10
        A = 4'b0101; B = 4'b0111; #10
        A = 4'b0101; B = 4'b1000; #10
        A = 4'b0101; B = 4'b1001; #10
        A = 4'b0101; B = 4'b1010; #10
        A = 4'b0101; B = 4'b1011; #10
        A = 4'b0101; B = 4'b1100; #10
        A = 4'b0101; B = 4'b1101; #10
        A = 4'b0101; B = 4'b1110; #10
        A = 4'b0101; B = 4'b1111; #10
        A = 4'b0110; B = 4'b0000; #10
        A = 4'b0110; B = 4'b0001; #10
        A = 4'b0110; B = 4'b0010; #10
        A = 4'b0110; B = 4'b0011; #10
        A = 4'b0110; B = 4'b0100; #10
        A = 4'b0110; B = 4'b0101; #10
        A = 4'b0110; B = 4'b0110; #10
        A = 4'b0110; B = 4'b0111; #10
        A = 4'b0110; B = 4'b1000; #10
        A = 4'b0110; B = 4'b1001; #10
        A = 4'b0110; B = 4'b1010; #10
        A = 4'b0110; B = 4'b1011; #10
        A = 4'b0110; B = 4'b1100; #10
        A = 4'b0110; B = 4'b1101; #10
        A = 4'b0110; B = 4'b1110; #10
        A = 4'b0110; B = 4'b1111; #10
        A = 4'b0111; B = 4'b0000; #10
        A = 4'b0111; B = 4'b0001; #10
        A = 4'b0111; B = 4'b0010; #10
        A = 4'b0111; B = 4'b0011; #10
        A = 4'b0111; B = 4'b0100; #10
        A = 4'b0111; B = 4'b0101; #10
        A = 4'b0111; B = 4'b0110; #10
        A = 4'b0111; B = 4'b0111; #10
        A = 4'b0111; B = 4'b1000; #10
        A = 4'b0111; B = 4'b1001; #10
        A = 4'b0111; B = 4'b1010; #10
        A = 4'b0111; B = 4'b1011; #10
        A = 4'b0111; B = 4'b1100; #10
        A = 4'b0111; B = 4'b1101; #10
        A = 4'b0111; B = 4'b1110; #10
        A = 4'b0111; B = 4'b1111; #10
        A = 4'b1000; B = 4'b0000; #10
        A = 4'b1000; B = 4'b0001; #10
        A = 4'b1000; B = 4'b0010; #10
        A = 4'b1000; B = 4'b0011; #10
        A = 4'b1000; B = 4'b0100; #10
        A = 4'b1000; B = 4'b0101; #10
        A = 4'b1000; B = 4'b0110; #10
        A = 4'b1000; B = 4'b0111; #10
        A = 4'b1000; B = 4'b1000; #10
        A = 4'b1000; B = 4'b1001; #10
        A = 4'b1000; B = 4'b1010; #10
        A = 4'b1000; B = 4'b1011; #10
        A = 4'b1000; B = 4'b1100; #10
        A = 4'b1000; B = 4'b1101; #10
        A = 4'b1000; B = 4'b1110; #10
        A = 4'b1000; B = 4'b1111; #10
        A = 4'b1001; B = 4'b0000; #10
        A = 4'b1001; B = 4'b0001; #10
        A = 4'b1001; B = 4'b0010; #10
        A = 4'b1001; B = 4'b0011; #10
        A = 4'b1001; B = 4'b0100; #10
        A = 4'b1001; B = 4'b0101; #10
        A = 4'b1001; B = 4'b0110; #10
        A = 4'b1001; B = 4'b0111; #10
        A = 4'b1001; B = 4'b1000; #10
        A = 4'b1001; B = 4'b1001; #10
        A = 4'b1001; B = 4'b1010; #10
        A = 4'b1001; B = 4'b1011; #10
        A = 4'b1001; B = 4'b1100; #10
        A = 4'b1001; B = 4'b1101; #10
        A = 4'b1001; B = 4'b1110; #10
        A = 4'b1001; B = 4'b1111; #10
        A = 4'b1010; B = 4'b0000; #10
        A = 4'b1010; B = 4'b0001; #10
        A = 4'b1010; B = 4'b0010; #10
        A = 4'b1010; B = 4'b0011; #10
        A = 4'b1010; B = 4'b0100; #10
        A = 4'b1010; B = 4'b0101; #10
        A = 4'b1010; B = 4'b0110; #10
        A = 4'b1010; B = 4'b0111; #10
        A = 4'b1010; B = 4'b1000; #10
        A = 4'b1010; B = 4'b1001; #10
        A = 4'b1010; B = 4'b1010; #10
        A = 4'b1010; B = 4'b1011; #10
        A = 4'b1010; B = 4'b1100; #10
        A = 4'b1010; B = 4'b1101; #10
        A = 4'b1010; B = 4'b1110; #10
        A = 4'b1010; B = 4'b1111; #10
        A = 4'b1011; B = 4'b0000; #10
        A = 4'b1011; B = 4'b0001; #10
        A = 4'b1011; B = 4'b0010; #10
        A = 4'b1011; B = 4'b0011; #10
        A = 4'b1011; B = 4'b0100; #10
        A = 4'b1011; B = 4'b0101; #10
        A = 4'b1011; B = 4'b0110; #10
        A = 4'b1011; B = 4'b0111; #10
        A = 4'b1011; B = 4'b1000; #10
        A = 4'b1011; B = 4'b1001; #10
        A = 4'b1011; B = 4'b1010; #10
        A = 4'b1011; B = 4'b1011; #10
        A = 4'b1011; B = 4'b1100; #10
        A = 4'b1011; B = 4'b1101; #10
        A = 4'b1011; B = 4'b1110; #10
        A = 4'b1011; B = 4'b1111; #10
        A = 4'b1100; B = 4'b0000; #10
        A = 4'b1100; B = 4'b0001; #10
        A = 4'b1100; B = 4'b0010; #10
        A = 4'b1100; B = 4'b0011; #10
        A = 4'b1100; B = 4'b0100; #10
        A = 4'b1100; B = 4'b0101; #10
        A = 4'b1100; B = 4'b0110; #10
        A = 4'b1100; B = 4'b0111; #10
        A = 4'b1100; B = 4'b1000; #10
        A = 4'b1100; B = 4'b1001; #10
        A = 4'b1100; B = 4'b1010; #10
        A = 4'b1100; B = 4'b1011; #10
        A = 4'b1100; B = 4'b1100; #10
        A = 4'b1100; B = 4'b1101; #10
        A = 4'b1100; B = 4'b1110; #10
        A = 4'b1100; B = 4'b1111; #10
        A = 4'b1101; B = 4'b0000; #10
        A = 4'b1101; B = 4'b0001; #10
        A = 4'b1101; B = 4'b0010; #10
        A = 4'b1101; B = 4'b0011; #10
        A = 4'b1101; B = 4'b0100; #10
        A = 4'b1101; B = 4'b0101; #10
        A = 4'b1101; B = 4'b0110; #10
        A = 4'b1101; B = 4'b0111; #10
        A = 4'b1101; B = 4'b1000; #10
        A = 4'b1101; B = 4'b1001; #10
        A = 4'b1101; B = 4'b1010; #10
        A = 4'b1101; B = 4'b1011; #10
        A = 4'b1101; B = 4'b1100; #10
        A = 4'b1101; B = 4'b1101; #10
        A = 4'b1101; B = 4'b1110; #10
        A = 4'b1101; B = 4'b1111; #10
        A = 4'b1110; B = 4'b0000; #10
        A = 4'b1110; B = 4'b0001; #10
        A = 4'b1110; B = 4'b0010; #10
        A = 4'b1110; B = 4'b0011; #10
        A = 4'b1110; B = 4'b0100; #10
        A = 4'b1110; B = 4'b0101; #10
        A = 4'b1110; B = 4'b0110; #10
        A = 4'b1110; B = 4'b0111; #10
        A = 4'b1110; B = 4'b1000; #10
        A = 4'b1110; B = 4'b1001; #10
        A = 4'b1110; B = 4'b1010; #10
        A = 4'b1110; B = 4'b1011; #10
        A = 4'b1110; B = 4'b1100; #10
        A = 4'b1110; B = 4'b1101; #10
        A = 4'b1110; B = 4'b1110; #10
        A = 4'b1110; B = 4'b1111; #10
        A = 4'b1111; B = 4'b0000; #10
        A = 4'b1111; B = 4'b0001; #10
        A = 4'b1111; B = 4'b0010; #10
        A = 4'b1111; B = 4'b0011; #10
        A = 4'b1111; B = 4'b0100; #10
        A = 4'b1111; B = 4'b0101; #10
        A = 4'b1111; B = 4'b0110; #10
        A = 4'b1111; B = 4'b0111; #10
        A = 4'b1111; B = 4'b1000; #10
        A = 4'b1111; B = 4'b1001; #10
        A = 4'b1111; B = 4'b1010; #10
        A = 4'b1111; B = 4'b1011; #10
        A = 4'b1111; B = 4'b1100; #10
        A = 4'b1111; B = 4'b1101; #10
        A = 4'b1111; B = 4'b1110; #10
        A = 4'b1111; B = 4'b1111;       
    
                  
$monitor($time, ": %b + %b = %b, %b", A, B, S, Op, V);
    end


endmodule

您的测试平台目前仅检查 V 在时间 0 是否为 1,因为检查仅在 initial 块中进行一次。将代码从 initial 块移到它自己的 always 块中:

always @* if (V == 1) $display($time, " overflow");

每次V改变,都会进行检查。我在您的消息中添加了$time,因为它有助于调试。


您可以使用 for 循环来简化您的测试平台:

integer i, j;

initial begin
    for (i=0; i<16; i=i+1) begin
        for (j=0; j<16; j=j+1) begin
            A = i;
            B = j;
            #10;
        end
    end
end