主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

逻辑运算符级联模式

此示例显示了当逻辑运算符模块位于其他逻辑运算符模块的下游时,Simulink® Coverage™ 如何分析逻辑运算符模块。

示例模型概述

示例模型包含各种模式的级联 Logical Operator 模块。此示例说明了 Simulink Coverage 为了对修正条件/决策覆盖率 (MCDC) 度量进行模型覆盖率分析而识别逻辑运算模块级联的准则。

示例模型包含 Logical Operator 模块级联模式。

open_system('slcoverage_mcdc_logic_cascade');

当您分析 MCDC 模型时,Simulink Coverage 会搜索逻辑操作符模块的级联。当逻辑运算符模块位于其他逻辑运算符模块的下游时,就会发生逻辑级联。当 Simulink Coverage 识别逻辑级联时,它会分析模块组合所表示的整体表达式,而不是单独分析每个模块。如果逻辑运算符模块不是逻辑级联的一部分,那么您只会收到单个模块的 MCDC 结果。

仅当以下条件成立时,Logical Operator 模块才会接收 MCDC 作为逻辑级联的一部分:

  • 模块输入和输出信号都是标量。

  • 模块操作不是 XOR/NXOR

  • 该模块具有多个输入信号(除非其操作不是)

  • 输入信号不会分支到另一个非虚拟模块

点击运行(覆盖率)来仿真模型。仿真完成后,将打开覆盖率详细信息窗格。

sim('slcoverage_mcdc_logic_cascade');

查看第一个级联

点击 And 模块 And_Block

Coverage details for logic block And_Block. The coverage report shows a table for conditions analyzed, a table for execution analyzed, and the MCDC section links to Not_Block.

And_Block 的覆盖率报告显示三种情况,每种情况有两种可能的结果。只有一个结果得到满足。但是,And_Block 没有显示 MCDC 表。发生这种情况是因为 Simulink Coverage 将 And_Block 识别为逻辑级联的一部分。相反,报告中的 MCDC 行链接到代表逻辑级联根的模块 Not_Block。点击链接查看 Not_Block

Coverage details for logic block Not_Block. The coverage report shows a table for conditions analyzed, a table for execution analyzed, and a table for MC/DC analysis.

Not_Block 的覆盖率报告显示了一种情况,但有两种可能的结果。但是,在此模块的覆盖率细节中,有一个 MCDC 分析表。该 MCDC 表显示 And_BlockNot_Block 的逻辑级联组合输出的覆盖率结果。And_Block 表示逻辑运算 C1 && C2 && C3,其中每个输入都是一个布尔值。然后,Not_Block 对此进行否定,因此 Simulink Coverage 分析 MCDC 分析表中的整体表达式 ~(C1 && C2 && C3)。由于仿真期间仅发生了一种条件结果,因此该级联没有令人满意的 MCDC 结果。

查看第二级瀑布

点击 Nor_Block

Coverage details for logic block Nor_Block. The coverage report shows a table for conditions analyzed, a table for execution analyzed, and the MCDC section links to Masked_AND_Block.

And_Block 类似,Nor_Block 显示具有一个满足结果的条件表,但没有 MCDC 分析表。报告的 MCDC 行链接到位于 Masked Subsystem 内部的 Masked_AND_Block。在模型中,点击 Masked Subsystem

第二级联与第一级联是分开的,因为第一级联的输出信号(也是第二级联的输入信号)会分支。如果信号仅分支到虚拟模块,则 MCDC 级联将继续不间断地进行。如果信号分支到非虚拟模块,那么 Simulink Coverage 会将它们视为两个独立的逻辑级联。

Coverage details for logic block Masked_AND_Block. The coverage report shows a table for conditions analyzed, a table for execution analyzed, and a table for MC/DC analysis.

Masked Subsystem 是一个包含 Masked_AND_Block 的子系统。封装子系统模块的第一个输入是与 Nor_Block 输出的虚拟连接。从 MCDC 表中可以看出,这并不妨碍对级联逻辑的分析。Nor_Block 代表逻辑表达式 C1 || C2,而 Masked_AND_Block 将该表达式的输出与第三个布尔值 C3 相结合,得出级联逻辑表达式 ~(C1 || C2) && C3。MCDC 表还显示代表级联逻辑的表达式。

不支持的逻辑运算

点击 Or_Block

Coverage details for logic block OR_Block. The coverage report shows a table for conditions analyzed, a table for execution analyzed, and a table for MC/DC analysis.

覆盖率报告显示此模块的条件表和 MCDC 表。现在点击 XOR_Block

cov-rpt-xor-block.png

覆盖率报告也在此处显示两个分析表。发生这种情况的原因是,级联 MCDC 分析不支持 XOR 和 NXOR 运算。因此,Simulink Coverage 会单独分析这些模块的 MCDC。

点击 Vector_AND_Block 可看到该模块的报告还包含 MCDC 分析表。级联 MCDC 分析不支持逻辑运算符模块的向量输入。

另请参阅

| |

主题