Modelsim or Questa Code Coverage gives you graphical and report file feedback on which executable statements, branches, conditions, and expressions in your source code have been executed. It also measures bits of logics that have been toggled during execution.
Why this « Digital Snack » on Code Coverage
In general, we continue to see some ModelSim & Questa users not aware about Code Coverage features included in their tools or they don’t have time to investigate and see how they can apply code coverage measurements.
During this Digital Snack, we will present Code Coverage, identify which coverage statistics you want and explain how you can enable it.
The advantage of enabling Code Coverage
In the old days, Code Coverage was statement based only, today it’s more complete and we can collect more advanced measurements for code execution analyzes. This approach was heavily used in software word. Example: structural code coverage is a key activity for DO-178B and DO-178C compliance during the development of software for airborne systems.
So we extend this approach to the hardware word, and we have the same code coverage requirements for HDL designs, it could be for certification purposes like for DO-254 or IEC.
For critical applications, certification authorities in different industries like transportation, Mil/Aero, Medical, NPPs etc…needs to see your code coverage data and how much coverage you get, if not complete you need to provide documents to justify why.
Even in classical designs we can see a big value in collecting code coverage data as it will guide you in building your tests and though quantifying how efficient they could be.
What you will learn during this Digital Snack on Code coverage
We will discover the advanced code coverage capabilities and the ease of use to lower the barriers for leveraging this valuable verification resource.
We will see how to save and store all coverage information in the Unified coverage data base (UCDB), code coverage utilities that analyse code coverage data, such as merging and test ranking.
We will see the main supported coverage types:
- Statement coverage
Number of statements executed during a run
- Branch coverage
Expressions and case statements that affect the control flow of the HDL execution
- Condition coverage
Breaks down the condition on a branch into elements that make the result true or false
- Expression coverage
The same as condition coverage, but covers concurrent signal assignments instead of branch decisions
- Focused expression coverage
Presents expression coverage data in a manner that accounts for each independent input to the expression in determining coverage results
- Enhanced toggle coverage
In default mode, counts low-to-high and high-to-low transitions; in extended mode, counts transitions to and from X
- Finite State Machine coverage
State and state transition coverage