接受覆盖的模型对象
某些 Simulink® 对象可以接收任何类型的模型覆盖率。其他 Simulink 对象只能接收某些类型的覆盖率,如下表所示。点击第一列中的链接可获取有关特定模型对象覆盖率的更多详细信息。
所有 Simulink 对象均可接收执行覆盖率,虚拟模块除外:
Merge 模块
Scope 模块
Width 模块
Display 模块
To Workspace 模块
有关虚拟模块的列表,请参阅非虚拟和虚拟模块。
要查看未受到覆盖率的 Simulink 对象的完整列表,请参阅未获得覆盖的模型对象。
对于 Stateflow® 状态、事件和状态时间逻辑决策,模型覆盖率提供决策覆盖率。对于 Stateflow 转移,模型覆盖率提供决策、条件和 MCDC 覆盖率。模型覆盖率为状态和转移中的赋值语句中的逻辑表达式提供条件和 MCDC 覆盖率。有关更多信息,请参阅Stateflow 图的模型覆盖率。
模型对象 | 决策 | 条件 | MCDC | 查找表 | Simulink Design Verifier™ | 对整数溢出进行饱和处理 | 关系边界 |
---|---|---|---|---|---|---|---|
Delay and Resettable Delay | |||||||
Discrete-Time Integrator(启用或重置饱和界限时) | |||||||
Index Vector | |||||||
Message Send | |||||||
另请参阅触发模型。 | |||||||
(相对于压摆率) | |||||||
变体子系统、变体模型、变体源、变体接收器 | |||||||
Abs
Abs 模块接收决策覆盖率和关系边界覆盖率。决策覆盖率基于:
输入到模块中的值小于零。
输入信号的数据类型。
对于小于零的模块输入,决策覆盖率测量:
模块输入小于零的时间步数,表示正确的决策。
模块输入的时间步数不小于零,表示 false case。
如果选择对整数溢出进行饱和处理覆盖率度量,则 Abs 模块会在整数溢出饱和覆盖率。有关更多信息,请参阅整数溢出覆盖率。
如果 Abs 模块的输入数据类型是无符号整数,则 Simulink Coverage™ 不会报告该模块的决策覆盖率。Simulink 会将模块输出设置为等于模块输入,而不做出决策。
Abs 模块包含输入与零的隐式比较。因此,如果您选择关系边界覆盖率度量,则 Abs 模块将接收关系边界覆盖率。有关更多信息,请参阅关系边界覆盖率。
Bias
如果选择对整数溢出进行饱和处理覆盖率度量,则 Bias 模块会在整数溢出饱和覆盖率。有关更多信息,请参阅整数溢出覆盖率。
C Caller
C Caller 模块本身仅接收模块执行覆盖率。C Caller 模块调用的代码获得代码覆盖率。Simulink Coverage 创建单独的代码覆盖率报告,显示 C Caller 模块调用的 C 代码的覆盖率结果。有关更多信息,请参阅代码覆盖率的类型。
Combinatorial Logic
Combinatorial Logic 模块接收决策和条件覆盖率。决策覆盖率基于实现真值表的每个输出行。决策覆盖率测量真值表的每个输出行设置为模块输出的时间步数。
条件覆盖率测量每个输入为 false(等于零)的时间步数以及每个输入为 true(不等于零)的次数。如果 Combinatorial Logic 模块具有单个输入元素,则 Simulink Coverage 软件仅报告决策覆盖率,因为决策覆盖率和条件覆盖率是等效的。
如果所有真值表值都设置为至少一个时间步的模块输出,决策覆盖率为 100%。否则,软件将覆盖率报告为至少一个时间步内输出的真值表值的数量除以真值表值的总数。由于该模块在真值表中始终至少有一个值作为输出,因此报告的最小覆盖率是真值表值的总数除以一。
如果所有模块输入至少在一个时间步内为 false,并且至少在一个时间步内为 true,则条件覆盖率为 100%。否则,软件会将覆盖率报告为在每个输入上至少在一个时间步内达到一个 false 值,加上至少在一个时间步内达到一个 true 值,然后除以二的输入总数的幂(即 2^number_of_inputs)。报告的最小覆盖率是输入总数除以 2 的输入总数的幂。
Compare to Constant
Compare to Constant 模块接收条件覆盖率。
条件覆盖率测量:
输入与指定常数之间的比较为 true 的次数。
输入与指定常量之间的比较为 false 的次数。
Compare to Constant 模块包含输入与常数的比较。因此,如果您选择关系边界覆盖率度量,则 Compare to Constant 模块将接收关系边界覆盖率。有关更多信息,请参阅关系边界覆盖率。
Compare to Zero
Compare to Zero 模块接收条件覆盖率。
条件覆盖率测量:
输入与零的比较为 true 的次数。
输入与零的比较为 false 的次数。
Compare to Zero 模块包含输入与零的比较。因此,如果您选择关系边界覆盖率度量,则 Compare to Zero 模块将接收关系边界覆盖率。有关更多信息,请参阅关系边界覆盖率。
Data Type Conversion
如果选择对整数溢出进行饱和处理覆盖率度量,则 Data Type Conversion 模块会在整数溢出饱和覆盖率。有关更多信息,请参阅整数溢出覆盖率。
Dead Zone
Dead Zone 模块接收决策覆盖率。Simulink Coverage 软件报告这些参数的决策覆盖率:
死区起点
死区终点
死区起点参数指定死区的下限。对于死区起点参数,决策覆盖率测量:
模块输入大于或等于下限的时间步数,表示真实的决策。
模块输入的时间步数小于下限,表示 false 决策。
死区终点参数指定死区的上限。对于死区终点,决策覆盖率测量:
模块输入大于上限的时间步数,表示真实的决策。
模块输入的时间步数小于或等于上限,表示 false 决策。
当上限为 true 时,软件不会测量该时间步的死区起点覆盖率。因此,死区起点决策的总数等于死区终点为 false 的时间步数。
如果选择对整数溢出进行饱和处理覆盖率度量,则 Dead Zone 模块会在整数溢出饱和覆盖率。有关更多信息,请参阅整数溢出覆盖率。
Dead Zone 模块包含输入与上限值和下限值的隐式比较。因此,如果您选择关系边界覆盖率度量,则 Dead Zone 模块将接收关系边界覆盖率。有关更多信息,请参阅关系边界覆盖率。
Delay and Resettable Delay
如果将外部重置模块参数设置为除无之外的任何选项,或者选择显示使能端口模块参数,则 Delay 和 Resettable Delay 模块将接收决策覆盖率。如果您的模型使用 State Control (HDL Coder) 模块,当状态控制参数为同步时,您无法收集外部重置和启用端口的覆盖率。
对于外部重置模块参数,决策覆盖率测量模块重置时间步中的 true 结果,以及模块未重置时间步中的 false 结果。为了获得 100% 的决策覆盖率,该模块必须重置至少一个时间步,并且不重置至少一个时间步。
对于显示使能端口模块参数,决策覆盖率测量模块被使能时间步中的 true 结果,以及模块未被使能时间步中的 false 结果。为了获得 100% 的决策覆盖率,必须至少在一个时间步启用该模块,并且至少在一个时间步不启用该模块。
Direct Lookup Table (n-D)
Direct Lookup Table (n-D) 模块接收查找表覆盖率。对于 n 维查找表,输出断点的数量是每个表维度的所有断点数量的乘积。
查找表覆盖率测量:
仿真中尺寸输入值的每个组合位于每个断点之间的次数。
仿真期间,每个表维度的每个维度输入值组合低于最低断点和高于最高断点的次数。
n 维查找表的总覆盖率点数是每个表维度中的断点数加一的乘积。在覆盖率报告中,从白色到绿色的颜色刻度不断增加,其中有六个均匀分布的数据范围,从零开始,表示软件测量每个插值或外推点的时间步数。
该软件通过测量断点之间或端点之外的仿真中实现至少一个时间步的测量的总插值和外推点来确定总覆盖率的百分比。
Discrete Filter
如果将外部重置模块参数设置为除无之外的任何选项,则 Discrete Filter 模块将接收决策覆盖率。如果您的模型使用 State Control (HDL Coder) 模块,则当状态控制参数为同步时,您无法收集外部重置的覆盖率。
决策覆盖率测量模块重置时间步中的 true 结果,以及模块未重置时间步中的 false 结果。为了获得 100% 的决策覆盖率,该模块必须重置至少一个时间步,并且不重置至少一个时间步。
如果选择对整数溢出进行饱和处理覆盖率参数,则 Discrete Filter 模块会在整数溢出饱和覆盖率。有关更多信息,请参阅整数溢出覆盖率。
Discrete FIR Filter
如果将外部重置模块参数设置为除无之外的任何选项,或者选择显示使能端口模块参数,则 Discrete FIR Filter 模块将接收决策覆盖率。如果您的模型使用 State Control (HDL Coder) 模块,当状态控制参数为同步时,您无法收集外部重置和启用端口的覆盖率。
对于外部重置模块参数,决策覆盖率测量模块重置时间步中的 true 结果,以及模块未重置时间步中的 false 结果。为了获得 100% 的决策覆盖率,该模块必须重置至少一个时间步,并且不重置至少一个时间步。
对于显示使能端口模块参数,决策覆盖率测量模块被使能时间步中的 true 结果,以及模块未被使能时间步中的 false 结果。为了获得 100% 的决策覆盖率,必须至少在一个时间步启用该模块,并且至少在一个时间步不启用该模块。
如果选择对整数溢出进行饱和处理覆盖率度量,则 Discrete FIR Filter 模块会在整数溢出饱和覆盖率。有关更多信息,请参阅整数溢出覆盖率。
Discrete-Time Integrator
Discrete-Time Integrator 模块接收决策覆盖率。Simulink Coverage 报告以下参数的决策覆盖率:
外部重置
限制输出
如果将外部重置设置为无,Simulink Coverage 将不会报告重置决策的决策覆盖率。如果您的模型使用 State Control (HDL Coder) 模块,则当状态控制参数为同步时,您无法收集外部重置的覆盖率。否则,决策覆盖率测量:
模块输出重置的时间步数,表示正确的决策。
模块输出未重置的时间步数,指示 false 决策。
如果您不选择限制输出,则 Simulink Coverage 不会报告该决策的决策覆盖率。否则,Simulink Coverage 将记录饱和下限和饱和上限的决策覆盖率。
对于饱和上限,决策覆盖率测量:
积分结果大于上限的时间步数,表明做出真实的决策。
积分结果小于或等于上限的时间步数,指示 false 决策。
对于饱和下限,决策覆盖率测量
积分结果小于下限的时间步数,表明决策真实。
积分结果大于或等于下限的时间步数,指示 false 决策。
对于上限决策为 true 的时间步,Simulink Coverage 不会分析饱和下限。因此,下限决策的总数等于上限为 false 的时间步数。
决策结果的总数取决于您在模块中设置的集成方法。每个加法运算都包含一个可能的饱和事件,因此,梯形方法的决策结果比其他积分方法多两倍。有关更多信息,请参阅 Integration and Accumulation Methods。
如果选择对整数溢出进行饱和处理覆盖率度量,则 Discrete-Time Integrator 模块会在整数溢出饱和覆盖率。有关更多信息,请参阅整数溢出覆盖率。
Discrete Transfer Fcn
如果将外部重置模块参数设置为除无之外的任何选项,则 Discrete Transfer Fcn 模块将接收决策覆盖率。如果您的模型使用 State Control (HDL Coder) 模块,则当状态控制参数为同步时,您无法收集外部重置的覆盖率。决策覆盖率测量模块重置时间步中的 true 结果,以及模块未重置时间步中的 false 结果。为了获得 100% 的决策覆盖率,该模块必须重置至少一个时间步,并且不重置至少一个时间步。
如果选择对整数溢出进行饱和处理覆盖率参数,则 Discrete Transfer Fcn 模块会在整数溢出饱和覆盖率。有关更多信息,请参阅整数溢出覆盖率。
Dot Product
如果选择对整数溢出进行饱和处理覆盖率度量,则 Dot Product 模块会在整数溢出饱和覆盖率。有关更多信息,请参阅整数溢出覆盖率。
Enabled Subsystem
Enabled Subsystem 模块接收决策、条件和 MCDC 覆盖率。
决策覆盖率测量:
启用该模块的时间步数,表示真实的决策。
模块被禁用的时间步数,指示 false 决策。
如果至少一个时间步为 true,且至少一个时间步为 false,决策覆盖率为 100%。如果没有时间步为 true,或者没有时间步为 false,则决策覆盖率为 50%。
Simulink Coverage 仅当启用输入是向量时才测量启用输入的条件覆盖率。对于使能输入,条件覆盖率测量使能输入的每个元素为 true 的时间步数以及使能输入的每个元素为 false 的时间步数。该软件根据可能条件的总数、至少一个时间步内有多少条件为 true、至少一个时间步内有多少条件为 false 来报告条件覆盖率。
Simulink Coverage 仅当启用输入是向量时才测量启用输入的 MCDC 覆盖率。由于子系统的启用是向量输入的 OR
,因此如果在至少一个时间步中,每个向量启用输入都完全为 true,并且如果在至少一个时间步中,所有向量启用输入都为 false,则 MCDC 覆盖率为 100%。对于 MCDC 覆盖率测量,软件将向量的每个元素视为单独的条件。
Enabled and Triggered Subsystem
Enabled and Triggered Subsystem 模块接收决策、条件和 MCDC 覆盖率。决策覆盖率测量:
启用模块时触发边沿发生的时间步数,表示真实的决策。
在启用模块或禁用模块时触发边沿未发生的时间步数,指示 false 决策。
如果至少一个时间步为 true,且至少一个时间步为 false,决策覆盖率为 100%。如果没有时间步为 true,或者没有时间步为 false,则决策覆盖率为 50%。
该软件分别测量使能输入和触发输入的条件覆盖率:
对于使能输入,条件覆盖率测量使能输入为 true 的时间步数和使能输入为 false 的时间步数。
对于触发器输入,条件覆盖率测量触发器边缘发生的时间步数(表示 true),以及触发器边沿不发生的时间步数(表示 false)。
该软件根据可能条件的总数以及至少一个时间步内有多少个条件为 true 以及有多少个条件为 false 来报告条件覆盖率。该软件将向量的每个元素视为单独的条件覆盖率测量。
该软件可组合测量使能输入和触发输入的 MCDC 覆盖率。由于子系统的启用输入是这两个输入的 AND
,因此如果发生以下所有情况,则 MCDC 覆盖率为 100%:
在至少一个时间步内,两个输入都是正确的。
在至少一个时间步内,使能输入为 true,而触发沿为 false。
在一个时间步内,使能输入为 false,而触发边沿为 true。
该软件将每个矢量元素视为单独的 MCDC 覆盖率测量。它根据每个启用输入元素测量每个触发边沿元素。但是,如果触发和启用输入中的元素数量超过 12,则软件不会报告 MCDC 覆盖率。
Fcn
Fcn 模块接收条件和 MCDC 覆盖率。仅当顶级运算符为布尔值(&&
、||
或 !
)时,Simulink Coverage 软件才会报告 Fcn 模块的条件或 MCDC 覆盖率。
条件覆盖率基于模块中布尔运算符的输入值或算术表达式。条件覆盖率测量:
布尔运算符的每个输入为 true(不等于零)的时间步数。
布尔运算符的每个输入为 false(等于零)的时间步数。
如果所有布尔运算符输入至少在一个时间步内为 false,并且至少在一个时间步内为 true,条件覆盖率为 100%。否则,软件将根据可能的条件总数以及至少一个时间步内有多少条件为 true、有多少条件为 false 来报告条件覆盖率。
该软件测量 Fcn 模块内的布尔表达式的 MCDC 覆盖率。如果在至少一个时间步中,每个条件独立地将表达式的输出设置为 true,并且如果在至少一个时间步中,每个条件独立地将表达式的输出设置为 false,则 MCDC 覆盖率为 100%。否则,软件将根据可能条件的总数、每个条件在至少一个时间步内独立将输出设置为 true 的次数以及在至少一个时间步内有多少个条件独立将输出设置为 false 来报告 MCDC 覆盖率。
如果 Fcn 模块包含关系操作并且您选择关系边界覆盖率度量,则 Fcn 模块将接收关系边界覆盖率。有关更多信息,请参阅关系边界覆盖率。
For Iterator、For Iterator Subsystem
For Iterator 模块和 For Iterator Subsystem 接收决策覆盖率。Simulink Coverage 软件测量循环条件值的决策覆盖率,该值由以下因素之一决策:
迭代值等于或低于迭代限制,表示为 true。
迭代值高于迭代限制,表示为 false。
该软件报告每个循环条件评估为 true 和 false 的总次数。如果循环条件至少计算为 true 一次且至少计算为 false 一次,则决策覆盖率为 100%。如果没有循环条件为 true,或者没有循环条件为 false,则决策覆盖率为 50%。
Gain
如果选择对整数溢出进行饱和处理覆盖率度量,则 Gain 模块会在整数溢出饱和覆盖率。有关更多信息,请参阅整数溢出覆盖率。
如果,如果操作子系统
导致 If Action Subsystem 执行的 If 模块接收条件、决策和 MCDC 覆盖率:
该软件测量
if
条件和 If 模块中定义的所有elseif
条件的决策覆盖率。如果
if
条件或任何elseif
条件包含具有多个条件的逻辑表达式(例如u1 & u2 & u3
),则软件还会测量表达式中每个条件的条件和 MCDC 覆盖率,即前面示例中的u1
、u2
和u3
。
该软件并不直接测量 else
条件。当没有 elseif
条件时,else
条件是 if
条件的直接补充,或者 else
条件是最后一个 elseif
条件的直接补充。
该软件报告每个 if
和 elseif
条件评估为 true 和 false 的总时间步数。如果 if
或 elseif
条件至少计算为 true 一次,并且至少计算为 false 一次,则决策覆盖率为 100%。如果没有 if
或 elseif
条件为 true,或者没有 if
或 elseif
条件为 false,则决策覆盖率为 50%。如果先前的 if
或 elseif
条件从未被评估为 false,则 elseif
条件可以有 0% 的决策覆盖率。
If 模块包含其输入之间的比较。因此,如果您选择关系边界覆盖率度量,则 If 模块将接收关系边界覆盖率。有关更多信息,请参阅关系边界覆盖率。
Index Vector
Index Vector 模块通过将向量信号输入的每个元素传递到模块的输出来接收决策覆盖率。
如果每个向量索引至少传递到一个时间步的模块输出,决策覆盖率为 100%。否则,Simulink Coverage 将覆盖率报告为传递到输出的输入信号中向量索引总数的百分比。
如果选择对整数溢出进行饱和处理覆盖率度量,则 Index Vector 模块会在整数溢出饱和覆盖率。有关更多信息,请参阅整数溢出覆盖率。
Interpolation Using Prelookup
Interpolation Using Prelookup 模块接收查找表覆盖率。对于 n-D 查找表,输出断点的数量等于每个表维度的所有断点数量的乘积。查找表覆盖率测量:
仿真中尺寸输入值的每个组合位于每个断点之间的次数。
仿真期间,每个表维度的每个维度输入值组合低于最低断点和高于最高断点的次数。
n 维查找表的总覆盖率点数是每个表维度中的断点数加一的乘积。在覆盖率报告中,从白色到绿色的颜色刻度不断增加,其中有六个均匀分布的数据范围,从零开始,表示软件测量每个插值或外推点的时间步数。
该软件通过测量断点之间或端点之外的仿真中实现至少一个时间步的测量的总插值和外推点来确定总覆盖率的百分比。
如果选择对整数溢出进行饱和处理,则 Interpolation Using Prelookup 模块会在整数溢出饱和覆盖率。有关更多信息,请参阅整数溢出覆盖率。该软件将向量或矩阵的每个元素视为单独的覆盖率测量。
库链接对象
与库对象相链接的 Simulink 模块和 Stateflow 图将获得与未与库对象相链接的相同的覆盖率。Simulink Coverage 软件单独记录模型中每个库对象的覆盖率。如果您的模型包含同一个库对象的多个实例,则每个实例都会接收其自己的覆盖率数据。
Logical Operator
Logical Operator 模块接收条件和 MCDC 覆盖率。Simulink Coverage 测量模块的每个输入的条件覆盖率。条件覆盖率测量:
每个输入为 true(不等于零)的时间步数。
每个输入为 false(等于零)的时间步数。
如果所有模块输入至少在一个时间步内为 false,并且至少在一个时间步内为 true,则条件覆盖率为 100%。否则,条件覆盖率基于可能条件的总数,以及至少一个时间步内有多少个条件为 true,有多少个条件为 false。
Simulink Coverage 测量模块的所有输入的 MCDC 覆盖率。如果在至少一个时间步中,每个条件独立地将模块的输出设置为 true,并且如果在至少一个时间步中,每个条件独立地将模块的输出设置为 false,则 MCDC 覆盖率为 100%。否则,Simulink Coverage 将根据可能条件的总数以及每个条件在至少一个时间步内独立将输出设置为 true 的次数以及在至少一个时间步内独立将输出设置为 false 的次数来报告 MCDC 覆盖率。
为了使 Logical Operator 模块作为逻辑级联的一部分接收 MCDC,必须满足以下所有条件:
模块输入和输出信号都是标量
逻辑模块操作不是 XOR/NXOR
逻辑模块具有多个输入信号(除非其操作为“非”)
有关逻辑级联的更多信息,请参阅逻辑运算符级联模式。
1-D Lookup Table
1-D Lookup Table 模块接收查找表覆盖率;对于一维查找表,输入和输出断点的数量相等。查找表覆盖率测量:
仿真期间输入和输出值位于每个断点之间的次数。
仿真期间输入和输出值低于最低断点并高于最高断点的次数。
一维查找表的覆盖率点总数等于表中断点的数量加一。在覆盖率报告中,从白色到绿色的颜色刻度不断增加,其中有六个均匀分布的数据范围,从零开始,表示软件测量每个插值或外推点的时间步数。
该软件通过测量断点之间或端点之外的仿真中实现至少一个时间步的测量的总插值和外推点来确定总覆盖率的百分比。
如果选择对整数溢出进行饱和处理覆盖率度量,则 1-D Lookup Table 模块会在整数溢出饱和覆盖率。有关更多信息,请参阅整数溢出覆盖率。该软件将向量或矩阵的每个元素视为单独的覆盖率测量。
2-D Lookup Table
2-D Lookup Table 模块接收查找表覆盖率。对于二维查找表,输出断点的数量等于行断点的数量乘以列输入的数量。查找表覆盖率测量:
仿真期间行输入和列输入值的每个组合位于每个断点之间的次数。
仿真期间,每行和每列的行输入和列输入值的每个组合低于最低断点并高于最高断点的次数。
二维查找表的总覆盖率点数是表中行断点数加一,乘以表中列断点数加一。在覆盖率报告中,从白色到绿色的颜色刻度不断增加,其中有六个均匀分布的数据范围,从零开始,表示软件测量每个插值或外推点的时间步数。
如果选择对整数溢出进行饱和处理覆盖率度量,则 2-D Lookup Table 模块会在整数溢出饱和覆盖率。有关更多信息,请参阅整数溢出覆盖率。该软件将向量或矩阵的每个元素视为单独的覆盖率测量。
n-D Lookup Table
n-D Lookup Table 模块接收查找表覆盖率。对于 n 维查找表,输出断点的数量等于每个表维度的所有断点数量的乘积。查找表覆盖率测量:
仿真中尺寸输入值的每个组合位于每个断点之间的次数。
仿真期间,每个表维度的每个维度输出值组合低于最低断点和高于最高断点的次数。
n 维查找表的总覆盖率点数是每个表维度中的断点数加一的乘积。在覆盖率报告中,从白色到绿色的颜色刻度不断增加,其中有六个均匀分布的数据范围,从零开始,表示软件测量每个插值或外推点的时间步数。
该软件通过测量断点之间或端点之外的仿真中实现至少一个时间步的测量的总插值和外推点来确定总覆盖率的百分比。
如果选择对整数溢出进行饱和处理覆盖率度量,则 n-D Lookup Table 模块会在整数溢出饱和覆盖率。有关更多信息,请参阅整数溢出覆盖率。该软件将向量或矩阵的每个元素视为单独的覆盖率测量。
Math Function
如果选择对整数溢出进行饱和处理覆盖率度量,则 Math Function 模块会在整数溢出饱和覆盖率。有关更多信息,请参阅整数溢出覆盖率。该软件将向量或矩阵的每个元素视为单独的覆盖率测量。
MATLAB Function
有关 Simulink Coverage 报告的 MATLAB® Function 模块的覆盖率类型的信息,请参阅MATLAB 函数的模型覆盖率。
MATLAB System
如果将 MATLAB System 模块参数仿真方式设置为代码生成,则 Simulink Coverage 将记录 MATLAB System 模块的决策、条件和 MCDC 覆盖率。
不分析 MATLAB System 模块中赋值语句中的逻辑表达式。
Message Send
如果您选择显示使能端口模块参数,则 Message Send 模块将接收决策覆盖率。如果您的模型使用 State Control (HDL Coder) 模块,则当状态控制参数为同步时,您无法收集启用端口的覆盖率。决策覆盖率测量模块被使能时间步中的 true 结果,以及模块未被使能时间步中的 false 结果。为了获得 100% 的决策覆盖率,必须至少在一个时间步启用该模块,并且至少在一个时间步不启用该模块。
MinMax
MinMax 模块通过将每个输入传递到模块的输出来接收决策覆盖率。
对于基于将每个输入传递到模块输出的决策覆盖率,Simulink Coverage 测量仿真将每个输入传递到模块输出的时间步数。决策点的数量取决于模块的输入数量以及它们是标量、向量还是矩阵。
如果所有输入至少传递到一个时间步的模块输出,Simulink Coverage 将报告决策覆盖率为 100%。否则,Simulink Coverage 将覆盖率报告为至少一个时间步内传递到输出的输入数除以输入总数。
如果选择对整数溢出进行饱和处理覆盖率度量,则 MinMax 模块会在整数溢出饱和覆盖率。有关更多信息,请参阅整数溢出覆盖率。该软件将向量或矩阵的每个元素视为单独的覆盖率测量。
如果您选择关系边界覆盖率度量,则 MinMax 模块将接收关系边界覆盖率。覆盖率报告中出现的分析的关系边界表中的总行数取决于输入数据类型。例如,如果 MinMax 的输入是浮点值,并且函数参数设置为最小值的模块,则报告将在分析的关系边界表中包含两行。对于每个输入 i,表中都有一行对应于 input i - min(inputs before input i)
,还有一行对应于 input i - min(inputs after input i)
。对于模块的第一个和最后一个输入,只有一行。如果输入是向量,则向量输入的每个元素都会有一组额外的行。有关关系边界覆盖率的更多信息,请参阅关系边界覆盖率。有关演示 MinMax 模块的关系边界覆盖率的示例,请参阅收集 MinMax 模块的关系边界覆盖。
当您选择应用于模块参数时,您还可以收集仅接收一个输入信号的 MinMax 模块的覆盖率。
注意
如果在模块输入是可变大小信号时选择应用于模块参数,则 MinMax 模块不支持关系边界覆盖率。
模型
Model 模块不直接接收覆盖率;该模块引用的模型接收覆盖率。如果引用模型的仿真模式设置为普通,则 Simulink Coverage 将报告引用模型内所有接收覆盖率的对象的覆盖率。如果引用模型的仿真模式设置为 SIL 或 PIL 并且您已安装 Embedded Coder®,则 Simulink Coverage 将报告从您的模型生成的代码的覆盖率。如果仿真模式设置为普通、SIL 或 PIL 以外的值,则 Simulink Coverage 不会测量引用模型的覆盖率。
在配置参数对话框的覆盖率窗格中,选择您想要报告覆盖率的引用模型。Simulink Coverage 为您选择的每个引用模型生成一份覆盖率报告。
如果您的模型包含同一引用模型的多个实例,则 Simulink Coverage 将记录该模型的所有实例的覆盖率,其中 Model 模块的仿真模式为普通。该引用模型的覆盖率报告结合了该模型所有普通模式实例的覆盖率数据。
模型参考层次结构中分析模型的覆盖率报告与摘要报告相链接。
注意
有关如何选择引用模型来报告覆盖率的详细信息,请参阅引用模型。
Multiport Switch
Multiport Switch 模块通过将每个输入(第一个控制输入除外)传递到模块的输出来接收决策覆盖率。
对于基于将每个输入(第一个控制输入除外)传递到模块的输出的决策覆盖率,覆盖率测量每个输入传递到模块输出的时间步数。决策点的数量取决于模块的输入数量以及控制输入是标量还是矢量。
如果除第一个控制输入之外的所有输入都传递到模块输出至少一个时间步,决策覆盖率为 100%。否则,Simulink Coverage 软件会将覆盖率报告为至少一个时间步内传递到输出的输入数除以总输入数减一。
如果选择对整数溢出进行饱和处理覆盖率度量,则 Multiport Switch 模块会在整数溢出饱和覆盖率。有关更多信息,请参阅整数溢出覆盖率。该软件将向量或矩阵的每个元素视为单独的覆盖率测量。
Observer 模型
Observer Reference 模块不直接接收覆盖率;该模块引用的 Observer 模型接收该模型内部模块的覆盖率度量。仅对普通模式下的 Observer 模型进行覆盖率分析。
您可以按照选择引用模型的相同方式选择 Observer 模型进行覆盖率。有关选择分析模型的更多信息,请参阅引用模型。
只有从顶层模型引用的 Observer 模型在仿真期间处于活动并能接收覆盖率。位于 Observer 模型内部的 Terminate Function 模块不会接收覆盖率。
每个 Observer 模型的覆盖率结果都被捕获在单独的 cvdata
对象中。从 Observer 模型引用的每个模型都被视为 Observer 模型,并有自己的 cvdata
对象。如果您在模型参考层次结构中记录多个模型的覆盖率,则结果将收集在 cv.cvdatagroup
对象中。摘要报告链接到层次结构中所有分析模型的覆盖率报告。
PID Controller、PID Controller (2 DOF)
如果选择对整数溢出进行饱和处理覆盖率度量,则 PID Controller 和 PID Controller (2 DOF) 模块会在整数溢出饱和覆盖率。有关更多信息,请参阅整数溢出覆盖率。该软件将向量或矩阵的每个元素视为单独的覆盖率测量。
Product
如果选择对整数溢出进行饱和处理覆盖率度量,则 Product 模块会在整数溢出饱和覆盖率。有关更多信息,请参阅整数溢出覆盖率。该软件将向量或矩阵的每个元素视为单独的覆盖率测量。
Proof Assumption
Proof Assumption 模块接收 Simulink Design Verifier 覆盖率。Simulink Design Verifier 覆盖率基于模块对话框中定义的点和间隔。Simulink Design Verifier 覆盖率测量模块中定义的每个点或区间满足的时间步数。目标结果的总数基于 Proof Assumption 模块中定义的点数或间隔数。
如果模块中定义的所有点和间隔至少在一个时间步内都得到满足,则 Simulink Design Verifier 覆盖率为 100%。否则,Simulink Coverage 软件会将覆盖率报告为至少一个时间步内满足的点数和间隔数除以该模块定义的总点数和间隔数。
Proof Objective
Proof Objective 模块接收 Simulink Design Verifier 覆盖率。Simulink Design Verifier 覆盖率基于模块对话框中定义的点和间隔。Simulink Design Verifier 覆盖率测量模块中定义的每个点或区间满足的时间步数。目标结果的总数基于 Proof Objective 模块中定义的点数或间隔数。
如果模块中定义的所有点和间隔至少在一个时间步内都得到满足,则 Simulink Design Verifier 覆盖率为 100%。否则,Simulink Coverage 软件会将覆盖率报告为至少一个时间步内满足的点数和间隔数除以该模块定义的总点数和间隔数。
Rate Limiter
Rate Limiter 模块接收决策覆盖率。Simulink Coverage 软件报告上升沿压摆率和下降沿压摆率参数的决策覆盖率。
对于上升沿压摆率,决策覆盖率测量:
模块输入变化的时间步数大于或等于上升率,表示做出真实的决策。
模块输入变化的时间步数小于上升率,指示 false 决策。
对于下降沿压摆率,决策覆盖率测量:
模块输入变化的时间步数小于或等于下降率,表示做出真实的决策。
模块输入变化的时间步数大于下降率,表明决策错误。
当上升沿压摆率为 true 时,软件不会测量时间步的下降沿压摆率覆盖率。因此,下降沿压摆率决策的总数等于上升沿压摆率为 false 的时间步数。
如果至少一个时间步为 true,且至少一个时间步为 false,则该模块的两个单独决策的决策覆盖率为 100%。如果没有时间步为 true,或者没有时间步为 false,则决策覆盖率为 50%。该软件将向量或矩阵的每个元素视为单独的覆盖率测量。
Rate Limiter 模块隐式地将输入信号的导数与上限值和下限值进行比较。因此,如果您选择关系边界覆盖率度量,则 Rate Limiter 模块将接收关系边界覆盖率。有关更多信息,请参阅关系边界覆盖率。
Relational Operator
Relational Operator 模块接收条件覆盖率。
条件覆盖率测量:
指定关系运算为 true 的次数。
指定的关系运算为 false 的次数。
Relational Operator 模块包含其输入之间的比较。因此,如果您选择关系边界覆盖率度量,则 Relational Operator 模块将接收关系边界覆盖率。有关更多信息,请参阅关系边界覆盖率。
Relay
Relay 模块接收决策覆盖率。Simulink Coverage 报告开启点和关闭点参数的决策覆盖率。
对于开启点,决策覆盖率测量:
模块输入大于或等于开启点的连续时间步数,表示正确的决策。
模块输入的连续时间步数小于开启点,指示 false 决策。
对于关闭点,决策覆盖率测量:
模块输入小于或等于关闭点的连续时间步数,表示正确的决策。
模块输入的连续时间步数大于关闭点,指示 false 决策。
当开启阈值为 true 时,软件不会测量时间步的关闭点覆盖率。因此,关闭点决策的总数等于开启点为 false 的时间步数。
如果至少一个时间步为 true,且至少一个时间步为 false,则该模块的两个单独决策的决策覆盖率为 100%。如果没有时间步为 true,或者没有时间步为 false,则决策覆盖率为 50%。该软件将向量或矩阵的每个元素视为单独的覆盖率测量。
Relay 模块包含其第二个输入与阈值的隐式比较。因此,如果您选择关系边界覆盖率度量,则 Relay 模块将接收关系边界覆盖率。有关更多信息,请参阅关系边界覆盖率。
Requirements Table
Requirements Table 模块接收需求表选项卡中每个需求的预条件列中包含的逻辑的决策、条件、MCDC、关系边界和整数溢出覆盖率饱和度。后条件列和假设表标签未受到覆盖率。
Simulink Coverage 报告预条件列的覆盖率,类似于 Stateflow 图或 MATLAB Function 模块的覆盖率。例如,如果先决条件指定在 A < C1 && B ~= C2
时必须满足后置条件,则 Simulink Coverage 可以分析并报告此语句的覆盖率结果。
C/C++ S-Function
C/C++ S-Function 支持模型覆盖率。该模型的覆盖率报告包含模型中 S-Function 模块的每个实例的结果。S-Function 模块的结果链接到该模块中 C/C++ 代码的单独覆盖率报告。
要生成 S-Function 的覆盖率报告:
创建 S-Function 时,启用覆盖率支持。有关更多信息,请参阅使 S-Function 与模型覆盖率兼容。
生成覆盖率报告时,启用对 S-Function 的支持。有关更多信息,请参阅生成 S-Function 的覆盖率报告。
针对 S-Function 报告了以下覆盖率类型:
S-Function 模块的覆盖率数据通过以下方式获取:
一个模块的覆盖率结果是该模块中所有文件结果的加权平均值。
例如,S-Function 模块有两个文件,
file1.c
和file2.c
。file1.c
的决策覆盖率为 75%(覆盖 3/4 个结果),而file2.c
的决策覆盖率为 50%(覆盖 10/20 个结果)。该模块的决策覆盖率为 13/24≈54%。对于每个文件,覆盖率结果是文件中所有函数结果的加权平均值。
对于每个函数,覆盖率结果是该函数中接收该覆盖率的所有语句的结果的加权平均值。
注意
S-Function 的模型覆盖率具有以下限制:
仅支持 Level-2 C/C++ S-Function 的覆盖率。有关 2 级 C S-Function 的示例,请参阅Create and Implement a Basic C MEX S-Function。
C++ 类模板不适用于覆盖率。
Saturation
Simulink Coverage 报告 Saturation 模块的上限和下限参数的决策覆盖率以及 Saturation 模块的关系边界覆盖率。
对于上限,决策覆盖率测量:
模块输入大于上限的时间步数,表示决策结果真实,并且模块输出在上限处饱和。
模块输入的时间步数小于或等于上限,指示 false 决策结果。
对于下限,决策覆盖率测量:
模块输入大于或等于下限的时间步数,表示真实的决策结果。
模块输入小于下限的时间步数,这指示 false 决策结果,并且模块输出在下限处饱和。
当上限为 true 时,Simulink Coverage 不会在某个时间步中测量下限决策的覆盖率。因此,下限决策评估的总数等于上限为 false 的时间步数。如果上限决策在每个时间步都为 true,则 Simulink Coverage 报告下限决策的覆盖率为 0%。
对于每个决策,如果决策至少在一个时间步内返回 true 结果并且至少在一个时间步内返回 false 结果,则 Simulink Coverage 报告 100% 的覆盖率。如果一个决策没有 ture 结果或 false 结果,Simulink Coverage 会报告该决策的覆盖率为 50%。Saturation 模块的决策覆盖率是上限和下限决策覆盖率的总和。例如,如果 Saturation 模块对上限决策获得 100% 的覆盖率,对下限决策获得 50% 的覆盖率,则 Saturation 模块总共获得 75% 的决策覆盖率,并且 4 个决策结果中有 3 个得到满足。
如果 Saturation 模块的输入信号是向量或矩阵,则每个元素都是单独的覆盖率测量。例如,如果输入信号是二元素向量,则 Saturation 模块中总共会有八个决策结果,而不是四个。
Saturation 模块包含输入与上限值和下限值的隐式比较。因此,如果您在配置参数窗口的覆盖率窗格中选择关系边界覆盖率度量,则 Saturation 模块将接收关系边界覆盖率。有关更多信息,请参阅关系边界覆盖率。
Saturation Dynamic
如果选择对整数溢出进行饱和处理覆盖率度量,则 Saturation Dynamic 模块会在整数溢出饱和覆盖率。有关更多信息,请参阅整数溢出覆盖率。该软件将向量或矩阵的每个元素视为单独的覆盖率测量。
Sign
Sign 模块接收决策覆盖率和关系边界覆盖率。
Sign 模块有三个决策结果,一个用于负面结果,一个用于正面结果,一个用于零结果。
Sign 模块隐式地将输入与零进行比较。因此,如果您选择关系边界覆盖率度量,则 Sign 模块将接收关系边界覆盖率。有关更多信息,请参阅关系边界覆盖率。
Simulink Design Verifier MATLAB Function 模块中的函数
MATLAB Function 模块中的以下函数获得 Simulink Design Verifier 覆盖率:
sldv.condition
(Simulink Design Verifier)sldv.test
(Simulink Design Verifier)sldv.assume
(Simulink Design Verifier)sldv.prove
(Simulink Design Verifier)
每个函数都会评估表达式 expr
,例如 sldv.test(
,其中 expr
)expr
是任何有效的布尔 MATLAB 表达式。Simulink Design Verifier 覆盖率测量表达式 expr
评估为 true 的时间步数。
如果 expr
至少在一个时间步内为 true,则该函数的 Simulink Design Verifier 覆盖率为 100%。否则,Simulink Coverage 软件会报告该函数的覆盖率为 0%。
Sqrt、Signed Sqrt、Reciprocal Sqrt
如果选择对整数溢出进行饱和处理覆盖率度量,则 Sqrt、Signed Sqrt 和 Reciprocal Sqrt 模块会在整数溢出饱和覆盖率。有关更多信息,请参阅整数溢出覆盖率。该软件将向量或矩阵的每个元素视为单独的覆盖率测量。
求和、加、减、元素求和
如果选择对整数溢出进行饱和处理覆盖率度量,则 Sum、Add、Subtract 和 Sum of Elements 模块会在整数溢出饱和覆盖率。有关更多信息,请参阅整数溢出覆盖率。该软件将向量或矩阵的每个元素视为单独的覆盖率测量。
Switch
Switch 模块根据对该模块的控制输入接收决策覆盖率。决策覆盖率测量:
控制输入评估为 true 的时间步数。
控制输入评估为 false 的时间步数。
决策点的数量取决于控制输入是标量还是矢量。
如果选择对整数溢出进行饱和处理覆盖率度量,则 Switch 模块会在整数溢出饱和覆盖率。有关更多信息,请参阅整数溢出覆盖率。该软件将向量或矩阵的每个元素视为单独的覆盖率测量。
Switch 模块包含其第二个输入与阈值的隐式比较。因此,如果您选择关系边界覆盖率度量,则 Switch 模块将接收关系边界覆盖率。有关更多信息,请参阅关系边界覆盖率。
SwitchCase、SwitchCase 动作子系统
SwitchCase 模块和 SwitchCase 动作子系统接收决策覆盖率。Simulink Coverage 软件针对模块中定义的每个 switch case 以及默认 case 单独测量决策覆盖率。决策结果的数量等于 case 条件的数量加上 default
case 的数量(如果定义了)。
该软件报告每个 case 评估为 true 的时间步总数。如果每个 case(包括默认 case)至少评估为 true 一次,决策覆盖率就是 100%。软件通过至少一个时间步内评估为 true 的 case 数除以 case 总数来确定决策覆盖率。
如果 SwitchCase 模块不包含 default
case,软件将测量决策覆盖率,即没有任何 case 评估为 true 的时间步数。在覆盖率报告中,此覆盖率被报告为 implicit-default。
Test Condition
Test Condition 模块接收 Simulink Design Verifier 覆盖率。Simulink Design Verifier 覆盖率基于模块对话框中定义的点和间隔。Simulink Design Verifier 覆盖率测量模块中定义的每个点或区间满足的时间步数。目标结果的总数基于 Test Condition 模块中定义的点数或间隔数。
如果模块中定义的所有点和间隔至少在一个时间步内都得到满足,则 Simulink Design Verifier 覆盖率为 100%。否则,Simulink Coverage 软件会将覆盖率报告为至少一个时间步内满足的点数和间隔数除以该模块定义的总点数和间隔数。
Test Objective
Test Objective 模块接收 Simulink Design Verifier 覆盖率。Simulink Design Verifier 覆盖率基于模块对话框中定义的点和间隔。Simulink Design Verifier 覆盖率测量模块中定义的每个点或区间满足的时间步数。目标结果的总数基于 Test Objective 模块中定义的点数或间隔数。
如果模块中定义的所有点和间隔至少在一个时间步内都得到满足,则 Simulink Design Verifier 覆盖率为 100%。否则,Simulink Coverage 软件会将覆盖率报告为至少一个时间步内满足的点数和间隔数除以该模块定义的总点数和间隔数。
触发模型
Model 模块可以引用包含在模型根级别的基于边沿触发端口的模型。触发模型接收决策、条件和 MCDC 覆盖率。
决策覆盖率测量:
触发参考模型的时间步数,表明做出真实的决策。
参考模型未被触发的时间步数,指示 false 决策。
如果至少一个时间步为 true,且至少一个时间步为 false,则引用触发模型的 Model 模块的决策覆盖率为 100%。如果没有时间步为 true,或者没有时间步为 false,则决策覆盖率为 50%。
仅当触发输入是向量时,Simulink Coverage 软件才会测量参考模型中触发端口的条件覆盖率。对于触发端口,条件覆盖率测量:
触发端口每个元素为 true 的时间步数。
触发端口每个元素为 false 的时间步数。
该软件根据可能条件的总数、至少一个时间步内有多少条件为 true、至少一个时间步内有多少条件为 false 来报告条件覆盖率。
如果触发端口是一个矢量,则软件仅测量触发端口的 MCDC 覆盖率。因为参考模型的触发端口是向量输入的 OR
,所以如果在至少一个时间步中,每个向量触发端口都完全为 true,并且如果在至少一个时间步中,所有向量触发端口输入都为 false,则 MCDC 覆盖率为 100%。该软件将向量的每个元素视为 MCDC 覆盖率测量的单独条件。
Triggered Subsystem
Triggered Subsystem 模块接收决策、条件和 MCDC 覆盖率。
决策覆盖率测量:
触发模块的时间步数,表示真实的决策。
未触发模块的时间步数,指示 false 决策。
如果至少一个时间步为 true,且至少一个时间步为 false,决策覆盖率为 100%。如果没有时间步为 true,或者没有时间步为 false,则决策覆盖率为 50%。
仅当触发输入是向量时,Simulink Coverage 软件才会测量触发输入的条件覆盖率。对于触发输入,条件覆盖率测量:
触发边沿每个元素为 true 的时间步数。
触发边沿的每个元素为 false 的时间步数。
该软件根据可能条件的总数、至少一个时间步内有多少条件为 true、至少一个时间步内有多少条件为 false 来报告条件覆盖率。
如果触发输入是矢量,则软件仅测量触发输入的 MCDC 覆盖率。由于子系统的触发边沿是向量输入的 OR
,因此,如果在至少一个时间步中,每个向量触发边沿输入都为 true,并且如果在至少一个时间步中,所有向量触发边沿输入都为 false,则 MCDC 覆盖率为 100%。该软件将向量的每个元素视为 MCDC 覆盖率测量的单独条件。
Trigonometric Function
如果将函数参数设置为 asin 或 acos 并且清除删除防止超范围输入的代码参数,则 Trigonometric Function 模块将接收决策和关系边界覆盖率。当您使用这些设置时,Trigonometric Function 模块使用饱和行为仅接受 -1
和 1
之间的输入。
决策覆盖率分析 Trigonometric Function 模块的饱和决策逻辑。覆盖率报告将此逻辑显示为一个决策,具有三种可能的结果:
输入大于 1
输入介于 -1 和 1 之间
输入小于 -1
饱和行为包含输入与上限值和下限值的隐式比较。如果在配置参数对话框的覆盖率窗格中选择关系边界覆盖率度量,则该模块将接收关系边界覆盖率。有关更多信息,请参阅关系边界覆盖率。
如果选择删除防止超范围输入的代码参数,该模块将仅接收执行覆盖率。
Truth Table
Truth Table 模块是一个 Stateflow 模块,使您能够直接在 Simulink 模型中使用真值表逻辑。Truth Table 模块接收条件、决策和 MCDC 覆盖率。有关使用 Stateflow 真值表的模型覆盖率的更多信息,请参阅Stateflow 真值表的模型覆盖率。
Unary Minus
如果选择对整数溢出进行饱和处理覆盖率度量,则 Unary Minus 模块会在整数溢出饱和覆盖率。有关更多信息,请参阅整数溢出覆盖率。该软件将向量或矩阵的每个元素视为单独的覆盖率测量。
Weighted Sample Time Math
如果选择对整数溢出进行饱和处理覆盖率度量,则 Weighted Sample Time Math 模块会在整数溢出饱和覆盖率。有关更多信息,请参阅整数溢出覆盖率。该软件将向量或矩阵的每个元素视为单独的覆盖率测量。
While Iterator、While Iterator Subsystem
While Iterator 模块和 While Iterator Subsystem 接收决策覆盖率。决策覆盖率是针对 while
条件值进行测量的,该值由 while
条件满足(true)或 while
条件不满足(false)决策。Simulink Coverage 软件报告每个 while
条件评估为 true 和 false 的总次数。如果 while
条件至少计算为 true 一次,并且至少计算为 false 一次,则 while
条件的决策覆盖率为 100%。如果没有 while
条件为 true,或者没有 while
条件为 false,则决策覆盖率为 50%。
如果超出迭代限制(true)或未超出迭代限制(false),软件将独立测量决策覆盖率。如果迭代极限至少计算为 true 一次,并且至少计算为 false 一次,则迭代极限的决策覆盖率为 100%。如果没有迭代限制为 true,或者没有迭代限制为 false,则决策覆盖率为 50%。如果将最大迭代次数设置为 -1
(无限制),则迭代限制的决策覆盖率对于所有迭代都为 true,对于零次迭代为 false,决策覆盖率是 50%。