The Lumina system
Coverage · Lumina Sim

Know what your tests reached, and what they never touched.

Coverage is collected by Lumina Sim during the run and written to a database that merges across runs, so a regression of a thousand seeds gives one answer. Functional, assertion and code coverage come out of the same simulation, with a report of everything not covered.

lumsim · coverageCONNECTED
$ lumsim tb.sv --code-coverage line,toggle \
--coverage-report cov.txt --coverage-db run1.json
# one answer from every run of the regression
$ tools/lumcov.py merge run1.json run2.json run3.json -o all.json
$ tools/lumcov.py report all.json --details

Commands from the coverage guide

Functional
covergroups and crosses
Line · branch · toggle
code coverage
Merged
across runs
IEEE 1800 clause 40
coverage control from the testbench
Capabilities

What is measured

Functional coverage

Covergroups, coverpoints and crosses, with value, transition, wildcard, ignore and illegal bins, options and per-instance merging. $get_coverage gives the same numbers during the run.

Assertion coverage

For every concurrent assertion, assumption and cover: attempts, passes, vacuous passes, failures and cover hits.

Line and branch

Statements and every arm of every if and case, with an arm for "none taken" where there is no else or default.

Toggle

Every bit of every variable and net, covered when it rose and fell. Glitches inside one time step are not counted as toggles.

Merged across runs

Runs of the same design sum into one database. The report lists what is covered and, with details, everything that is not.

Control from the testbench

$coverage_control, $coverage_get and $coverage_get_max start, stop, reset and read coverage by scope.

Planned

Expression and condition coverage

Each term of a decision shown to change the outcome both ways on its own: the measure safety flows ask for.

Planned

FSM coverage and test ranking

States reached and transitions taken for every state machine found in the design, and tests ranked by the coverage they add.

Reference

Coverage kinds

  • FunctionalAvailable

    Covergroups, coverpoints, crosses and every kind of bin

  • AssertionAvailable

    Attempts, passes, vacuous passes, failures, cover hits

  • LineAvailable

    Statements, their lines, and every branch arm

  • ToggleAvailable

    Every bit of every variable and net, rising and falling

  • Expression · conditionPlanned

    Each term of a decision, alone and as the one that decides it

  • FSMPlanned

    States reached and transitions taken

  • RankingPlanned

    Which tests add the most coverage

Questions

Frequently asked

What is the difference between functional and code coverage?

Code coverage measures which parts of the RTL were exercised: lines, branches, toggles. Functional coverage measures whether the scenarios in your verification plan happened, as written in covergroups. A design needs both: code coverage finds RTL nothing reached, functional coverage finds features nobody tested.

Can I merge coverage from many simulation runs?

Yes. Each run writes a database; merge sums the counts of runs of the same design, and report prints the summary and everything still not covered.

Is MC/DC-style coverage supported?

Expression coverage, where each term of a decision must be shown to decide the outcome both as 0 and as 1, is planned. It is the coverage measure safety flows such as DO-254 and ISO 26262 projects ask for.

Is encrypted IP measured?

No. The statements and signals of IEEE 1735 protected IP are not measured, so nothing inside it is revealed.

Run your own design on Lumina first.

We are working with a small group of design teams before release. You run your real designs; we fix what you find, and your cases become part of the tests every build must pass.

Privacy settings

Choose what this site may use. You can change your mind at any time from the Privacy settings link at the bottom of every page.

What the site needs to work, and the record of the choice you make here, kept in your browser. No cookies are set.

Always on

Would let us count visits and see which pages are useful, without advertising or cross-site tracking. We do not use any analytics today, so nothing is loaded whichever you choose.

Cookie policy · Privacy policy