我正在尝试使用 Verilog 在 Modelsim 中打印这个 的图表
这是我在Modelsim中编写的代码:
module circuit (
input A,
input B,
input C,
input D,
output reg F
);
always @* begin
F = ~(~A & B | B & ~C) | (A & ~D | B & D);
end
endmodule
我必须手动更改 A、B、C 和 D 16 次才能模拟每种可能性并打印图表。如何创建测试台文件,以便无需手动更改值并按运行 16 次即可模拟图形?
我尝试编写这个 testbench.v 文件,但它不起作用
module testbench;
reg A, B, C, D;
wire F;
testbench TEST (
.a(A),
.b(B),
.c(C),
.d(D),
.f(F)
);
initial begin
A = 0; B = 0; C = 0; D = 0; #10;
A = 0; B = 0; C = 0; D = 1; #10;
A = 0; B = 0; C = 1; D = 0; #10;
A = 0; B = 0; C = 1; D = 1; #10;
A = 0; B = 1; C = 0; D = 0; #10;
A = 0; B = 1; C = 0; D = 1; #10;
A = 0; B = 1; C = 1; D = 0; #10;
A = 0; B = 1; C = 1; D = 1; #10;
A = 1; B = 0; C = 0; D = 0; #10;
A = 1; B = 0; C = 0; D = 1; #10;
A = 1; B = 0; C = 1; D = 0; #10;
A = 1; B = 0; C = 1; D = 1; #10;
A = 1; B = 1; C = 0; D = 0; #10;
A = 1; B = 1; C = 0; D = 1; #10;
A = 1; B = 1; C = 1; D = 0; #10;
A = 1; B = 1; C = 1; D = 1; #10;
$finish;
end
endmodule
您的
testbench
中的一个问题是您需要实例化您的circuit
模块,但您错误地实例化了testbench
本身,这将导致“非法递归设计实例化”。
其次,您已经使用小写字母实例化了模块,但实际的模块端口被定义为大写端口。要知道 Verilog 区分大小写,因此您需要相应地更改实例化。
circuit TEST(
.A(A),
.B(B),
.C(C),
.D(D),
.F(F)
);