Skip to content

Coverage exclusions: follow the ifu, tlbcontrol and privdec changes - #1989

Closed
davidharrishmc wants to merge 2 commits into
openhwfoundation:mainfrom
davidharrishmc:dh/fix-ccov-exclusions
Closed

davidharrishmc wants to merge 2 commits into
openhwfoundation:mainfrom
davidharrishmc:dh/fix-ccov-exclusions

Conversation

@davidharrishmc

@davidharrishmc davidharrishmc commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor

regression-wally --ccov on main stopped at the exclusion step: two GetLineNum patterns still named ~ITLBMissF, which #1934 renamed to ~ITLBMissOrUpdateRawF in ifu.sv. This fixes them, moves the ITLB TLBMiss exclusion from row 3 to row 5 (TLBAccess_0) now that #1928 added UpperBitsUnequal, excludes the unreachable wfiM_0 row of TWTimeoutM from #1941, and adds wfiSnoTW.S (an S-mode wfi with mstatus.TW = 0 that waits past the counter limit) to cover the reachable STATUS_TW_0 row. It also adds tlbOverlap.S, which reaches the rows of the tlbcamline Overlap expression (from #1927) that no test hit, on every ITLB and DTLB line. With #1920 merged on top, rv64gc code coverage has no uncovered rows left.

🤖 Generated with Claude Code

davidharrishmc and others added 2 commits October 16, 2026 03:45
regression-wally --ccov stopped at the exclusion step: two GetLineNum patterns
still named ~ITLBMissF, which ifu.sv now spells ~ITLBMissOrUpdateRawF.  The ITLB
TLBMiss exclusion named row 3, but with UpperBitsUnequal added Questa lists
TLBAccess_0 as row 5.

The wfi rework left two rows of TWTimeoutM uncovered: wfiM_0 can't occur with the
wait counter saturated, since the counter clears whenever M advances, so it is
excluded; STATUS_TW_0 in S mode is reached by the new wfiSnoTW test, an S-mode
wfi with mstatus.TW = 0 that waits past the counter limit for a timer interrupt.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Overlap check that invalidates TLB lines overlapping a new entry had rows
no test reached on any ITLB or DTLB line: a NAPOT leaf in the line's 64 KiB
region or in another region of its megapage, a global leaf under another ASID,
and an Sv57 petapage leaf that differs from the line only in VPN[3].
tlbOverlap fills all 32 lines of each TLB with 4 KiB pages before each case,
sized to the replacement policy, and checks every access's translation.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@davidharrishmc

Copy link
Copy Markdown
Contributor Author

A full regression-wally --ccov on this branch merged with #1920 (764670b) reports rv64gc code coverage at 100%: the below-100 report is empty, and all runs pass, including wfiSnoTW, tlbOverlap and #1920's gshare. Merge order: this PR, then #1920; main stays below 100% until both land.

🤖 Generated with Claude Code

davidharrishmc added a commit to davidharrishmc/cvw that referenced this pull request Oct 16, 2026
…-remaining

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@davidharrishmc

Copy link
Copy Markdown
Contributor Author

Folded into #1920 (merge 9276112), so the exclusion fixes and the wfiSnoTW/tlbOverlap tests land with the coverage tests they complete. Closing in favour of #1920.

🤖 Generated with Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant