必须在 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
的评论
//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
的评论