主要内容

银和公益诉讼模拟

银和公益诉讼模拟是什么?

使用嵌入式编码器®,您可以运行software-in-the-loop(银)和processor-in-the-loop(公益诉讼)的模拟模型。这些模拟生成源代码的模型或模型的一部分。SIL仿真编译和运行生成的代码在开发计算机上。公益诉讼模拟交叉编译源代码开发计算机上,然后下载一个目标处理器上运行的目标代码或一个等价的指令集仿真器。

银和公益诉讼模拟,您可以:

  • 测试是否等效数值模型和生成的代码。

  • 观察代码覆盖率。

  • 执行代码的执行概要。

为什么使用硅和公益诉讼

通过硅和公益诉讼,可以在早期测试和修复缺陷。例如,您可以在正常模式模型和测试一个系统组件。然后,您可以重用你的测试套件SIL或公益诉讼仿真运行编译生成的代码。检查数值等价,你比较正常和硅或公益诉讼仿真结果。你不需要离开仿真软件金宝app®环境来测试生成的代码在一个单独的基础设施。

这个表描述的情况下您可以使用硅和公益诉讼。

情况 使用
测试数值之间的等效模型和生成的代码通过重用测试向量为正常模式开发的仿真来验证数值(或遗留)代码生成的输出。看到银/公益诉讼经理验证工作流测试两个等价的模拟(金宝app仿真软件测试) 银和公益诉讼

收集指标生成的代码:

银和公益诉讼

(需要一个IEC认证工具包许可证)。

执行验证和确认活动生成的C / c++代码按照整体软件安全生命周期的需求定义的ISO 26262 - 6, IEC 61508 - 3, IEC 62304,在50128年,在50657年功能安全标准。银的详细信息和公益诉讼的验证活动IEC认证工具包基于模型的设计流程,请参阅参考工作流嵌入式C / c++应用程序(certkitiec_ecoder_workflow.docx / pdf)工件工件的探险家(IEC认证工具包)

银和公益诉讼

(需要一个做资格工具包许可证)。

测试集成过程的输出满足相关目标- 178 c和- 333做安全标准。有关更多信息,请参见测试输出的集成过程(做资格工具包)。这些信息是可用的基于模型的设计流程做- 178 c(qualkitdo_do178_workflow.pdf)工件工件的探险家(做资格工具包)

银和公益诉讼
没有目标硬件,方便替代公益诉讼。

与目标硬件,例如,一个评估板或指令集仿真器:

  • 核实有针对性的代码的行为,例如,代码替换优化和遗留代码。看到什么是代码替换?代码替换定制是什么?

  • 优化代码的执行速度和内存占用。在这个表中,看到信息收集分析和执行堆栈分析指标。

  • 调查的影响和优化编译器设置,例如,偏离ANSI®C溢出的行为。

正常仿真技术不占硬件强加的限制和要求,如有限的内存资源或有针对性的优化的代码的行为。


关于公益诉讼运行模拟具体目标的信息,明白了示例自定义目标

公益诉讼

请注意

银和公益诉讼仿真模式并非设计用于减少模型模拟。如果你想加快您的模型的仿真,使用快速加速模式。有关更多信息,请参见加速度是什么?

银和公益诉讼模拟如何工作的呢

在硅或公益诉讼仿真、代码生成模型顶部或模型的一部分。银,这段代码被编译和执行在您的开发计算机。公益诉讼,交叉编译代码为目标硬件和目标处理器上运行。

刺激信号通过一个通信信道,仿真软件发送的代码在您的计算机上或目标处金宝app理器的每个取样间隔模拟。

  • 对于高级模型,仿真软件使用刺激信号金宝app从基地或模型的工作区。

  • 如果你有指定的模型来模拟在硅或公益诉讼模式,然后是模型的一部分仍在仿真软件和代码不是为这部分模型的生成。金宝app通常,您配置模型提供的这部分测试向量的软件执行硬件。这部分的模型可以代表其他部分的算法或算法运行的环境。

