CN104503816B - 一种硬件语言vhdl到msvl的自动转换系统 - Google Patents
一种硬件语言vhdl到msvl的自动转换系统 Download PDFInfo
- Publication number
- CN104503816B CN104503816B CN201410841253.1A CN201410841253A CN104503816B CN 104503816 B CN104503816 B CN 104503816B CN 201410841253 A CN201410841253 A CN 201410841253A CN 104503816 B CN104503816 B CN 104503816B
- Authority
- CN
- China
- Prior art keywords
- msvl
- converted
- statement
- vhdl
- sentence
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
一种硬件语言VHDL到MSVL的自动转换系统,其能够将VHDL语言程序文件转换成MSVL语言程序文件,所述转换系统包括,文件分析模块、词法分析模块、语法分析模块、信息存储模块、翻译模块、翻译结果字符串连接模块。VHDL程序转换为MSVL程序后,模型构造与性质描述使用同一种语言,使得验证在同一逻辑框架下进行,方便地实现对VHDL语言程序间接的模型检测。在转换的过程中,通过制定不同语法结构的转换规则,并通过一些额外的辅助手段将VHDL程序转换为了语义等价的MSVL程序,这样就可以通过对等价的MSVL程序进行仿真、建模和验证,来确保源VHDL程序的正确性。
Description
技术领域
本发明涉及硬件描述语言VHDL语言技术领域和编译原理技术领域的词法分析和语法分析,具体涉及VHDL到MSVL的自动转换系统,用于将VHDL所描述的硬件电路程序转换到语义等价的MSVL代码。
背景技术
VHDL全名Very-High-Speed Integrated Circuit Hardware DescriptionLanguage,诞生于1982年。1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言。自IEEE-1076(简称87版)之后,各EDA公司相继推出自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本,简称93版。VHDL和Verilog作为IEEE的工业标准硬件描述语言,得到众多EDA公司支持,在电子工程领域,已成为事实上的通用硬件描述语言。
VHDL主要用于描述数字系统的结构、行为、功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式、描述风格以及语法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分及端口)和内部(或称不可视部分)。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。
现阶段,VHDL主要通过一些集成环境软件进行仿真,通过测试用例进行人工测试。首先测试和仿真工作是在不同环境下进行的;其次,测试用例并不能完全排除软件中的隐患,对于VHDL这种应用面广,应用领域极其关键的编程语言,应从根本上排除软件隐患,所以通过MSVL语言,我们可以对其进行建模,仿真和验证工作,这样就将这些工作集中在同一环境下进行,由于MSVL本身的特点,使得工作量大大减少,节约了成本。
投影时序逻辑(PTL)对区间时序逻辑(ITL)进行了扩展,而时序逻辑语言MSVL是PTL的一个可执行子集,它是一个集建模(Modeling)、仿真(Simulation)和验证(Verification)为一体的时序逻辑程序设计语言,其对应的MSV解释器可以对MSVL程序进行仿真执行,也可以进行建模和验证。其中,仿真是找到程序的一条可执行路径,建模是找到程序的所有模型,验证是对程序进行模型检测,判断其是否满足PPTL定义的期望性质。
此外,建模、仿真和验证语言MSVL和硬件描述语言VHDL在语法上有很多相似之处,使得转换成为可能。通过对转换后的MSVL程序进行建模、仿真和验证,从而间接的确保了VHDL源程序的可靠性和安全性。
发明内容
鉴于现有技术的不足,本发明旨在于提供一种由VHDL到MSVL的自动转换系统,通过将VHDL语言自动转换成MSVL语言,再对MSVL语言在MSV解释器下进行仿真验证,进而实现了对VHDL语言的程序进行仿真验证,该转换程序提供了一种新的验证VHDL的方法,即通过程序的转换,将问题转移到其等价的语言环境下,对转换后的程序进行仿真和验证。
为了实现上述目的,本发明采用的技术方案如下:一种硬件语言VHDL到MSVL的自动转换系统,其能够将VHDL语言程序文件转换成MSVL语言程序文件,其特征在于:所述转换系统包括,
文件分析模块:设有文件分析器,所述文件分析器分析VHDL程序文件的顶层文件绝对路径字符串,对这个字符串进行分析,得到所有需要翻译的文件,并分析文件之间的依赖关系,从而按照依赖关系决定翻译的顺序;
词法分析模块:设有词法分析器,所述词法分析器使用正则表达式对VHDL源程序进行分析,识别源程序中的词素,如关键字、数值、字符串、标示符、运算符、间隔符以及注释符等,将其解析为记号流;
语法分析模块:设有语法分析器,所述语法分析器通过语法文件构造产生式来识别VHDL中的语法结构,并形成VHDL程序的语法树;
信息存储模块:所述信息存储模块在构造VHDL程序语法树的过程中,对于VHDL程序中的变量、信号、常量等信息进行存储,以便翻译模块进行查询和翻译;
翻译模块:所述翻译模块通过在语法分析阶段识别出的语法结构,对VHDL源程序的信息进行有组织的访问,并将各语句节点逐个提取出交予对应的翻译子程序处理,翻译子程序根据每个语句节点的类型来确定翻译规则;
翻译结果字符串连接模块:所述翻译结果字符串连接模块对翻译模块产生的字符串进行添加、修改、合并,形成最终的翻译结果字符串,并写入文件。
在上述技术方案的基础上,还包括出错处理模块,所述在待翻译的VHDL程序出现词法错误和语法错误时,能够停止翻译过程,并将出错原因输出到指定文件中。
在上述技术方案的基础上,将硬件语言VHDL转换至MSVL语言的方法包括以下步骤:
第一步:传入VHDL顶层文件的绝对路径,通过顶层文件所在路径,获取将要被翻译的所有文件,并将这些文件放入一个VHDL文件列表;
第二步:读取VHDL文件列表中的文件,将VHDL源程序导入词法分析模块,并将程序中的词素转换为记号流;其中,词素包括VHDL中的关键字、运算符、分隔符、变量名,字面量和注释符;
第三步:将所述记号流导入语法分析模块,使用自下而上的分析方法对记号流进行规约,从而识别VHDL中的语法结构;其中,语法结构包括基本表达式、执行语句、块结构、实体、结构体、包头、包体、子程序;
第四步:将步骤三得到的语句的语法结构存储成语法树,所有语句的语法树集中管理,形成语法树集合,并且,将语法结构中的变量信息和类型信息存储到集合中;其中,语法树以二叉树的形式存储,变量信息存储在变量集合中,类型信息存储在类型集合中;其中,当一个文件语法规约完成时,需要在其中声明的变量名和类型名前面加上实体名和结构体名;
第五步:将所述语法树集合作为输入,每次提取一个语法树结构传给翻译程序进行翻译,翻译程序根据语言转换规则将VHDL结构转换成对应的MSVL结构;
第六步:提取变量集合中的变量,翻译成MSVL的变量声明语句,并将变量声明语句与第五步中翻译程序转换后各个部分的字符串进行合并,生成MSVL程序。
在上述技术方案的基础上,所述基本表达式包括算术表达式、逻辑表达式、关系表达式、符号表达式、属性表达式。
在上述技术方案的基础上,所述执行语句包括顺序语句和并行语句;其中,顺序语句包括赋值语句、流程控制语句、wait语句、return语句、NULL语句、子程序调用语句;并行语句包括进程语句、块语句、并行信号赋值语句、并行过程调用语句、元件例化语句、生成语句。
在上述技术方案的基础上,流程控制语句包括if语句、case语句、next语句、loop语句、exit语句。
在上述技术方案的基础上,并行信号赋值语句包括简单信号赋值语句,条件信号赋值语句和选择信号赋值语句。
在上述技术方案的基础上,子程序调用语句包括函数调用语句和过程调用语句。
在上述技术方案的基础上,子程序包括过程和函数。
在上述技术方案的基础上,所述块结构包括变量列表、结构体语句块、子程序定义、block块、进程块。
在上述技术方案的基础上,所述转换规则包括对基本表达式、执行语句、块结构、实体、结构体、包头、包体、子程序结构转换规则。
在上述技术方案的基础上,所述基本表达式的转换规则如下:
假设e代表一个原子表达式,x和y是基本表达式:
如果表达式为e,转换为MSVL表达式返回对应的e’;
如果x=y,转换为MSVL语句x=y;
如果表达式为x[+|-|*|/|MOD]y,并且x,y为十进制数,转换为MSVL语句x[+|-|*|/|%]y;
如果表达式为x[+|-|*|/|MOD]y,并且x,y为二进制串,转换为MSVL的多条语句;
如果表达式为x[<|>|<=|>=|=|/=]y,转换为MSVL语句x[<|>|<=|>=|=|!=]y;
如果表达式为x[**|REM]y,转换为MSVL语句的函数调用结构;
如果表达式为:[NOT|ABS]x,转换为MSVL语句Bit_not(x),ABS(x),其中Bit_not,ABS是MSVL函数;
如果表达式为x and y,当这个表达式出现在条件语句中时,转换为MSVL语句xand y;当这个表达式出现在信号赋值语句中时,转换为MSVL的逻辑与;
如果表达式为x or y,当这个表达式出现在条件语句中时,转换为MSVL语句x ory;当这个表达式出现在信号赋值语句中时,转换为MSVL的逻辑或;
如果表达式为x[SLL|SRL|SLA|SRA|ROL|ROR]y,转换为MSVL语句的函数调用结构;
如果表达式为x&y,转换为MSVL的多条语句结构,实现将x与y两个一维数组合并为一个一维数组的功能;
如果表达式为(x),转换为MSVL语句的(x);
如果表达式为边沿信号,转换为MSVL语句的比较结构;
如果表达式为x,y,转换为MSVL语句的x,y;
语句转换规则如下:
语句由基本表达式、关键字与‘;’组成,假设exp是一个基本表达式,换转函数为TrsltExpr(exp);
如果语句为exp;,转换为TrsltExpr(exp);;
如果语句为exp1<=exp2;,转换为TrsltExpr(exp1):=TrsltExpr(exp2);;
如果语句为exp1:=exp2;,转换为TrsltExpr(exp1)<==TrsltExpr(exp2)andskip;;
如果为if_else语句,转换为MSVL的if_else语句;
如果为loop语句,转换为MSVL的while语句;
如果为case语句或select_with语句,转换为MSVL的if_else结构;
如果为for语句,转换为MSVL的while结构;
如果为NULL语句,转换为MSVL的空语句;
如果为wait语句,转换为MSVL的await结构;
如果为return语句,转换为MSVL的赋值语句;
如果为断言语句,转换为MSVL的if_else结构;
如果为event/选择语句,转换为MSVL的if_else结构;
如果为原件例化语句,转换为MSVL的函数调用语句;
如果为生成语句,转换为MSVL的函数调用语句;
如果为进程语句,转换为MSVL的if结构;
如果为参数传递语句,并且是在实体调用中出现,转换为MSVL的参数传递;
如果为参数传递语句,并且是在数组初始化中出现,转换为MSVL的赋值语句;
如果为系统输出语句,转换为MSVL的output结构;
如果为系统输入语句,转换为MSVL的input结构;
如果为函数/过程调用语句,转换为MSVL的函数调用结构;
如果为类型声明/定义语句,转换为MSVL的变量声明/定义结构;
statement是一个语句,block是一个语句块结构,它由多条语句组成,对语句块结构进行转换规则如下:
如果为进程或子程序中的语句块,转换为MSVL的顺序语句结构;如果为结构体中的语句块,转换为MSVL的并行语句结构;
对包转换规则如下:
包头部分,只转换信号和变量的声明语句,直接转换为MSVL的声明语句;其中,如果声明语句中有初始化,必须将初始化语句加在声明语句之后;
包体部分主要为子程序的定义,将其直接转换为MSVL的函数;
对实体和结构体进行转换规则如下:
如果这个实体为顶层实体,该实体和结构体转换为MSVL的frame结构;
如果这个实体为被调用实体,该实体和结构体转换为MSVL的函数结构
本发明有益效果在于,将VHDL语言转换成MSVL语言。VHDL程序转换为MSVL程序后,模型构造与性质描述使用同一种语言,使得建模与验证在同一逻辑框架下进行,方便地实现对VHDL语言程序间接的模型检测。在转换的过程中,通过制定不同语法结构的转换规则,并通过一些额外的辅助手段将VHDL程序转换为了语义等价的MSVL程序,这样就可以通过对等价的MSVL程序进行仿真、建模和验证,来确保源VHDL程序的正确性。
其次,MSVL可用于性质描述和系统描述,它是基于投影时序逻辑PTL,并集建模、仿真与验证为一体的时序逻辑程序设计语言。本发明通过将VHDL程序转换为等价的MSVL程序,使得对源VHDL程序的仿真、建模和验证工作转移到MSVL上,通过MSVL的固有性质来进行程序的仿真、建模和验证,从而确保了源VHDL程序的正确性。
附图说明
图1为本发明硬件语言VHDL到MSVL自动转换系统使用的流程示意图;
图2为VHDL语言程序词法分析与语法分析的关系图。
具体实施方式
下面将结合附图对本发明作进一步的描述。
如图1、图2所示,本发明为VHDL到MSVL的自动转换系统,所述自动转换系统包括:
文件分析模块:设有文件分析器,所述文件分析器分析VHDL程序文件的顶层文件参数字符串,对这个文件参数字符串进行分析,得到所有需要翻译的文件,并分析文件之间的依赖关系,从而按照依赖关系决定翻译的顺序,并生成一个待翻译的VHDL源文件列表,对该列表中的文件按顺序传递给词法分析模块;
词法分析模块:设有词法分析器,所述词法分析器使用正则表达式对VHDL源程序进行分析,识别源程序中的词素,如关键字、数值、字符串、标示符、运算符、间隔符以及注释符等,将程序中的词素转换为记号流,并传递给后续语法分析模块;
语法分析模块:设有语法分析器,所述语法分析器通过语法文件构造产生式来识别VHDL中的语法结构,并形成VHDL程序的语法树;
信息存储模块:在构造VHDL程序语法树的过程中,对于变量、信号、常量等声明信息需要另行存储,以便后期在翻译模块中进行查询和翻译;
翻译模块:所述翻译模块通过在语法分析阶段识别出的语法结构,对VHDL源程序的信息进行有组织的访问,并将各语句节点逐个提取出交予对应的语句翻译子程序处理,翻译子程序根据每个语句节点的类型来确定翻译规则,将VHDL语句翻译成对应的MSVL语句;
翻译结果字符串连接模块:其对翻译模块产生的MSVL语句字符串进行添加、修改、合并,最终形成翻译结果字符串,此字符串为可执行的MSVL完整程序,并写入文件。
在上述技术方案的基础上,还包括出错处理模块,其在待翻译的VHDL程序出现词法错误和语法错误时,能够停止翻译过程,并将出错原因输出到指定文件中。
需要说明的是,所述词法分析器是基于LEX词法生成器所生成的;所述语法分析器是基于BISON语法生成器所生成的。
硬件语言VHDL到MSVL语言的自动转换方法包括以下步骤:
第一步:传入VHDL顶层文件的路径和此顶层文件名,通过顶层文件所在路径,获取将要被翻译的所有文件,文件分析模块分析所有文件之间的依赖关系,并将这些文件按一定次序放入一个VHDL文件列表;
第二步:依次读取VHDL文件列表中的文件,将VHDL源程序导入词法分析模块,并将程序中的词素转换为记号流;其中,词素包括VHDL中的关键字、运算符、分隔符、变量名,字面量和注释符;
第三步:将所述记号流导入语法分析模块,使用自下而上的分析方法对记号流进行规约,从而识别VHDL中的语法结构;其中,语法结构包括基本表达式、执行语句、块语句,实体、结构体、包头、包体、子程序;
第四步:将第三步得到的语句的语法结构存储成语法树,所有语句的语法树集中管理,形成语法树集合,并且将语法结构中的变量信息和类型信息存储到集合中;其中,语法树以二叉树的形式存储,变量信息存储在变量集合中,类型信息存储在类型集合中;其中,当一个文件语法规约完成时,需要在其中声明的变量名和类型名前面加上实体名和结构体名,以防止不同文件中的变量名和类型名重复;
第五步:将所述语法树集合作为输入,每次提取一个语法树结构传给翻译程序进行翻译,翻译程序根据语言转换规则将VHDL结构转换成对应的MSVL结构;
第六步:将变量集合中的变量提取出来,翻译成MSVL的变量声明语句,并将转换后各个部分的字符串进行添加、修改、合并,生成最后的MSVL程序。
需要说明的是,所述子程序包括函数和过程。
需要说明的是,所述基本表达式包括简单表达式、符号表达式、算术表达式、逻辑表达式、关系表达式、属性表达式。
需要说明的是,所述执行语句包括并行语句和顺序语句,顺序语句包括赋值语句、流程控制语句、wait语句、return语句、NULL语句、子程序调用语句;并行语句包括进程语句、块语句、并行信号赋值语句、并行过程调用语句、元件例化语句、生成语句。
需要说明的是,所述流程控制语句包括if语句、case语句、next语句、loop语句、exit语句。
需要说明的是,所述并行信号赋值语句包括条件信号赋值语句,选择信号赋值语句。
需要说明的是,所述子程序调用语句包括函数调用语句和过程调用语句。
需要进一步说明的是,所述表达式的转换规则如下:
假设e代表一个原子表达式,x和y是基本表达式:
如果表达式内容是e,转换为MSVL表达式返回对应的e’;
如果x=y,转换为MSVL语句x=y;
如果表达式内容是x[+|-|*|/|MOD]y,并且x,y为十进制数,转换为MSVL语句x[+|-|*|/|%]y;
如果表达式内容是x[+|-|*|/|MOD]y,并且x,y为二进制串,转换为MSVL的多条语句;其中,先对二进制串进行十进制转换,然后用十进制进行表达式的运算;
如果表达式内容是x[<|>|<=|>=|=|/=]y,转换为MSVL语句x[<|>|<=|>=|=|!=]y;
如果表达式内容是x[**|REM]y,转换为MSVL语句的函数调用结构;
如果表达式内容是[NOT|ABS]x,转换为MSVL语句Bit_not(x),ABS(x),其中Bit_not,ABS是MSVL函数;
如果表达式内容是x and y,当这个表达式出现在条件语句中时,转换为MSVL语句x and y;当这个表达式出现在信号赋值语句中时,转换为MSVL的逻辑与;
如果表达式内容是x or y,当这个表达式出现在条件语句中时,转换为MSVL语句xor y;当这个表达式出现在信号赋值语句中时,转换为MSVL的逻辑或;
如果表达式内容是x[SLL|SRL|SLA|SRA|ROL|ROR]y,转换为MSVL语句的函数调用结构;
如果表达式内容是x&y,转换为MSVL的多条语句结构,实现将x与y两个一维数组合并为一个一维数组的功能;
如果表达式内容是(x),转换为MSVL语句的(x);
如果表达式内容是边沿信号,转换为MSVL语句的比较结构;
如果表达式内容是x,y,转换为MSVL语句的x,y;
语句转换规则如下:
语句由基本表达式、关键字与‘;’组成,假设exp是一个表达式,换转函数为TrsltExpr(exp);
如果语句为exp;,转换为TrsltExpr(exp);;
如果语句为exp1<=exp2;,转换为TrsltExpr(exp1):=TrsltExpr(exp2);;
如果语句为exp1:=exp2;,转换为TrsltExpr(exp1)<==TrsltExpr(exp2)andskip;;
如果语句为if_else语句,转换为MSVL的if_else语句;
如果语句为loop语句,转换为MSVL的while语句;
如果语句为case语句、条件信号赋值语句或选择信号赋值语句,转换为MSVL的if_else结构;
如果语句为for语句,转换为MSVL的while结构;
如果语句为NULL语句,转换为MSVL的空语句;
如果语句为wait语句,转换为MSVL的await结构;
如果语句为return语句,转换为MSVL的赋值语句;
如果语句为断言语句,转换为MSVL的条件语句;
如果语句为event/选择语句,转换为MSVL的条件语句;
如果语句为元件实例化语句,转换为MSVL的函数调用语句;
如果语句为生成语句,转换为MSVL的函数调用语句;
如果语句为进程语句,转换为MSVL的条件语句,其中,条件表达式为进程中的敏感信号与辅助信号变量的不等式,这些不等式使用或运算连接;
如果语句为参数传递语句,并且是在实体调用中出现,转换为MSVL的参数传递,其中,实参的顺序必须按照声明顺序翻译;
如果语句为参数传递语句,并且是在数组初始化中出现,转换为MSVL的赋值语句;
如果语句为系统输出语句,转换为MSVL的output结构;
如果语句为系统输入语句,转换为MSVL的input结构;
如果语句为函数/过程调用语句,转换为MSVL的函数调用结构;
如果语句为类型声明/定义语句,转换为MSVL的变量声明/定义结构;
statement是一个语句,block是一个语句块结构,它由多条语句组成,对语句块结构进行转换规则如下:
如果语句为进程或子程序中的语句块,转换为MSVL的顺序语句结构;如果为结构体中的语句块,转换为MSVL的并行语句结构;
对包转换规则如下:
包头部分,只转换信号和变量的声明语句,直接转换为MSVL的声明语句;其中,如果声明语句中有初始化,必须将初始化语句加在声明语句之后;
包体部分主要为子程序的定义,将其直接转换为MSVL的函数;
对实体和结构体进行转换规则如下:
如果这个实体为顶层实体,该实体和结构体转换为MSVL的frame结构;
如果这个实体为被调用实体,该实体和结构体转换为MSVL的函数结构。
Claims (8)
1.一种硬件语言VHDL到MSVL的自动转换系统,其能够将VHDL语言程序文件转换成MSVL语言程序文件,其特征在于:所述转换系统包括,
文件分析模块:设有文件分析器,所述文件分析器分析VHDL程序文件的顶层文件绝对路径字符串,对这个字符串进行分析,得到所有需要翻译的文件,并分析文件之间的依赖关系,从而按照依赖关系决定翻译的顺序;
词法分析模块:设有词法分析器,所述词法分析器使用正则表达式对VHDL源程序进行分析,识别源程序中的词素,词素为:关键字、数值、字符串、标示符、运算符、间隔符以及注释符,将其解析为记号流;
语法分析模块:设有语法分析器,所述语法分析器通过语法文件构造产生式来识别VHDL中的语法结构,并形成VHDL程序的语法树;
信息存储模块:所述信息存储模块在构造VHDL程序语法树的过程中,对于VHDL程序中的变量、信号、常量信息进行存储,以便翻译模块进行查询和翻译;
翻译模块:所述翻译模块通过在语法分析阶段识别出的语法结构,对VHDL源程序的信息进行有组织的访问,并将各语句节点逐个提取出交予对应的翻译子程序处理,翻译子程序根据每个语句节点的类型来确定翻译规则;
翻译结果字符串连接模块:所述翻译结果字符串连接模块对翻译模块产生的字符串进行添加、修改、合并,形成最终的翻译结果字符串,并写入文件;
还包括出错处理模块,在待翻译的VHDL程序出现词法错误和语法错误时,能够停止翻译过程,并将出错原因输出到指定文件中;
使用所述的硬件语言VHDL到MSVL的自动转换系统,将硬件语言VHDL转换至MSVL语言的语言转换方法包括以下步骤,
第一步:传入VHDL顶层文件的绝对路径,通过顶层文件所在路径,获取将要被翻译的所有文件,并将这些文件放入一个VHDL文件列表;
第二步:读取VHDL文件列表中的文件,将VHDL源程序导入词法分析模块,并将程序中的词素转换为记号流;其中,词素包括VHDL中的关键字、运算符、分隔符、变量名、字面量和注释符;
第三步:将所述记号流导入语法分析模块,使用自下而上的分析方法对记号流进行规约,从而识别VHDL中的语法结构;其中,语法结构包括基本表达式、执行语句、块结构、实体、结构体、包头、包体和子程序;
第四步:将步骤三得到的语句的语法结构存储成语法树,所有语句的语法树集中管理,形成语法树集合,并且,将语法结构中的变量信息和类型信息存储到集合中;其中,语法树以二叉树的形式存储,变量信息存储在变量集合中,类型信息存储在类型集合中;其中,当一个文件语法规约完成时,需要在其中声明的变量名和类型名前面加上实体名和结构体名;
第五步:将所述语法树集合作为输入,每次提取一个语法树结构传给翻译程序进行翻译,翻译程序根据语言转换规则将VHDL结构转换成对应的MSVL结构;
第六步:提取变量集合中的变量,翻译成MSVL的变量声明语句,并将变量声明语句与第五步中翻译程序转换后各个部分的字符串进行合并,生成MSVL程序。
2.如权利要求1所述的硬件语言VHDL到MSVL的自动转换系统,其特征在于:所述基本表达式包括算术表达式、逻辑表达式、关系表达式、符号表达式、属性表达式;所述执行语句包括顺序语句和并行语句;其中,顺序语句包括赋值语句、流程控制语句、wait语句、return语句、NULL语句、子程序调用语句;并行语句包括进程语句、块语句、并行信号赋值语句、并行过程调用语句、元件例化语句、生成语句。
3.如权利要求2所述的硬件语言VHDL到MSVL的自动转换系统,其特征在于:所述流程控制语句包括if语句、case语句、next语句、loop语句、exit语句;所述并行信号赋值语句包括简单信号赋值语句、条件信号赋值语句和选择信号赋值语句;所述子程序调用语句包括函数调用语句和过程调用语句。
4.如权利要求1所述的硬件语言VHDL到MSVL的自动转换系统,其特征在于:所述子程序包括过程和函数;所述块结构包括变量列表、结构体语句块、子程序定义、block块、进程块;所述转换规则包括对基本表达式、执行语句、块结构、实体、结构体、包头、包体、子程序结构转换规则。
5.根据权利要求4所述的硬件语言VHDL到MSVL的自动转换系统,其特征在于:所述基本表达式的转换规则如下,
假设e代表一个原子表达式,x和y是基本表达式:
如果表达式为e,转换为MSVL表达式返回对应的e’;
如果x=y,转换为MSVL语句x=y;
如果表达式为x[+|-|*|/|MOD]y,并且x,y为十进制数,转换为MSVL语句x[+|-|*|/|%]y;
如果表达式为x[+|-|*|/|MOD]y,并且x,y为二进制串,转换为MSVL的多条语句;
如果表达式为x[<|>|<=|>=|=|/=]y,转换为MSVL语句x[<|>|<=|>=|=|!=]y;
如果表达式为x[**|REM]y,转换为MSVL语句的函数调用结构;
如果表达式为:[NOT|ABS]x,转换为MSVL语句Bit_not(x),ABS(x),其中Bit_not,ABS是MSVL函数;
如果表达式为x and y,当这个表达式出现在条件语句中时,转换为MSVL语句x and y;当这个表达式出现在信号赋值语句中时,转换为MSVL的逻辑与;
如果表达式为x or y,当这个表达式出现在条件语句中时,转换为MSVL语句x or y;当这个表达式出现在信号赋值语句中时,转换为MSVL的逻辑或;
如果表达式为x[SLL|SRL|SLA|SRA|ROL|ROR]y,转换为MSVL语句的函数调用结构;
如果表达式为x&y,转换为MSVL的多条语句结构,实现将x与y两个一维数组合并为一个一维数组的功能;
如果表达式为(x),转换为MSVL语句的(x);
如果表达式为边沿信号,转换为MSVL语句的比较结构;
如果表达式为x,y,转换为MSVL语句的x,y;
语句转换规则如下:
语句由基本表达式、关键字与‘;’组成,假设exp是一个基本表达式,换转函数为TrsltExpr(exp);
如果语句为exp,转换为TrsltExpr(exp);
如果语句为exp1<=exp2,转换为TrsltExpr(exp1):=TrsltExpr(exp2);
如果语句为exp1:=exp2,转换为TrsltExpr(exp1)<==TrsltExpr(exp2)and skip;
如果为if_else语句,转换为MSVL的if_else语句;
如果为loop语句,转换为MSVL的while语句;
如果为case语句或select_with语句,转换为MSVL的if_else结构;
如果为for语句,转换为MSVL的while结构;
如果为NULL语句,转换为MSVL的空语句;
如果为wait语句,转换为MSVL的await结构;
如果为return语句,转换为MSVL的赋值语句;
如果为断言语句,转换为MSVL的if_else结构;
如果为event/选择语句,转换为MSVL的if_else结构;
如果为原件例化语句,转换为MSVL的函数调用语句;
如果为生成语句,转换为MSVL的函数调用语句;
如果为进程语句,转换为MSVL的if结构;
如果为参数传递语句,并且是在实体调用中出现,转换为MSVL的参数传递;
如果为参数传递语句,并且是在数组初始化中出现,转换为MSVL的赋值语句;
如果为系统输出语句,转换为MSVL的output结构;
如果为系统输入语句,转换为MSVL的input结构;
如果为函数/过程调用语句,转换为MSVL的函数调用结构;
如果为类型声明/定义语句,转换为MSVL的变量声明/定义结构。
6.根据权利要求4所述的硬件语言VHDL到MSVL的自动转换系统,其特征在于:所述块结构的转换规则如下,
如果为进程或子程序中的语句块,转换为MSVL的顺序语句结构;如果为结构体中的语句块,转换为MSVL的并行语句结构。
7.根据权利要求4所述的硬件语言VHDL到MSVL的自动转换系统,其特征在于:所述包头和包体的转换规则如下,
包头部分,只转换信号和变量的声明语句,直接转换为MSVL的声明语句;其中,如果声明语句中有初始化,必须将初始化语句加在声明语句之后;
包体部分主要为子程序的定义,将其直接转换为MSVL的函数。
8.根据权利要求4所述的硬件语言VHDL到MSVL的自动转换系统,其特征在于:所述实体和结构体的转换规则如下,
如果这个实体为顶层实体,该实体和结构体转换为MSVL的frame结构;
如果这个实体为被调用实体,该实体和结构体转换为MSVL的函数结构。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410841253.1A CN104503816B (zh) | 2014-12-30 | 2014-12-30 | 一种硬件语言vhdl到msvl的自动转换系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410841253.1A CN104503816B (zh) | 2014-12-30 | 2014-12-30 | 一种硬件语言vhdl到msvl的自动转换系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104503816A CN104503816A (zh) | 2015-04-08 |
CN104503816B true CN104503816B (zh) | 2017-09-19 |
Family
ID=52945217
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410841253.1A Active CN104503816B (zh) | 2014-12-30 | 2014-12-30 | 一种硬件语言vhdl到msvl的自动转换系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104503816B (zh) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105488254B (zh) * | 2015-11-24 | 2021-06-08 | 上海核工程研究设计院 | 一种pds三维模型解析及重构方法 |
CN106649216B (zh) * | 2016-10-28 | 2019-10-25 | 上海空间电源研究所 | 一种对化合物半导体器件生长程序的文件转换方法 |
CN106708525A (zh) * | 2016-12-27 | 2017-05-24 | 西安电子科技大学 | 一种基于Coq的MSVL程序验证方法 |
CN108182069B (zh) * | 2017-12-28 | 2021-03-02 | 深圳市创梦天地科技股份有限公司 | 程序语言转换方法、终端设备及计算机可读介质 |
CN108600030B (zh) * | 2018-05-10 | 2022-03-04 | 武汉虹信科技发展有限责任公司 | 网管系统北向监控订购通知过滤方法 |
CN110554875B (zh) * | 2018-05-30 | 2021-01-15 | 北京三快在线科技有限公司 | 代码转换方法及装置、电子设备、存储介质 |
CN109032056B (zh) * | 2018-06-13 | 2020-01-10 | 华东师范大学 | 可编程逻辑控制器编程语言转换方法 |
CN109143952B (zh) * | 2018-06-13 | 2020-05-12 | 华东师范大学 | 可编程逻辑控制器编程语言转换系统 |
CN109375899B (zh) * | 2018-09-25 | 2021-08-03 | 杭州趣链科技有限公司 | 一种形式验证Solidity智能合约的方法 |
CN109885307B (zh) * | 2019-01-07 | 2022-03-01 | 西安邮电大学 | pthread库多线程C程序到MSVL程序的转换方法、计算机程序 |
CN110175031B (zh) * | 2019-04-25 | 2023-08-18 | 平安科技(深圳)有限公司 | Sql语言转成dsl语言的方法、装置、计算机设备和存储介质 |
CN110427179B (zh) * | 2019-06-26 | 2020-10-16 | 西安电子科技大学 | 面向智能合约语言的msvl程序自动生成方法及系统 |
CN110990263B (zh) * | 2019-11-09 | 2024-03-15 | 上海集成电路研发中心有限公司 | 一种测试案例集的自动生成器及生成方法 |
CN111124422B (zh) * | 2019-12-25 | 2023-03-10 | 成都互诚在线科技有限公司 | 一种基于抽象语法树的eos智能合约语言转换方法 |
CN111552969A (zh) * | 2020-04-21 | 2020-08-18 | 中国电力科学研究院有限公司 | 基于神经网络的嵌入式终端软件代码漏洞检测方法及装置 |
CN111722849A (zh) * | 2020-07-17 | 2020-09-29 | 思客云(北京)软件技术有限公司 | Java语言虚拟编译实现方法、系统及装置 |
CN112069788A (zh) * | 2020-09-10 | 2020-12-11 | 杭州安恒信息技术股份有限公司 | 一种yaml文件解析方法、装置、设备及存储介质 |
CN113238759B (zh) * | 2021-04-14 | 2023-02-03 | 西安电子科技大学 | 一种类Python程序设计语言XD-M的解释系统及方法 |
CN113312896B (zh) * | 2021-06-23 | 2023-11-21 | 哈尔滨工程大学 | 一种硬件描述语言vhdl规范检查系统 |
CN113947071A (zh) * | 2021-10-21 | 2022-01-18 | 北京四方继保工程技术有限公司 | 一种变电站五防文件的解析执行系统及方法 |
CN115328811B (zh) * | 2022-10-11 | 2022-12-16 | 北京安帝科技有限公司 | 用于工控网络仿真的程序语句测试方法、装置、电子设备 |
CN117908891A (zh) * | 2024-03-18 | 2024-04-19 | 山东大学 | 一种面向机器人流程自动化的自下而上的翻译方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7000213B2 (en) * | 2001-01-26 | 2006-02-14 | Northwestern University | Method and apparatus for automatically generating hardware from algorithms described in MATLAB |
CN103093046A (zh) * | 2013-01-11 | 2013-05-08 | 华侨大学 | 一种将FPGA硬件描述语言VHDL转化为普通Petri网的方法 |
CN103150200A (zh) * | 2013-04-08 | 2013-06-12 | 西安电子科技大学 | 一种计算机语言转换系统及c语言到msvl语言的转换方法 |
CN103455362A (zh) * | 2013-09-27 | 2013-12-18 | 西安电子科技大学 | 一种硬件语言自动转换系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030196194A1 (en) * | 2001-10-11 | 2003-10-16 | Johns Clifford R. | Hardware design protocol and system |
-
2014
- 2014-12-30 CN CN201410841253.1A patent/CN104503816B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7000213B2 (en) * | 2001-01-26 | 2006-02-14 | Northwestern University | Method and apparatus for automatically generating hardware from algorithms described in MATLAB |
CN103093046A (zh) * | 2013-01-11 | 2013-05-08 | 华侨大学 | 一种将FPGA硬件描述语言VHDL转化为普通Petri网的方法 |
CN103150200A (zh) * | 2013-04-08 | 2013-06-12 | 西安电子科技大学 | 一种计算机语言转换系统及c语言到msvl语言的转换方法 |
CN103455362A (zh) * | 2013-09-27 | 2013-12-18 | 西安电子科技大学 | 一种硬件语言自动转换系统 |
Non-Patent Citations (1)
Title |
---|
框架时序逻辑语言MSVL中面向对象机制的实现;王小兵 段振华;《西安电子科技大学学报(自然科学版)》;20100630;第559-575页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104503816A (zh) | 2015-04-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104503816B (zh) | 一种硬件语言vhdl到msvl的自动转换系统 | |
Bajwa et al. | SBVR business rules generation from natural language specification | |
Richters et al. | Validating UML models and OCL constraints | |
Calegari et al. | Verification of model transformations: A survey of the state-of-the-art | |
US9418230B2 (en) | Automated tools for building secure software programs | |
CN108459860A (zh) | 区块链智能合约形式化验证代码转换器及转换方法 | |
US20020143823A1 (en) | Conversion system for translating structured documents into multiple target formats | |
CN106776343A (zh) | 一种Web应用程序自动化测试工具及方法 | |
KR101770292B1 (ko) | 컴퓨터 수행 가능한 모델 역공학 방법 및 장치 | |
CN103593335A (zh) | 基于本体一致性验证推理的中文语义校对方法 | |
CN108920140A (zh) | 一种前后端统一校验方法 | |
CN109558117A (zh) | 面向航天应用的aadl模型求精及其支持的c代码自动生成方法 | |
Harris et al. | Generating formal hardware verification properties from natural language documentation | |
Gheyi et al. | Automatically Checking Feature Model Refactorings. | |
CN105955755A (zh) | 一种基于状态图的代码化验证方法 | |
CN114528846A (zh) | 一种用于人工智能的概念网络及其生成方法 | |
KR20230110250A (ko) | 전자 회로들의 설계 사양들의 자동화된 번역 | |
CN117077583B (zh) | 一种寄存器传输级电路设计的资源估算方法及装置 | |
CN105302547A (zh) | 一种面向Verilog HDL设计的故障注入方法 | |
Nisbet et al. | Presentations of rase knowledge mark-up | |
Lano et al. | Case study: FIXML to Java, C# and C++. | |
CN115357492A (zh) | 一种用于Java软件的形式化验证方法及装置 | |
Li et al. | Smartshell: automated shell scripts synthesis from natural language | |
CN114327614A (zh) | 参考模型数据流记录和分析的方法及应用 | |
Zhang | An Approach for Extracting UML Diagram from Object-Oriented Program Based on J2X |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |