对于 2x4 数组,我需要偶数行之和为 60,偶数列之和为 40。 使用以下代码,行条件有效但列条件无效。请让我知道如何解决它。
class c1;
rand bit[7:0] matrix[2][4];
constraint c1 { foreach (matrix[i])
if(i%2==0)
matrix[i].sum with(int'(item))==60;
}
constraint c2 { foreach (matrix[j])
if(j%2==0)
matrix.sum with (int'(matrix[item.index][j]))==200;}
endclass
module m1;
c1 obj;
initial
begin
obj=new();
obj.randomize();
$display("matrix is %p",obj);
end
endmodule
对于这么小的矩阵,这是微不足道的:
localparam COLSUM = 40;
constraint c2 {
matrix[0][0] + matrix[1][0] == COLSUM;
matrix[0][2] + matrix[1][2] == COLSUM;
}
显然,如果您需要创建更大的矩阵,这并不能很好地扩展,但它可以完成您所拥有的工作。