当你的电脑或目标处理器接收信号模型,处理器执行SIL或公益诉讼算法示例步骤。金宝appSIL或公益诉讼算法返回的输出信号通过通信信道模型计算在这一步。金宝app完成一个样品周期的仿真,仿真软件进行到下一个取样间隔。金宝app这个过程不断重演,模拟的进展。银和公益诉讼模拟不实时运行。在每个样本期间,模型和对象代码的I / O数据金宝app交换。

银和公益诉讼的模拟比较

银或公益诉讼类型的模拟 发生了什么在SIL模拟 发生了什么在公益诉讼模拟

指定通过:

  • 顶级模特模拟模式

  • 模型模拟模式参数

  • 发展电脑上测试行为生成的源代码。模拟不目标硬件测试代码编译,因为代码编译开发计算机(比目标不同的编译器和处理器体系结构)。

  • 开发计算机上生成的生产代码编译和执行单独的进程,独立于MATLAB®的过程。

  • 执行主机/主机和nonreal时间。

  • 测试对象的代码,你打算在生产部署真正目标硬件或一个指令集仿真器。

  • 开发计算机上,生产代码生成交叉编译的目标。目标代码下载和目标处理器上执行或指令集仿真器。

  • 执行主机/目标和nonreal时间。

使用硅或公益诉讼阻止创建子系统。
  • 通过功能仿真运行汇编对象代码。功能与目标代码开发电脑上执行作为独立的应用程序。银块执行独立的MATLAB程序。

  • 执行主机/主机和nonreal时间。

  • 模拟运行交叉编译开发电脑上通过s函数对象代码。功能与目标代码执行目标处理器上作为独立的应用程序或指令集模拟器。

  • 执行主机/目标和nonreal时间。

代码接口SIL和公益诉讼

当您执行生成独立的代码,例如,一个顶级模特或右键单击子系统构建为一个单一的可部署组件。你可以编译和链接独立的代码放入一个独立的可执行或与其他代码集成。独立的代码接口的更多信息,看一下配置生成的C函数入口点函数接口模型

当你引用的模型层次结构生成代码,软件生成独立的可执行代码的模型和库模块称为顶部模型参考目标为每个引用的模型。当代码执行时,独立的可执行文件调用应用模型参考目标计算参考模型输出。有关更多信息,请参见构建模型参考目标

将生成的代码与遗留代码,使用独立的代码,因为独立的代码接口文档。

请注意

银和公益诉讼模拟不提供直接支持自定义代码接口。金宝app你可以将这些接口合并到模型作为一个功能,例如,使用遗留代码的工具,金宝apps函数生成器,或者手写代码。然后,您可以验证自定义代码通过使用硅和公益诉讼模拟。

这个表提供了银和公益诉讼模拟生成的接口。

银/公益诉讼模拟 代码接口
顶级模特

银/公益诉讼模拟生成独立的代码接口。如果代码存在,模拟电话的独立代码模型。如果代码不存在,模拟生成独立的代码。

模型

