死逻辑的常见原因
导致模型中出现死逻辑的常见建模模式包括:
当您执行设计错误检测分析时,Simulink® Design Verifier™ 会在结果窗口中报告死逻辑的常见原因。
在分析过程中 Logical Operator 模块短路
Simulink Design Verifier 在分析死逻辑时将逻辑模块视为短路。
例如,在这个模型中,如果In2
为假,软件会因为短路而忽略第三个输入。结果窗口将此端口列为死逻辑。参见 逻辑运算短路 。
模块的条件执行
如果您的模型由Switch或Multiport Switch模块组成,并且条件输入分支执行参数设置为打开,则条件执行通常会导致意外的死逻辑。
考虑这个示例模型,其中 条件输入分支执行 参数设置为 打开 。AND Logical Operator模块是条件执行的,这导致该模块的死逻辑。有关更多信息,请参阅 Conditional input branch execution 。
参数值视为常量
如果您的模型包含参数,Simulink Design Verifier 默认将这些值视为常量。这可能会导致模型中的逻辑失效。在这些情况下,请考虑配置这些参数以便在分析期间进行调整。
例如,考虑这个模型,其中所有参数都设置为零。这些设置导致Less Than模块的逻辑失效。
上游模块
当某个特定模块具有死逻辑时,这通常会导致级联效应,从而导致下游模块具有死逻辑。
考虑上面的示例模型。Less Than模块中的死逻辑导致相应下游模块中的死逻辑。因此,在检查任何下游死逻辑之前检查上游死逻辑通常会有所帮助。
库链接模块
库模块可能写入了防御性条件,但这些条件在某些使用位置是多余的。在某些情况下,这可能会导致死逻辑。参见 排除并证明设计错误检测的目标 。
信号范围限制
以最小值和最大值为约束的根级Inport模块和测试生成中的Test Condition模块可能会导致死逻辑。例如,考虑 ConditionGreaterThan0 Switch模块,其中第二个 Inport模块的最小范围和最大范围分别为 1 和 100。这导致该子系统中的Switch模块具有死逻辑。