系统验证 - 打包与解压缩阵列



我试图了解以下两个代码片段有何不同:

示例 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)。

成为这两个例子似乎等同于我。 第二个只是包括一个额外的类型定义。但是,为什么两种情况下对数组进行索引并不相同?

错误消息应该是您的线索,表明您的索引范围与您的想法相反。您应该阅读第 7.4.5 节 1800-2012 LRM 的多维数组,其中包含以下示例

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

最新更新