“聚焦工业软件研发痛点,致力于编译系统设计、实现、优化、测试技术体系化改革,助力祖国工业制造高速、高质发展”。OSCAR围绕我国工业软件核心,针对内嵌式编译器存在故障机理认识不清、故障检测手段落后、全工具链测试平台缺乏的质量问题展开分析测试。
近日,OSCAR在有关工业软件(内嵌式编译器)代码故障检测方面取得重大成果,团队提出的差分测试方法(MOPART)在Simulink代码生成过程故障检测中的表现显著优于现有方法。论文成果《Partition Based Differential Testing for Finding Embedded Code Generation Bugs in Simulink》成功被国际设计自动化会议(DAC 2023)录用!DAC会议是电子设计自动化(EDA)领域和芯片(架构)规划领域的顶级大会,是被公认为EDA和硅解决方案的首要教育性和交流性的大会。本次录用的论文由江贺教授、郭世凯副教授、李晓晨副教授以及成烘仪硕士共同完成。
论文分享
商业级Cyber-Physical System (CPS)开发工具链MathsWork Simulink已被广泛用于设计和分析CPS模型,是开发CPS模型的工业标准工具。Simulink可以用于模拟CPS的行为,应用范围包括汽车和航空航天等许多安全攸关领域。利用Simulink开发CPS模型的过程如图1所示。当模拟结果符合开发者的预期时,Simulink会自动生成嵌入式代码,并将其部署到目标应用中。然而,Simulink是一个复杂的软件系统,可能存在故障(Bug)。这些故障可能导致CPS模型的代码生成过程存在错误,最终在使用嵌入式代码的应用程序中引入不可控的意外行为。
图1.CPS开发过程
图2.MOPART模型图
针对以上问题,OSCAR团队提出了一种基于模型分区的差分测试方法(MOPART),用于对Simulink的代码生成过程(Code Generation)进行测试。MOPART的流程如图2所示。MOPART 由三个组件组成:预处理、CPS模型生成和差分测试。MOPART 的基本思想是生成多样化和复杂的 CPS模型,以彻底便利代码生成过程并查找故障。
MOPART的输入是一个种子CPS模型(可以自动生成)。MOPART 对种子 CPS模型进行预处理,以获取其基本信息(例如,块数)。为了生成多样化和复杂的 CPS模型,MOPART 将种子 CPS模型转换为超图。在 CPS模型生成中,MOPART 对超图执行模型分区。每个分区都包含一组彼此紧密连接的块(block)。MOPART 随机选择一些分区,并将每个分区中的块设置为子系统。此步骤的输出是一组具有不同子系统结构的新 CPS模型。由于这些新的 CPS模型具有更复杂的结构,因此它们可以更好地触发代码生成故障,从而解决构造故障发现能力较强的 CPS模型的挑战。
为了解决测试预言的挑战,MOPART 对这些 CPS模型进行了差分测试。MOPART 将每个新子系统设置为代码生成的原子单元。由于这些CPS模型的唯一区别是生成的源代码的结构不同,因此这些 CPS模型是等效的。当它们的输出,在某些输入下不同时,意味着可能存在Simulink代码生成故障。
实验表明,在故障检测方面MOART显著优于现有方法,仅两周就发现了11个代码生成故障。
据了解,OSCAR (基础软件实验室)是由大连理工大学江贺教授组织的基础软件研发团队,成员来自大连理工大学和大连海事大学。OSCAR 主要围绕编译系统和操作系统开展研究工作,团队全面分析FPGA、PCB等电子设计自动化(EDA)核心工具链内嵌式编译器故障根因,建立工业软件测试理论基础;并提出工业软件智能测试系列方法,结合工业场景规约、软件测试与人工智能技术,实现多种类、多场景工业软件的高效测试;OSCAR研发国内首款FPGA设计工具链自动化智能测试平台,解决工业软件全工具链测试平台缺乏难题。
OSCAR研究成果广泛落地应用于航空航天、军事侦察、能源电力等重大领域,已实现多款业界FPGA开源/闭源设计工具的测试,如Vitis、Yosys、Iverilog等。发现工具链故障70余个,包括高级综合故障30+,逻辑综合故障5个,仿真验证故障20+,调试器故障10+。相关技术成果发表在TSE、FSE、DAC等顶级期刊和会议。