Systemverilog:不同顺序的解压缩数组之间的分配(向下与向上)

Systemverilog: assignment between unpacked arrays of different order (downto vs. upto)

假设两个(编辑:解压缩)int 数组被定义为具有不同的索引排序(downto 与 upto)但大小相同,例如

int  a [10:1];
int  b [1:10];

它们之间的分配,

assign b = a;
  1. 是非法的,或者
  2. 导致“相同索引”赋值(b[1]=a[1] ... b[10]=a[10]),或
  3. 导致“镜像索引”赋值 (b[1]=a[10] ... b[10]=a[1])?

我没能在语言参考手册中找到信息,两个商业工具的行为不同。

这是合法代码,您显示的是 未压缩 数组,而不是 已压缩 数组。无论哪种方式,范围都是从左到右。所以你的选项 3 是正确的行为。请参阅 IEEE 1800-2017 SystemVerilog LRM

中的 6.22.2 等效类型7.6 数组赋值 部分