Skip to content

fix: report the formal coverage columns the engine actually measured - #257

Open
martin-velay wants to merge 1 commit into
lowRISC:masterfrom
martin-velay:formal_cov_columns
Open

fix: report the formal coverage columns the engine actually measured#257
martin-velay wants to merge 1 commit into
lowRISC:masterfrom
martin-velay:formal_cov_columns

Conversation

@martin-velay

Copy link
Copy Markdown
Contributor

Description

get_coverage read formal_coverage["formal"], ["stimuli"] and ["checker"], which are the columns a JasperGold run reports. A VC Formal run reports stimuli, coi and proof, so reporting one raised KeyError: 'formal' and took dvsim down with a traceback after the build job had already passed and written its results.

The columns are now taken from the report the tool's own parser wrote, and summary_header follows them, so the cross-cfg summary table names the columns the cfg's engine filled in rather than another engine's. Only stimuli is common to the two engines, so neither set can stand in for the other and there is nothing to harmonise onto.

This was reachable only once an OpenTitan-side bug was fixed. The vcformal parse-formal-report.py rejects the --exp-fail-path that common_formal_cfg.hjson always passes, so make failed, no results.hjson was written, result.get("coverage") returned None, and get_coverage took its "No coverage information found" branch instead.

tests/flow/ is new; nothing covered this module before.

AI-assisted (Claude Code) — reviewed and approved by author

get_coverage read formal_coverage["formal"], ["stimuli"] and ["checker"],
which are the columns a JasperGold run reports. A VC Formal run reports
stimuli, coi and proof, so reporting one raised KeyError: 'formal' and
took dvsim down with a traceback after the build job had already passed
and written its results.

The columns are now taken from the report the tool's own parser wrote,
and summary_header follows them, so the cross-cfg summary table names the
columns the cfg's engine filled in rather than another engine's. Only
stimuli is common to the two engines, so neither set can stand in for the
other and there is nothing to harmonise onto.

This was reachable only once an OpenTitan-side bug was fixed. The
vcformal parse-formal-report.py rejects the --exp-fail-path that
common_formal_cfg.hjson always passes, so make failed, no results.hjson
was written, result.get("coverage") returned None, and get_coverage took
its "No coverage information found" branch instead.

tests/flow/ is new; nothing covered this module before.

AI-assisted (Claude Code) — reviewed and approved by author

Signed-off-by: Martin Velay <mvelay@lowrisc.org>
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