基于多FPGA系统的并行RTL综合方法、存储介质与流程

文档序号:29612222发布日期:2022-04-13 09:50阅读:244来源:国知局
基于多fpga系统的并行rtl综合方法、存储介质
技术领域
1.本发明涉及集成电路仿真的技术领域,尤其涉及将rtl进行并行综合的方法。


背景技术:

2.基于纯软件的大规模集成电路的系统仿真验证效率非常低,将大大增加芯片研发周期,尤其对14纳米以上先进制程的大规模集成电路芯片而言,是不可忍受的。因此业界推崇利用基于多fpga系统的硬件仿真加速技术来加快芯片的系统仿真验证。
3.rtl综合就是将硬件描述语言的rtl级代码转变为门级网表,这是用于基于rtl的设计进行仿真验证的一个必要步骤,现有技术中会将大规模集成电路对应的rtl级代码整个输入到相应的工具中,来得到对应的门级网表,这样很容易造成工具卡死、崩溃,同时转化的效率也比较低。因此,现有的多fpga系统能够处理的门级电路规模最高为3亿门左右。而现有的大规模集成电路对应的门级电路的规模是10亿门以上,如果把这种大型规模的门级电路采用现有技术来进行处理时,很容易造成对应的系统崩溃卡死。
4.现有的多fpga系统,通常只采用了4个fpga,在面对大型集成电路时,即便单纯增加fpga的数量,由于传统的方式编译时间过长,导致调试非常费时间,甚至出现无法编译的情况。
5.因而如何提供一种将rtl进行并行综合的方法是业界亟待解决的技术问题。


技术实现要素:

