主要内容

逻辑运算短路

包含 && (AND)|| (OR) 运算符的逻辑表达式会出现短路现象。

在包含 && 运算符的逻辑表达式中,如果左侧表达式的计算结果为 false,则整个表达式的计算结果也为 false。在这种情况下,不会计算右侧表达式,因为结果已经由左侧表达式确定。

同样,对于包含 || 运算符的逻辑表达式,如果左侧表达式的计算结果为 true,则不会计算右侧表达式,因为结果已由左侧表达式确定。这种逻辑表达式的短路计算有助于您在结果已确定的情况下避免不必要的计算,从而优化执行。

ConditionMCDC 目标的短路行为

在分析死逻辑或生成测试时,ConditionMCDC 目标的逻辑运算符和逻辑表达式可以考虑短路行为或不考虑短路行为。下表总结了不同的考虑:

ConditionMCDC 目标的短路考虑:

建模元素ConditionMCDC 目标的短路考虑

逻辑模块(独立/级联)

仅当 CovLogicBlockShortCircuit 为 ON 时,ConditionMCDC 目标才会短路

使能子系统

ConditionMCDC 目标始终处于非短路状态。

触发子系统

ConditionMCDC 目标始终处于非短路状态。

使能触发子系统

ConditionMCDC 目标始终处于非短路状态。

MATLAB®、Stateflow®(使用 C 或 MATLAB 作为动作语言)和其他 Simulink® 模块(Fcn、If)

ConditionMCDC 目标始终处于短路状态

Condition 目标的短路行为

下表总结了依赖于 CovLogicBlockShortCircuit 参数的 Condition 目标之间的差异:

基于 CovLogicBlockShortCircuit 参数的 Condition 目标的短路考虑

模块Condition 目标 CovLogicBlockShortCircuit 为 ON 时的条件表达式CovLogicBlockShortCircuit 为 OFF 时的条件表达式

具有 3 个端口的 AND 模块

Condition 'F',端口 2

(in1 && ~in2)

(~in2)

具有 3 个端口的 OR 模块

Condition 'F',端口 2

(~in1 && ~in2)

(~in2)

包含表达式 (u1 && u2 && u3) 的 MATLAB 函数或图

'u2' False

(u1 && ~u2)

(u1 && ~u2)

MCDC 目标的短路行为

下表总结了基于 CovLogicBlockShortCircuit 参数而变化的目标差异,如下所示:

基于 CovLogicBlockShortCircuit 参数的 MCDC 目标的短路考虑:

模块MCDC 目标CovLogicBlockShortCircuit 为 ON 时的 MCDC 表达式CovLogicBlockShortCircuit 为 OFF 时的 MCDC 表达式

具有 3 个端口的 AND 模块

输入端口 2 为 false 时的输出表达式

(in1 && ~in2)

(in1 && ~in2 && in3)

输入端口 2 为 true 时的输出表达式

(in1 && in2 && in3)

(in1 && in2 && in3)

包含表达式 (u1 && u2 && u3) 的 MATLAB 函数或图

输入端口 2 为 false 时的输出表达式

(in1 && ~in2)

(in1 && ~in2)

输入端口 2 为 true 时的输出表达式

(in1 && in2 && in3)

(in1 && in2 && in2)

注意

MCDC 表达式派生自级联逻辑时,它遵循与逻辑模块类似的定义。

有关详细信息,请参阅分析级联逻辑模块的 MCDC (Simulink Coverage) 中的“MCDC 的布尔表达式短路”。

CovLogicBlockShortCircuit 参数对 ConditionMCDC 结果的影响

在某些情况下,MCDC 目标的覆盖率结果可能会根据 CovLogicBlockShortCircuit 参数而变化,如下所示:

CovLogicBlockShortCircuit 参数为 OFF 时,将考虑所有输入。

基于 CovLogicBlockShortCircuit 参数的 Condition 目标的短路考虑:

模块Condition 目标CovLogicBlockShortCircuit 为 ON 时的 Condition 表达式CovLogicBlockShortCircuit 为 OFF 时的 Condition 表达式

具有 3 个端口的 AND 模块

Condition 'F',端口 3

(in1 && in2 && ~in2)(死逻辑)

(~in2)(活动逻辑)

基于 CovLogicBlockShortCircuit 参数的 MCDC 目标的短路考虑:

模块MCDC 目标CovLogicBlockShortCircuit 为 ON 时的 MCDC 表达式CovLogicBlockShortCircuit 为 OFF 时的 MCDC 表达式

具有 3 个端口的 AND 模块

输入端口 2 为 false 时的输出表达式

(in1 && ~in2)(活动逻辑)

(in1 && ~in2 && in2)(死逻辑)