SystemVerilog中的随机方法
一、基本知识
随机数发生器(RNG)对于对象和线程来说都是本地的,被一个对象或者线程使用的随机序列独立于其他的对象或者线程,这个特性被称之为随机稳定性。随机稳定性的基础是伪随机数发生器,一般来说,伪随机数由算法和种子决定,当算法固定时,通过控制种子就可以控制其产生的随机数序列。
二、SV中的随机方法
2.1 产生随机数的方法
$random(),$urandom(),$urandom_range()和$random(seed=0),其他方式指定的种子不能改变$random()的随机序列:
rd_addr = $random()$urandom(seed=1);
其他方式指定的种子影响$urandom()产生的随机序列,
rd_addr=$urandom()$urandom_range(int min,int max),
产生受种子影响的范围内的随机序列:
rd_addr = $urandom_range(100, 500);
2.2 类的randomize()
std::randomize()类的randomize()方法是对类的属性随机,可以使用with进行指定约束:
rdaddr.randomize() with{
rd_addr inside {0,12,45,36};
};
std::randomize()和randomize()类似,对作用域里的变量进行随机,也可以使