如何改变SystemVerilog随机变量的概率分布?

kru*_*pan 3 system-verilog

这适用于SystemVerilog.我知道你可以在随机变量选择的值集中指定值或值范围的权重,但是如果你想要一个漂亮的高斯分布怎么办?你怎么写这种约束?

Ste*_*e K 5

当随机化被调用时,这个类会产生变量"值"与正态(高斯)分布,其平均值和标准差分别为100和20,的值.我没有测试过这么多,但它应该工作.

class C;

  int seed = 1;
  rand int mean;
  rand int std_deviation;
  rand int value;

  function int gaussian_dist();
    return $dist_normal( seed, mean, std_deviation );
  endfunction

  constraint c_parameters {
    mean == 100;
    std_deviation == 20;
  }

  constraint c_value { value == gaussian_dist(); }

endclass
Run Code Online (Sandbox Code Playgroud)