主要内容

使用模型切片器调试整数溢出设计错误检测

此示例展示如何使用模型切片器在Simulink®模型中调试整数溢出设计错误。

先决条件

本示例使用以下产品演示调试设计错误检测违规:2022世界杯八强谁会赢?

  • Simulink设计验证器™

  • Simulink Check™(模型切片机)

例子

1.开放模式sldvdemo_design_error_detection

open_system (“sldvdemo_design_error_detection”);

2.开放Simulink设计验证器点击应用程序>设计验证器

3.在“设计验证器”页签中,单击检测设计错误.Simulink Design Verifier对模型进行分析,并将结果显示在结果总结窗口。

该模型突出显示了失败目标所在的子系统。

4.开放控制器子系统,并选择其中一个以红色突出显示的块。

5.在“结果”窗口中,单击调试使用Model切片器调试违例。或者,在“设计验证器”选项卡中单击审查结果>使用切片器进行调试使用Model切片器调试违例。

在单击任意一个入口点进行调试时,在模型上进行以下设置:

  • 目标失败的选定块被添加为Model Slicer的起始点。

  • 模型突出显示了负责失败目标的部分。

  • 设计模型被模拟并在违反时暂停。

6.通过检查端口标签对模型进行调试和分析。

提示:单击Sum块的输出信号线,启用该块的端口值标签。

您可以观察到,输入变量的和应该得到一个非零数。

7.研究和块的输入和输出数据类型。

这里,数据类型转换导致整数溢出。输入的数据类型为ufix16_En8,其最大值为255.9961,而输出块的数据类型为sfix16_En8,最大值为127.9961。在反例中,值介于这两个值之间。当和块(没有饱和)首先将输入值转换为其输出类型,然后执行算术操作时,就会发生溢出。

验证

要确认已解决整数溢出错误,请执行设计验证器选项卡上,单击检测设计错误.分析完成后,软件报告所有目标都是有效的。

额外的功能

您可以使用本例中演示的工作流使用Model切片器调试其他Design Error Detection违规。以下是支持的设计错误:

  • 除以0

  • 整数溢出

  • 非finate和NaN(非数字)浮点值

  • 指定的最小值和最大值违反

  • 数据存储访问违规

  • 指定块输入范围违规

Baidu
map