一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种针对集成电路设计的建模验证及代码生成方法

2022-06-01 11:04:24 来源:中国专利 TAG:


1.本发明涉及集成电路验证技术领域,具体涉及一种针对集成电路设计的建模验证及代码生成方法。


背景技术:

2.随着集成电路工艺的不断发展和处理器体系结构的不断创新,高性能处理器的复杂度和规模不断提升,随之而来的问题是可靠性难以保证,因此正确性验证已经成高性能处理器芯片研制过程中的重要瓶颈之一,验证过程通常占整个芯片开发周期的70%以上。目前,fpga开发常用来验证数字集成电路的设计,尤其在航天、军工等国防方面对fpga设计的功能实现、安全性、可靠性都提出了更高的要求。因此,对于fpga设计的验证显得更加重要。
3.目前验证技术面临复杂性和全面性两方面问题。复杂性是指当系统规模不断扩大,相应验证规则的复杂程度提高,很难兼顾各个功能模块的验证工作,所占开发周期的时间比例也越来越大,导致验证周期往往大于开发周期;全面性是指目前的验证工作大多集中在系统设计开发完成后进行,忽略了针对实际开发前需求分析阶段的验证,导致验证过程不能覆盖整个系统开发周期,而由于早期设计的遗漏或不合理问题,容易造成开发阶段大规模返工,降低系统开发效率。


技术实现要素:

