Verilog 发现';模块';在';endmodule';
我在一个简单的cpu上工作,在系统verilog中有一个寄存器,如下所示:Verilog 发现';模块';在';endmodule';,verilog,system-verilog,hdl,Verilog,System Verilog,Hdl,我在一个简单的cpu上工作,在系统verilog中有一个寄存器,如下所示: module register( input clk, e, input [7:0]in, output reg [7:0]out ); always@(posedge clk or posedge e) begin if(e == 1) out <= in; else out <= out; end endmodule 这件事让我抓狂。我只看到一次模块声
module register(
input clk, e,
input [7:0]in,
output reg [7:0]out
);
always@(posedge clk or posedge e)
begin
if(e == 1)
out <= in;
else
out <= out;
end
endmodule
这件事让我抓狂。我只看到一次模块声明,并且我没有看到我的语法有任何错误。感谢您的帮助 我猜在您的设计中,有如下内容:
module upper_module;
// ...
`include "register.v"
// ...
endmoudle
这将创建一个嵌套模块。要修复它,请将`include
行移到模块上方或端模块下方
技术上嵌套的模块是SystemVerilog的一部分(参见IEEE标准1800-2005§19.6嵌套模块和§23.4嵌套模块),但供应商可能尚未实现此功能
仅供参考:或posedge e
不应该在那里。同步逻辑应该是一个边缘时钟和零到两个异步复位,其中异步复位将触发器分配给内容 您说的是SystemVerilog,但您没有使用SV构造<代码>寄存器
是用Verilog-2001编写的。就是这样!它包含在模块声明上方的另一个模块中,但该模块包含在另一个模块中,因此出现了问题。非常感谢。另外,感谢您对逻辑的输入,非常感谢。还有一件事可能导致了它。我在我的一个模块中注释掉了一个endmodule语句,因此它在一个模块中看到了一个模块。再次感谢!
module upper_module;
// ...
`include "register.v"
// ...
endmoudle