国产主可控的嵌入式仿真测试软件SkyEye与可信编译器L2C的核心翻译介绍

为了满足国内某安全攸关领域的需求, L2C编译器的开发始于2010年9月, 其目标是设计实现一个经过形式化验证的可信编译器, 其源语言是面向领域的同步数据流语言Lustre*(Lustre语言的一个变种, 参考下一节), 目标语言是C, 最终可用作相关领域数字化仪控系统的安全级代码生成器.国产主可控的嵌入式仿真测试软件SkyEye与可信编译器L2C的核心翻译步骤及其设计与实现。国产主可控的嵌入式仿真测试软件SkyEye与可信编译器L2C的核心翻译介绍

1、L2C编译器简介

L2C编译器的发展进程可归为3个里程碑.一个是面向Lustre的一个核心子集, 设计实现了L2C编译器的一个原型系统, 于2013年6月完成验收.另一个里程碑是已实现除嵌套时钟外Lustre全部特性的一个单时钟L2C编译器版本, 完全能够满足国内该安全攸关领域目前的实际应用需求, 并于2015年4月完成严格的企业级验收, 这些工作的相关技术和代码已在实际应用中发挥作用.

在上述第2个里程碑之后, 项目组对L2C编译器的设计框架进行了较大程度的优化调整, 目标是拓展应用领域以及开源系统的建设.目前, L2C编译器进入了第3个里程碑的发展阶段, 其目标是在目前面向企业的版本 (不开源) 基础上裁减并适当改造, 形成了覆盖Lustre V6[19]全部特性的可开源版本.目前, 这一L2C编译器的单时钟版本 (L2C-MC) 已经开放源码 (https://github.com/l2ctsinghua/l2c/releases/tag/version-0.8), 支持嵌套时钟的版本处于测试与完善的周期, 其源码不久也将开放.

2、源语言的特性

L2C编译器的不同版本, 其源语言 (Lustre*) 可能有所不同, 本文以目前支持的最多特性为准.Lustre*覆盖了Lustre V6的全部特性, 并且根据实际应用的需求在此基础上有许多扩展, 特别是在高阶运算方面比Lustre V6更加丰富.

图1展示一个简单的Lustre程序, 可见, 一个Lustre程序 (program) 由多个节点 (node) 组成, 节点中包含输入参数 (parameters)、输出参数 (returns) 和函数体 (body), 其中函数体又由局部变量 (local variables) 和等式 (或语句) 序列组成, 结构清晰.

image

下面以图1示的Lustre程序为例来阐述Lustre的某些重要语言特性, 并且在图2中给出图1中主节点Main的一组合理输入与输出来直观展示Lustre*语言的这些特性.

(1) 流数据对象.图 2展示的输入输出很直观地体现了Lustre程序区别于C语言程序的一个很重要的特性, 即在Lustre中每一个变量都是一个无穷长的流 (stream) 数据对象, 而不仅仅是一个单个的值.每一个周期 (cycle), 变量都可能会有不同的值或者没有值, 其中图 2截取了输入输出前10个周期的值, 后面还有无穷个周期.虽然每个周期的值可能会变化, 但处理逻辑每个周期都一样, 如图 1所示的主节点Main的代码逻辑, 每个周期都一样.Lustre*是同步语言的一种, 所有同步语言均满足同步假设:当前周期的输入时间出现时, 系统能够在下个周期的输入时间出现之间计算出当前周期的输出.这一重要的同步假设使得同步语言在嵌入式实时控制系统中得到大规模应用.

(2) 数据流并发性.不同于C程序, Lustre程序具有数据流并发性, Lustre节点中的等式 (相当于语句) 虽然在书写时有先后顺序, 但都是并发执行的.更复杂的情况是, Lustre程序中的等式 (或语句) 之间存在因果关系, 所以在并发执行时还需要考虑等式 (或语句) 间的拓扑关系.如图 1中第7行~第8行所示, 这两行就存在因果关系.第7行k*的赋值依赖于第8行执行的结果, 所以第7行应该在第8行之后执行.这里拓扑关系的具体含义可参见第4节.

(3) 高阶算子.Lustre支持如map, re等10多个高阶算子, 这些高阶算子可以很方便地操作数组对象, 在编写程序时会更加便利.如图 1中第10行所示的map算子, 以节点 (或称函数) Max以及两个数组x1和x2作为参数, 返回另一个数组p*.语义上, 相当于并行执行“p[i]=Max (x1[i], x2[i])”(i从0变到1).

(4) 时态与时钟算子.由于Lustre的流数据对象特性, 语言提供了时态算子, 比如pre, fby, arrow (→) 等, 可以对流数据进行操作.另外, Lustre还支持嵌套的时钟, 提供了可改变时钟快慢的算子, 如when使时钟变慢形成下一层嵌套的时钟, 而current与merge使时钟变快, 回到上一层嵌套时钟.如图 2所示, 使用when算子后, 主节点中y1的时钟相对于x3的时钟变慢了 (根据布尔量b取值为true时进行采样); 使用了fby算子之后, 主节点中s相对于y1时钟周期不变, 但每个周期的值向后shift了1个周期 (注意, 这里指相对于y1时钟的shift, 即对应于b取值为true时的时钟周期).

3、L2C编译器的主体翻译框架

随着源语言 (Lustre*) 特性的增加以及不同开发阶段的不同理念, L2C可信编译器的翻译框架也在不断变化, 先后出现过接近10个稳定的框架图, 图 3是其中最近的一个.国产主可控的嵌入式仿真测试软件SkyEye与可信编译器L2C的核心翻译介绍

image

如图 3所示, Lustre源程序经过词法、语法以及静态语义分析 (类型检查), 翻译到类型良好的抽象语法树 (abstract syntax tree, 简称AST) 形式的高级中间语言Well-typed Lustre AST代码. Well-typed Lustre* AST代码经过一些简单的预处理变换 (LustreSGen) 生成一种具有规范形式的中间语言LustreS代码.预处理变换主要包括全局常量和类型的合并、拆分表达式列表、通过引入新变量提升某些特殊表达式 (如call和fby表达式) 至等式 (或语句) 级别等.

对于这部分的翻译过程, 目前我们没有去进行形式化验证, 故在图 3中用虚线箭头来表示.词法和语法分析算法或者相关的工具是比较成熟的, 比较可信, 但若要验证它们的正确性却是很困难的, 因此目前的可信编译器 (包括CompCert) 基本上不验证这一部分工作.此外, 其余的翻译工作 (包括类型检查) 相对比较简单, 也比较容易验证, 同时也因为它们是受Lustre*变化影响较大的部分, 所以我们在整个L2C可信编译器的实现中将这部分验证工作放在了最低的优先级.另外, 这些翻译过程的翻译确认程序是比较容易实现的, 这也是我们不急于完成这部分验证工作的重要原因之一.

高性能嵌入式仿真软件SkyEye

随着科技的发展,系统工程的设计体量逐渐庞大起来,尤其是对于轨道交通、航空航天、核电站等安全关键领域中,如何在复杂度逐年变大的同时保证其安全性和可靠性,是近年来各大公司需要研究的课题。最近比较火热的基于模型的系统工程(MBSE)技术则给大家提供了一种全新的技术方向,分享一种全数字实时仿真的安全关键领域解决方案,提供一种新的解决思路。国产主可控的嵌入式仿真测试软件SkyEye与可信编译器L2C的核心翻译介绍,提供高效的运算速度,提高研发效率和安全性。

image

新一代全数字仿真平台SkyEye

基于模型的全数字研发解决方案MBSE工具软件SkyEye是能够满足模拟或仿真外部硬件行为进行软件运行和测试需求的工具。该工具运用国际流行的仿真、测试脚本语言来编写外部硬件逻辑行为所产生外部激励事件以构成嵌入式软件的外部信号激励或数据输入,从而满足软件在全数字仿真运行环境下无须人的干预而闭环运行的要求。国产主可控的嵌入式仿真测试软件SkyEye与可信编译器L2C的核心翻译介绍

作为基于嵌入式应用的特点,嵌入式软件全数字仿真测试支撑平台SkyEye要为嵌入式系统提供全数字仿真测试环境或测试平台,实现对嵌入式系统进行实时、闭环的系统测试。在该平台上完成被测软件的分析、运行和测试,最重要的是要实现嵌入式系统外部事件的全数字仿真平台,使得嵌入式软件就像在真实硬件环境下连续不中断地运行。


本文标题:国产主可控的嵌入式仿真测试软件SkyEye与可信编译器L2C的核心翻译介绍

本文链接:http://www.digiproto.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/566711.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

支持国产处理器仿真的全数字实时仿真平台SkyEye与可信编译器L2C的核心翻译步骤

1、核心翻译步骤示例 本节我们以第2节提到的Lustre语言的主要特性为线索来解释L2C在翻译过程中的关键节点是如何处理的, 并以图 1的实例来解释Lustre程序是如何被一步步地翻译到Clight语言的. 1.1 数据流并发性 Lustre程序具有数据流并发性, 而Clight程序却是串行执行的.因此…

python导入不在同一路径的函数_Python小课堂|模块

Python3 模块在前面的几个章节中我们脚本上是用 python 解释器来编程,如果你从 Python 解释器退出再进入,那么你定义的所有的方法和变量就都消失了。为此 Python 提供了一个办法,把这些定义存放在文件中,为一些脚本或者交互式的…

全数字实时仿真软件SkyEye与可信编译器L2C的核心翻译步骤的设计与实现

有关翻译正确性验证的重点疑难问题及其设计实现方案 在L2C可信编译器的设计与实现中, 对于实线所对应的翻译过程 (CompCert编译器除外) 均借助于Coq证明了正确性 (语义保持性), 然后得出LustreSGen所产生的LustreS代码到Clight代码整个翻译过程的正确性.从LustreS到Clight的任…

idea 分支管理插件_Git的分支管理常用命令

文章目录分支管理git stashgitmerge与git rebasegit merge --squashcherry-pick分支管理命令作用git branch查看当前分支git checkout/git switch 分支名称切换分支git merge 分支名称将指定分支合并到当前分支git branch -d 分支名称删除指定分支git diff 分支名称1 分支名称2…

安卓蓝牙键盘切换输入法_采用国产机械轴,三种连接模式轻松切换,TT G521上手体验...

之前我用过三模游戏鼠标,也用过三模薄膜键盘,但是三模机械键盘,还是第一次使用。机械键盘,相信大家都知道,现在已经很普及了,估计当时把机械键盘重新带回到玩家当中的大神,也没有想到它会这么火…

国产自主可控的嵌入式仿真软件SkyEye和同步数据流语言高阶运算消去的可信翻译

同步数据流语言高阶运算消去的可信翻译 同步数据流语言(例如Lustre,Signal等)广泛应用于工业界的核心安全级控制系统,如航空、核电等高安全等级的关键领域,与语言相关的软件的安全性也越来越受到人们的关注,特别是一些基础软件,如操作系统、编译器等.确认这些软件的安全可靠非…

pq 中m函数判断嵌套_压轴题的热点,二次函数与几何的结合,谁会谁吃香

对于整个中考数学来说,二次函数的重要性,我想不用老师多说,大家肯定心里有数。二次函数作为初中数学的重要内容,命题老师很喜欢把它与其他几何图形进行结合,形成综合性更强的试题。不可否认,二次函数与几何…

完全自主可控的安全关键领域仿真测试软件SkyEye可替代SCADE

基于全数字实时仿真平台 SkyEye 产品性质 :全数字实时仿真平台(软件测试和仿真工具) 对标产品 :美国风河公司的Simics,可替代SCADE SkyEye,中文全称天目全数字实时仿真软件,是基于可视化建模…

请求接受json tp5_关于jq jsonp跨域请求错误处理bug

前言:昨天,同事修改项目升级插件时遇到了一个ajax 报错,如下:$.ajax({type : "get",async:false,timeout:3000,url : "http://10.10.10.26:808/servlet/updateLog?line1",dataType : "jsonp",//数…

ModelCoder国产化解决方案已逐步代替国外软件Matlab/Simulink

ModelCoder介绍 在安全关键领域,基于模型的软件工程或者软件开发已逐渐进入了我国的装备研制过程中。使用Simulink或者SCADE等嵌入式软件建模工具对算法或者控制逻辑进行可视化建模,然后生成高可靠的二进制代码逐渐成为了安全关键领域的主流开发方式。 …

两用物项许可证办理流程_一指通 | 出口许可证办理流程

什么是出口许可证?出口许可证,是指商务部授权发证机关依法对实行数量限制出口货物签发的准予出口的许可证件。出口许可证监管证件代码为“4”。加工贸易出口“出口许可证”管理的货物,监管证件代码为“x”。边境小额贸易出口“出口许可证”管…

SkyEye实现工业安全关键领域基础软件国产替代

随着科技的发展,系统工程的设计体量逐渐庞大起来,尤其是对于轨道交通、航空航天、核电站等安全关键领域中,如何在复杂度逐年变大的同时保证其安全性和可靠性,是近年来各大公司需要研究的课题。最近比较火热的基于模型的系统工程&a…

2寸的照片长宽各是多少_贵州公务员考试照片尺寸要求是多少

中公教育在贵州公务员考试中对于照片要求与2寸照片的林小差不多,简单来说就是长宽最小像素为160px和130px、最佳效果为260px*320px;即使考生们已有照片未达到公务员照片的相关要求,考生们可以通过图片处理系统进行等比例裁剪达到照片尺寸要求…

自主可控的全数字实时仿真软件SkyEye支持PowerPC指令级仿真

随着科技的发展,系统工程的设计体量逐渐庞大起来,尤其是对于轨道交通、航空航天、核电站等安全关键领域中,如何在复杂度逐年变大的同时保证其安全性和可靠性,是近年来各大公司需要研究的课题。最近比较火热的基于模型的系统工程&a…

中国自主可控的全数字实时仿真软件SkyEye支持龙芯CPU指令级仿真

传统的系统开发过程,都是由工程师根据项目需求书来编写代码完成系统的开发,但随着功能的完善和版本迭代,系统中庞大的代码量很难确保正确无误,给后期测试和仿真带来了很大的压力和成本,在航空航天、卫星系统、核电等安…

进入实现类快捷键_实测30个自带快捷键,原来键盘也这么好用!

文 / 一周进步 水韬推荐过很多软件快捷键的文章,每次推荐大家都会惊叹,原来自以为熟练掌握的软件,还可以有这么多便捷的操作。活到老,学到老。软件操作是如此,其实在我们使用最多的Windows系统里,在键盘里…

怎么做笔记标签贴_小红书笔记互动到底该怎么做?

小红书很多博主再发完笔记后,喜欢到一些互赞群里去跟别人相互关注点赞收藏评论。这个就是我今天要和大家说的。小红书笔记在一些互赞藏群里自己上关键词车,这样是会被判违规的,什么违规呢?那就是人工干预后台数据。小红书有这样一…

全数字实时仿真平台SkyEye与SystemC集成进行时序仿真

SkyEye与SystemC集成进行时序仿真 仿真过程是正确实现设计的关键环节,用来验证设计者的设计思想是否正确,及在设计实现过程中各种分布参数引入后,其设计的功能是否依然正确无误。时序仿真使用布局布线后器件给出的模块和连线的延时信息&…

全数字实时仿真平台SkyEye和同步数据流语义与翻译正确性验证

全数字实时仿真平台 SkyEye,中文全称天目全数字实时仿真软件,应用软件仿真技术,逼真地模拟出被测软件的物理环境。用图形化方式构建虚拟目标系统,有效降低了硬件工程师和软件工程师之间的沟通成本,软件工程师可以不依…

访问不了_同事的电脑无法访问,共享打印机连接不上,问题都在这

作为一个it服务工作者,发现大家平时遇到最多的问题就是公司内部同事的电脑访问不了或者共享打印机打印不了等等。所以今天给大家分享一下引起这些问题的原因所在和解决办法。其实我们只要掌握了核心的几个关键点,对症下药都是比较容易解决的。常见的一些…