技术文章和通讯

加速在持续集成的工作流仿真万博1manbetx软件模拟仿真软件的缓存文件

由医学院毕业Khetarpal,马可Dragic Govind Malleichervu, MathWorks


在敏捷开发流程,设计复杂的系统是一个大型团队的合作开发组件,组装子系统,并将其集成到系统设计。理想情况下,系统仿真是不可或缺的组件设计工作流验证步骤,使工程师验证组件是否满足系统要求。然而,多次模拟系统与一个复杂的模型层次结构可以非常耗时。

一种仿真软件万博1manbetx®加速模拟大型模型参考层次结构是通过创建一个组中间派生工件第一次模拟运行。对于大型团队,共享和重用这些衍生文件,其中包括墨西哥人文件和其他二进制文件,可能是一个挑战。因此,团队成员经常花时间重建和重新创建文件已经由其他团队。这多余的精力消耗,否则的话,时间可以花在更有意义的设计活动。越大的团队和模型的复杂性越大,越大的问题。

为了解决这个问题,模型包和存储这些派生的工件万博1manbetx万博1manbetx模型缓存文件。在本文中,我们描述一个方法来管理和分享模型缓存文件在一个典型的敏捷开发工作流使用Git™源代码控制和詹金斯™持续集成(CI)。万博1manbetx这种方法大大加速系统模拟。

模型缓存万博1manbetx

当你在加速器模拟模型,快速的加速器,或者模型参考模式,加速模型包层次结构中的每个模型的导出文件相应仿真软件缓存文件(SLXC)。万博1manbetx团队成员可以分享这些SLXC文件和相应的仿真软件模型文件。万博1manbetx当一个团队成员他们机器上重复仿真,仿真软件中提取必要的文件来自SLXC文件为每个模型。万博1manbetx因此,模型不需要执行不必要万博1manbetx的重建,和模拟完成更快。

具体的性能改进取决于几个因素,如数量的层次结构模型,该模型参考重新设置,在被引用的模型块的数量,导出文件的大小和数量为每个模型创建。在我们的测试中与各种系统模型与0 - 500参考模型和1 - 10水平的层次结构,我们看到改进,范围从2 x超过34 x(图1)。

图1所示。性能改进实现通过使用各种系统模型仿真软件的缓存文件。万博1manbetx

图1所示。性能改进通过使用各种系统模型仿真软件的缓存文件。万博1manbetx

共享和重用模型缓存文件在敏捷工作流包含詹万博1manbetx金斯CI系统是一个三阶段的过程(图2):

  1. Git提交设计变更。
  2. 集成的设计变更和归档SLXC文件。
    • 詹金斯将设计更改从Git和运行模拟来测试它们。
    • 詹金斯保存模型缓存文件在詹金斯建立档万博1manbetx案。
  3. 同步设计更改和SLXC文件。
    • 团队成员同步的最新设计变更从詹金斯Git和相关的缓存文件建立档案。
    • 团队成员使用缓存文件系统模拟运行。
图2。重用的典型工作流模型与源代码控制和持续集成系统缓存文件。万博1manbetx

图2。重用的典型工作流模型与源代码控制和持续集成系统缓存文件。万博1manbetx阴影区域描述工作流程的三个阶段。

更详细地观察这些阶段之前,让我们考虑一下工作的要求和最佳实践模型缓存。万博1manbetx

需求和缓存文件共享和重用模型的最佳实践万博1manbetx

模型缓存万博1manbetx包含导出文件依赖于MATLAB版本,在仿真平台和编译器使用。分享和重用这些文件,所有团队成员必须使用相同的MATLAB®发布、平台和编译器。在本文中,我们使用MATLAB R2019a,微软®窗户®,微软Visual c++®2017年,分别。

