我正在为原理图建模的模块编写 SystemVerilog Testbench,但不知道为什么 transcript window 说没有连接到端口 Y?
I am writing a SystemVerilog Testbench for a module that models a schematic, but don't know why transcript window saying no connection to port Y?
以下原理图是我为模块建模的原理图。这是一个 SystemVerilog HW 赋值,我们必须在其中使用连续赋值。签名模型给了我们。请注意,电路中没有延迟。我遇到的问题是我真的不知道自己在做什么,因为我是 SystemVerilog 的新手,这是我第一次必须编写自己的测试台。
schematic to model
模块代码如下:
module hw2_prob1 (
input logic A, B, C, D,
output logic Y
);
assign Y = (~(A|D)) & (B & C & ~D);
endmodule
到目前为止,这是我的测试平台代码:
timeunit 1ns/1ns;
module tb_hw2_prob1();
reg A, B, C, D;
wire Y;
hw2_prob1 DUT(A, B, C, D, Y);
initial begin
#5 {A,B,C,D} = 4'b0000;
#5 {A,B,C,D} = 4'b0001;
#5 {A,B,C,D} = 4'b0010;
#5 {A,B,C,D} = 4'b0011;
#5 {A,B,C,D} = 4'b0100;
#5 {A,B,C,D} = 4'b0101;
#5 {A,B,C,D} = 4'b0110;
#5 {A,B,C,D} = 4'b0111;
#5 {A,B,C,D} = 4'b1000;
#5 {A,B,C,D} = 4'b1001;
#5 {A,B,C,D} = 4'b1010;
#5 {A,B,C,D} = 4'b1011;
#5 {A,B,C,D} = 4'b1100;
#5 {A,B,C,D} = 4'b1101;
#5 {A,B,C,D} = 4'b1110;
#5 {A,B,C,D} = 4'b1111;
end
initial begin #500 $finish;
end
initial begin $monitor ($time,"%h %b", {A,B,C,D},Y);
end
endmodule
作业要求 'The testbench for this circuit should set up a $monitor() statement in one initial block and generate all of the possible input combinations with a #5 ns delay between changing the inputs.'
我们使用 QuestaSim 或 ModelSim 进行模拟,这里是成绩单和 wave windows。
Snip of tb project window
Snip of wave window tb
我必须添加一个时钟吗?为什么它说缺少端口 Y 的连接?我的 wave window 看起来正确吗?
hw2_prob1 DUT(Y, A, B, D);
缺失 C
且端口顺序错误。
选一个:
hw2_prob1 DUT(A, B, C, D, Y);
// 按端口顺序连接
hw2_prob1 DUT(.Y(Y), .A(A), .(B), .C(C), .D(D) );
// 通过端口名显式连接
hw2_prob1 DUT( .Y, .A, .B, .C, .D );
// 通过端口名隐式连接
hw2_prob1 DUT( .* );
// 通过端口名自动连接
以下原理图是我为模块建模的原理图。这是一个 SystemVerilog HW 赋值,我们必须在其中使用连续赋值。签名模型给了我们。请注意,电路中没有延迟。我遇到的问题是我真的不知道自己在做什么,因为我是 SystemVerilog 的新手,这是我第一次必须编写自己的测试台。 schematic to model
模块代码如下:
module hw2_prob1 (
input logic A, B, C, D,
output logic Y
);
assign Y = (~(A|D)) & (B & C & ~D);
endmodule
到目前为止,这是我的测试平台代码:
timeunit 1ns/1ns;
module tb_hw2_prob1();
reg A, B, C, D;
wire Y;
hw2_prob1 DUT(A, B, C, D, Y);
initial begin
#5 {A,B,C,D} = 4'b0000;
#5 {A,B,C,D} = 4'b0001;
#5 {A,B,C,D} = 4'b0010;
#5 {A,B,C,D} = 4'b0011;
#5 {A,B,C,D} = 4'b0100;
#5 {A,B,C,D} = 4'b0101;
#5 {A,B,C,D} = 4'b0110;
#5 {A,B,C,D} = 4'b0111;
#5 {A,B,C,D} = 4'b1000;
#5 {A,B,C,D} = 4'b1001;
#5 {A,B,C,D} = 4'b1010;
#5 {A,B,C,D} = 4'b1011;
#5 {A,B,C,D} = 4'b1100;
#5 {A,B,C,D} = 4'b1101;
#5 {A,B,C,D} = 4'b1110;
#5 {A,B,C,D} = 4'b1111;
end
initial begin #500 $finish;
end
initial begin $monitor ($time,"%h %b", {A,B,C,D},Y);
end
endmodule
作业要求 'The testbench for this circuit should set up a $monitor() statement in one initial block and generate all of the possible input combinations with a #5 ns delay between changing the inputs.' 我们使用 QuestaSim 或 ModelSim 进行模拟,这里是成绩单和 wave windows。 Snip of tb project window Snip of wave window tb
我必须添加一个时钟吗?为什么它说缺少端口 Y 的连接?我的 wave window 看起来正确吗?
hw2_prob1 DUT(Y, A, B, D);
缺失 C
且端口顺序错误。
选一个:
hw2_prob1 DUT(A, B, C, D, Y);
// 按端口顺序连接hw2_prob1 DUT(.Y(Y), .A(A), .(B), .C(C), .D(D) );
// 通过端口名显式连接hw2_prob1 DUT( .Y, .A, .B, .C, .D );
// 通过端口名隐式连接hw2_prob1 DUT( .* );
// 通过端口名自动连接