SIL和PIL模拟
什么是SIL和PIL模拟?
使用嵌入式编码器®,您可以运行模型的软件在环(SIL)和处理器在环(PIL)模拟。这些模拟生成顶层模型或部分模型的源代码。SIL模拟在开发计算机上编译并运行生成的代码。PIL模拟在开发计算机上交叉编译源代码,然后下载目标代码并在目标处理器或等效的指令集模拟器上运行。
使用SIL和PIL模拟,您可以:
测试您的模型和生成的代码在数值上是否相等。
观察代码覆盖率。
执行代码执行分析。
为什么使用SIL和PIL
通过SIL和PIL,您可以在早期进行测试并修复缺陷。例如,您可以在正常模式下建模和测试系统组件。然后,您可以在运行已编译生成代码的SIL或PIL模拟中重用您的测试套件。为了检查数值等价性,您可以比较正常和SIL或PIL模拟结果。你不必离开Simulink金宝app®环境在单独的基础设施上测试生成的代码。
该表描述了可以使用SIL和PIL的情况。
情况 | 使用 |
---|---|
通过重用为正常模式模拟开发的测试向量来测试模型和生成代码之间的数值等效性,以验证生成(或遗留)代码的数值输出。看到SIL/PIL经理验证流程而且测试两个模拟是否等价(金宝app仿真软件测试) | SIL和PIL |
为生成的代码收集度量:
|
SIL和PIL |
(需要一个IEC认证套件许可证)。 根据ISO 26262-6、IEC 61508-3、IEC 62304、EN 50128和EN 50657功能安全标准所定义的整个软件安全生命周期的要求,对生成的C/ c++代码执行验证和验证活动。有关SIL和PIL验证活动的详细信息,请参阅IEC认证套件基于模型的设计工作流,请参见嵌入式C/ c++应用程序参考工作流( |
SIL和PIL |
(需要一个DO资格套件许可证)。 测试集成过程的输出,以满足DO-178C和DO-333安全标准中的相关目标。有关其他信息,请参见集成过程输出的测试(民政事务处资历套件).此信息也可在基于模型的DO-178C设计工作流( |
SIL和PIL |
没有目标硬件,获得一个方便的PIL替代方案。 | 银 |
对于目标硬件,例如评估板或指令集模拟器:
普通的模拟技术不考虑硬件施加的限制和要求,例如有限的内存资源或特定于目标的优化代码的行为。 有关在特定目标上运行PIL模拟的信息,请参见自定义目标示例. |
公益诉讼 |
请注意
SIL和PIL仿真模式并不是为了减少模型仿真时间而设计的。如果您想加快模型的模拟速度,请使用快速加速模式。有关更多信息,请参见什么是加速度?.
SIL和PIL模拟如何工作
在SIL或PIL模拟中,为顶部模型或模型的一部分生成代码。使用SIL,这些代码将在开发计算机上编译和执行。使用PIL,代码针对目标硬件进行交叉编译,并在目标处理器上运行。
通过通信通道,Simulink为模拟的每个采样间隔向计算机或目标处金宝app理器上的代码发送刺激信号。
对于顶级模型,Simulink使用金宝app来自基础或模型工作空间的刺激信号。
如果您只指定了模型的一部分以SIL或PIL模式进行模拟,那么模型的一部分将保留在Simulink中,并且不会为模型的这一部分生成代码。金宝app通常,您配置模型的这一部分,为在硬件上执行的软件提供测试向量。模型的这一部分可以表示算法的其他部分或算法运行的环境。
当您的计算机或目标处理器接收到来自Simulink的信号时,处理器对一个示例步骤执行SIL或PIL算法。金宝appSIL或PIL算法将在此步骤中计算的输出信号通过通信通道返回给Simulink。金宝app模拟完成一个采样周期,Simulink继续进行下一个采样间隔。金宝app这个过程不断重复,模拟继续进行。SIL和PIL模拟不能实时运行。在每个采样周期中,Simulink与目标代码交金宝app换I/O数据。
SIL和PIL模拟的比较
SIL或PIL模拟的类型 | SIL模拟中发生了什么 | PIL模拟中发生了什么 |
---|---|---|
指定通过:
|
|
|
使用从子系统创建的SIL或PIL块。 |
|
|
SIL和PIL的代码接口
例如,当您为单个可部署组件执行顶层模型或右键单击子系统构建时,您将生成独立代码。您可以编译独立代码并将其链接到独立可执行文件中,或者将其与其他代码集成。有关独立代码接口的详细信息,请参见为模型入口点函数配置生成的C函数接口.
当您为引用的模型层次结构生成代码时,软件将为顶层模型和称为的库模块生成独立的可执行代码模型参考目标对于每个引用的模型。当代码执行时,独立的可执行文件调用适用的模型引用目标来计算引用的模型输出。有关更多信息,请参见构建模型参考目标.
要将生成的代码与遗留代码集成,请使用独立代码,因为独立代码接口有文档。
请注意
SIL和PIL模拟不提供对定制代码接口的直接支持。金宝app您可以将这些接口作为s函数合并到Simulink中,例如,使用遗留代码工具,金宝apps函数生成器,或手写代码。然后,您可以使用SIL和PIL模拟来验证定制代码。
该表提供了SIL和PIL模拟生成的接口。
银/公益诉讼模拟 | 代码接口 |
---|---|
顶级模特 | SIL/PIL模拟生成独立的代码接口。如果该代码存在,则模拟调用该模型的独立代码。如果该代码不存在,模拟将生成独立代码。 |
模型块 | 如果你设置代码接口块参数到 如果你设置代码接口块参数到 |
SIL或PIL块 | 该块使用独立代码接口。 |
调度的考虑
项 | 信息 |
---|---|
代数循环 | 在SIL和PIL模拟中出现了代数循环,但在普通模式模拟中没有:
有关更多信息,请参见: |
反馈循环中的导出函数 | 如果您的模型具有函数调用子系统,而您导出的子系统具有上下文依赖的输入(例如,反馈信号),那么使用生成的代码进行SIL/PIL模拟的结果与模型的正常模式模拟的结果可能不同。使SIL/PIL和正常模式模拟产生相同结果的一种方法是使用函数调用反馈锁存器模型中的块。您可以使依赖于上下文的输入变得与上下文无关。 如果你设置上下文相关的输入配置参数为 有关更多信息,请参见: |
导入的数据和额外生成的代码
SIL或PIL模拟不修改从模型生成的代码。如果使用导入的数据,SIL或PIL模拟将生成支持编译和链接SIL或PIL目标应用程序所需的额外代码。金宝app额外生成的代码对应于您在模型中指定的接口。
本节介绍:
对于导入的数据,当SIL或PIL模拟定义存储时以及当您必须定义存储时。
SIL或PIL模拟为其生成附加代码的接口
SIL或PIL模拟中导入的数据
在SIL和PIL模拟中,您可以使用信号、参数和数据存储,它们用导入的数据定义指定存储类。模拟定义了与以下相关的导入数据的存储:
组件根级的信号(在I/O边界上)。
基本工作区或数据字典中的参数。对于模型工作区中的参数:
顶级模型SIL/PIL和SIL/PIL块模拟定义存储。
模型block SIL/PIL模拟不定义存储。必须定义存储并指定与MATLAB值匹配的初始值。
全局数据存储。
SIL和PIL模拟不定义其他导入数据的存储。例如,模拟没有定义导入数据的存储,与以下相关:
内部信号(不在I/O边界上)。请注意,如果内部信号的数据位于通过使用指针导入的结构中,则模拟定义存储。
本地数据存储。
在这些情况下,通过被测试组件所包含的自定义代码或通过PIL定义存储rtw.pil.RtIOStreamApplicationFramework
API。
另请参阅可调参数和SIL/PIL.
产生额外生成代码的接口
该表描述了SIL或PIL模拟为接口生成额外代码的场景。
场景 | 细节 |
---|---|
GetSet 自定义存储类 |
SIL和PIL模拟支持金宝app |
类型的自定义存储类其他 |
为其中的自定义存储类启用SIL和PIL支持金宝app类型设置为 Simulink. classdef CSCOtherAtt金宝appributesCustomStorageClassAttributes properties(PropertyType = 'logical scalar') SupportSILPIL = true; end end 有关自定义属性的详细信息,请参见通过编写TLC代码进一步定制生成的代码而且通过编写TLC代码对存储类的数据表示进行精细控制. 要构建SIL或PIL应用程序接口,代码生成器将调用 对于未分组的自定义存储类:
对于分组的自定义存储类:
为确定SIL或PIL应用程序是否可以按地址访问代码中的变量,代码生成器使用返回的元素
代码生成器假设for 您可以构造与类型的自定义存储类关联的自定义TLC文件 ...LibIsAccessingCustomDataForSILPIL(record) %matlab functionWithSideEffects() %endif %return LibDefaultCustomStorageContents(record, idx, reim)… 另请参阅其他自定义存储类限制. |
AUTOSAR运行时环境 | 你可以用顶级模特和模型块SIL/PIL和SIL/PIL块模拟执行基于模型的AUTOSAR软件组件测试。软件将为AUTOSAR软件组件生成的代码与特定于基本组件的AUTOSAR运行时环境(RTE)链接起来,以创建测试应用程序。此应用程序测试由AUTOSAR软件组件发出的AUTOSAR API调用。 对于包含引用模型的顶级AUTOSAR软件组件,可以运行top-model或模型块(代码接口设置为
你也可以跑模型块(代码接口设置为 |