4.本发明的目的在于,提供了一种针对集成电路设计的建模验证及代码生成方法,其保证了代码实现阶段符合可综合模型原则,减少代码实现错误及功能逻辑错误。
5.为实现上述目的,本技术提出一种针对集成电路设计的建模验证及代码生成方法,包括:
6.详细分析需求设计文档,将所述需求设计文档中的功能划分为不同的verilog hdl语句模块,所述verilog hdl语句模块包括顶层模块和底层模块,所述顶层模块主要实现对底层模块的例化;
7.根据所述顶层模块和底层模块的内部功能以及端口,将顶层模块代码、底层模块代码、顶层模块端口号以及底层模块端口号分别填入对应的模块表内;
8.验证所述模块表内代码是否符合可综合模型原则;
9.验证所述模块表内代码的语法结构和逻辑结构;
10.填入所述模块表内代码所需实现功能,对所述可综合模型原则进行功能验证;
11.对符合可综合模型原则、语法结构、逻辑结构、功能验证的代码转换为可使用的verilog hdl代码。
12.进一步的,除例化功能外的verilog hdl语句按照功能划分为多个子功能,每个所述子功能为一个底层模块,顶层模块例化不同的底层模块,从而实现所需要的全部功能。
13.进一步的,根据所述顶层模块和底层模块的内部功能以及端口,将顶层模块代码、
底层模块代码、顶层模块端口号以及底层模块端口号分别填入对应的模块表内,具体为:
14.确定顶层模块变量,通过当前值和之前值作为判定上升沿和下降沿的方式;
15.确定底层模块变量,通过当前值和之前值作为判定上升沿和下降沿的方式;
16.根据所述底层模块变量设计底层模块表;
17.所述顶层模块选择例化不同的底层模块,定义顶层模块变量与底层模块变量的例化关系,创建例化的顶层模块表。
18.进一步的,验证所述模块表内代码是否符合可综合模型原则,具体为:依据可综合语句的规则,判断所述顶层模块表、底层模块表内定义的变量与语句是否符合规则,输出不符合规则的定义。
19.进一步的,验证所述模块表内代码的语法结构和逻辑结构,具体为:显示顶层模块表与底层模块表,根据所述各自模块表内的填充代码进行跳转,当跳转至规定中不可到达的表格或跳转到的表格内填充代码不符合语法标准时,高亮显示该模块表内的具体单元格。
20.更进一步的,填入所述模块表内代码所需实现功能,对所述可综合模型原则进行功能验证,具体为:将所述顶层模块表和底层模块表中的代码转换为promela语法下的代码,所述promela代码输入到spin软件中对代码进行功能验证。
21.更进一步的,将所述顶层模块表和底层模块表中的代码转换为promela语法下的代码,所述promela代码输入到spin软件中对代码进行功能验证,具体为:
22.根据promela语法标准,将顶层模块表和底层模块表转换为spin软件可支持的promela语句;
23.所述promela语句以及所填入的功能要求输入到spin软件中,应用spin的验证功能,进而确定对应模块表内代码是否符合功能要求。
24.更进一步的,对符合可综合模型原则、语法结构、逻辑结构、功能验证的代码转换为可使用的verilog hdl代码,具体为:根据verilog hdl语法标准,将顶层模块表和底层模块表转换为满足需求分析且可运行的verilog hdl语句。
25.本发明采用的以上技术方案,与现有技术相比,具有的优点是:本发明前端的代码设计方法为一种可视化的建模方法,代码设计完成后,可利用可视化的方式模拟代码运行过程,从而可以有效发现代码错误,并能够发现错误路径,对修改工作提供帮助。前端还对代码的设计进行了是否符合可综合语句的判断,减少不可转化为电路的代码结构,对后期转换为电路提供了基础。完成代码设计后,转换为spin可支持的promela语句,利用spin工具对代码进行功能验证,能够在设计前期发现设计错误,大大减少返工时间,提高设计效率,通过上述方式,在生成verilog hdl语句时保障了语句是可用的和有效的。
附图说明
26.图1为针对集成电路设计的建模验证及代码生成方法流程图;
27.图2为顶层模块或底层模块的端口图;
28.图3为顶层模块模块表或底层模块模块表的结构图;
29.图4为可综合语句验证、语法结构和逻辑结构验证、功能验证流程图;
30.图5为verilog hdl语言和promela语言对照图。
具体实施方式
31.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本技术,并不用于限定本技术,即所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本技术实施例的组件可以以各种不同的配置来布置和设计。
32.因此,以下对在附图中提供的本技术的实施例的详细描述并非旨在限制要求保护的本技术的范围,而是仅仅表示本技术的选定实施例。基于本技术的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。
33.实施例1
34.如图1所示,本实施例提供一种针对集成电路设计的建模验证及代码生成方法,具体包括:
35.s1,详细分析需求设计文档,将所述需求设计文档中的功能划分为不同的verilog hdl语句模块,所述verilog hdl语句模块包括顶层模块和底层模块,所述顶层模块主要实现对底层模块的例化;
36.需要说明的是,顶层模块划分为只具备例化底层模块的功能,具体的功能都由底层模块来实现。
37.s2,根据所述顶层模块和底层模块的内部功能以及端口,将顶层模块代码、底层模块代码、顶层模块端口号以及底层模块端口号分别填入对应的模块表内;
38.具体的,如图2所示,确定顶层模块变量时,分为输入输出两种表格存储,变量包括端口名、verilog hdl数据类型、verilog hdl变量大小,promela数据类型、promela变量大小、初始值和last值7种属性,初始last值默认等于初始值。初始值和last值可以表明上升沿和下降沿;确定底层模块变量,与上述方式类似。
39.先填写底层模块的功能;顶层模块在底层模块设计完成后进行填充,填充时只需选择需要例化的底层模块,如图3所示,将输入输出变量进行对应,完成例化。
40.s3,验证所述模块表内代码是否符合可综合模型原则;
41.具体的,如图4所示中的可综合语句规则包括:
42.不能在一个以上的always过程块中对同一个变量赋值。而对同一个赋值对象不能既使用阻塞式赋值,又使用非阻塞式赋值。
43.避免混合使用上升沿和下降沿触发的触发器。
44.同一个变量的赋值不能受多个时钟控制,也不能受两种不同的时钟条件(或者不同的时钟沿)控制。
45.避免在case语句的分支项中使用x值或z值。
46.只有符合可综合语句规则才可以进入到下一步骤。
47.s4,验证所述模块表内代码的语法结构和逻辑结构。
48.具体的,如图4所示中的语法结构验证为:对顶层模块和底层模块变量位宽的检验,防止出现截位现象,对if语句或者case语句的完整性检测,检测是否出现分支不完全的情况。同时由于在模块定义时,选择变量只能为已定义变量,能够避免出现未定义变量。
49.如图4所示中的逻辑功能验证由表格内的跳转来实现,表格内可包括忽略单元格和不可达单元格,根据表格内部填充的数据(代码)进行跳转,如图3所示,表格内的事件和
状态会有数值标记,并且每一个处理单元格(除事件和状态单元格)都会分为两部分,一部分为即将跳转到的事件数,表格的跳转就是根据事件的数值进行跳转,当跳转至不可达单元格时,说明代码出现错误,将进行报错,在模块出现错误的具体单元格处高亮显示,表明当前单元格出现错误,同时记录错误单元格出现的路径,即错误路径,可以对错误路径进行重放,从而方便发现该错误的原因。
50.s5,填入所述模块表内代码所需实现功能,对所述可综合模型原则进行功能验证;
51.具体的,如图5所示,promela和verilog hdl都支持并行系统,将所设计的verilog hdl代码转换为promela代码是可行的也是有效的,在定义模块时,定义了生成promela代码所需要的属性,再根据定义的底层模块和顶层模块及其间的例化关系,依据promela语法规则生成promela代码,将promela代码和定义的功能描述输入至spin工具内,从而验证功能是否实现。
52.s6,对符合可综合模型原则、语法结构、逻辑结构、功能验证的代码转换为可使用的verilog hdl代码;
53.具体的,当代码通过上述各个验证后,保证是符合要求的代码时,开始生成代码。在定义底层模块和顶层模块时,定义了生成verilog hdl代码所需要的属性,根据定义的底层模块和顶层模块及其间的例化关系,再依据verilog hdl语法标准生成满足需求分析且可运行的verilog hdl语句。
54.本技术上述方法需要的操作系统为内存8g以上及cpu4核以上。
55.前述对本发明的具体示例性实施方案的描述是为了说明和例证的目的。这些描述并非想将本发明限定为所公开的精确形式,并且很显然,根据上述教导,可以进行很多改变和变化。对示例性实施例进行选择和描述的目的在于解释本发明的特定原理及其实际应用,从而使得本领域的技术人员能够实现并利用本发明的各种不同的示例性实施方案以及各种不同的选择和改变。本发明的范围意在由权利要求书及其等同形式所限定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献