我编写了以下测试台来测试我的 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 的输出。这让我感到惊讶,因为我没有收到任何错误,而且一切似乎都运行良好,所以我不知道为什么它不会到达最后一个测试。这是我的输出的样子:
还有一点需要注意的是,我从来没有在控制台中获得 FullAdder_Test 的输出(这一行):
$monitor("a: %h, b: %h, c: %h, sum: %h carry: %h", a, b, c, sum, carry);