标识符必须在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

这里出错了。标识符必须声明为端口模式错误: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

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

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

特别是dave_59的注释

最新更新