class square;
rand bit arr [3][3];
function void pre_randomize();
arr[0][1] = 1;
$display ("%p",arr);
endfunction
constraint ab_c {
// Iterate over the 3x3 array
foreach (arr[i,j]) {
if (arr[i][j] == 1) {
// If arr[i][j] == 1 and we are not at the boundaries
if (i > 0 && j > 0 && j < 2 && i < 2) { arr[i-1][j+1] == 1;
}
else arr[i][j] == 0;
}
}
}
我有一个 3x3 数组,我试图有一个模式,当 arr[0][1](起始位置)为 1 时,我想将 arr[2][0] 设为 1。这似乎是约束求解器在随机化后将 pre_randomized 值 arr[0][1] 设置为 0。这是预期的吗?
当
foreach
循环到达arr[0][1]
时,第一个if
条件为真。然而,第二个 if
条件为假,因为 i=0。 这意味着 else
条件被执行:
else arr[i][j] == 0;
这会将
arr[0][1]
设置为 0:
else arr[0][1] == 0;