逻辑运算短路
包含 && (AND) 和 || (OR) 运算符的逻辑表达式会出现短路现象。
在包含 && 运算符的逻辑表达式中,如果左侧表达式的计算结果为 false,则整个表达式的计算结果也为 false。在这种情况下,不会计算右侧表达式,因为结果已经由左侧表达式确定。
同样,对于包含 || 运算符的逻辑表达式,如果左侧表达式的计算结果为 true,则不会计算右侧表达式,因为结果已由左侧表达式确定。这种逻辑表达式的短路计算有助于您在结果已确定的情况下避免不必要的计算,从而优化执行。
Condition 和 MCDC 目标的短路行为
在分析死逻辑或生成测试时,Condition 和 MCDC 目标的逻辑运算符和逻辑表达式可以考虑短路行为或不考虑短路行为。下表总结了不同的考虑:
Condition 和 MCDC 目标的短路考虑:
| 建模元素 | Condition 和 MCDC 目标的短路考虑 |
|---|---|
逻辑模块(独立/级联) | 仅当 |
使能子系统 |
|
| 触发子系统 |
|
| 使能触发子系统 |
|
MATLAB®、Stateflow®(使用 C 或 MATLAB 作为动作语言)和其他 Simulink® 模块(Fcn、If) |
|
Condition 目标的短路行为
下表总结了依赖于 CovLogicBlockShortCircuit 参数的 Condition 目标之间的差异:
基于 CovLogicBlockShortCircuit 参数的 Condition 目标的短路考虑
| 模块 | Condition 目标 | CovLogicBlockShortCircuit 为 ON 时的条件表达式 | CovLogicBlockShortCircuit 为 OFF 时的条件表达式 |
|---|---|---|---|
具有 3 个端口的 |
| (in1 && ~in2) | (~in2) |
具有 3 个端口的 |
| (~in1 && ~in2) | (~in2) |
包含表达式 (u1 && u2 && u3) 的 MATLAB 函数或图 | 'u2' | (u1 && ~u2) | (u1 && ~u2) |
MCDC 目标的短路行为
下表总结了基于 CovLogicBlockShortCircuit 参数而变化的目标差异,如下所示:
基于 CovLogicBlockShortCircuit 参数的 MCDC 目标的短路考虑:
| 模块 | MCDC 目标 | CovLogicBlockShortCircuit 为 ON 时的 MCDC 表达式 | CovLogicBlockShortCircuit 为 OFF 时的 MCDC 表达式 |
|---|---|---|---|
具有 3 个端口的 | 输入端口 2 为 | (in1 && ~in2) | (in1 && ~in2 && in3) |
输入端口 2 为 | (in1 && in2 && in3) | (in1 && in2 && in3) | |
包含表达式 (u1 && u2 && u3) 的 MATLAB 函数或图 | 输入端口 2 为 | (in1 && ~in2) | (in1 && ~in2) |
输入端口 2 为 | (in1 && in2 && in3) | (in1 && in2 && in2) |
注意
当 MCDC 表达式派生自级联逻辑时,它遵循与逻辑模块类似的定义。
有关详细信息,请参阅分析级联逻辑模块的 MCDC (Simulink Coverage) 中的“MCDC 的布尔表达式短路”。
CovLogicBlockShortCircuit 参数对 Condition 和 MCDC 结果的影响
在某些情况下,MCDC 目标的覆盖率结果可能会根据 CovLogicBlockShortCircuit 参数而变化,如下所示:
当 CovLogicBlockShortCircuit 参数为 OFF 时,将考虑所有输入。

基于 CovLogicBlockShortCircuit 参数的 Condition 目标的短路考虑:
| 模块 | Condition 目标 | CovLogicBlockShortCircuit 为 ON 时的 Condition 表达式 | CovLogicBlockShortCircuit 为 OFF 时的 Condition 表达式 |
|---|---|---|---|
具有 3 个端口的 |
| (in1 && in2 && ~in2)(死逻辑) | (~in2)(活动逻辑) |
基于 CovLogicBlockShortCircuit 参数的 MCDC 目标的短路考虑:
| 模块 | MCDC 目标 | CovLogicBlockShortCircuit 为 ON 时的 MCDC 表达式 | CovLogicBlockShortCircuit 为 OFF 时的 MCDC 表达式 |
|---|---|---|---|
具有 3 个端口的 | 输入端口 2 为 | (in1 && ~in2)(活动逻辑) | (in1 && ~in2 && in2)(死逻辑) |