Hi,
I have a set of coverpoints for a group of mapping variable. Each mapping can take 0 to n-1(shown here for n=4) values and there are n mapping variables. No two mapping variables should contain the same values.
I am trying to define coverpoints to check that all values are seen in each mapping variable, and then a cross coverage point to show that all combinations of variables have been seen, with the cases where two variables are equal marked as illegal. For 2 mapping bins it is straightforward to explicitly describe the illegal combinations, but as n increases, this becomes quite verbose:
cp_mapping0: coverpoint mapping0 {bins zero = {0};
bins one = {1};
bins two = {2};
bins three = {3};
}
…
…
cp_mapping3: coverpoint mapping1 {bins zero = {0};
bins one = {1};
bins two = {2};
bins three = {3};
}
//actual point of interest is the cross between them all, when aligned. If any bins are the same-> illegal!
x_mapping:cross cp_mapping0,cp_mapping1,cp_mapping2,cp_mapping3
{illegal_bins illegal=(binsof(cp_mapping0) intersect {1} && (binsof(cp_mapping1) intersect {1} ||binsof(cp_mapping2) intersect {1} || binsof(cp_mapping3) intersect {1})) ||
(binsof(cp_mapping0) intersect {2} && (binsof(cp_mapping1) intersect {2} ||binsof(cp_mapping2) intersect {2} || binsof(cp_mapping3) intersect {2})) ||
.....etc.
Does anyone know a better way of describing this?
something like {illegal_bins illegal=(binsof(cp_mapping0)==binsof(cp_mapping1)||binsof(cp_mapping0)==binsof(cp_mapping2)|| …)
Thanks
Graham