I get all the ranges to be 0 in the following constraint code.
int start_addr = 'h0;
int end_addr = 'hFF;
rand int range[];
rand int num_partition;
rand int partition_size[];
constraint c1{
num_partition inside {[1:10]};
range.size() == num_partition;
partition_size.size() == num_partition;
foreach(partition_size[i]){
partition_size[i] inside {[1:200]};
partition_size[i+1] > partition_size[i];
}
}
constraint c2{
unique{partition_size};
}
constraint c3{
foreach (range[i]){
if(i==0)
range[i] == start_addr;
else {
range[i] == range[i-1] + partition_size[i-1];
}
}
}
Output:
num_partition 6
range = 0 partition_size 21
range = 0 partition_size 72
range = 0 partition_size 78
range = 0 partition_size 80
range = 0 partition_size 81
range = 0 partition_size 84