目前在处理随机化时,总结一下已经的了解的随机方式:
1. 系统函数
int random_data = $urandom_range(10, 20);
2. randomize
class packet;
//随机变量
rand int random_data;
constraint c {
random_data inside {[10,20]};
}
endclass
paket p;
p =new();
assert(p.randomize());
缺点:必须先构建一个class之后采用randomize来进行随机化;
3. std::randomize
std::randomize (random_data) with {
random_data inside {[10,20]};
}
优点,可以构建复杂的约束条件,可以直接使用在task中,无需构建新的类。
在能使用系统函数时,优先使用系统函数;
randomize和 std::randomize 根据情况去选择。