[发明专利]一种复杂同步语言程序的化简转化和自动验证方法有效
申请号: | 202011117839.5 | 申请日: | 2020-10-19 |
公开(公告)号: | CN112306470B | 公开(公告)日: | 2022-04-08 |
发明(设计)人: | 陈哲;冉丹;孙毅 | 申请(专利权)人: | 南京航空航天大学 |
主分类号: | G06F8/30 | 分类号: | G06F8/30;G06F8/41;G06F9/448 |
代理公司: | 南京经纬专利商标代理有限公司 32200 | 代理人: | 施昊 |
地址: | 210016 江*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 复杂 同步 语言 程序 转化 自动 验证 方法 | ||
1.一种复杂同步语言程序的化简转化和自动验证方法,其特征在于,包括如下步骤:
s1:检测复杂同步语言程序是否符合同步语言的语法规则,如果符合语法规则,则通过对所述复杂同步语言程序进行词法分析和语法分析得到对应的抽象语法树,如果不符合语法规则,则报错且终止操作;
s2:将所述复杂同步语言程序的抽象语法树化简转化为简单同步语言程序的抽象语法树;其中,所述化简转化具体包括:
数据流类型的转化:布尔类型保持不变;将所有的整数类型转化为int类型;将所有的浮点数类型转化为实数类型;
fby语句的转化:将fby语句简化为包含n个pre操作符的语句:a-pre(a-pre(…pre(a-pre b)…)),其中,a和b为数据流标识符,pre操作符返回数据流在前一个时钟的值;
when语句的转化:将when语句转化为if-then-else语句:if condition then actionelse,其中,condition是一个bool类型的表达式,action是一个表达式;
merge语句的转化:将merge语句转化为:if condition then action1 else action2,其中,condition是一个bool类型的表达式,action1和action2是表达式;
restart-every语句的转化:将restart-every语句转化为:if condition theninitial else node(params),其中,node为被调用节点的标识符,condition是一个bool类型的表达式,params为调用node节点的参数,initial表示被调用的node节点中输出流的初始值;
activity-every语句的转化:将activity-every语句转化为:if condition thennode(params)else initial,其中,node为被调用节点的标识符,condition是一个bool类型的表达式,params为调用node节点的参数,initial表示被调用的node节点中输出流的初始值;
package-end语句的转化:将不同包中的程序移动到同一个包中,并为所述包中所有的标识符加上前缀package_id,然后将所述复杂同步语言程序中的package package_idcodeend语句删除,其中,package_id是包的标识符,code表示包中的代码;
open语句的转化:将所述复杂同步语言程序中的open package_id语句删除;
last语句的转化:将所述复杂同步语言程序中variable_id数据流的定义转化为非last定义数据流:variable_id:type,其中,type是数据流类型;同时增加一个新的数据流定义:var last_variable_id:type,其中,var是所述新的数据流定义的关键字,last_variable_id是所述新的数据流定义的标识符;并增加等式:last_variable_id=init_value-pre(variable_id),其中,init_value是初始值,最后将所述复杂同步语言程序所有等式中出现的last’variable_id替换为last_variable_id;
assume语句和guarantee语句的转化:将所述复杂同步语言程序中的assume语句和guarantee语句都转化为assert:condition,其中,condition为bool类型的表达式;
group语句的转化:将所述复杂同步语言程序中的group语句转化为多个新的数据流定义:var a1:t1,a2:t2,…,an:tn,其中a1~an是转化后新的数据流标识符,t1~tn是数据流类型;
sig语句的转化:将所述复杂同步语言程序中sig语句转化为一组新的数据流定义:varv1,v2,…,vn:bool,其中,v1~vn为bool类型的信号流;并将所述复杂同步语言程序中涉及信号流的等式r=’vi转化为:r=vi;
emit语句的转化:将所述复杂同步语言程序中的emit语句转化为:v1=true,v2=true,…,vn=true,其中,v1~vn是sig语句定义的信号流;
where语句的转化:将所述复杂同步语言程序中where语句替换为node node_id_type(v1:tv1;…;vi:type;…;vm:tvm)returns(r1:tr1;…;rj:type;…;rn:trn),其中,node_id_type为替换后得到的新节点的标识符,v1~vm为输入数据流,tv1~tvm为输入数据流的类型,r1~rn为输出数据流,tr1~trn为输出数据流的类型,type为float,integer或numeric;
有限状态自动机的转化:
所述有限状态自动机表示为一个五元组:M={Q,Σ,δ,Q0,F},其中:
Q={q0,q1,…,qn}是所述有限状态自动机的状态集合;
Σ={σ0,σ1,…,σm}是所述有限状态自动机的字母表,用于表示所述有限状态自动机接受的语言;
δ:Q×Σ→2Q是状态迁移函数;
是所述有限状态自动机的开始状态集合;
是所述有限状态自动机的终止状态集合;
从所述复杂同步语言程序中提取所述有限状态自动机的五元组,并基于该五元组将所述有限状态自动机转化为多组if-then-else语句;
s3:将上述步骤s2中经过化简转化得到的简单同步语言程序的抽象语法树转化为程序文件,然后输入到简单同步语言程序的模型检测器中进行验证并得出验证结果。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京航空航天大学,未经南京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011117839.5/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种畜牧业用定量喂食装置
- 下一篇:颈肩良姿位防褥疮固定器