localparam在“内部”时出错;至于;基于Verilog的循环 参数N=4,FOO={N{4'd1}; //然后在生成循环中 genvar i; 对于(i=0;i
我得到了这个错误,但不明白为什么localparam在“内部”时出错;至于;基于Verilog的循环 参数N=4,FOO={N{4'd1}; //然后在生成循环中 genvar i; 对于(i=0;i,verilog,hdl,Verilog,Hdl,我得到了这个错误,但不明白为什么 parameter N = 4, FOO = { N { 4'd1 } }; //And then in the generate loop genvar i; for( i = 0; i < N; i = i + 1 ) begin : gen_loop localparam THIS_FOO = FOO[ i * 4 +: 4 ]; end wire [1:0] rr = THIS_FOO[1:0]; wire [1:0]
parameter N = 4, FOO = { N { 4'd1 } };
//And then in the generate loop
genvar i;
for( i = 0; i < N; i = i + 1 )
begin : gen_loop
localparam THIS_FOO = FOO[ i * 4 +: 4 ];
end
wire [1:0] rr = THIS_FOO[1:0];
wire [1:0] rt = THIS_FOO[3:2];
第344行:未声明。
第345行:未声明。
由于以前的错误,模块被忽略。
请告诉我哪里错了
您的
localparam
在begin:gen\u loop..end
范围内声明。此外,您的generatefor
循环创建了块的多个版本,并带有名称
Line 344: <THIS_FOO> is not declared.
Line 345: <THIS_FOO> is not declared.
Module <TCL_vec> ignored due to previous errors.
所以这个_-FOO也有多个版本,访问它们的方法是使用交叉引用符号
gen_loop[0]
gen_loop[1]
...
是的,您必须知道要访问循环的哪个迭代
因此,在您的案例中,它抱怨是因为您没有在您想要访问它的范围内声明此_FOO
wire [1:0] rr = gen_loop[0].THIS_FOO[1:0];
wire [1:0] rt = gen_loop[1].THIS_FOO[3:2];
...