参数最近,我遇到了以下问题:在软件的Quartus我定义我的Verilog模块如下:问题与的ModelSim
module module_name(
input [w1-1:0] in1,
input [w2-1:0] in2,
output [w1-1:0] out1
);
parameter w1 = 16;
parameter w2 = 8;
...
endmodule
此模块没有任何问题的编译。但是,当我试图在Modelsim(-Altera)10.3d中模拟该代码时,出现以下错误:
(vlog-2730)未定义变量:'w1'。
(视频博客-2388) 'IN1' 在此范围内(MODULE_NAME)已经声明
(视频博客-2730)不确定变量: 'W2'。
...
标识必须用端口模式声明:第1
标识必须用端口模式声明:IN2
我发现了绕过这个问题与下面的代码的方式:
module module_name(
in1,
in2,
out1
);
parameter w1 = 16;
parameter w2 = 8;
input [w1-1:0] in1;
input [w2-1:0] in2;
output [w1-1:0] out1;
...
endmodule
另一种方式也是使用下面的结构:
module module_name #(parameter w1 = 16, parameter w2 = 8)(
input [w1-1:0] in1,
input [w2-1:0] in2,
output [w1-1:0] out1
);
...
endmodule
但是:在使用此参数的输入/输出信号之后定义参数是否是非法的(Quartus建议不)?
看起来我正在寻找文档中的错误位置(第6.20节)。谢谢。 – Qiu