I need to write coverpoint for below combos
//128B req seq:{… adr1,adr,adr1,adr}
lr_inp[large_req_utils::LRR_128B_IDX][0] = 33’h10000_3210;
lr_inp[large_req_utils::LRR_128B_IDX][1] = 33’h10000_5432;
lr_inp[large_req_utils::LRR_128B_IDX][2] = 33’h10000_7654;
lr_inp[large_req_utils::LRR_128B_IDX][3] = 33’h10000_ba98;
lr_inp[large_req_utils::LRR_128B_IDX][4] = 33’h10000_dcba;
lr_inp[large_req_utils::LRR_128B_IDX][5] = 33’h10000_fedc;
lr_inp[large_req_utils::LRR_128B_IDX][6] = 33’h10000_3120;
lr_inp[large_req_utils::LRR_128B_IDX][7] = 33’h10000_7564;
lr_inp[large_req_utils::LRR_128B_IDX][8] = 33’h10000_b9a8;
lr_inp[large_req_utils::LRR_128B_IDX][9] = 33’h10000_fdec;
lr_inp[large_req_utils::LRR_128B_IDX][0] = 33’h10000_3210; → suppose this is the incoming address for a particular request then addr=0 and adr1=1 for first 64byte and addr=2 and adr1=3 for second 64byte request…
similarly for all other address mentoned above…
So, I need write coverpoint where addr=0 and adr=1 are covereted to addr=2 and addr=3 in next 64 byte request then we can confirm that request has 33’h10000_3210 this 128byte request has came.
I have wriiten coverpoint in below way, is there any other way than this
large_req : coverpoint addr,adr1 iff(1) {
bins large_request = { ((addr = 0) && (adr1 = 1)) => ((addr = 2) && (adr1 = 3)),
((addr = 2) && (adr1 = 3)) => ((addr = 4) && (adr1 = 5)),
((addr = 4) && (adr1 = 5)) => ((addr = 6) && (adr1 = 7)),
((addr = 8) && (adr1 = 9)) => ((addr = a) && (adr1 = b)),
((addr = a) && (adr1 = b)) => ((addr = c) && (adr1 = d)),
((addr = c) && (adr1 = d)) => ((addr = e) && (adr1 = f)),
((addr = 0) && (adr1 = 2)) => ((addr = 1) && (adr1 = 3)),
((addr = 4) && (adr1 = 6)) => ((addr = 5) && (adr1 = 7)),
((addr = 8) && (adr1 = a)) => ((addr = 9) && (adr1 = b)),
((addr = c) && (adr1 = e)) => ((addr = d) && (adr1 = f))
}