Packed vs unpacked array

时间:2015-06-10 18:24:08

标签: system-verilog

我试图理解以下两个代码段的不同之处:

示例1:

logic [4:0] [2:0] a;

示例2:

typedef logic[4:0] mytype;
logic mytype [2:0] a;

例如1,a是打包结构,如果我没有错误,索引将按以下方式工作:a[0]a[1] ... a[4]将提供3位值(由于[2:0])。

然而,对于示例2,a[i]其中i的最大索引是2并且每个a[i]将给出5位向量(由于mytype)。

两个例子似乎都等同于我。第二个只包括一个额外的typedef。但是,为什么索引数组对于这两种情况都不相同?

1 个答案:

答案 0 :(得分:1)

错误消息应该是您的索引范围与您的想法相反的线索。您应该阅读具有示例的1800-2012 LRM的 7.4.5多维数组部分

  

也可以使用typedef分阶段定义多个打包维度。    typedef bit [1:5] bsix; bsix [1:10] v5; // 1 to 5 varies most rapidly