Cross coverage auto generated bins exclusion using WITH expression

Hey All,

I have been trying to exclude the auto generated cross bins using select_expression inside with condition.


    c_size_cross: coverpoint csd_size {
      // c_sz_x_64[0] = [1:64], c_sz_x_64[1] = [65:128] ....... c_sz_x_64[63] = [4033:4096]
      bins c_sz_x_64[64] = { [1:4096] }; // Idea is to have numbers in multiple of 64
    }
    skipped_txn: coverpoint ((b0_sz_i - csd_size)/64)
      iff (z_fill == 0 && b0_sz_i != 0 && b1_sz_i == 0) {
      // Idea is to have skipped_txns[0] = 0, skipped_txns[1] = 1 ...... skipped_txns[63] = 63
      bins skipped[] = { [0:63] };
    }
    b0_sz: coverpoint b0_sz_i {
      bins sz[] = { 0, 64, 128, 256, 512, 1024, 2048, 4096 };
    }

Requirements of exclusion:

  • c_size_cross > 3072 (should contain bins having lesser value than 3072)
  • b0_sz = 0 and b0_sz < c_size_cross (If b0_sz = 128 then c_size_cross bins having more than 128 should be ignored.)
  • If b0_sz is 128 then skipped_txns bins having [2:63] should be ignored. Likewise, if b0_sz is 256 then skipped_txns bins having [4:63] should be ignored. Likewise, if b0_sz is 512 then skipped_txns bins having [8:63] should be ignored.
    This is what I have tried, but couldn’t get the expected results.

    skipped_txn_x_b0_sz: cross skipped_txn, b0_sz, c_size_cross
      iff (z_fill == 0 && b1_sz_i == 0) {
      // Point 1: Got the expected results using this
      ignore_bins unreachable_b_sz_bins = binsof(b0_sz) intersect {0};
 
      // Point 2: Got the expected results using this
      ignore_bins unreachable_c_sz_bins = 
                  binsof(c_size_cross.c_sz_x_64) with ((b0_sz < c_size_cross) || (c_size_cross > 3072)); 
 
      // **Point 3: Not getting expected results. Don't see any effect of this condition in coverage reports**
      ignore_bins unreachable_skipped_txns_bins = 
                  binsof(skipped_txn.skipped) with (((int'(skipped_txn)<<6) >= b0_sz) != 0) ; 
 
    }

Let me know if I am missing anything here or have done anything wrong in implementation.

TIA