测试台未在verilog中达到最后一个测试用例

时间:2017-07-08 18:09:25

标签: verilog iverilog

我编写了以下测试平台来测试我的Verilog代码:

module HalfAdder_Test;
wire sum;
wire carry;
reg a = 0;
reg b = 0;

initial begin
    $dumpvars(0, HalfAdder_Test);

    # 10 a = 0; b = 0;
    # 30 a = 1; b = 0;
    # 50 a = 0; b = 1;
    # 70 a = 1; b = 1;

    # 90 $stop;
end

HalfAdder ha (a, b, sum, carry);

initial begin
    $monitor("a: %h, b: %h, sum: %h carry: %h", a, b, sum, carry);
end
endmodule

module FullAdder_Test;
wire sum;
wire carry;
reg a = 0;
reg b = 0;
reg c = 0;

initial begin
    $dumpfile("test.vcd");
    $dumpvars(0, FullAdder_Test);

    # 0 a=0; b=0; c=0;
    # 10 a=1; b=0; c=0;
    # 20 a=0; b=1; c=0;
    # 30 a=1; b=1; c=0;
    # 40 a=0; b=0; c=1;
    # 50 a=1; b=0; c=1;
    # 60 a=0; b=1; c=1;
    # 70 a=1; b=1; c=1;
    # 80 a=0; b=0; c=0;

    # 90 $stop;
end

FullAdder fa (a, b, c, sum, carry);

initial begin
    $monitor("a: %h, b: %h, c: %h, sum: %h carry: %h", a, b, c, sum, carry);
end
endmodule

当我运行测试时,我从来没有得到#70的输出。这对我来说是令人惊讶的,因为我没有得到任何错误,一切似乎运行良好所以我无法弄清楚为什么它不会到达最后一次测试。以下是我的输出结果:enter image description here

另外需要注意的是,我从来没有在我的控制台中获得FullAdder_Test(此行)的输出:

$monitor("a: %h, b: %h, c: %h, sum: %h carry: %h", a, b, c, sum, carry);

1 个答案:

答案 0 :(得分:1)

我明白了。我有另一个测试文件正在编译并提前结束程序。事实证明,如果您有一个文件在某个时间结束测试(使用$ stop),它将在那时结束所有测试。