是否可以将SystemVerilog中的整个数组约束为与另一个数组具有相同的值?
我试过这个:
class some_class;
rand bit array1[10][10];
rand bit array2[10][10];
constraint arrays_c {
array1 == array2;
}
enclass
在我试过的2个Big3模拟器中不允许这样做 . 一个人说它目前不受支持,另一个人将我引用到约束BNF,抱怨它不是一个有效的积分表达式 .
除了设置一些foreach约束之外,还有其他方法吗?我最终想要的是从函数返回一个数组并使用它来约束另一个类字段的数组 .
1 回答
使用
foreach
,参见IEEE Std 1800-2012§18.5.8.1foreach迭代约束如果需要随机数组的副本,更好的方法是在
post_randomize
函数中分配副本 . 它减少了CPU激励 .如果约束块中的
foreach
和post_randomize
计算不是可行的解决方案,则使用打包数组 .或者使用包数组和位流分配来解压缩最终结果