Model Objects That Receive Coverage
Certain Simulink^{®} objects can receive any type of model coverage. Other Simulink objects can receive only certain types of coverage, as the following table shows. Click a link in the first column to get more detailed information about coverage for specific model objects.
All Simulink objects can receive Execution coverage, except for virtual blocks and:
Merge blocks
Scope blocks
Width blocks
Display blocks
To Workspace blocks
For a list of virtual blocks, see Nonvirtual and Virtual Blocks.
For a full list of Simulink objects that do not receive coverage, see Model Objects That Do Not Receive Coverage.
For Stateflow^{®} states, events, and state temporal logic decisions, model coverage provides decision coverage. For Stateflow transitions, model coverage provides decision, condition, and MCDC coverage. Model coverage provides condition and MCDC coverage for logical expressions in assignment statements in states and transitions. For more information, see Model Coverage for Stateflow Charts.
Model Object | Decision | Condition | MCDC | Lookup Table | Simulink Design Verifier™ | Saturate on Integer Overflow | Relational Boundary |
---|---|---|---|---|---|---|---|
Delay and Resettable Delay | |||||||
Discrete-Time Integrator (when saturation limits are enabled or reset) | |||||||
Index Vector | |||||||
Message Send | |||||||
See also Triggered Models. | |||||||
(Relative to slew rates) | |||||||
Simulink Design Verifier Functions in MATLAB Function Blocks | |||||||
Variant Subsystem, Variant Model, Variant Source, Variant Sink | |||||||
Abs
The Abs block receives decision coverage and relational boundary coverage. Decision coverage is based on:
Input to the block being less than zero.
Data type of the input signal.
For input to the block being less than zero, the decision coverage measures:
The number of time steps that the block input is less than zero, indicating a true decision.
The number of time steps the block input is not less than zero, indicating a false decision.
If you select the Saturate on integer overflow coverage metric, the Abs block receives saturate on integer overflow coverage. For more information, see Saturate on Integer Overflow Coverage.
If the input data type to the Abs block is an unsigned integer, Simulink Coverage™ does not report decision coverage for the block. Simulink sets the block output equal to the block input without making a decision.
The Abs block contains an implicit comparison of the input with zero. Therefore, if you select the Relational Boundary coverage metric, the Abs block receives relational boundary coverage. For more information, see Relational Boundary Coverage.
Bias
If you select the Saturate on integer overflow coverage metric, the Bias block receives saturate on integer overflow coverage. For more information, see Saturate on Integer Overflow Coverage.
Combinatorial Logic
The Combinatorial Logic block receives decision and condition coverage. Decision coverage is based on achieving each output row of the truth table. The decision coverage measures the number of time steps that each output row of the truth table is set to the block output.
The condition coverage measures the number of time steps that each input is false (equal to zero) and the number of times each input is true (not equal to zero). If the Combinatorial Logic block has a single input element, the Simulink Coverage software reports only decision coverage, because decision and condition coverage are equivalent.
If all truth table values are set to the block output for at least one time step, decision coverage is 100%. Otherwise, the software reports the coverage as the number of truth table values output during at least one time step, divided by the total number of truth table values. Because this block always has at least one value in the truth table as output, the minimum coverage reported is one divided by the total number of truth table values.
If all block inputs are false for at least one time step and true for at least one time step, condition coverage is 100%. Otherwise, the software reports the coverage as achieving a false value at each input for at least one time step, plus achieving a true value for at least one time step, divided by two raised to the power of the total number of inputs (i.e., 2^number_of_inputs). The minimum coverage reported is the total number of inputs divided by two raised to the power of the total number of inputs.
Compare to Constant
The Compare to Constant block receives condition coverage.
Condition coverage measures:
the number of times that the comparison between the input and the specified constant was true.
the number of times that the comparison between the input and the specified constant was false.
The Compare to Constant block contains a comparison of the input with a constant. Therefore, if you select the Relational Boundary coverage metric, the Compare to Constant block receives relational boundary coverage. For more information, see Relational Boundary Coverage.
Compare to Zero
The Compare to Zero block receives condition coverage.
Condition coverage measures:
the number of times that the comparison between the input and zero was true.
the number of times that the comparison between the input and zero was false.
The Compare to Zero block contains a comparison of the input with zero. Therefore, if you select the Relational Boundary coverage metric, the Compare to Zero block receives relational boundary coverage. For more information, see Relational Boundary Coverage.
Data Type Conversion
If you select the Saturate on integer overflow coverage metric, the Data Type Conversion block receives saturate on integer overflow coverage. For more information, see Saturate on Integer Overflow Coverage.
Dead Zone
The Dead Zone block receives decision coverage. The Simulink Coverage software reports decision coverage for these parameters:
Start of dead zone
End of dead zone
The Start of dead zone parameter specifies the lower limit of the dead zone. For the Start of dead zone parameter, decision coverage measures:
The number of time steps that the block input is greater than or equal to the lower limit, indicating a true decision.
The number of time steps that the block input is less than the lower limit, indicating a false decision.
The End of dead zone parameter specifies the upper limit of the dead zone. For the End of dead zone, decision coverage measures:
The number of time steps that the block input is greater than the upper limit, indicating a true decision.
The number of time steps that the block input is less than or equal to the upper limit, indicating a false decision.
When the upper limit is true, the software does not measure Start of dead zone coverage for that time step. Therefore, the total number of Start of dead zone decisions equals the number of time steps that the End of dead zone is false.
If you select the Saturate on integer overflow coverage metric, the Dead Zone block receives saturate on integer overflow coverage. For more information, see Saturate on Integer Overflow Coverage.
The Dead Zone block contains an implicit comparison of the input with an upper and lower limit value. Therefore, if you select the Relational Boundary coverage metric, the Dead Zone block receives relational boundary coverage. For more information, see Relational Boundary Coverage.
Delay and Resettable Delay
The Delay and Resettable Delay blocks receive
decision coverage if you set the External reset block parameter
to any option except for None
, or if you select the
Show enable port block parameter. If your model uses a
State Control (HDL Coder) block, you cannot
collect coverage for external reset and enable ports when the State
control parameter is Synchronous
.
For the External reset block parameter, decision coverage measures a true outcome for time steps where the block resets and a false outcome for time steps where the block does not reset. To receive 100% decision coverage, the block must reset for at least one time step and not reset for at least one time step.
For the Show enable port block parameter, decision coverage measures a true outcome for time steps where the block is enabled and a false outcome for time steps where the block is not enabled. To receive 100% decision coverage, the block must be enabled for at least one time step and not enabled for at least one time step.
Direct Lookup Table (n-D)
The Direct Lookup Table (n-D) block receives lookup table coverage. For an n-dimensional lookup table, the number of output break points is the product of all the number of break points for each table dimension.
Lookup table coverage measures:
The number of times during simulation that each combination of dimension input values is between each of the break points.
The number of times during simulation that each combination of dimension input values is below the lowest break point and above the highest break point for each table dimension.
The total number of coverage points for an n-dimensional lookup table is the product of the number of break points in each table dimension plus one. In the coverage report, an increasing white-to-green color scale, with six evenly spaced data ranges starting with zero, indicates the number of time steps that the software measures each interpolation or extrapolation point.
The software determines a percentage of total coverage by measuring the total interpolation and extrapolation points that achieve a measurement of at least one time step during simulation between a break point or beyond the end points.
Discrete Filter
The Discrete Filter block receives decision coverage if you set the
External reset block parameter to any option except for
None
. If your model uses a State Control (HDL Coder) block, you cannot
collect coverage for the external reset when the State control
parameter is Synchronous
.
Decision coverage measures a true outcome for time steps where the block resets and a false outcome for time steps where the block does not reset. To receive 100% decision coverage, the block must reset for at least one time step and not reset for at least one time step.
If you select the Saturate on integer overflow coverage parameter, the Discrete Filter block receives saturate on integer overflow coverage. For more information, see Saturate on Integer Overflow Coverage.
Discrete FIR Filter
The Discrete FIR Filter block receives decision coverage if you set
the External reset block parameter to any option except for
None
, or if you select the Show enable
port block parameter. If your model uses a State Control (HDL Coder) block, you cannot
collect coverage for external reset and enable ports when the State
control parameter is Synchronous
.
For the External reset block parameter, decision coverage measures a true outcome for time steps where the block resets and a false outcome for time steps where the block does not reset. To receive 100% decision coverage, the block must reset for at least one time step and not reset for at least one time step.
For the Show enable port block parameter, decision coverage measures a true outcome for time steps where the block is enabled and a false outcome for time steps where the block is not enabled. To receive 100% decision coverage, the block must be enabled for at least one time step and not enabled for at least one time step.
If you select the Saturate on integer overflow coverage metric, the Discrete FIR Filter block receives saturate on integer overflow coverage. For more information, see Saturate on Integer Overflow Coverage.
Discrete-Time Integrator
The Discrete-Time Integrator block receives decision coverage. Simulink Coverage reports decision coverage for these parameters:
External reset
Limit output
If you set External reset to
none
,
Simulink
Coverage does not report decision coverage for the reset decision. If your
model uses a State Control (HDL Coder) block, you cannot
collect coverage for external resets when the State control
parameter is Synchronous
. Otherwise, the decision
coverage measures:
The number of time steps that the block output is reset, indicating a true decision.
The number of time steps that the block output is not reset, indicating a false decision.
If you do not select Limit output, Simulink Coverage does not report decision coverage for that decision. Otherwise, Simulink Coverage records decision coverage for the Lower saturation limit and the Upper saturation limit.
For the Upper saturation limit, decision coverage measures:
The number of time steps that the integration result is greater than the upper limit, indicating a true decision.
The number of time steps that the integration result is less than or equal to the upper limit, indicating a false decision.
For the Lower saturation limit, decision coverage measures
The number of time steps that the integration result is less than the lower limit, indicating a true decision.
The number of time steps that the integration result is greater than or equal to the lower limit, indicating a false decision.
For a time step when the upper limit decision is true, Simulink Coverage does not analyze the Lower saturation limit. Therefore, the total number of lower limit decisions is equal to the number of time steps that the upper limit is false.
The total number of decision outcomes depends on the integration method that you set in the block. Each addition operation includes a possible saturation event, and as a result, the trapezoidal method has twice as many decision outcomes compared to the other integration methods. For more information, see Integration and Accumulation Methods.
If you select the Saturate on integer overflow coverage metric, the Discrete-Time Integrator block receives saturate on integer overflow coverage. For more information, see Saturate on Integer Overflow Coverage.
Discrete Transfer Fcn
The Discrete Transfer Fcn block receives decision coverage if you
set the External reset block parameter to any option except for
None
. If your model uses a State Control (HDL Coder) block, you cannot
collect coverage for external resets when the State control
parameter is Synchronous
. Decision coverage measures a
true outcome for time steps where the block resets and a false outcome for time
steps where the block does not reset. To receive 100% decision coverage, the block
must reset for at least one time step and not reset for at least one time
step.
If you select the Saturate on integer overflow coverage parameter, the Discrete Transfer Fcn block receives saturate on integer overflow coverage. For more information, see Saturate on Integer Overflow Coverage.
Dot Product
If you select the Saturate on integer overflow coverage metric, the Dot Product block receives saturate on integer overflow coverage. For more information, see Saturate on Integer Overflow Coverage.
Enabled Subsystem
The Enabled Subsystem block receives decision, condition, and MCDC coverage.
Decision coverage measures:
The number of time steps that the block is enabled, indicating a true decision.
The number of time steps that the block is disabled, indicating a false decision.
If at least one time step is true and at least one time step is false, decision coverage is 100%. If no time steps are true, or if no time steps are false, decision coverage is 50%.
Simulink Coverage measures condition coverage for the enable input only if the enable input is a vector. For the enable input, condition coverage measures the number of time steps each element of the enable input is true and the number of time steps each element of the enable input is false. The software reports condition coverage based on the total number of possible conditions and how many are true for at least one time step and how many are false for at least one time step.
Simulink
Coverage measures MCDC coverage for the enable input only if the enable input
is a vector. Because the enable of the subsystem is an OR
of the
vector inputs, MCDC coverage is 100% if, during at least one time step, each vector
enable input is exclusively true and if, during at least one time step,
all vector enable inputs are false. For MCDC
coverage measurement, the software treats each element of the vector as a separate
condition.
Enabled and Triggered Subsystem
The Enabled and Triggered Subsystem block receives decision, condition, and MCDC coverage. Decision coverage measures:
The number of time steps that a trigger edge occurs while the block is enabled, indicating a true decision.
The number of time steps that a trigger edge does not occur while the block is enabled, or the block is disabled, indicating a false decision.
If at least one time step is true and at least one time step is false, decision coverage is 100%. If no time steps are true, or if no time steps are false, decision coverage is 50%.
The software measures condition coverage for the enable input and for the trigger input separately:
For the enable input, condition coverage measures the number of time steps the enable input is true and the number of time steps the enable input is false.
For the trigger input, condition coverage measures the number of time steps the trigger edge occurs, indicating true, and the number of time steps the trigger edge does not occur, indicating false.
The software reports condition coverage based on the total number of possible conditions and how many conditions are true for at least one time step and how many are false for at least one time step. The software treats each element of a vector as a separate condition coverage measurement.
The software measures MCDC coverage for the enable input and
for the trigger input in combination. Because the enable input of
the subsystem is an AND
of these two inputs, MCDC
coverage is 100% if all of the
following occur:
During at least one time step, both inputs are true.
During at least one time step, the enable input is true and the trigger edge is false.
During one time step, the enable input is false and the trigger edge is true.
The software treats each vector element as a separate MCDC coverage measurement. It measures each trigger edge element against each enable input element. However, if the number of elements in both the trigger and enable inputs exceeds 12, the software does not report MCDC coverage.
Fcn
The Fcn block receives condition and MCDC coverage. The
Simulink
Coverage software reports condition or MCDC coverage for Fcn
blocks only if the top-level operator is Boolean (&&
,
||
, or !
).
Condition coverage is based on input values or arithmetic expressions that are inputs to Boolean operators in the block. The condition coverage measures:
The number of time steps that each input to a Boolean operator is true (not equal to zero).
The number of time steps that each input to a Boolean operator is false (equal to zero).
If all Boolean operator inputs are false for at least one time step and true for at least one time step, condition coverage is 100%. Otherwise, the software reports condition coverage based on the total number of possible conditions and how many are true for at least one time step and how many are false for at least one time step.
The software measures MCDC coverage for Boolean expressions within the Fcn block. If, during at least one time step, each condition independently sets the output of the expression to true and if, during at least one time step, each condition independently sets the output of the expression to false, MCDC coverage is 100%. Otherwise, the software reports MCDC coverage based on the total number of possible conditions and how many times each condition independently sets the output to true during at least one time step and how many conditions independently set the output to false during at least one time step.
If the Fcn block contains a relational operation and you select the Relational Boundary coverage metric, the Fcn block receives relational boundary coverage. For more information, see Relational Boundary Coverage.
For Iterator, For Iterator Subsystem
The For Iterator block and For Iterator Subsystem receive decision coverage. The Simulink Coverage software measures decision coverage for the loop condition value, which is determined by one of the following:
The iteration value being at or below the iteration limit, indicated as true.
The iteration value being above the iteration limit, indicated as false.
The software reports the total number of times that each loop condition evaluates to true and to false. If the loop condition evaluates to true at least once and false at least once, decision coverage is 100%. If no loop conditions are true, or if no loop conditions are false, decision coverage is 50%.
Gain
If you select the Saturate on integer overflow coverage metric, the Gain block receives saturate on integer overflow coverage. For more information, see Saturate on Integer Overflow Coverage.
If, If Action Subsystem
The If block that causes an If Action Subsystem to execute receives condition, decision, and MCDC coverage:
The software measures decision coverage for the
if
condition and allelseif
conditions defined in the If block.If the
if
condition or any of theelseif
conditions contains a logical expression with multiple conditions, such asu1 & u2 & u3
, the software also measures condition and MCDC coverage for each condition in the expression,u1
,u2
, andu3
in the preceding example.
The software does not directly measure the else
condition.
When there are no elseif
conditions,
the else
condition is the direct complement of
the if
condition, or the else
condition
is the direct complement of the last elseif
condition.
The software reports the total number of time steps that each if
and elseif
condition
evaluates to true and to false. If the if
or elseif
condition
evaluates to true at least once, and evaluates to false at least once,
decision coverage is 100%. If no if
or elseif
conditions
are true, or if no if
or elseif
conditions
are false, decision coverage is 50%. If the previous if
or elseif
condition
never evaluates as false, an elseif
condition
can have 0% decision coverage.
The If block contains a comparison between its inputs. Therefore, if you select the Relational Boundary coverage metric, the If block receives relational boundary coverage. For more information, see Relational Boundary Coverage.
Index Vector
The Index Vector block receives decision coverage based on passing each element of the vector signal input to the output of the block.
If each vector index is passed to the block output for at least one time step, decision coverage is 100%. Otherwise, Simulink Coverage reports coverage as the percentage of the total number of vector indices in the input signal that passed through to the output.
If you select the Saturate on integer overflow coverage metric, the Index Vector block receives saturate on integer overflow coverage. For more information, see Saturate on Integer Overflow Coverage.
Interpolation Using Prelookup
The Interpolation Using Prelookup block receives lookup table coverage. For an n-D lookup table, the number of output break points equals the product of all the number of break points for each table dimension. The lookup table coverage measures:
The number of times during simulation that each combination of dimension input values is between each of the break points.
The number of times during simulation that each combination of dimension input values is below the lowest break point and above the highest break point for each table dimension.
The total number of coverage points for an n-dimensional lookup table is the product of the number of break points in each table dimension plus one. In the coverage report, an increasing white-to-green color scale, with six evenly spaced data ranges starting with zero, indicates the number of time steps that the software measures each interpolation or extrapolation point.
The software determines a percentage of total coverage by measuring the total interpolation and extrapolation points that achieve a measurement of at least one time step during simulation between a break point or beyond the end points.
If you select the Saturate on integer overflow, the Interpolation Using Prelookup block receives saturate on integer overflow coverage. For more information, see Saturate on Integer Overflow Coverage. The software treats each element of a vector or matrix as a separate coverage measurement.
Library-Linked Objects
Simulink blocks and Stateflow charts that are linked to library objects receive the same coverage that they would receive if they were not linked to library objects. The Simulink Coverage software records coverage individually for each library object in the model. If your model contains multiple instances of the same library object, each instance receives its own coverage data.
Logical Operator
The Logical Operator block receives condition and MCDC coverage. The Simulink Coverage measures condition coverage for each input to the block. The condition coverage measures:
The number of time steps that each input is true (not equal to zero).
The number of time steps that each input is false (equal to zero).
If all block inputs are false for at least one time step and true for at least one time step, the condition coverage is 100%. Otherwise, the condition coverage is based on the total number of possible conditions and how many are true at least one time step and how many are false at least one time step.
Simulink Coverage measures MCDC coverage for all inputs to the block. If, during at least one time step, each condition independently sets the output of the block to true and if, during at least one time step, each condition independently sets the output of the block to false, MCDC coverage is 100%. Otherwise, Simulink Coverage reports the MCDC coverage based on the total number of possible conditions and how many times each one of them independently set the output to true for at least one time step and how many independently set the output to false for at least one time step.
For a Logical Operator block to receive MCDC as part of a logic cascade, all of the following conditions must be met:
Block input and output signals are all scalar
Logic block operation is not XOR/NXOR
Logic block has more than one input signal (unless its operation is NOT)
For more information about logical cascades, see Logical Operator Cascade Patterns.
1-D Lookup Table
The 1-D Lookup Table block receives lookup table coverage; for a one-dimensional lookup table, the number of input and output break points is equal. Lookup table coverage measures:
The number of times during simulation that the input and output values are between each of the break points.
The number of times during simulation that the input and output values are below the lowest break point and above the highest break point.
The total number of coverage points for a one-dimensional lookup table is the number of break points in the table plus one. In the coverage report, an increasing white-to-green color scale, with six evenly spaced data ranges starting with zero, indicates the number of time steps that the software measures each interpolation or extrapolation point.
The software determines a percentage of total coverage by measuring the total interpolation and extrapolation points that achieve a measurement of at least one time step during simulation between a break point or beyond the end points.
If you select the Saturate on integer overflow coverage metric, the 1-D Lookup Table block receives saturate on integer overflow coverage. For more information, see Saturate on Integer Overflow Coverage. The software treats each element of a vector or matrix as a separate coverage measurement.
2-D Lookup Table
The 2-D Lookup Table block receives lookup table coverage. For a two-dimensional lookup table, the number of output break points equals the number of row break points multiplied by the number of column inputs. Lookup table coverage measures:
The number of times during simulation that each combination of row input and column input values is between each of the break points.
The number of times during simulation that each combination of row input and column input values is below the lowest break point and above the highest break point for each row and column.
The total number of coverage points for a two-dimensional lookup table is the number of row break points in the table plus one, multiplied by the number of column break points in the table plus one. In the coverage report, an increasing white-to-green color scale, with six evenly spaced data ranges starting with zero, indicates the number of time steps that the software measures each interpolation or extrapolation point.
If you select the Saturate on integer overflow coverage metric, the 2-D Lookup Table block receives saturate on integer overflow coverage. For more information, see Saturate on Integer Overflow Coverage. The software treats each element of a vector or matrix as a separate coverage measurement.
n-D Lookup Table
The n-D Lookup Table block receives lookup table coverage. For an n-dimensional lookup table, the number of output break points equals the product of all the number of break points for each table dimension. Lookup table coverage measures:
The number of times during simulation that each combination of dimension input values is between each of the break points.
The number of times during simulation that each combination of dimension output values is below the lowest break point and above the highest break point for each table dimension.
The total number of coverage points for an n-dimensional lookup table is the product of the number of break points in each table dimension plus one. In the coverage report, an increasing white-to-green color scale, with six evenly spaced data ranges starting with zero, indicates the number of time steps that the software measures each interpolation or extrapolation point.
The software determines a percentage of total coverage by measuring the total interpolation and extrapolation points that achieve a measurement of at least one time step during simulation between a break point or beyond the end points.
If you select the Saturate on integer overflow coverage metric, the n-D Lookup Table block receives saturate on integer overflow coverage. For more information, see Saturate on Integer Overflow Coverage. The software treats each element of a vector or matrix as a separate coverage measurement.
Math Function
If you select the Saturate on integer overflow coverage metric, the Math Function block receives saturate on integer overflow coverage. For more information, see Saturate on Integer Overflow Coverage. The software treats each element of a vector or matrix as a separate coverage measurement.
MATLAB Function
For information about the type of coverage that Simulink Coverage reports for the MATLAB^{®} Function block, see Model Coverage for MATLAB Functions.
MATLAB System
If you set the MATLAB System block parameter Simulate
using to Code generation
, then Simulink
Coverage records Decision, Condition, and MCDC coverage for MATLAB
System blocks.
Logical expressions in assignment statements in the MATLAB System block are not analyzed.
Message Send
The Message Send block receives decision coverage if you select the
Show enable port block parameter. If your model uses a
State Control (HDL Coder) block, you cannot
collect coverage for the enable port when the State control
parameter is Synchronous
. Decision coverage measures a
true outcome for time steps where the block is enabled and a false outcome for time
steps where the block is not enabled. To receive 100% decision coverage, the block
must be enabled for at least one time step and not enabled for at least one time
step.
MinMax
The MinMax block receives decision coverage based on passing each input to the output of the block.
For decision coverage based on passing each input to the output of the block, the coverage measures the number of time steps that the simulation passes each input to the block output. The number of decision points is based on the number of inputs to the block and whether they are scalar, vector, or matrix.
If all inputs are passed to the block output for at least one time step, Simulink Coverage reports the decision coverage as 100%. Otherwise, the software reports the coverage as the number of inputs passed to the output during at least one time step, divided by the total number of inputs.
If you select the Saturate on integer overflow coverage metric, the MinMax block receives saturate on integer overflow coverage. For more information, see Saturate on Integer Overflow Coverage. The software treats each element of a vector or matrix as a separate coverage measurement.
If you select the Relational boundary coverage metric, the
MinMax block receives relational boundary coverage. The total
number of rows in the Relational boundary analyzed table that
appears in the coverage report depends on the input data type. For example, if the
input to the MinMax is a floating-point value, and the block that has
the Function parameter set to min
,
the report includes two rows in the Relational boundary
analyzed table. For each input i, there is a row
in the table for input i - min(inputs before input i)
and a row
in the table for input i - min(inputs after input i)
. For the
first and last input to the block, there is only one row. If the inputs are vectors,
there is an additional set of rows for each element of the vector inputs. For more
information about relational boundary coverage, see Relational Boundary Coverage. For an example that demonstrates
relational boundary coverage for the MinMax block, see Collect Relational Boundary Coverage for MinMax Block.
Model
The Model block does not receive coverage directly;
the model that the block references receives coverage. If the simulation
mode for the referenced model is set to Normal
,
the Simulink
Coverage software reports coverage
for all objects within the referenced
model that receive coverage. . If the simulation mode for the referenced
model is set to SIL
or PIL
and
you have Embedded Coder^{®} installed, the Simulink
Coverage software
reports coverage for the code generated from your model .If the simulation
mode is set to a value other than Normal
, SIL
,
or PIL
, the software cannot measure coverage
for the referenced model.
In the Coverage pane of the Configuration Parameters dialog box, select the referenced models for which you want to report coverage. The software generates a coverage report for each referenced model you select.
If your model contains multiple instances of the same referenced
model, the software records coverage for all
instances of that model where the simulation mode of the Model block
is set to Normal
. The coverage report for
that referenced model combines the coverage data for all
Normal mode instances of that model.
The coverage reports for all analyzed models in a model reference hierarchy are linked from a summary report.
Note
For details on how to select referenced models to report coverage, see Referenced Models.
Multiport Switch
The Multiport Switch block receives decision coverage based on passing each input, excluding the first control input, to the output of the block.
For decision coverage based on passing each input, excluding the first control input, to the output of the block, the coverage measures the number of time steps that each input is passed to the block output. The number of decision points is based on the number of inputs to the block and whether the control input is scalar or vector.
If all inputs, excluding the first control input, are passed to the block output for at least one time step, decision coverage is 100%. Otherwise, the Simulink Coverage software reports coverage as the number of inputs passed to the output during at least one time step, divided by the total number of inputs minus one.
If you select the Saturate on integer overflow coverage metric, the Multiport Switch block receives saturate on integer overflow coverage. For more information, see Saturate on Integer Overflow Coverage. The software treats each element of a vector or matrix as a separate coverage measurement.
Observer Model
The Observer Reference block does not receive coverage directly;
the Observer model that the block references receives coverage metrics for the
blocks inside that model. Only Observers models in Normal
mode are analyzed for coverage.
You can select Observer models for coverage the same way you select referenced models. For more information about selecting models for analysis, see Referenced Models.
Only Observer models that you reference from the top model are active during a simulation and can receive coverage. Terminate Function blocks located inside Observer models do not receive coverage.
The coverage results for each Observer model are captured in separate
cvdata
objects. Each model referenced from an Observer model is
considered an Observer model and has its own cvdata
object. If you
record coverage for multiple models in a model reference hierarchy, the results are
collected in a cv.cvdatagroup
object. The summary report links to
the coverage reports for all analyzed models in the hierarchy.
PID Controller, PID Controller (2 DOF)
If you select the Saturate on integer overflow coverage metric, the PID Controller and PID Controller (2 DOF) blocks receive saturate on integer overflow coverage. For more information, see Saturate on Integer Overflow Coverage. The software treats each element of a vector or matrix as a separate coverage measurement.
Product
If you select the Saturate on integer overflow coverage metric, the Product block receives saturate on integer overflow coverage. For more information, see Saturate on Integer Overflow Coverage. The software treats each element of a vector or matrix as a separate coverage measurement.
Proof Assumption
The Proof Assumption block receives Simulink Design Verifier coverage. Simulink Design Verifier coverage is based on the points and intervals defined in the block dialog box. Simulink Design Verifier coverage measures the number of time steps that each point or interval defined in the block is satisfied. The total number of objective outcomes is based on the number of points or intervals defined in the Proof Assumption block.
If all points and intervals defined in the block are satisfied for at least one time step, Simulink Design Verifier coverage is 100%. Otherwise, the Simulink Coverage software reports coverage as the number of points and intervals satisfied during at least one time step, divided by the total number of points and intervals defined for the block.
Proof Objective
The Proof Objective block receives Simulink Design Verifier coverage. Simulink Design Verifier coverage is based on the points and intervals defined in the block dialog box. Simulink Design Verifier coverage measures the number of time steps that each point or interval defined in the block is satisfied. The total number of objective outcomes is based on the number of points or intervals defined in the Proof Objective block.
If all points and intervals defined in the block are satisfied for at least one time step, Simulink Design Verifier coverage is 100%. Otherwise, the Simulink Coverage software reports coverage as the number of points and intervals satisfied during at least one time step, divided by the total number of points and intervals defined for the block.
Rate Limiter
The Rate Limiter block receives decision coverage. The Simulink Coverage software reports decision coverage for the Rising slew rate and Falling slew rate parameters.
For the Rising slew rate, decision coverage measures:
The number of time steps that the block input changes more than or equal to the rising rate, indicating a true decision.
The number of time steps that the block input changes less than the rising rate, indicating a false decision.
For the Falling slew rate, decision coverage measures:
The number of time steps that the block input changes less than or equal to the falling rate, indicating a true decision.
The number of time steps that the block input changes more than the falling rate, indicating a false decision.
The software does not measure Falling slew rate coverage for a time step when the Rising slew rate is true. Therefore, the total number of Falling slew rate decisions equals the number of time steps that the Rising slew rate is false.
If at least one time step is true and at least one time step is false, decision coverage for each of the two individual decisions for the block is 100%. If no time steps are true, or if no time steps are false, decision coverage is 50%. The software treats each element of a vector or matrix as a separate coverage measurement.
The Rate Limiter block implicitly compares the derivative of the input signal with an upper and lower limit value. Therefore, if you select the Relational Boundary coverage metric, the Rate Limiter block receives relational boundary coverage. For more information, see Relational Boundary Coverage.
Relational Operator
The Relational Operator block receives condition coverage.
Condition coverage measures:
the number of times that the specified relational operation was true.
the number of times that the specified relational operation was false.
The Relational Operator block contains a comparison between its inputs. Therefore, if you select the Relational Boundary coverage metric, the Relational Operator block receives relational boundary coverage. For more information, see Relational Boundary Coverage.
Relay
The Relay block receives decision coverage. Simulink Coverage reports decision coverage for the Switch on point and the Switch off point parameters.
For the Switch on point, decision coverage measures:
The number of consecutive time steps that the block input is greater than or equal to the Switch on point, indicating a true decision.
The number of consecutive time steps that the block input is less than the Switch on point, indicating a false decision.
For the Switch off point, decision coverage measures:
The number of consecutive time steps that the block input is less than or equal to the Switch off point, indicating a true decision.
The number of consecutive time steps that the block input is greater than the Switch off point, indicating a false decision.
The software does not measure Switch off point coverage for a time step when the switch on threshold is true. Therefore, the total number of Switch off point decisions equals the number of time steps that the Switch on point is false.
If at least one time step is true and at least one time step is false, decision coverage for each of the two individual decisions for the block is 100%. If no time steps are true, or if no time steps are false, decision coverage is 50%. The software treats each element of a vector or matrix as a separate coverage measurement.
The Relay block contains an implicit comparison of its second input with a threshold value. Therefore, if you select the Relational Boundary coverage metric, the Relay block receives relational boundary coverage. For more information, see Relational Boundary Coverage.
Requirements Table
The Requirements Table block receives decision, condition, MCDC, relational boundary, and saturation on integer overflow coverage for the logic contained in the Precondition column for each requirement in the Requirements Table tab. The Postcondition column and Assumptions Table tab do not receive coverage.
Simulink
Coverage reports coverage for the Precondition column
similarly to that of a Stateflow chart or a MATLAB Function block. For example, if a precondition specifies that the
postcondition must be met when A < C1 && B ~= C2
,
Simulink
Coverage can analyze and report coverage results for this statement.
C/C++ S-Function
Model coverage is supported for C/C++ S-Functions. The coverage report for the model contains results for each instance of an S-Function block in the model. The results for an S-Function block link to a separate coverage report for the C/C++ code in the block.
To generate coverage report for S-Functions:
When creating the S-Functions, enable support for coverage. For more information, see Make S-Function Compatible with Model Coverage.
When generating the coverage report, enable support for S-Functions. For more information, see Generate Coverage Report for S-Function.
The following coverage types are reported for S-Functions:
Percentage of statements covered
The coverage data for S-Function blocks is obtained in the following way:
The coverage result for a block is a weighted average of the result over all files in the block.
For instance, an S-Function block has two files,
file1.c
andfile2.c
. The decision coverage forfile1.c
is 75% (3/4 outcomes covered) and that forfile2.c
is 50% (10/20 outcomes covered). The decision coverage for the block is 13/24 ≈ 54 %.For each file, the coverage result is a weighted average of the result over all functions in the file.
For each function, the coverage result is a weighted average of the result over all statements in the function that receive that coverage.
Note
Model coverage for S-Functions have the following restrictions:
Only Level-2 C/C++ S-Functions are supported for coverage. For an example of a level-2 C S-Function, see Create a Basic C MEX S-Function.
C++ class templates are not instrumented for coverage.
Saturation
Simulink Coverage reports decision coverage for the Upper limit and Lower limit parameters of the Saturation block and relational boundary coverage for the Saturation block.
For the Upper limit, decision coverage measures:
The number of time steps that the block input is greater than the upper limit, which indicates a true decision outcome and that the block output saturates at the upper limit.
The number of time steps that the block input is less than or equal to the upper limit, which indicates a false decision outcome.
For the Lower limit, decision coverage measures:
The number of time steps that the block input is greater than or equal to the lower limit, which indicates a true decision outcome.
The number of time steps that the block input is less than the lower limit, which indicates a false decision outcome and that the block output saturates at the lower limit.
Simulink Coverage does not measure coverage for the Lower limit decision at a time step when the upper limit is true. Therefore, the total number of Lower limit decision evaluations is equal to the number of time steps that the Upper limit is false. Simulink Coverage reports 0% coverage for the Lower limit decision if the Upper limit decision is true at every time step.
For each decision, Simulink Coverage reports 100% coverage if the decision returns a true outcome for at least one time step and a false outcome for at least one time step. If a decision has no true outcomes or no false outcomes, Simulink Coverage reports 50% coverage for that decision. The decision coverage for the Saturation block is the sum of the coverage for the Upper limit and Lower limit decisions. For example, if a Saturation block receives 100% coverage for the Upper limit decision, and 50% coverage for the Lower limit decision, then the Saturation block receives a total of 75% decision coverage, with 3 out of 4 decision outcomes satisfied.
If the input signal to the Saturation block is a vector or matrix, each element is a separate coverage measurement. For example, an input signal that is a two element vector results in a total of eight decision outcomes within the Saturation block instead of four.
The Saturation block contains an implicit comparison of the input with an upper and lower limit value. Therefore, if you select the Relational boundary coverage metric in the Coverage pane of the Configuration Parameters window, the Saturation block receives relational boundary coverage. For more information, see Relational Boundary Coverage.
Saturation Dynamic
If you select the Saturate on integer overflow coverage metric, the Saturation Dynamic block receives saturate on integer overflow coverage. For more information, see Saturate on Integer Overflow Coverage. The software treats each element of a vector or matrix as a separate coverage measurement.
Sign
The Sign block receives decision coverage and relational boundary coverage.
Sign blocks have three decision outcomes, one for the negative outcome, one for the positive outcome, and one for the zero outcome.
The Sign block implicitly compares the input with zero. Therefore, if you select the Relational Boundary coverage metric, the Sign block receives relational boundary coverage. For more information, see Relational Boundary Coverage.
Simulink Design Verifier Functions in MATLAB Function Blocks
The following functions in MATLAB Function blocks receive Simulink Design Verifier coverage:
sldv.condition
(Simulink Design Verifier)sldv.test
(Simulink Design Verifier)sldv.assume
(Simulink Design Verifier)sldv.prove
(Simulink Design Verifier)
Each of these functions evaluates an expression expr
,
for example, sldv.test(
,
where expr
)expr
is any
valid Boolean MATLAB expression. Simulink
Design Verifier coverage
measures the number of time steps that the expression expr
evaluates
to true.
If expr
is true for at least one
time step, Simulink
Design Verifier coverage for that function
is 100%. Otherwise, the Simulink
Coverage software
reports coverage for that function as 0%.
Sqrt, Signed Sqrt, Reciprocal Sqrt
If you select the Saturate on integer overflow coverage metric, the Sqrt, Signed Sqrt, and Reciprocal Sqrt blocks receive saturate on integer overflow coverage. For more information, see Saturate on Integer Overflow Coverage. The software treats each element of a vector or matrix as a separate coverage measurement.
Sum, Add, Subtract, Sum of Elements
If you select the Saturate on integer overflow coverage metric, the Sum, Add, Subtract, and Sum of Elements blocks receive saturate on integer overflow coverage. For more information, see Saturate on Integer Overflow Coverage. The software treats each element of a vector or matrix as a separate coverage measurement.
Switch
The Switch block receives decision coverage based on the control input to the block. Decision coverage measures:
The number of time steps that the control input evaluates to true.
The number of time steps the control input evaluates to false.
The number of decision points is based on whether the control input is scalar or vector.
If you select the Saturate on integer overflow coverage metric, the Switch block receives saturate on integer overflow coverage. For more information, see Saturate on Integer Overflow Coverage. The software treats each element of a vector or matrix as a separate coverage measurement.
The Switch block contains an implicit comparison of its second input with a threshold value. Therefore, if you select the Relational Boundary coverage metric, the Switch block receives relational boundary coverage. For more information, see Relational Boundary Coverage.
SwitchCase, SwitchCase Action Subsystem
The SwitchCase block and SwitchCase Action Subsystem
receive decision coverage. The Simulink
Coverage software measures decision coverage individually for each switch case
defined in the block and also for the default case. The number of decision outcomes
is equal to the number of case conditions plus one for the
default
case, if one is defined.
The software reports the total number of time steps that each case evaluates to true. If each case, including the default case, evaluates to true at least once, decision coverage is 100%. The software determines the decision coverage by the number of cases that evaluate true for at least one time step divided by the total number of cases.
If the SwitchCase block does not contain a
default
case, the software measures decision coverage for the
number of time steps in which none of the cases
evaluated to true. In the coverage report, this coverage is reported as
implicit-default.
Test Condition
The Test Condition block receives Simulink Design Verifier coverage. Simulink Design Verifier coverage is based on the points and intervals defined in the block dialog box. Simulink Design Verifier coverage measures the number of time steps that each point or interval defined in the block is satisfied. The total number of objective outcomes is based on the number of points or intervals defined in the Test Condition block.
If all points and intervals defined in the block are satisfied for at least one time step, Simulink Design Verifier coverage is 100%. Otherwise, the Simulink Coverage software reports coverage as the number of points and intervals satisfied during at least one time step, divided by the total number of points and intervals defined for the block.
Test Objective
The Test Objective block receives Simulink Design Verifier coverage. Simulink Design Verifier coverage is based on the points and intervals defined in the block dialog box. Simulink Design Verifier coverage measures the number of time steps that each point or interval defined in the block is satisfied. The total number of objective outcomes is based on the number of points or intervals defined in the Test Objective block.
If all points and intervals defined in the block are satisfied for at least one time step, Simulink Design Verifier coverage is 100%. Otherwise, the Simulink Coverage software reports coverage as the number of points and intervals satisfied during at least one time step, divided by the total number of points and intervals defined for the block.
Triggered Models
A Model block can reference a model that contains edge-based trigger ports at the root level of the model. Triggered models receive decision, condition, and MCDC coverage.
Decision coverage measures:
The number of time steps that the referenced model is triggered, indicating a true decision.
The number of time steps that the referenced model is not triggered, indicating a false decision.
If at least one time step is true and at least one time step is false, decision coverage for the Model block that references the triggered model is 100%. If no time steps are true, or if no time steps are false, decision coverage is 50%.
Only if the trigger input is a vector, the Simulink Coverage software measures condition coverage for the trigger port in the referenced model. For the trigger port, condition coverage measures:
The number of time steps that each element of the trigger port is true.
The number of time steps that each element of the trigger port is false.
The software reports condition coverage based on the total number of possible conditions and how many are true for at least one time step and how many are false for at least one time step.
If the trigger port is a vector, the software measures MCDC
coverage for the trigger port only. Because the trigger port of the
referenced model is an OR
of the vector inputs,
if, during at least one time step, each vector trigger port is exclusively
true and if, during at least one time step, all
vector trigger port inputs are false, MCDC coverage is 100%. The software
treats each element of the vector as a separate condition for MCDC
coverage measurement.
Triggered Subsystem
The Triggered Subsystem block receives decision, condition, and MCDC coverage.
Decision coverage measures:
The number of time steps that the block is triggered, indicating a true decision.
The number of time steps that the block is not triggered, indicating a false decision.
If at least one time step is true and at least one time step is false, decision coverage is 100%. If no time steps are true, or if no time steps are false, decision coverage is 50%.
The Simulink Coverage software measures condition coverage for the trigger input only if the trigger input is a vector. For the trigger input, condition coverage measures:
The number of time steps that each element of the trigger edge is true.
The number of time steps that each element of the trigger edge is false.
The software reports condition coverage based on the total number of possible conditions and how many are true for at least one time step and how many are false for at least one time step.
If the trigger input is a vector, the software measures MCDC
coverage for the trigger input only. Because the trigger edge of the
subsystem is an OR
of the vector inputs, if, during
at least one time step, each vector trigger edge input is exclusively
true and if, during at least one time step, all
vector trigger edge inputs are false, MCDC coverage is 100%. The software
treats each element of the vector as a separate condition for MCDC
coverage measurement.
Trigonometric Function
The Trigonometric Function block receives decision and relational
boundary coverage if you set the Function parameter to
asin
or acos
and you clear
the Remove protection against out-of-range input parameter.
When you use these settings, the Trigonometric Function block uses a
saturation behavior to accept only inputs
between -1
and 1
.
Decision coverage analyzes the saturation decision logic for the Trigonometric Function block. The coverage report displays this logic as one decision with three possible outcomes:
Input is greater than 1
Input is between -1 and 1
Input is less than -1
The saturation behavior contains an implicit comparison of the input with an upper and lower limit value. If you select the Relational boundary coverage metric in the Coverage pane of the Configuration Parameters dialog box, the block receives relational boundary coverage. For more information, see Relational Boundary Coverage.
If you select the Remove protection against out-of-range input parameter, the block receives only execution coverage.
Truth Table
The Truth Table block is a Stateflow block that enables you to use truth table logic directly in a Simulink model. The Truth Table block receives condition, decision, and MCDC coverage. For more information on model coverage with Stateflow truth tables, see Model Coverage for Stateflow Truth Tables.
Unary Minus
If you select the Saturate on integer overflow coverage metric, the Unary Minus block receives saturate on integer overflow coverage. For more information, see Saturate on Integer Overflow Coverage. The software treats each element of a vector or matrix as a separate coverage measurement.
Weighted Sample Time Math
If you select the Saturate on integer overflow coverage metric, the Weighted Sample Time Math block receives saturate on integer overflow coverage. For more information, see Saturate on Integer Overflow Coverage. The software treats each element of a vector or matrix as a separate coverage measurement.
While Iterator, While Iterator Subsystem
The While Iterator block and While Iterator Subsystem receive
decision coverage. Decision coverage is measured for the while
condition
value, which is determined by the while
condition
being satisfied (true), or the while
condition
not being satisfied (false). Simulink
Coverage software
reports the total number of times that each while
condition
evaluates to true and to false. If the while
condition
evaluates to true at least once, and false at least once, decision
coverage for the while
condition is 100%. If no while
conditions
are true, or if no while
conditions
are false, decision coverage is 50%.
If the iteration limit is exceeded (true) or is not exceeded
(false), the software measures decision coverage independently. If
the iteration limit evaluates to true at least once, and false at
least once, decision coverage for the iteration limit is 100%. If
no iteration limits are true, or
if no iteration limits are false,
decision coverage is 50%. If you set Maximum number of iterations to -1
(no
limit), the decision coverage for the iteration limit is true for
all iterations and false for zero
iterations, and decision coverage is 50%.