主要内容

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

提取子系统进行分析

子系统提取概述

如果您有一个大型模型,以至于减慢了您的分析速度或具有无法实现的目标,您可能需要使用 Simulink® Design Verifier™ 来分析原子子系统或 Stateflow® 原子子图。通过此技术,您可以实现自下而上的方法来分析大型模型,如自下而上的模型分析方法中所述。

当您分析子系统或原子子图时,软件:

  • 将子系统或子图提取到新模型中。

  • 如果需要,可向新创建的模型添加模块,以复制其父模型中子系统或子图的执行上下文。

  • 分析提取的模型并产生结果。

注意

Simulink Design Verifier 软件只能分析原子子系统和原子子图。

有关分析子系统的更多信息,请参阅 为子系统生成测试用例

有关分析原子子图的更多信息,请参阅 分析 Stateflow 原子子图

sldvextract 函数

sldvextract 函数允许您提取子系统和原子子图以进行组件验证。通过提取子系统或原子子图,您可以独立于系统其余部分验证组件,从而可以测试组件算法。有关详细信息,请参阅 什么是组件验证?Functions for Component Verification

提取模型的结构

当您分析子系统或原子子图时,Simulink Design Verifier 会创建一个新模型,其中包含子系统或原子子图,以及与连接到原始子系统的端口相对应的任何输入和输出端口。

软件通过编译原始模型为新模型中的端口分配以下属性:

  • 数据类型

  • 采样率

  • 信号维度

  • 信号范围的最小值和最大值

该软件将新模型命名为 subsystem_name,其中 subsystem_name 是子系统的名称。

接下来的部分提供了 Simulink Design Verifier 如何提取和分析子系统的示例。

分析从全局数据存储读取的子系统

数据存储器是一个存储库,您可以向其中写入数据,也可以从中读取数据,而无需将输入或输出信号直接连接到数据存储器。

您使用 Data Store Memory模块或 Simulink.Signal 对象创建数据存储。Data Store Memory 模块或 Simulink.Signal 对象代表数据存储并指定其属性。每个数据存储必须有一个唯一的名称。

当您分析从子系统外部访问的数据存储中读取数据的子系统时,分析:

  • 向新模型添加 Data Store Memory 模块。

  • 添加写入数据存储的输入端口。由于输入写入数据存储,因此为了进行 Simulink Design Verifier 分析,数据可以具有任何值(在指定的数据类型内)。

  • 如果数据存储指定了最小值和最大值,则这些值将分配给新的输入端口。

以下示例分析了 sl_subsys_fcncall8 示例模型中的子系统:

1.打开 sl_subsys_fcncall8 示例模型:

open_system('sl_subsys_fcncall8');

该模型定义了一个数据存储 A,原子子系统读取器使用 Data Store Read 模块从中读取数据。

2.右键点击 Reader 子系统,然后选择 Design Verifier > 为子系统生成测试

Simulink Design Verifier 日志窗口显示软件将子系统提取到名为 Reader 的新模型中,分析提取的模型,并为您提供要生成的结果的选择。

3.打开软件在 <current_folder>\sldv_output\Reader. 中创建的新阅读器模型

data_stores_ss_extracted_mdl.png

新的 Inport 模块 A 写入数据存储,供新模型中的子系统 Reader 使用。

分析函数调用子系统

函数调用子系统是一个触发子系统,其执行由 C MEX S-Function 内部的逻辑而不是信号的值决定。函数调用子系统始终是原子的。

注意:有关详细信息,请参阅 Implement Function-Call Subsystems with S-Functions

当您分析具有函数调用子系统的模型时,Simulink Design Verifier 会创建一个带有模拟触发器和子系统副本的 Inport 模块的新模型。然后软件会对新模型进行分析。

以下示例分析了 sl_subsys_fcncall2 模型中的函数调用子系统:

1.打开 sl_subsys_fcncall2 示例模型:

open_system('sl_subsys_fcncall2');

2.该模型包含一个名为 Chart 的 Stateflow™ 图,可触发函数调用子系统 f

右键点击 f 子系统并选择 Design Verifier > 为子系统生成测试

软件将子系统提取到一个名为 f0 的新模型,对提取的模型进行分析,并产生结果。

fcn_call_analysis_log_window.png

3.打开软件在 f0 中创建的 <current_folder>\sldv_output\f0 模型。

Inport 模块和新的子系统模块模拟了新 f0 模型中函数调用子系统 f 的触发器。

fcn_call_extracted_model.png

分析全局 Simulink 函数

Simulink® 函数是一个计算单元,当提供一组输入时,它会计算出一组输出。

当您分析 Simulink Function 子系统时,Simulink Design Verifier™ 会创建一个新模型,其中包含 MATLAB Function 模块 _SldvExportFcnScheduler 和子系统的副本。这个 MATLAB Function 模块不定期地调用 Simulink 函数,并由代表 Simulink 函数的输入参量的输入端口驱动。一个额外的 Inport 模块,称为 FcnTriggerPort,其值表示是否在时间步中调用特定函数。

下面的例子分析了 sldvexGlobalSimFcn 模型中的全局 Simulink 函数:

1.打开 sldvexGlobalSimFcn 模型。

open_system('sldvexGlobalSimFcn');

2.右键点击子系统并选择 Design Verifier > 生成子系统测试

软件将子系统提取成新的模型,并对提取的模型进行分析,并给出结果。

3.打开软件在 SimulinkFunctionRunnable0 中创建的新模型 <current_folder>\sldv_output\

Inport 模块 FcnTriggerPort,调用新 SimulinkFunctionRunnable 模型中的 Simulink 函数 SimulinkFunctionRunnable0

global_sim_extracted_model.png