主要内容

绑定数组访问示例模型检测

这个例子展示了如何检测绑定数组访问的错误和回顾分析结果。在sldvdemo_array_bounds例模型,ComputeIndex MATLAB功能块使用输入信号的值来确定指标的最低范围minIdx和最大maxIdx。ArrayOp_Matlab, ArrayOp_MAL, ArrayOp_SF块之间使用的一组整数指数minIdxmaxIdx访问数组元素和执行数组操作。

步骤1:打开模型

在命令提示符中,输入:

open_system (“sldvdemo_array_bounds”);

第二步:执行设计错误检测分析

分析选择模型预配置的绑定数组访问错误检测。要查看这些选项,在模型编辑器中,双击金宝app视图选项按钮。

执行设计错误检测分析,在模型编辑器中,双击金宝app运行按钮。Simu金宝applink仿真®设计校验™结果总结窗口打开时显示的进度分析。当分析完成时,突出显示的示例模型分析结果。

步骤3:检查分析结果

查看分析结果在图,双击ArrayOp_SF图块,用红色突出显示。

金宝app仿真软件设计验证器检测到的索引绑定错误发生在数组中u在国家差异。

步骤4:创建利用和模拟测试用例

点击第一个查看测试用例链接。金宝app仿真软件设计验证器创建和打开一个包含测试用例,利用模型演示的绑定数组访问错误。在信号生成器对话框中,单击开始模拟利用模型模拟与测试用例2。

仿真停止进入状态之前Diff。Stateflow®调试器打开。显示以下错误:

试图访问索引4 u较小的尺寸大小。有效指数范围是0到3。这个错误将停止仿真。国家“Diff”图表的sldvdemo_array_bounds_harness /测试单元(抄袭sldvdemo_array_bounds) / ArrayOp_SF”: y = u (maxIdx) - u (minIdx);

保持Stateflow®在这个断点调试器打开。在sldvdemo_array_bounds_harness模型中,把你的光标在Diff状态数据值在这个仿真断点。

使用测试用例2输入信号值,ComputeIndex MATLAB函数块决定数组下标的范围是1:4。从索引与MATLAB的语法是一致的,所以这些指数是有效ArrayOp_Matlab MATLAB功能块和ArrayOp_MAL Stateflow®图表。

的ArrayOp_SF Stateflow®图表使用C作为动作语言,它不支持从索引。金宝app因此,1:4不是一个有效的索引范围的数组访问图表。有效的索引范围的数组访问图表0:3,作为报告的错误消息。当maxIdx或minIdx等于4,一个绑定数组访问的错误发生在ArrayOp_SF图块。从零开始的索引支持的更多信息,参见金宝appMATLAB和C之间的差异作为动作语言的语法(Stateflow)