使用模型切片器调试整数溢出设计错误检测
此示例显示如何使用模型切片器调试 Simulink® 模型中的整数溢出设计错误。
前提条件
此示例使用以下产品来演示如何调试设计错误检测违规:
Simulink Design Verifier™
Simulink Check™(模型切片机)
示例
1.打开模型 sldvdemo_design_error_detection。
open_system('sldvdemo_design_error_detection');

2.通过点击 App > Design Verifier 打开 Simulink Design Verifier。
3.在 Design Verifier 选项卡中,点击检测设计错误。Simulink Design Verifier 分析模型并在结果摘要窗口中显示结果。
该模型突出显示了失败目标所在的子系统。

4.打开 Controller 子系统并选择以红色突出显示的任一模块。
5.在结果窗口中,点击调试以使用模型切片器调试违规行为。或者,在“Design Verifier”选项卡中,点击查看结果 > 使用切片器调试,以使用模型切片器调试违规行为。

点击任一调试入口点时,模型上将完成以下设置:
选定的具有失败目标的模块将被添加为模型切片器的起点。
该模型以导致目标失败的切片进行突出显示。
设计模型在违反规定时进行仿真并暂停。
6.通过检查端口标签来调试和分析模型。
提示:点击 Sum 模块的输出信号线以启用该模块的端口值标签。

您可以观察到输入变量的总和应该是一个非零数字。
7.调查求和模块的输入和输出数据类型。

这里,数据类型转换导致整数溢出。输入的数据类型为 ufix16_En8,其最大值为 255.9961,而输出模块的数据类型为 sfix16_En8,其最大值为 127.9961。在反例中,该值介于这两个值之间。当求和模块(没有饱和度)首先将输入值转换为其输出类型,然后执行算术运算时,就会发生溢出。
验证
要确认整数溢出错误已解决,请在 Design Verifier 选项卡中点击检测设计错误。分析完成后,软件会报告所有目标均有效。
附加功能
您可以使用本示例中演示的工作流程来使用模型切片器调试其他设计错误检测违规。以下是支持的设计错误:
除以零
整数溢出
非有限和 NaN(非数字)浮点值
指定的最小值和最大值违规
数据存储区访问冲突
指定的模块输入范围违规