想了一个笨方法,有点繁琐。。。
class trans;
randc bit [39:19] AH;
rand bit [18:6] AM;
rand bit [5:0] AL;
//定义一个关联数组array来记录AM产生次数
static int array(bit [12:0]);
constraint a_range { AH>addr_start;AH<addr_end;}
//定义函数检查数据是否超过8次
virtual function bit is_valid();
array[AM]++;
if(array[AM]>8)
return 1;
else return 0;
endfunction
endclass
在gen里面调用is_valid检查有效性
class gen;
....
repeat(20000) begin
trans addr=new();
assert(addr.randomize());
while(addr.is_valid) assert(addr.randomize());
...
end
endclass