Skip to content

Fixed minor issues in PMP coverpoints that caused coverage drops

  • READ_ZERO_MASK to put G-1 zeros in pmpaddr when G>=1 and pmpcfg.A[1] is clear. Supposed to put all 1s in pmpaddr0 in cp pmp_addr_for_tor_nonoverlap3, but bin wasn't hitting because for G=4, it was reading [3:0] as zeros.

  • A bit of renaming of coverpoint csrw_to_pmpaddr0.

  • Since, (0x0000000020000804_0000000020000800) != (0x20000804_20000800), and beacuse of this, bin pmp_addr_for_tor_bot wasn't getting hit for XLEN64. So, I update the logic to (0x0000000020000804 == 0x20000804) && (0x0000000020000800 == 0x20000800). Same logic for cp pmp_addr_for_tor_nonoverlap1 , pmp_addr_for_tor_nonoverlap2, and pmp_addr_for_tor_nonoverlap3.

  • Placed na4 coverpoints inside ifdef G_IS_0.

  • Refactor addr_for_misaligned_straddling_end to addr_standard_region_straddling_end and addr_non_standard_region_straddling_end because for G=0, the end will be based on g_tor / g_napot.

  • Fixed the hit logic for the cp_pmp64 the requires 64 pmp writable registers.

Merge request reports

Loading