MATLAB Answers

0

Is code coverage for a model equal to code coverage of generated code?

Asked by Carl-Jakob Ulmer on 16 Sep 2015
Latest activity Commented on by Sebastian Castro on 18 Sep 2015
Hi,
I use Simulink Verification and Validation toolbox to measure the code coverage while simulating the model with an automated test execution. In coverage settings I checked "Decision" and "Condition" and get in the coverage report a C1 and D1 result.
My question is how this results correlate with the code coverage of the generated code? Is it same? E.g. C1 and D1 is 100%, do I automatically have 100% for the generated code?
Thanks
Simulink version: R2014a

  2 Comments

And what about testing a Stateflow Model only? Is there also a deviation between model and code coverage possible?
Yes, the same principles hold for Stateflow... so you should really test code coverage as well if you can!

Sign in to comment.

2 Answers

Answer by Sebastian Castro on 16 Sep 2015
Edited by Sebastian Castro on 16 Sep 2015
 Accepted Answer

Not necessarily... Although having 100% model coverage makes it much more likely to have 100% code coverage.
There are some factors that may cause a disparity between model and code coverage, such as optimizations in the generated code, unsupported blocks in Simulink V&V that generate more logical expressions/if-else statements in the code, legacy hand-code that may be in your model (and not analyzed by Simulink V&V), and so on.
On that note, starting with either R2015a, you can collect coverage from external C hand-code that may be in your model in the form of S-Functions.
We usually recommend using a code coverage tool to complement model coverage. Embedded Coder lets you interface with a few third-party tools so you can do this in Software-in-the-loop (SIL) or Processor-in-the-loop (PIL) modes directly from Simulink.
- Sebastian

  0 Comments

Sign in to comment.


Answer by Jeevan Thomas on 17 Sep 2015

Coverage of a model doesn't necessarily reflect coverage of generated code.
In the generated code, there will be utility functions/routines generated as part of block settings (for ex: rounding, saturate on integer overflow, div-by-zero etc) which will not be covered using Simulink V&V.
Also optimization settings plays a part too.
For code coverage, you could try tools such as BTC EmbeddedTester (works better with TargetLink as code generator), ReactisForC, BullEyeCoverage etc.

  0 Comments

Sign in to comment.