Main Content

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

Abs

    

Bias

      

C Caller

   

Combinatorial Logic

     

Compare to Constant

     

Compare to Zero

     

Data Type Conversion

      

Dead Zone

    
Delay and Resettable Delay      

Direct Lookup Table (n-D)

      

Discrete Filter

     

Discrete FIR Filter

     

Discrete-Time Integrator (when saturation limits are enabled or reset)

     

Discrete Transfer Fcn

     

Dot Product

      

Enabled Subsystem

    

Enabled and Triggered Subsystem

    

Fcn

    

For Iterator, For Iterator Subsystem

      

Gain

      

If, If Action Subsystem

   
Index Vector     

Interpolation Using Prelookup

     

Library-Linked Objects

  

Logical Operator

     

1-D Lookup Table

     

2-D Lookup Table

     

n-D Lookup Table

     

Math Function

      

MATLAB Function

   

MATLAB System

    
Message Send      

MinMax

     

Model

See also Triggered Models.

Multiport Switch

     

Observer Model

PID Controller, PID Controller (2 DOF)

      

Product

      

Proof Assumption

      

Proof Objective

      

Rate Limiter

(Relative to slew rates)

     

Relational Operator

     

Relay

     

Requirements Table

  

C/C++ S-Function

   

Saturation

     

Saturation Dynamic

      

Sign

     

Simulink Design Verifier Functions in MATLAB Function Blocks

      

Stateflow charts

   

Stateflow state transition tables

   

Sqrt, Signed Sqrt, Reciprocal Sqrt

      

Sum, Add, Subtract, Sum of Elements

      

Switch

    

SwitchCase, SwitchCase Action Subsystem

      

Test Condition

      

Test Objective

      

Triggered Models

    

Triggered Subsystem

    

Trigonometric Function

     

Truth Table

    

Unary Minus

      
Variant Subsystem, Variant Model, Variant Source, Variant Sink       

Weighted Sample Time Math

      

While Iterator, While Iterator Subsystem

      

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.

C Caller

The C Caller block itself receives only block execution coverage. The code that the C Caller block calls receives code coverage. Simulink Coverage creates a separate code coverage report that displays the coverage results for the C code called by the C Caller block. For more information, see Types of Code 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 all elseif conditions defined in the If block.

  • If the if condition or any of the elseif conditions contains a logical expression with multiple conditions, such as u1 & u2 & u3, the software also measures condition and MCDC coverage for each condition in the expression, u1, u2, and u3 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, Simulink 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, Simulink Coverage 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.

You can also collect coverage for a MinMax block that receives only one input signal when you select the Apply over block parameter.

Note

Relational boundary coverage is not supported for a MinMax block if you select the Apply over block parameter when the block input is a variable-size signal.

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, Simulink Coverage 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, Simulink Coverage reports coverage for the code generated from your model. If the simulation mode is set to a value other than Normal, SIL, or PIL, Simulink Coverage does not 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. Simulink Coverage generates a coverage report for each referenced model you select.

If your model contains multiple instances of the same referenced model, Simulink Coverage records coverage for all instances of that model where the simulation mode of the Model block is Normal. The coverage report for that referenced model combines the coverage data for all normal mode instances of the model.

The coverage reports for 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:

  1. When creating the S-Functions, enable support for coverage. For more information, see Make S-Function Compatible with Model Coverage.

  2. 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:

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 and file2.c. The decision coverage for file1.c is 75% (3/4 outcomes covered) and that for file2.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:

Each of these functions evaluates an expression expr, for example, sldv.test(expr), where 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%.