必须在 verilog 中使用端口模式错误声明标识符

Identifier must be declared with a port mode error in verilog

//3.v
module and3(x,y,z,w1,s);

input x,y,z;
wire w1;
output s;

assign w1=y&z;
assign s=w1|x;

endmodule

我这里出错了。 “必须使用端口模式 error:w1 声明标识符”。我搜索了类似的错误,但我认为我声明它是正确的。还是我的测试台错了?

`timescale 1ns/1ns
module testbench;
reg x,y,z;
wire w1,s;

and3 and3(x,y,z,w1,s);

initial
begin
#250;x=0;y=0;z=0;
#250;x=0;y=0;z=1;
#250;x=0;y=1;z=0;
#250;x=0;y=1;z=1;
#250;x=1;y=0;z=0;
#250;x=1;y=0;z=1;
#250;x=1;y=1;z=0;
#250;x=1;y=1;z=1;
end

endmodule

我该如何纠正?

它告诉你它想要方向。

像这样:

module and3(x,y,z,w1,s);

input x,y,z;
output s,w1;

assign w1=y&z;
assign s=w1|x;

endmodule

端口默认值令人困惑,最好指定并明确设计意图。不要指望你的代码 reader 知道类型、种类、方向等的所有默认规则。


https://www.edaboard.com/threads/default-type-of-a-systemverilog-port.390303/

特别是dave_59

的评论