如果你设置代码接口块参数顶级模特银/公益诉讼模拟生成独立的代码接口。模拟电话如果它存在的独立代码模型。否则,模拟生成独立的代码通过使用slbuild ('模型”)命令。

如果你设置代码接口块参数模型参考银/公益诉讼模拟生成模型参考代码接口。仿真模型参考目标模型如果它存在。否则,模拟生成模型参考目标通过使用slbuild ('模型”、“ModelReferenceCoderTarget”)命令。

银或公益诉讼块 代码块使用独立的接口。

调度的考虑

信息
代数循环

有代数循环发生在硅和公益诉讼但不以正常模式模拟仿真:

  • 单输出/更新功能在代码生成优化可以介绍代数循环,因为选择了直接通过组合输出引线和更新功能。

    单输出/更新功能不兼容最小化代数循环出现(在子系统参数对话框配置参数>模型参考窗格)。最小化代数循环出现允许代码生成分区消除代数环的生成的代码之间的输出和更新功能,避免直接引线。

  • 如果你为一个虚拟子系统生成的代码,代码生成将子系统视为原子并生成相应的代码。生成的代码可以改变您的模型的执行行为,例如,通过应用代数循环,并介绍仿真行为的不一致。

    使一致的仿真模型和执行行为,宣布虚拟子系统原子子系统。

有关更多信息,请参见:

在反馈循环导出功能

如果你的模型函数调用导出一个子系统,子系统和上下文相关的输入(例如,反馈信号),银/公益诉讼的结果模拟生成的代码和正常模式仿真模型的结果可以是不同的。一种方法使硅/公益诉讼和正常模式模拟产生相同的结果函数调用反馈锁在你的模型。你可以成为上下文无关上下文相关的输入。

如果你设置上下文相关的输入配置参数警告,嵌入式编码器生成一个警告,表明出口函数调用上下文相关的输入子系统。

有关更多信息,请参见:

进口数据和额外的生成的代码

银或公益诉讼模拟不修改从模型生成的代码。如果你使用进口数据,银或公益诉讼所需模拟生成额外的代码支持SIL或公益诉讼目标应用程序的编译和链接。金宝app产生的额外代码对应接口,在模型中指定。

本节描述:

  • 对进口数据,当硅或公益诉讼模拟定义存储,当你必须定义存储。

  • 接口的SIL或公益诉讼模拟生成额外的代码

进口硅或公益诉讼中的数据模拟

在硅和公益诉讼的模拟,可以使用信号,参数和数据存储与进口指定存储类数据定义。模拟为进口定义存储相关数据:

  • 信号在根级别的组件(在I / O边界)。

  • 参数的基本工作空间或一个数据字典。对模型中参数的工作区:

    • 顶级模特SIL /公益诉讼和硅/公益诉讼块模拟定义存储。

    • 模型块硅/公益诉讼模拟不定义存储。您必须定义存储和指定初始值与MATLAB相匹配的值。

  • 全球数据存储。

银和公益诉讼模拟不定义其他进口数据的存储。例如,模拟不定义存储进口相关的数据:

  • 内部信号(而不是在I / O边界)。注意,如果数据结构内部信号的进口通过使用指针,模拟定义存储。

  • 本地数据存储。

在这些情况下,通过自定义代码定义存储包括被测试的组件或通过公益诉讼rtw.pil.RtIOStreamApplicationFrameworkAPI。

另请参阅可调参数和硅/公益诉讼

接口,产生额外的生成的代码

此表描述场景SIL或公益诉讼仿真生成额外的代码接口。

场景 细节
GetSet定制的存储类

银和公益诉讼模拟支持金宝appGetSet自定义存储类。银/公益诉讼测试工具提供了C的定义得到函数中使用模拟。有关更多信息,请参见通过与存储类GetSet函数访问数据

自定义类型的存储类其他

使硅和公益诉讼支持自定义存储类金宝app类型被设置为其他,创建一个自定义的自定义属性类存储类,并将自定义属性类与一个布尔属性,金宝appSupportSILPIL,设置为真正的

classdef CSCOtherAttributes <仿金宝app真软件。CustomStorageClassAttributes properties(PropertyType = 'logical scalar') SupportSILPIL = true; end end

关于自定义属性的更多信息,请参阅通过编写TLC代码进一步定制生成的代码精确控制数据表示通过编写TLC存储类的代码

构建银或公益诉讼程序界面,代码生成器调用DataAccessClassAccess功能相关的定制TLC文件来获得所需的信息。代码生成器在构建构件存储提取的信息建立文件夹。

为一个自定义存储类,不是分组:

  • 代码生成器的电话DataAccess请求参数的值定义,声明,布局,内容,地址,或

  • 代码生成器使用返回的字符串DataAccess(记录,“定义”、“”、“”)定义SIL或公益诉讼程序中的变量如果其中一个是正确的:

    • 信号或参数有一个进口数据范围。

    • 模型使用一个模型参考代码接口。

    • 模型使用一个顶级模型代码接口,EnableDataOwnership,老板属性自定义存储类并不是空的,不等于当前模型的名称

  • 代码生成器使用返回的字符串DataAccess(记录,“声明”,“”,“”)宣布SIL或公益诉讼程序中的变量如果下面是真的:

    • 模型使用一个顶级模型代码接口。

    • 信号或参数使用出口存储类。

    • EnableDataOwnership,或EnableDataOwnership老板属性自定义存储类名称是空的或等于模型。

    • 代码包装配置中声明的变量不是模型。h或所包含的头文件模型。h

为一个自定义存储类分组:

  • 代码生成器的电话DataAccess请求参数的值布局,地址,或

  • 代码生成器的电话ClassAccess请求观点的价值groupTypeDeclDefn

  • 您必须提供分组类型(结构体)定义和走读生分组变量的声明如果其中一个是正确的:

    • 信号或参数有一个进口数据范围。

    • 模型使用一个模型参考代码接口。

    • 模型使用一个顶级模型代码接口,EnableDataOwnership,老板属性自定义存储类并不是空的,不等于当前模型的名称

    提供相关的头文件中定义和声明自定义存储类使用HeaderFile包括通过属性或自定义代码模型。h文件。定义变量SIL或公益诉讼程序,代码生成器使用返回的字符串ClassAccess(记录,“groupTypeDeclDefn”)

  • 静态初始化可以假设一个订单结构体元素,不同于生成的订单如果数据范围出口。当代码生成器的查询ClassAccess(记录,“groupTypeDeclDefn”),它暂时覆盖数据初始化自定义存储类的属性值没有一个

确定硅或公益诉讼程序可以访问该变量的代码地址,代码生成器使用返回的元素DataAccess(记录,“布局”,“”,“”)。创建应用程序中的功能,转移输入或输出端口,可调参数,或全球开发计算机之间的数据存储内存值和目标硬件、代码生成器使用的输出:

  • DataAccess(记录,“地址”,idx雷姆)如果返回的第一个元素标量,向量,row-mat,或col-mat

  • DataAccess(记录,“内容”,idx雷姆)(或DataAccess(记录,“套”,idx雷姆)如果返回第一个元素)其他

代码生成器的假设row-matcol-mat矩阵,分别存储在存储格式。数组的假设是独立布局模型的其余部分。代码生成器假设如果数组存储自定义实现的存储类的布局不同于其他模型,TLC文件与自定义存储相关文件执行所需的转换。

您可以构建定制的TLC文件关联到一个自定义类型的存储类其他执行其他功能(除了返回所请求的代码片段)。例如,直接写一个自定义文件或调用MATLAB函数变化的状态基本工作空间。如果你不总是想当执行这些功能DataAccessClassAccess被称为,使用LibIsAccessingCustomDataForSILPIL(记录)TLC函数来区分目标代码生成和代码片段的要求建设银或公益诉讼程序。例如:

…% "内容" %如果! LibIsAccessingCustomDataForSILPIL(记录)% matlab functionWithSideEffects () % endif %返回LibDefaultCustomStorageContents(记录、idx雷姆)…

另请参阅其他自定义存储类的限制

AUTOSAR运行时环境

您可以使用顶级模特模型块硅/公益诉讼和硅/公益诉讼块模拟AUTOSAR软件组件的执行基于模型的测试。AUTOSAR的软件生成的代码链接软件组件与一个基本组件的AUTOSAR运行时环境(RTE)来创建一个测试应用程序。这个应用程序测试AUTOSAR API调用由AUTOSAR软件组件。

对于一个顶级AUTOSAR软件组件,其中包含引用的模型,您可以运行顶级模特模型块(代码接口设置为顶级模特)SIL或公益诉讼模拟。模拟的软件:

  • 编译之前引用的模型,生成AUTOSAR RTE头文件。

  • 提供了参考模型编译RTE包括路径。

您还可以运行模型块(代码接口设置为模型参考)SIL或公益诉讼对参考模型模拟在顶级AUTOSAR SWC。在这种情况下,在您运行一个模拟之前,您必须构建父组件生成RTE头文件。如果你不建立父组件,银或公益诉讼仿真失败。

相关的话题