Main Content

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

死逻辑的常见原因

导致模型中出现死逻辑的常见建模模式包括:

当您执行设计错误检测分析时,Simulink® Design Verifier™ 会在结果窗口中报告死逻辑的常见原因。

在分析过程中 Logical Operator 模块短路

Simulink Design Verifier 在分析死逻辑时将逻辑模块视为短路。

例如,在这个模型中,如果In2为假,软件会因为短路而忽略第三个输入。结果窗口将此端口列为死逻辑。参见 逻辑运算短路

An AND block with In1 and In2 as inputs and Out2 as output. The results window shows the dead logic for AND block on right hand side.

模块的条件执行

如果您的模型由SwitchMultiport Switch模块组成,并且条件输入分支执行参数设置为打开,则条件执行通常会导致意外的死逻辑。

考虑这个示例模型,其中 条件输入分支执行 参数设置为 打开 。AND Logical Operator模块是条件执行的,这导致该模块的死逻辑。有关更多信息,请参阅 Conditional input branch execution

参数值视为常量

如果您的模型包含参数,Simulink Design Verifier 默认将这些值视为常量。这可能会导致模型中的逻辑失效。在这些情况下,请考虑配置这些参数以便在分析期间进行调整。

例如,考虑这个模型,其中所有参数都设置为零。这些设置导致Less Than模块的逻辑失效。

Dead logic in the case of Less Than block whose inputs are Add and Add1 and output goes to NOT logical operator.

上游模块

当某个特定模块具有死逻辑时,这通常会导致级联效应,从而导致下游模块具有死逻辑。

考虑上面的示例模型。Less Than模块中的死逻辑导致相应下游模块中的死逻辑。因此,在检查任何下游死逻辑之前检查上游死逻辑通常会有所帮助。

库链接模块

库模块可能写入了防御性条件,但这些条件在某些使用位置是多余的。在某些情况下,这可能会导致死逻辑。参见 排除并证明设计错误检测的目标

信号范围限制

以最小值和最大值为约束的根级Inport模块和测试生成中的Test Condition模块可能会导致死逻辑。例如,考虑 ConditionGreaterThan0 Switch模块,其中第二个 Inport模块的最小范围和最大范围分别为 1 和 100。这导致该子系统中的Switch模块具有死逻辑。

Dead logic result summary for ConditionGreaterThan0 block.

相关主题