Systemverilog随机位向量

时间:2014-04-03 10:23:21

标签: constraints system-verilog

我正在使用system-verilog,我想随机化一个大小为100的位向量 但我希望只有10个单元格的值为1。 我试图在约束中使用countones()但不可能。

所以我没有想法。

感谢您的帮助!

1 个答案:

答案 0 :(得分:6)

我尝试了这个代码,它在Incisve中运行:

package some_package;

class some_class;
  rand bit[99:0] vec;

  constraint just_10_ones {
    $countones(vec) == 10;
  }
endclass

endpackage


module top;

  import some_package::*;

  initial begin
    static some_class obj = new();
    obj.randomize();
    $display("vec = %b", obj.vec);
  end

endmodule

根据我的记忆,过去一些供应商并不支持这样的约束,其中随机变量被用作方法的输入。如果他们确实支持它,则在启动randomize()时变量的值用于输入,但此约束不会影响其结束值。