verilog - Verilog上“for”循环内的localparam错误
问题描述
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.
请告诉我我错在哪里?
解决方案
您在范围内localparam
声明。begin:gen_loop..end
此外,您的生成for
循环创建了多个版本的块,并带有名称
gen_loop[0]
gen_loop[1]
...
因此,您也有多个版本的 THIS_FOO。访问它们的方法是使用交叉引用表示法。
wire [1:0] rr = gen_loop[0].THIS_FOO[1:0];
wire [1:0] rt = gen_loop[1].THIS_FOO[3:2];
...
是的,您必须知道要访问哪个循环迭代。
因此,在您的情况下,它抱怨是因为您没有在要访问它的范围内声明 THIS_FOO 。
推荐阅读
- angular - 从角度 6 中的另一个组件调用 app.component.ts 中的方法
- r - 将顶点序列列表转换为R中的表
- javascript - 如何仅在 javascript 中的 onclick 上播放 gif
- algorithm - 如何根据某些条件合并两个大文件?
- google-sheets - 将范围与大括号 { } 组合时是否可以添加 IFERROR
- perl - Curl 工作正常,但 Perl LWP 无法将 Unicode 代码发布到 HTTPS 服务器
- ios - 拥有同步线程的目的
- python - 通过 gcloud 发送 Hadoop 作业
- directx - 何时使用 IDXGIFactory3::GetCreationFlags
- java - 持久实体如何具有关联标识符但在数据库中没有表示?