6.为了解决现有技术中大规模集成电路对应的rtl设计处理效率低的技术问题,本发明提出一种基于多fpga系统的并行rtl综合方法、存储介质。
7.本发明提出的基于多fpga系统的并行rtl综合方法,包括:步骤10,用户确定被测试设计的各个模块以及顶部节点,所述模块由至少一个实例组成;步骤11,根据顶部节点对被测试设计的各个实例进行遍历创建层次树;步骤12,并行遍历所述层次树对每一个模块进行唯一化处理,并记录唯一化处理后的模块的哈希值;步骤13,以模块为单位,对各模块进行并行细化和逻辑映射,将各模块对应的被测试设计从rtl转换为门级电路;步骤14,将各个模块对应的门级电路合并为一个整体形成层次化网表;步骤15,统计层次化网表所消耗的资源,并根据资源约束自动选择超图单元;步骤16,采用分割工具进行分割,形成各个fpga对应的网表。
8.进一步,还包括:步骤20,当用户修改对应的被测试设计时,确定最新的被修改的设计文件;步骤21,基于被修改的设计文件执行所述步骤10至12,得到唯一化处理后的模块的新的哈希值;
步骤22,将唯一化处理后的模块的新的哈希值与之前记录的哈希值进行比较;步骤23,将哈希值不一致的唯一化处理后的模块记录为被修改的模块;哈希值一致的模块记录为未修改的模块;步骤24,基于被修改的模块执行所述步骤14;步骤25,将步骤24得到的门级电路和未修改的模块对应的门级电路合并为一个整体形成层次化网表;步骤26,基于步骤25得到的层次化网表执行步骤15-16。
9.进一步,所述步骤20中,根据被测试设计对应的文件的修改时间确定最新的被修改的设计文件;或者根据被测试设计对应的文件的checksum确定最新的被修改的设计文件。
10.进一步,所述步骤12中遍历所述层次树对每一个模块进行唯一化处理具体包括:将无参数或者参数相同的模块唯一化为一个模块,将不同参数的同一个模块生成对应的多个模块。
11.进一步,步骤15中根据资源约束自动选择超图单元具体包括:步骤151,将top模块放入模块列表;步骤152,读取模块列表中的顶层节点,并从模块列表中删除该节点;步骤153,判断当前读取的节点是否超过资源约束,如果没有,则该节点放入超图节点列表,否则在该节点存在子节点的前提下,将其子节点放入模块列表,根据每个节点的资源用量从大到小排列模块列表中的节点;步骤154,如果模块列表不为空,则返回步骤152直至模块列表为空;步骤155,返回超图节点列表中的节点作为超图单元。
12.本发明提出的计算机可读存储介质,用于存储计算机程序,所述计算机程序运行时执行上述技术方案所述的基于多fpga系统的并行rtl综合方法。
13.本发明使得rtl设计在综合时可以进行处理,使得本发明能够处理的集成电路的规模达到10亿门以上。本发明采用module by module逻辑映射方式(即以模块为单元,各个模块并行细化、逻辑映射),完全并行,大幅减少处理时间(不同于top-bottom无法并行和bottom-top部分并行方式);同时,本发明精准地对被修改设计的module增量编译,大幅减少重新编译时间;并且同一个无参数module或相同参数module只保存一个module,大幅度减少网表(netlist)体积;本发明还可以自动选取分割单元,不仅可以以module的instance为单元,也可以逻辑门、触发器等基本元器件为单元,或二者混合为单元进行分割。
附图说明
14.下面结合实施例和附图对本发明进行详细说明,其中:图1是本发明的一实施例流程图。
15.图2是本发明图1的细节流程图。
16.图3是本发明查找被修改的实例的示意图。
17.图4是本发明一实施例层次化网表的结构图。
18.图5是本发明自动选择超图单元的流程图。
19.图6是本发明超图单元的分割示意图。
具体实施方式
20.为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
21.由此,本说明书中所指出的一个特征将用于说明本发明的一个实施方式的其中一个特征,而不是暗示本发明的每个实施方式必须具有所说明的特征。此外,应当注意的是本说明书描述了许多特征。尽管某些特征可以组合在一起以示出可能的系统设计,但是这些特征也可用于其他的未明确说明的组合。由此,除非另有说明,所说明的组合并非旨在限制。
22.下面结合附图以及实施例对本发明的原理进行详细说明。
23.如图1、图2所示,本发明的基于多fpga系统的并行rtl综合方法需要用户确定模块(module)和顶部模块节点,一个模块由至少一个实例(instance)组成。一个module可能包含子instances,还可能包含一些逻辑电路,也可能只有子instances没有其他电路,也可能只有其他电路,没有子instance。如果一个实例没有子instance,说明该实例是树的叶子节点。
24.对模块进行唯一化处理,并记录唯一化处理后的模块的哈希值,哈希值的具体获得方式可以通过现有技算法来得到,如md5、sha1等哈希算法。
25.然后根据顶部节点对被测试设计的各个实例进行遍历,从而创建由实例组成的层次树。具体的过程如下。
26.从顶部模块节点中(也称之为top层)找到所有子节点对应的实例,然后遍历每一个实例,并记录实例之间的层级关系。
27.重复上述步骤直到所有的实例被遍历完毕,从而得到由实例组成的层次树。
28.并行遍历层次树,判断当前被遍历到的实例是否存在已记录的模块,如果当前被遍历到到实例存在已记录的模块,则对该实例不进行处理,否则基于该实例找到该实例对应的模块,并把这个找到的模块的所有实例设置成黑盒(blackbox),并把这个模块中的所有实例进行细化、工艺映射处理。解决综合依赖问题,模块中黑盒原样输出,不构成依赖关系。从而可以实现所有模块并行细化、工艺映射。上述对模块进行唯一化以及创建层次树的顺序不分先后。
29.以模块为单位,对各模块进行并行细化和逻辑映射,将各模块对应的被测试设计从rtl转换为门级电路。再将各个模块对应的门级电路合并为一个整体形成层次化网表,该层次化网表包含了实例、基础逻辑单元、lut以及ff等,该层次化网表的最底层为基础逻辑单元、lut、ff等。图4给出了一个层级化网表的具体实施例。
30.统计层次化网表所消耗的资源,例如,根据标准资源库中对应基本逻辑单元的资源量计算网表设计树中每个instance的资源消耗,包括lut、ff、ram和io数量资源。并根据资源约束自动选择超图单元,采用分割工具进行分割,形成各个fpga对应的网表。分割时,根据分割工具的最优分割效果节点数来计算每个节点的资源约束,根据资源约束在层次化网表(也称之为网表设计树)中自顶向下进行遍历,将符合资源约束的节点选为分割单元,此时分割单元可为实例,也可为基本逻辑单元,最终将选择的单元作为超图节点生成超图。采用分割工具针对超图单元进行分割,以切割io最少为目标,最后将超图分割结果转为对
应fpga网表文件,并插入全局模块,全局模块主要用于将每个fpga都存在的模块进行复制并插入到每个fpga中,从而使得dut中与全局模块相连接的模块可以直接与每个fpga中的全局模块直接相连,而不用跨fpga链接。全局模块多用于时钟模块,方便全局时钟同步处理。
31.当用户修改对应的被测试设计时,先确定最新的被修改的设计文件,例如计算该被测试设计对应的所有设计文件的checksum或文件修改时间,确认最新的被修改的设计文件。
32.基于被修改的设计文件重新得到新的层次树,并对对每一个模块进行唯一化处理,得到唯一化处理后的模块的新的哈希值。将唯一化处理后的模块的新的哈希值与之前记录的哈希值进行比较。如果哈希值不一致,则将哈希值不一致的唯一化处理后的模块记录为被修改的模块。如果哈希值一致,则哈希值前后一致的模块记录为未修改的模块。
33.被修改的模块还需要进行细化和工艺映射并得到被修改的模块对应的新的门级电路,将被修改的模块对应的新的门级电路和未修改的模块对应的门级电路合并为一个整体形成层次化网表,然后再基于这个新的层次化网表再次进行超图单元的选择并分割,得到各个fpga对应的网表。如图3所示,本发明只对被修改的module进行逻辑映射,其他节点不修改,可以大大提高效率。
34.在上述过程中,遍历层次树对每一个模块进行唯一化处理时,将无参数或者参数相同的模块唯一化为一个模块,将不同参数的同一个模块生成对应的多个模块。
35.在层级化网表中自顶向下遍历,将符合超图单元的资源约束的节点选择为超图单元,该超图单元可为实例,也可为基础逻辑单元(如查找表,寄存器等)。
36.如图5所示,根据资源约束自动选择超图单元的详细过程如下。
37.将顶部模块放入模块列表。
38.读取模块列表中的顶层节点,并从模块列表中删除该节点。判断当前读取的节点是否超过资源约束,如果没有,则该节点放入超图节点列表了否则在该节点存在子节点的前提下,将其子节点放入模块列表,根据每个节点的资源用量从大到小排列模块列表中的节点;如果模块列表不为空,则返回到读取模块列表中的顶层节点的步骤继续对模块列表中的节点进行处理,直至模块列表为空。最后,返回超图节点列表中的节点作为超图单元。
39.如图6所示,图中深色代表超图单元,分割时,分割工具以切割io最少为目标,对超图单元进行分割,或者分割到图6中上半部分,或者分割到图6中下半部分。
40.本发明还保护用来存储计算机程序的计算机可读存储介质,该计算机程序运行时执行本发明上述技术方案的基于多fpga系统的并行rtl综合方法。
41.以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1