system-verilog - 我正在为一个模拟原理图的模块编写一个 SystemVerilog 测试台,但不知道为什么脚本窗口说没有连接到端口 Y?
问题描述
下面的示意图是我为我的模块建模的。这是一个 SystemVerilog 硬件分配,我们必须使用连续分配。签名模型给了我们。请注意,电路中没有延迟。我遇到的问题是我真的不知道自己在做什么,因为我是 SystemVerilog 的新手,这是我第一次必须编写自己的测试台。 示意图到模型
这是模块代码:
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
作业要求“该电路的测试平台应在一个初始块中设置 $monitor() 语句,并生成所有可能的输入组合,在更改输入之间有 #5 ns 的延迟。” 我们使用 QuestaSim 或 ModelSim 进行模拟,这里是成绩单和波形窗口。 tb 项目窗口 截图 tb 波形窗口截图
我必须添加时钟吗?为什么它说端口 Y 缺少连接?我的波形窗口看起来正确吗?
解决方案
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( .* );
// 通过端口名自动连接
推荐阅读
- emacs - Emacs 的 *Messages* 缓冲区中的 Flycheck 警告未正确显示
- twilio-api - 如何获取加入 Twilio 的 whatsapp 沙箱的参与者列表
- c++ - 析构函数c ++后的分段错误
- python - 在 Windows 10 上的 Pycharm 中安装 Openpyxl 包时出现 TLS/SSL 错误
- swift - 如何根据 UI 对象确定结构的返回值
- haskell - 我的 Haskell 代码中的缩进/布局错误在哪里?
- ios - 如果单击特定的 CollectionViewCell 做某事
- r - 在R中使用正则表达式删除字符串中的特定子字符串
- python - python中字符串的比较(从文件中读取)不起作用
- java - SQL Developer V19 - 从连接 XML 中解密密码