所以我试图基于生成变量声明一个可变大小的数组,但是我的linting工具SpyGlass抱怨规则BitOrder-ML
并给出以下错误消息:
声明'矢量大小'位顺序' [((1<<< level)-1):0]'按照惯例
这是产生问题的代码:
genvar level;
localparam integer LEVELS = 3;
generate
for (level=0; level<LEVELS; level=level+1) begin
wire result[(1 << level)-1:0];
end
endgenerate
SpyGlass在这里是否理智?它是否以某种方式认为表达式(1 << level)-1
会产生负值?
当放弃错误时,合成完成没有问题。
答案 0 :(得分:1)
首先
1 - 你有语法问题
导线结果[(1&lt;&lt;&lt;&lt; level)-1:0]];你应该删除最后一个]。
2 - 你应该将level声明为genvar而不是整数!种族水平;是对的。
注意:[(2 ^ level)-1:0]比[(1&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&quot;&nbsp;