随机句柄数组的功能是在调用其所在的随机函数时,随机函数会随机化数组中的每一个句柄所指向的对象。因此随机句柄数组的声明一定要添加rand来表明其随机化的属性,同时在调用随机函数之前要保证句柄数组的每一个句柄元素都非悬空,这要保证在随机化之前为每一个句柄元素构建对象。
如果要产生多个随即对象,则需要建立随机句柄数组。和整数数组不同,随机句柄数组需要在随机化之前分配所有的句柄元素,因为求解器是不会创建对象的。使用动态数组可以按照需要分配最大数量的元素,再使用约束减小数组的大小。在随机化时,动态句柄数组的大小可以保持不变和减小,但不能增加。
出自绿皮书
parameter max_size=10;//数组元素最大数目
class randstuff;//声明一个类,里面的元素都是随机数类型
rand int value;
endclass
class randarray;//声明一个随机化的动态句柄数组
rand randstuff array[];//声明一个随机化的存放随机数类的元素的句柄数组
constraint c {array.size() inside{[1:max_size]};}//对数组的大小做约束,不大于最大参数值
function new();//对动态数组做例化,并保证产生10个句柄,每个句柄指向一个对象,确保句柄非悬空。
array=new(max_size);//分配最大的空间
foreach(array[i]) array[i]=new();//分别指向十个对象
endfunction
endclass
randarray ra;//