Verilog中数组可以如下定义:
reg [data_width - 1 : 0] array [array_depth - 1 : 0];
wire[data_width - 1 : 0] array [array_depth - 1 : 0];
1.只有定义数组为reg类型的时候,才能在索引中加入变量,例如:
integer i;
reg [1 : 0] i;
wire [1 : 0] i;
array[i]是合法的引用
如果用包含有变量的索引值去索引wire类型定义的数组,就会出现以下error:
ERROR: [VRFC 10-2951] 'i' is not a constant [.../xxx.v:xxx]
2.变量作为索引值时,只能索引向量中的单bit或者二维数组中的单个元素
也就是说,索引方括号[]中,不能出现:、-:、+:等,否则同样会报以上错误。
例如:上面的例子中,array[i : 0]就是不合法的。