【技术实现步骤摘要】
一种基于增量编译的Verilog语法分析方法
[0001]本专利技术涉及电子设计自动化
,具体涉及一种基于增量编译的
Verilog
语法分析方法
。
技术介绍
[0002]增量编译技术最早起源于软件领域,其技术核心是只编译代码中被修改的部分,以提高编译效率
。
因此,基于增量编译的程序开发必须考虑编译结果的保存问题,以便下一次编译时使用
。
在软件开发中,增量编译的结果通常只需要满足一个单一的需求,即生成计算机底层的机器码
。
因此,软件编程语言中的增量编译技术通常保存与目标代码结构相似的中间结果,也就是同汇编代码接近的
.o
文件
。
所以,增量编译中间结果的数据结构往往同目标语言绑定
。
[0003]随着硬件设计规模的扩大,增量编译技术在硬件领域也变得流行
。
与软件领域增量编译单一的需求不同,硬件语言编译的中间结果具有多种用途,包括仿真
、
网表生成
、
形式化验证
、
时序分析以及不同硬件语言之间代码转换等
。
然而,现有的硬件语言编译技术都与特定应用密切相关,比如,同仿真有关的增量编译产生的中间代码是适合仿真的中间代码
。
这样导致所保存的增量编译结果缺少通用性,只能直接满足目标应用需求
。
例如,在论文
《
基于层次化设计的
Verilog HD ...
【技术保护点】
【技术特征摘要】
1.
一种基于增量编译的
Verilog
语法分析方法,其特征在于,包括首次编译和再编译两个阶段;首次编译阶段对
Verilog
文件全部模块进行语法分析,包括以下步骤:
(1)
获取待分析的
Verilog
文件代码,以模块为单位读入;
(2)
对读入模块代码进行预处理,主要进行宏定义替换,并删除代码中的宏定义部分;
(3)
对预处理后的模块代码进行语法分析,得到该模块对应的抽象语法树结构,将抽象语法树结构存储到二进制文件中;
(4)
分析抽象语法树结构内部的模块依赖关系,获得模块依赖集合,存储到全局模块依赖关系表中;
(5)
当
Verilog
文件中所有模块都编译完毕,将得到的模块依赖关系表结构写入二进制文件开头
。2.
根据权利要求1所述的一种基于增量编译的
Verilog
语法分析方法,其特征在于,再编译阶段对
Verilog
文件中用户指定模块重新进行语法分析,包括以下步骤:
(S1)
获取用户指定需要重编译的模块名称;
(S2)
根据用户指定模块名获取相应代码,对其进行语法分析,并分析修改类型,若是外向型修改则根据模块依赖关系得到需要重新进行语法分析的模块集合,否则将当前模块的语法分析结果直接存储到新二进制文件中,其余模块的语法分析结果从步骤
(3)
二进制文件中获取;
(S3)
以模块为单位读入代码,判断当前模块是否存在于需要重新进行语法分析的模块集合中,若存在则对该模块重新进行预处理
、
语法分析以及模块依赖分析操作,并将得到的抽象语法树结构输出到新的二进制文件中,若不存在则从步骤
(3)
的二进制文件获取当前模块上一次语法分析结构存入新的二进制文件;
(S4)
当
Verilog
文件中所有模块处理完毕,将更新后的模块依赖关系表结构写入新的二进制文件开头,并删除旧的二进制文件
。3.
根据权利要求1所述的一种基于增量编译的
Verilog
语法分析方法,其特征在于,所述步骤
(4)
包括:分析抽象语法树结构内部是否存在模块实例化相关语句,若存在则向全局模块依赖关系表中添加相应的模块依赖关系,若不存在则继续读取下一模块代码
。4.
根据权利要求2所述的一种基于增量编译的
Verilog
语法分析...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。