这是我第一次在Verilog中编码的经验,也是我的第一个StackExchange查询!对于我在这篇文章中没有使用的任何礼节,请提前原谅。
我苦苦思索已经在此处发布过的一些类似问题,但是我无法确定如何将解决方案应用于自己的代码...
我不确定在尝试运行仿真时为什么会收到上述错误,也不确定如何修复它。请指教?:)
我已经在下面附上了我的源代码,以及testbench模块和尝试运行模拟时收到的错误。
任何反馈都非常感谢!
module test1();
reg O, P, W;
wire LowRate, StandardRate, PeakRate;
outputs LowRate,StandardRate,PeakRate
CircuitStructure
testboi(LowRate,StandardRate,PeakRate,O,P,W);
initial
begin
O=0; P=0; W=0;
#10 O=0; P=0; W=0;
#10 O=0; P=0; W=1;
#10 O=0; P=1; W=0;
#10 O=0; P=1; W=1;
#10 O=1; P=0; W=0;
#10 O=1; P=0; W=1;
#10 O=1; P=1; W=0;
#10 O=1; P=1; W=1;
#10
$finish();
end
endmodule
module CircuitStructure(O, P, W, LowRate,
StandardRate, PeakRate);
input O, P, W;
output LowRate, StandardRate, PeakRate;
not
UA1(NotP,P),
UA2(NotO,O),
UA3(NotW,W);
nand
UB1(Nand1,NotP,NotO),
UB2(Nand2,NotW,P),
UB3(PeakRate,Nand1,Nand2);
and
UC1(StandardRate,P,W);
buf
UD1(LowRate,O);
endmodule
模拟错误:
Loading work.test1
# Loading work.CircuitStructure
# ** Error (suppressible): (vsim-3053)
C:/Modeltech_pe_edu_10.4a/ECE171_Project1/TestBench - Copy.v(10): Illegal
output or inout port connection for port 'LowRate'.
# Time: 0 ns Iteration: 0 Instance: /test1/testboi File:
C:/Modeltech_pe_edu_10.4a/ECE171_Project1/TestBench - Copy.v
# ** Error (suppressible): (vsim-3053)
C:/Modeltech_pe_edu_10.4a/ECE171_Project1/TestBench - Copy.v(10): Illegal
output or inout port connection for port 'StandardRate'.
# Time: 0 ns Iteration: 0 Instance: /test1/testboi File:
C:/Modeltech_pe_edu_10.4a/ECE171_Project1/TestBench - Copy.v
# ** Error (suppressible): (vsim-3053)
C:/Modeltech_pe_edu_10.4a/ECE171_Project1/TestBench - Copy.v(10): Illegal
output or inout port connection for port 'PeakRate'.
# Time: 0 ns Iteration: 0 Instance: /test1/testboi File:
C:/Modeltech_pe_edu_10.4a/ECE171_Project1/TestBench - Copy.v
# Error loading design
答案 0 :(得分:3)
您已将模块定义为:
module CircuitStructure(O, P, W, LowRate, StandardRate, PeakRate);
但是,定义单元测试时,您使用不同的信号顺序:
testboi(LowRate,StandardRate,PeakRate,O,P,W);
这就是为什么编译器假定您要将LowRate
信号分配给O
输入,将StandardRate
分配给P
输入,等等。IEEE标准1800-2017(第23.3章)。 2)定义以下连接模块实例的方式:
使用第一个,您需要更改信号顺序:
testboi(O,P,W,LowRate,StandardRate,PeakRate);
使用第二个,您需要显式“告诉”编译器将哪些信号分配给特定端口:
testboi(.LowRate(LowRate),.StandardRate(StandardRate),.PeakRate(PeakRate),.O(O),.P(P),.W(W));