Decrease big matrix coverage automatically (only possible bins)

Hi,

I have two coverpoints (x_cp, y_cp), 8 bit each, and I would like to do cross between the two when only few bits (1-3 bits) are relevant for each value in x_cp and I would like to define bins only on those possible options.

for example:
assume x_cp=8’d0, only the bits 1,3 are relevant in y_cp, i.e. I would like to have bin for each possible combination:

  1. (x_cp=8’d0, y_cp=8’b00000000)
  2. (x_cp=8’d0, y_cp=8’b00000010)
  3. (x_cp=8’d0, y_cp=8’b00001000)
  4. (x_cp=8’d0, y_cp=8’b00001010)

assume x_cp=8’d13, only the bit 5 is relevant in y_cp, i.e. I would like to have bin for each possible combination:

  1. (x_cp=8’d13, y_cp=8’b00000000)
  2. (x_cp=8’d13, y_cp=8’b00100000)

and so on…
I would like to have bins only on the above combinations (to ignore or define illegal for the other combinations).

If I have a file\array that indicates for each value in x_cp, what are the possible bits in y_p, how can I do it smartly (don’t want to encode 2^8 rows for each value of x_cp)?
I’ve seen examples about something that is called CrossQueueType that uses function that define the ignore_bins, but it was a very simple situation (for example all values that satisfy x_cp < y_cp CrossQueueType example).

Help would be truly appreciated!