系统verilog中的压缩数组声明



我在声明压缩数组时遇到了以下语法。

bit arr [bit[3:0];

我的理解是,这个arr的深度是16,宽度是1位。但当我尝试使用下面的循环打印值时,它不会打印任何内容:

foreach(arr[ii])
$display("arr[%0d] = %0d",ii,arr[ii]);

此外,我可以写&读取任何索引,如arr[56]=1,并且能够打印相同的索引而没有任何错误。

有人能解释一下这背后的逻辑吗?

这是一个未封装的关联数组,其元素为单个位,索引(键(类型为4位的压缩数组。

只有对特定的键索引进行赋值,关联数组元素才会被分配。因此,foreach循环在分配了元素之前不会迭代。

最新更新