逻辑运算短路
短路由包含 && (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 个端口的逻辑 |
| (输入 1 && ~输入 2) | (~in2) |
具有 3 个端口的逻辑 |
| (〜in1 &&〜in2) | (~in2) |
MATLAB 包含表达式的函数或图表 (u1 && u2 && u3) | ‘u2’ | (u1 && ~u2) | (u1 && ~u2) |
MCDC
目标的短路行为
下表总结了根据 CovLogicBlockShortCircuit
参数而变化的目标差异,如下所示:
基于CovLogicBlockShortCircuit
参数的MCDC
目标的短路考虑:
模块 | MCDC 目标 | MCDC 当 CovLogicBlockShortCircuit 为 ON 时的表达式 | MCDC CovLogicBlockShortCircuit 为 OFF 时的表达式 |
---|---|---|---|
具有 3 个端口的逻辑 | 输入端口 2 的输出表达式 | (输入 1 && ~输入 2) | (在 1 && ~在 2 && 在 3) |
输入端口 2 的输出表达式 | (在 1 && 在 2 && 在 3) | (在 1 && 在 2 && 在 3) | |
MATLAB 包含表达式的函数或图表 (u1 && u2 && u3) | 输入端口 2 的输出表达式 | (输入 1 && ~输入 2) | (输入 1 && ~输入 2) |
输入端口 2 的输出表达式 | (在 1 && 在 2 && 在 3) | (输入 1 && 输入 2 && 输入 2) |
注意
当 MCDC
表达式源自级联逻辑时,它遵循与逻辑模块类似的定义。
有关更多信息,请参阅 分析级联逻辑模块的 MCDC (Simulink Coverage) 中的“MCDC 的布尔表达式的短路”。
CovLogicBlockShortCircuit
参数对 Condition
和 MCDC
结果的影响
在某些情况下,MCDC
目标的覆盖率结果可能根据 CovLogicBlockShortCircuit
参数而变化,如下所示:
当 CovLogicBlockShortCircuit
参数为 OFF 时,所有输入都会被考虑。
基于CovLogicBlockShortCircuit
参数的Condition
目标的短路考虑:
模块 | Condition 目标 | Condition CovLogicBlockShortCircuit 为 ON 时的表达式 | Condition CovLogicBlockShortCircuit 为 OFF 时的表达式 |
---|---|---|---|
具有 3 个端口的逻辑 |
| (in1 && in2 && ~in2)(死逻辑) | (~in2)(有源逻辑) |
基于CovLogicBlockShortCircuit
参数的MCDC
目标的短路考虑:
模块 | MCDC 目标 | MCDC 当 CovLogicBlockShortCircuit 为 ON 时的表达式 | MCDC CovLogicBlockShortCircuit 为 OFF 时的表达式 |
---|---|---|---|
具有 3 个端口的逻辑 | 输入端口 2 的输出表达式 | (in1 && ~in2)(有源逻辑) | (in1 && ~in2 && in2)(死逻辑) |