Coverage for Custom C/C++ Code in Simulink Models - MATLAB & Simulink (original) (raw)
Main Content
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 pane of the Configuration Parameters, select Import custom code.
- On the 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 Author Blocks Using C MEX S-Functions.
- S-Function Using legacy_code Function
- S-Function Using S-Function Builder
- S-Function Using mex Function
S-Function Using legacy_code
Function
- 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.supportCoverage
.
def.Options.supportCoverageAndDesignVerifier = true; - Use the structure
def
in 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 theUser-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.
S-Function Using mex
Function. If you use the mex
function to compile and link your source files, use the slcovmex
function instead. Theslcovmex
function compiles your source code and also makes it compatible with coverage.
This function has the same syntax and takes the same options as themex
function. In addition, you can provide some options relevant for model coverage. For more information, see slcovmex.
Generate Coverage Report for S-Function
- In the Simulink Editor, select Model Settings on theModeling 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.