All Metrics for Functional Safety
TRACE32 trace-based code coverage provides all metrics required for functional safety:
- Object code coverage
- Statement coverage
- Function coverage
- Call coverage
- Condition coverage
- Decision coverage (often called branch coverage)
- Modified condition/decision coverage
Object Code, Statement and Function Coverage
Object code, statement and function coverage can be directly verified from the source files and the trace recording of the program execution.
Call Coverage
In addition to the source code files and the trace recording, information about which source code lines contain function calls is required to verify call coverage.
This information is not part of the debug information generated by the compiler but can be generated by static code analysis with the command line tool
t32cast, which is provided as part of Lauterbach’s TRACE32 tool suite.
Condition & Decision Coverage, MC/DC
For condition and decision coverage, as well as MC/DC verification, the mapping of the source code decisions to the object code conditional branches/instructions is needed in addition to the source code
files and trace recording. To perform this mapping TRACE32 must know the position and structure of all decisions. This information is not part of the debug information generated by the compiler,
but can be generated by static code analysis with the command line tool t32cast, which is provided as part of Lauterbach’s TRACE32 tool suite..
The mapping of source code decisions to conditional branches/statements at the object code level may have occasional gaps depending on compiler and/or core architecture. These gaps must then be
eliminated by instrumenting the code (targeted instrumentation). Typically, no more than 10% of the source code needs to be instrumented.