Verilog 上 "for" 循环中的局部参数错误
Error with localparam inside "for" loop on Verilog
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];
我收到此错误但不明白为什么?:
Line 344: <THIS_FOO> is not declared.
Line 345: <THIS_FOO> is not declared.
Module <TCL_vec> ignored due to previous errors.
Please tell me where I was wrong?
您的 localparam
声明在 begin:gen_loop..end
范围内。此外,您的生成 for
循环创建了块的多个版本,名称为
gen_loop[0]
gen_loop[1]
...
所以您有多个版本的 THIS_FOO,因为 well.The 访问它们的方法是使用交叉引用符号。
wire [1:0] rr = gen_loop[0].THIS_FOO[1:0];
wire [1:0] rt = gen_loop[1].THIS_FOO[3:2];
...
是的,您必须知道要访问循环的哪个迭代。
所以,在你的情况下,它抱怨是因为你没有在你想要访问它的范围内声明 THIS_FOO。
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];
我收到此错误但不明白为什么?:
Line 344: <THIS_FOO> is not declared.
Line 345: <THIS_FOO> is not declared.
Module <TCL_vec> ignored due to previous errors.
Please tell me where I was wrong?
您的 localparam
声明在 begin:gen_loop..end
范围内。此外,您的生成 for
循环创建了块的多个版本,名称为
gen_loop[0]
gen_loop[1]
...
所以您有多个版本的 THIS_FOO,因为 well.The 访问它们的方法是使用交叉引用符号。
wire [1:0] rr = gen_loop[0].THIS_FOO[1:0];
wire [1:0] rt = gen_loop[1].THIS_FOO[3:2];
...
是的,您必须知道要访问循环的哪个迭代。
所以,在你的情况下,它抱怨是因为你没有在你想要访问它的范围内声明 THIS_FOO。