以下最佳实践更容易加速模拟大型分层模型通过重用共享缓存文件:

  • 遵循基于组件的建模指南适合你的模型。
  • 让每个团队成员负责hierarchy-typically的一个子集,几个仿真软件模型组件,如控制器或植物具有定义良好的接口。万博1manbetx这最小化问题当合并设计更改。
  • 使用项目启动和停止脚本,以确保所有团队成员的一致的工作环境。启动脚本初始化环境项目打开时,和关闭脚本清理环境项目时关闭。
  • 参考所有模型加速器模式。对于调试参考模型在本地机器上,使用正常的模式。然而,这种模式不提供相同的仿真性能优势加速模式。
  • 设置每个模型的重建参数如果检测到已知的任何变化依赖关系(图3)和使用模型的依赖性参数指定用户创建依赖关系。这提高了重建检测速度和精度。
  • 如果您正在使用并行计算工具箱™,选择支持并行模型参考构建(图3)。该模型参考等级会自动构建并行执行。
  • 决定是否詹金斯构建将运行在每一个承诺,在一个特定的时间,或在需求。你的具体要求将确定什么时间效果最好,下面哪个类型的构建使用:
    • 无菌:构建的詹金斯工作区被清理工件或文件从以前的詹金斯构建。使用无菌构建仿真软件模型如果你的团队更改配置频繁。万博1manbetx例如,改变硬件设置的仿真软件模型层次结构需要一个干净的工作空间。万博1manbetx
    • 增量:构建的工件从之前的詹金斯构建保留。使用增量构建如果你的团队让小增量更改单个组件。

    无菌比增量构建构建通常需要更长的时间,这取决于模型层次结构的大小。

图3。模型配置参数。

图3。模型配置参数。

Git提交设计变更

在这一步中,团队成员修改模型,模拟模型的层次结构,顾问检查运行模型,并进行单元测试。他们承诺只有他们的设计文件如Git源代码控制系统。万博1manbetx模型缓存文件不应该致力于源代码控制系统;他们是派生的二进制文件,可以把大量的磁盘空间和不能相比或合并。在Git存储库中,您可以配置一个.gitignore文件,这样Git忽略所有派生的工件,包括SLXC文件。

集成的设计变更和归档SLXC文件

指导和配置技巧与仿真软件使用詹金斯,看到这个技术文章万博1manbetx

持续集成的仿真软件模型的验证万博1manbetx

在本文的其余部分中,我们使用工作流模型的示例缓存和詹金斯万博1manbetx

在这个例子中,詹金斯管理员指定构建命令的MATLAB詹金斯插件。这个命令启动MATLAB,构建加速器的目标,为嵌入式实时生成C代码生产目标控制器和运行software-in-the-loop (SIL)等价测试。图4显示了一个命令,打开仿真软件项目和执行myBuildAndTest脚本。万博1manbetx

图4。詹金斯的例证构建命令,该命令打开仿真软件项目和执行myBuildAndTest脚本。万博1manbetx

图4。詹金斯的例证构建命令,该命令打开仿真软件项目和执行myBuildAndTest脚本。万博1manbetx脚本构建加速器目标系统,为嵌入式实时生成C代码生产目标控制器和运行多个模拟测试更改。

作为模拟和代码生成的一部分,模型创建SLXC文件包含所有模型的加速器和模型参考仿真目标万博1manbetx的层次结构。的一个子集,这些SLXC文件包含嵌入式实时控制器生产C代码的目标。万博1manbetx在模拟仿真软件商店SLXC文件缓存文件夹。这个文件夹中指定的位置项目详细信息(图5)。然后脚本运行多个模拟测试的设计变更。

图5。项目详细信息对话框中指定的位置SLXC文件存储的缓存文件夹。

图5。项目详细信息对话框中指定的位置SLXC文件存储的缓存文件夹。默认设置是(项目根目录)。

此外,管理员设置Post-build行动在詹金斯存档SLXC文件(图6)。建立后,詹金斯从詹金斯SLXC文件工作区副本到构建存档的位置。

指定詹金斯构建存档位置,管理员可以编辑配置。xml文件在詹金斯主目录中。

图6。詹金斯postbuild动作配置归档所有仿真软件的缓存文件从詹金斯工作区建立后归档区域构建完成。万博1manbetx

图6。詹金斯postbuild动作配置归档所有仿真软件的缓存文件从詹金斯工作区建立后归档区域构建完成。万博1manbetx

同步设计更改和SLXC文件

通常,詹金斯构建执行夜间。每个团队成员可以根据最后一次成功同步一个沙箱。团队成员查看Git的设计更改,从构建检索相关仿真软件的缓存文件存档,并将仿真软件仿真模拟之前缓存文件夹缓存文件。万博1manbetx团队可以建立一个脚本自动化这个过程。

在这个例子中,syncSLXCForCurrentHash脚本访问一个SQLite数据库查询成功构建,找到其相应的Git commit散列和SLXC文件副本存档在詹金斯构建到模拟缓存文件夹。

提高工作流程

有几种方法可以使这个工作流更快且不易出错。轻松地管理从多个詹金斯SLXC文件构建,您可以使用一个数据库或存储库管理工具,如本例所示。最后,进一步扩展模拟性能,您可以运行多个系统模拟使用parsim一系列输入参数值。

2022年出版的

查看相关文章的能力