To be able to perform code coverage analysis, the processor model needs to support instruction profiling. In order to generate a full code coverage report that includes disassembly, either the used processor model must implement the class_disassembly
interface or there must exist a disassemble module for the architecture type. Otherwise only source coverage will be available in the report.
It is often recommended to use one of the available software trackers, as that keeps track of what is running on the system. This makes it possible to match an executed instruction with the correct software entity.
A good thing to remember is that the quality of the source code mapping depends highly on the debug information and the optimization level.