Coverage for Custom C/C++ Code in Simulink Models
When you record coverage for models containing supported C/C++ S-Functions, MATLAB Function blocks that call external C/C++ code, C Caller blocks with C/C++ code , or Stateflow® charts that integrate custom C/C++ code for simulation, coverage is recorded for the C/C++ code within the C/C++ S-Functions, MATLAB Function blocks, or Stateflow charts. The coverage results for the custom code can be viewed in the same report as the rest of the model. For each S-Function block, MATLAB Function block, or Stateflow chart, the report links to a detailed coverage report for the C/C++ code in the block.
Enable Code Coverage for Custom C/C++ code in MATLAB Function Blocks, C Caller Blocks, and Stateflow Charts
To enable code coverage for custom C/C++ code in your Simulink® model:
On the Simulation Target pane of the Configuration Parameters, select Import custom code.
On the Simulation Target pane of the Configuration Parameters, select Enable custom code analysis.
Simulink Coverage™ records code coverage for custom C/C++ code in MATLAB Function blocks, C Caller blocks, and Stateflow charts.
Code Coverage for S-Functions
Make S-Function Compatible with Model Coverage
If you use the
legacy_code function, S-Function Builder block or
mex function to create your S-Functions, adapt your method appropriately to
make the S-Function compatible with model coverage.
For more information on the three approaches, see Implement C/C++ S-Functions.
Initialize a MATLAB® structure with fields that represent Legacy Code Tool properties.
def = legacy_code('initialize')
To enable model coverage, turn on the option
def.Options.supportCoverageAndDesignVerifier = true;
Use the structure
defin the usual way to generate an S-function. For an example, see Coverage for S-Functions.
S-Function Using S-Function Builder
Copy an instance of the S-Function Builder block from the User-Defined Functions library in the Library Browser into the your model.
Double-click the block to open the S-Function Builder dialog box.
On the Build Info tab, select Enable support for coverage.
mex Function. If you use the
mex function to compile and link your source
files, use the
slcovmex function instead. The
slcovmex function compiles your source code and also makes it
compatible with coverage.
This function has the same syntax and takes the same options as the
mex function. In addition, you can provide some options relevant for
model coverage. For more information, see
Generate Coverage Report for S-Function
In the Simulink Editor, select Model Settings on the Modeling tab.
On the Coverage pane of the Configuration Parameters dialog box, under Include in analysis, select C/C++ S-functions.
When you run a simulation, the coverage report contains coverage metrics for C/C++ S-Function blocks in your model. For each S-Function block, the report links to a detailed coverage report for the C/C++ code in the block.