主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

Stateflow 软件功能的支持限制

Simulink® Design Verifier™ 不支持以下 Stateflow® 软件功能。避免在您分析的模型中使用这些不受支持的功能。

ml 命名空间运算符、ml 函数、ml 表达式

该软件不支持调用 MATLAB® 函数或访问 MATLAB 工作区变量,但 Stateflow 软件允许。请参阅Access MATLAB Functions and Workspace Data in C Charts (Stateflow)

C 或 C++ 运算符

该软件支持自定义代码中的 sizeof 运算符,Stateflow 软件允许使用该运算符。

C 数学函数

该软件支持调用以下 C 数学函数:

  • abs

  • ceil

  • fabs

  • floor

  • fmod

  • labs

  • ldexp

  • pow(仅适用于整数指数)

该软件不支持调用其他 C 数学函数,但 Stateflow 软件允许调用。如果启用了自动插桩(默认情况下),软件会在分析过程中消除这些不受支持的函数。

有关 Stateflow 中的 C 数学函数的信息,请参阅 在 C 语言状态图中调用 C 库函数 (Stateflow)

注意

有关自动插桩的详细信息,请参阅 使用自动插桩处理不兼容问题

调用子图外导出的图形函数的原子子图

在测试生成分析中,软件支持调用图形函数的原子子图,但当存在其他依赖关系时不支持原子子图的提取和分析。

注意

有关导出函数的信息,请参阅 Export Stateflow Functions for Reuse (Stateflow)

原子子图输入和输出映射

如果原子子图中的输入或输出映射到不同范围的图级数据,则该软件不支持包含该原子子图的图。

对于原子子图输入,当输入映射到输出、本地或参数范围的图级数据时,适用这种不兼容性。对于原子子图输出,当输出映射到本地范围的图级数据时,会出现这种不兼容性。

递归和循环行为

该软件不支持递归函数,递归函数是指一个函数直接调用自身或通过另一个函数调用间接调用自身。Stateflow 软件允许您使用图形函数实现递归。

此外,该软件不支持 Stateflow 软件允许您使用事件广播和函数调用的组合来实现的递归。

注意

有关避免 Stateflow 图中递归的信息,请参阅 Resolve Unintended Recursive Behavior (Stateflow)

Stateflow 软件还允许您创建循环行为,其中一系列步骤会无限重复。如果您的模型中有具有周期性行为的图,软件将无法对其进行分析。

注意

有关 Stateflow 图中周期性行为的信息,请参阅 检测循环行为 (Stateflow)

但是,您可以修改具有周期性行为的图以使其兼容,如下例所示。

下图创建了循环行为。状态 A 调用状态 A1,状态 A1 将 Clear 事件广播到状态 B,状态 B 调用状态 B2,状态 B2 将 Set 事件广播回状态 A,从而引起循环行为。

如果将 send 函数调用更改为使用定向事件广播,以便 Set 和 Clear 事件分别直接广播到状态 B1 和 A1,则循环行为就会消失,软件可以分析模型。

注意

有关定向事件广播的好处的信息,请参阅 广播局部事件以同步并行状态 (Stateflow)

自定义 C/C++ 代码

如果您的模型由自定义 C/C++ 代码组成,Simulink Design Verifier 支持基于以下设置的分析:

  • 如果您启用自定义代码分析选项。

  • 如果启用导入自定义代码和自定义代码分析选项,该软件将支持自定义 C/C++ 代码进行分析。有关详细信息,请参阅 Import custom codeEnable custom code analysis

  • 如果启用导入自定义代码选项并且自定义代码分析选项设置为 Off,则该模型适合分析,但在分析期间对自定义代码的调用会被桩件。

  • 如果将导入自定义代码选项设置为 Off,则不支持自定义代码,并且模型不适合进行分析。

带有文字字符串参量的文本函数

该软件不支持 Stateflow 图中的文本函数的文字字符串参量。

包含端口的 Stateflow

该软件不支持包含入口或出口端口的 Stateflow 图的导出函数和子系统构建。