使用generate变量中的表达式声明向量大小

时间:2017-07-21 06:59:48

标签: verilog

所以我试图基于生成变量声明一个可变大小的数组,但是我的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会产生负值?

当放弃错误时,合成完成没有问题。

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;