Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

检测控制器模型中的设计错误

要在验证过程的早期检测模型中隐藏的设计错误,可以使用设计错误检测分析。本教程演示如何执行设计错误检测分析、查看分析结果,然后对识别到的设计错误进行修复。

假设一个控制器具有三个传感器输入:传感器 A、传感器 B 和传感器 C。控制器算法根据以下方程运行:

control_logic.png

该算法被建模为:

design_error_detection_model.png

按照以下步骤执行设计错误检测分析:

准备设计错误检测模型

1.打开模型 sldvexControllerIntegerOverflow:

sldvexControllerIntegerOverflow

2.在 Design Verifier 选项卡的模式部分中,选择设计错误检测

3.点击错误检测设置。在“配置参数”对话框的 Design Verifier > 设计错误检测窗格上,选择要执行的检查。

configuration_dialog_ded.png

执行设计错误检测分析

要执行设计错误检测分析,请在 Design Verifier 选项卡中点击检测设计错误。软件会分析模型中的设计错误,并在“结果”窗口中显示结果。结果指示,六个目标中有三个目标被证伪。

design_errors_results_summary.png

查看分析结果

您可以通过在模型上突出显示结果并查看分析报告来查看分析结果。

在模型上突出显示分析结果

Design Verifier 选项卡的查看结果部分中,点击在模型中突出显示

1.选择 Sum 模块。“结果”窗口显示 Sum 模块的整数溢出目标。

overflow_errors_inspector.png

2.要调试整数溢出错误,请点击查看反例。框架模型和 Signal Editor 模块会打开。

overflow_test_case.png

SensorA 的输入值为 128SensorB 的输入值为 172 时,Sum 模块输出溢出。Sum 模块的累加器数据类型设置为不正确的整数值 uint8,这会导致下游 Divide 模块出现溢出错误和除以零错误。

查看分析报告

要查看 HTML 报告,请在查看结果中点击 HTML 报告。“设计错误检测目标”部分列出了每个模型项目的目标及其描述。

design_error_report.png

修复设计错误

在此示例中,设计错误检测分析发现模型中存在整数溢出和除以零错误。这些错误是由于整数数据类型不匹配导致的。

要修复错误,请将累加器数据类型和输出数据类型更改为 uint16,以处理可能的信号值范围。选择 Sum 模块,并将累加器数据类型输出数据类型设置为 uint16。当您重新运行设计错误检测分析时,“结果摘要”窗口会报告 6/6 个目标均有效。当您对 Sum 模块的测试用例进行仿真时,可以观察到测试用例解决了错误。

另请参阅