固定多维矩阵的行和列之和的约束

问题描述 投票:0回答:1

对于 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
constraints system-verilog
1个回答
0
投票

对于这么小的矩阵,这是微不足道的:

   localparam COLSUM = 40;
   constraint c2 { 
        matrix[0][0] + matrix[1][0] == COLSUM;
        matrix[0][2] + matrix[1][2] == COLSUM;
   }

显然,如果您需要创建更大的矩阵,这并不能很好地扩展,但它可以完成您所拥有的工作。

© www.soinside.com 2019 - 2024. All rights reserved.