我试图了解以下两个代码片段有何不同:
示例 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