CN112329368B - 自动调整分割方案的方法、设备和存储介质 - Google Patents
自动调整分割方案的方法、设备和存储介质 Download PDFInfo
- Publication number
- CN112329368B CN112329368B CN202011188632.7A CN202011188632A CN112329368B CN 112329368 B CN112329368 B CN 112329368B CN 202011188632 A CN202011188632 A CN 202011188632A CN 112329368 B CN112329368 B CN 112329368B
- Authority
- CN
- China
- Prior art keywords
- fpga
- module
- interfaces
- resources
- resource
- 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
- 238000000034 method Methods 0.000 title claims abstract description 45
- 238000000638 solvent extraction Methods 0.000 title claims description 10
- 230000011218 segmentation Effects 0.000 claims abstract description 78
- 238000013461 design Methods 0.000 claims abstract description 36
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 6
- 238000004590 computer program Methods 0.000 claims description 7
- 230000004308 accommodation Effects 0.000 claims description 3
- 238000012545 processing Methods 0.000 abstract description 3
- 230000006872 improvement Effects 0.000 description 7
- 238000012795 verification Methods 0.000 description 5
- 238000012360 testing method Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000003247 decreasing effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
- G06F30/343—Logical level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
- G06F30/3308—Design verification, e.g. functional simulation or model checking using simulation
- G06F30/331—Design verification, e.g. functional simulation or model checking using simulation with hardware acceleration, e.g. by using field programmable gate array [FPGA] or emulation
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本发明揭示了一种自动调整分割方案的方法、设备和存储介质,所述方法包括:读取目标RTL设计代码的顶层,通过递归算法,解析出所述目标RTL设计的层次结构;获取初始分割方案;获取资源利用率超限列表;根据预定移动策略和层次结构,依次处理所述资源利用率超限列表中的每个超限资源,得到最终的分割方案。与现有技术相比,本发明的自动调整分割方案的方法,由于可以自动获取目标RTL设计的层次结构和每个Module的各种资源,因此能够对初始分割方案进行自动调整,得到满足条件的最终分割方案。所述方法能够减少人工的干预,高效地缩短分割任务的迭代周期,并且打破以Block为边界的分割限制,降低可被分割的层级,提高分割精度和灵活性,提高资源的利用率。
Description
技术领域
本发明涉及网络通信领域,尤其涉及一种自动调整分割方案的方法、设备和存储介质。
背景技术
在芯片的专用集成电路(ASIC)设计流程中,FPGA原型验证是关键流程之一。FPGA原型验证通过将RTL代码移植到FPGA来验证芯片的功能和性能。由于FPGA原型验证是基于硬件电路的测试手段,所以被复刻的测试产品的功能和性能更加贴近于真实产品,而且其测试的速度和效率也是软件仿真工具所无法企及的,所以FPGA原型验证能够大大缩短ASIC芯片设计的周期。
但是FPGA资源规模较小,当被移植的RTL设计规模超过单片FPGA所能够容纳资源限制时,需要将目标RTL设计分割成若干个小的设计,再配置到多个FPGA中,同时需要保证运行时整个设计的逻辑功能正确无误,性能达标。如何分割通常被认为是FPGA原型验证中最大的挑战。
而现有技术中,为了解决上述问题,主要通过分析每个block的资源情况(block下包括多个模块module,每个module下包括有各种资源),人工对block进行分组合并安置到对应的目标FPGA中。随着目标RTL设计复杂度的增加,Block数量急剧增大,分割方案组合数量亦同步增大。为了满足各个FPGA的资源限制的要求,整个分割过程变得异常耗时,并且操作繁琐,容易出错。
而且,现有技术中只支持Block层级的分割组合,所以可能出现当某个Block的资源超出单个FPGA的资源限制,无法实现分割的情况。
发明内容
本发明的目的在于提供一种自动调整分割方案的方法、设备和存储介质。
为实现上述发明目的之一,本发明一实施方式提供一种自动调整分割方案的方法,所述方法包括:
读取目标RTL设计代码的顶层,通过递归算法,解析出所述目标RTL设计的层次结构;
获取初始分割方案,所述初始分割方案设置的每个FPGA对外的IO接口满足对应FPGA的IO接口数量限制;
根据所述层次结构以及数据库中存储的每个Module包含的各种资源的数据信息,自动计算所述初始分割方案设置的每个FPGA中各个资源的利用率,得到资源利用率超限列表;
根据预定移动策略和最新的层次结构,依次处理所述资源利用率超限列表中的每个超限资源,直至每个FPGA中对外的IO接口满足对应FPGA的IO接口数量限制,并且所有资源的利用率都不超限,得到最终的分割方案。
作为本发明一实施方式的进一步改进,所述预定移动策略具体包括:
找出超限资源对应的FPGA,计算所述FPGA中所述资源的超限额度,获取所述FPGA中所述资源的数量大于或等于超限额度的多个Module,根据最新的层次结构,计算移走每个Module对所述FPGA的对外IO接口以及其它资源的影响,确定待移动的Module;
获取能够容纳所述待移动的Module的所述资源的多个FPGA,根据最新的层次结构,计算将所述待移动的Module移入每个FPGA对对应FPGA的对外IO接口以及其它资源的影响,确定待移入的FPGA;
将所述待移动的Module移入所述待移入的FPGA,并更新所述层次结构。
作为本发明一实施方式的进一步改进,所述“计算移走每个Module对所述FPGA的对外IO接口以及其它资源的影响,确定待移动的Module”具体包括:
计算移走每个Module后所述FPGA的对外IO接口的数量,获取所述IO接口能够满足对应FPGA的IO接口数量限制的对应Module的第一集合;
计算移走每个Module后所述FPGA的其它资源的利用率,获取所述其它资源的利用率不超限的对应Module的第二集合;
从所述Module的第一集合和第二集合的交集中选择一个Module,作为待移动的Module。
作为本发明一实施方式的进一步改进,所述“计算将所述待移动的Module移入每个FPGA对对应FPGA的对外IO接口以及其它资源的影响,确定待移入的FPGA”具体包括:
计算将所述待移动的Module移入每个FPGA后每个FPGA的对外接口的数量,获取所述IO接口能够满足对应FPGA的IO接口数量限制的对应FPGA的第一集合;
计算将所述待移动的Module移入每个FPGA后每个FPGA的其它资源的利用率,获取所述其它资源的利用率不超限的对应FPGA的第二集合;
从所述FPGA的第一集合和第二集合的交集中选择一个FPGA,作为待移入的FPGA。
作为本发明一实施方式的进一步改进,所述“读取目标RTL设计代码的顶层,通过递归算法,解析出所述目标RTL设计的层次结构”具体包括:
读取并解析目标RTL设计代码的顶层,获取所述顶层包括的所有Block、每个Block的IO接口以及Block之间的IO接口的连接关系;
遍历解析每个Block,获取每个Block包括的所有Module、每个Module的实例化份数、每个Module的IO接口以及所述IO接口的连接关系,其中所述IO接口的连接关系包括Module的IO接口与对应Block的IO接口的对应关系,以及同一个Block内的不同Module的IO接口的连接关系;
得到所述目标RTL设计的层次结构。
作为本发明一实施方式的进一步改进,所述“获取初始分割方案”具体包括:
将具有直连关系的多个Block和/或Module划分到相同的FPGA中;
调整每个FPGA中的Block和/或Module的数量,直至每个FPGA对外的IO接口满足对应FPGA的IO接口数量限制,得到所述初始分割方案。
作为本发明一实施方式的进一步改进,所述“根据所述层次结构以及数据库中存储的每个Module包含的各种资源的数据信息,自动计算所述初始分割方案设置的每个FPGA中各个资源的利用率,得到资源利用率超限列表”具体包括:
根据所述层次结构,得到每个FPGA下每个Block包括的所有Module;
根据数据库中存储的每个Module包含的各种资源的数据信息,计算每个FPGA中所有Module包括的各个资源的数量;
获取每个FPGA中各个资源的最大容纳数量,计算每个FPGA中各个资源的利用率,得到资源利用率超限列表。
作为本发明一实施方式的进一步改进,所述方法还包括:
从每个Module的综合资源数据文件中获取对应Module各种资源的数据信息,其中所述各种资源包括逻辑资源和存储资源;
以每个Module的名字作为数据库的关键字,将每个Module的各种资源的数据信息存入数据库中。
为实现上述发明目的之一,本发明一实施方式提供一种电子设备,包括存储器和处理器,所述存储器存储有可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任意一项所述自动调整分割方案的方法中的步骤。
为实现上述发明目的之一,本发明一实施方式提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项所述自动调整分割方案的方法中的步骤。
与现有技术相比,本发明的自动调整分割方案的方法,自动获取并计算初始分割方案下每个FPGA的资源利用情况和所有超限资源,自动根据预定移动策略处理所有超限资源,最终根据所述方法自动得到满足条件的分割方案,减少人工的干预,高效地缩短分割任务的迭代周期。并且所述方法打破以Block为边界的分割限制,降低可被分割的层级,提高分割精度和灵活性,进一步提高资源的利用率。
附图说明
图1是一个目标RTL设计的顶层结构的结构示意图。
图2是现有技术对图1的目标设计进行分割后的分割方案。
图3是本发明对图1的目标设计进行分割后的分割方案。
图4是本发明自动调整分割方案的方法的流程示意图。
具体实施方式
以下将结合附图所示的具体实施方式对本发明进行详细描述。但这些实施方式并不限制本发明,本领域的普通技术人员根据这些实施方式所做出的结构、方法、或功能上的变换均包含在本发明的保护范围内。
图1为一个目标RTL设计的顶层结构,图2为根据现有技术得到的分割方案,从图2可以看出,由于BlockA的LUT资源超过所有FPGA的LUT资源的预定上限,因此所述分割方案无法满足FPGA的资源限制条件,即使用现有技术无法得到满足资源限制条件的分割方案。
本发明提供一种自动调整分割方案的方法,所述方法通过自动获取并计算初始分割方案下每个FPGA的资源利用情况和所有超限资源,自动根据预定移动策略处理所有超限资源,最终根据所述方法自动得到满足条件的分割方案,减少人工的干预,高效地缩短分割任务的迭代周期。并且所述方法打破以Block为边界的分割限制,降低可被分割的层级,提高分割精度和灵活性,进一步提高资源的利用率。通过所述方法得到如图3所示的满足资源限制条件的分割方案。
如图3所示,所述自动调整分割方案的方法包括:
步骤S100:读取目标RTL设计代码的顶层,通过递归算法,解析出所述目标RTL设计的层次结构。
ASIC芯片设计的结构一般分为三层,包括顶层、Block层和Module层,顶层包括有多个Block,每个Block包括多个Module。每个Module包括多个IO接口和各种资源,所述各种资源包括逻辑资源和存储资源,逻辑资源包括LUT(函数发生器)查找表等逻辑相关的资源,存储资源包括BlockRam等存储相关的资源。
具体的,所述步骤S100包括:
步骤S110:读取并解析目标RTL设计代码的顶层,获取所述顶层包括的所有Block、每个Block的IO接口以及Block之间的IO接口的连接关系。
顶层TOP由所有Block互联而成。每个Block的对外IO接口有多个,逻辑上相邻的Block之间通过对外IO接口连接在一起。解析目标RTL设计代码的顶层,可以获取所述顶层包括的所有Block(包括Block的名称和数量)、每个Block包括的对外接口(例如BlockA包括6个IO接口分别为IO1~IO6),以及Block之间的IO接口的连接关系(例如BlockA的IO1与BlockB的IO1连接)。
步骤S120:遍历解析每个Block,获取每个Block包括的所有Module、每个Module的实例化份数、每个Module的IO接口以及所述IO接口的连接关系,其中所述IO接口的连接关系包括Module的IO接口与对应Block的IO接口的对应关系,以及同一个Block内的不同Module的IO接口的连接关系。
每个Block包括多个Module,每个Module包括多个IO接口,这些Module的IO接口的连接关系包括对内连接和对外连接。所述对内连接是指同一个Block内不同Module的IO接口互相连接,所述对外连接是指所述IO接口与另一个Block下的Module的IO接口互相连接,也可以理解为所述对外连接为Module的IO接口与对应Block的IO接口的对应关系。例如BlockA包括IO1~IO5总共5个对外的IO接口,而其中IO1与BlockB的IO1连接,实际上BlockA的IO1对应的是其包括的ModuleA的IO1,BlockB的IO1对应的是其包括的ModuleB的IO1,而从Block层看到的BlockA的IO1与BlockB的IO1连接,实际上是ModuleA的IO1与ModuleB的IO1的连接。
另外,在遍历解析每个Block时,还会获取每个Module实例化的份数N(N为正整数),N份实例化的Module就代表N个Module,其内部的各种资源(比如存储资源或逻辑资源等)就有N份。
步骤S130:得到所述目标RTL设计的层次结构。
步骤S110所得到的关于Block层的相关信息和步骤S120所得到的关于Module层的相关信息就构成了所述目标RTL设计的层次结构。从上述步骤可以看出,目标RTL设计的层次结构非常复杂,特别是Block数量急剧增加以后,使用现有技术对Block层级进行分割,需要大量人工干预,有时即使人工干预也很有可能无法获得满足要求的分割方案。
步骤S200:获取初始分割方案,所述初始分割方案设置的每个FPGA对外的IO接口满足对应FPGA的IO接口数量限制。
初始分割方案的分割原则包括如下两点:
(1)将具有直连关系的多个Block和/或Module划分到相同的FPGA中。
由于初始分割方案是人工进行制定的,为了便于操作,初始分割方案一般只在Block层级进行分割,即将具有直连关系的多个Block划分到相同的FPGA中。但是若在Block层级进行划分后,无论如何进行调整都无法满足原则(2),则初始分割方案也会进行到Module层级。
需要说明的是,所述直连关系即是两个Block之间的接口直接连接。
(2)保证每个FPGA对外的IO接口满足对应FPGA的IO接口数量限制。
每个FPGA能够容纳的IO接口数量有限,因此,划分后的每个FPGA对外的IO接口需要满足对应FPGA的IO接口数量限制,即不能超过对应FPGA能够容纳的最大IO接口数。另外,所述FPGA的对外IO接口,是指所述FPGA与外部其它FPGA连接的IO接口,并不包括FPGA内部互联的IO接口。
按照以上两个原则,所述“获取初始分割方案”具体包括:
将具有直连关系的多个Block和/或Module划分到相同的FPGA中。
调整每个FPGA中的Block和/或Module的数量,直至每个FPGA对外的IO接口满足对应FPGA的IO接口数量限制,得到所述初始分割方案。
因此,所述初始分割方案设置的每个FPGA对外的IO接口满足对应FPGA的IO接口数量限制。
步骤S300:根据所述层次结构以及数据库中存储的每个Module包含的各种资源的数据信息,自动计算初始分割方案下,每个FPGA中各个资源的利用率,得到资源利用率超限列表。
初始分割方案为每个FPGA配置了多个Block和/或Module(即正常情况下,会为每个FPGA配置多个Block,而有些复杂场景,会为一些FPGA配置Block和Module,也有可能为FPGA配置多个Module)。从所述层次结构可以知道每个FPGA包括的Block和/或Module、Block之间如何连接的、每个Block包括有哪些Module、Module之间如何连接的等。
而每个Module包含的各种资源的数据信息是从数据库中获取的。具体的,每个Module的各种资源的数据信息是根据如下步骤存入数据库的:
(1)从每个Module的综合资源数据文件中获取对应Module各种资源的数据信息,其中所述各种资源包括逻辑资源和存储资源。
首先为系统配置各个Module的综合资源数据文件的存放路径,根据存放路径自动读取各个Module的综合资源数据文件,然后解析各个Module包含的各种资源的数据信息。以Xlink作为存储语言的某个资源数据文件为例,“Total LUTs:xxxx(xx%)”为LUT的数据信息(LUT为逻辑资源),“Simple Dual Port Rams(RAM32M):xxx”为BlockRam的数据信息(BlockRam为存储资源)。然后系统根据以上信息,自动解析并抓取每个Module的逻辑资源和存储资源的数据信息。
(2)以每个Module的名字作为数据库的关键字,将每个Module的各种资源的数据信息存入数据库中。
这样,将Module的各种资源的数据信息存入数据库,方便后续的计算。
具体的,所述步骤S300包括:
步骤S310:根据所述层次结构,得到每个FPGA下每个Block包括的所有Module。
步骤S320:根据数据库中存储的每个Module包含的各种资源的数据信息,计算每个FPGA中所有Module包括的各个资源的数量。
步骤S330:获取每个FPGA中各个资源的最大容纳数量,计算每个FPGA中各个资源的利用率,得到资源利用率超限列表。
由于性能的原因,资源利用率的上限阈值一般都不是100%,而是低于100%,比如90%。当某个FPGA的某个资源的利用率超过上限阈值,则认为所述资源超限,将其列入资源利用率超限列表。根据上述操作方法,遍历所有FPGA的所有资源(包括逻辑资源和存储资源),得到资源利用率超限列表。
步骤S400:根据预定移动策略和最新的层次结构,依次处理所述资源利用率超限列表中的每个超限资源,直至每个FPGA中对外的IO接口满足对应FPGA的IO接口数量限制,并且所有资源的利用率都不超限,得到最终的分割方案。
FPGA中某个资源超限,就需要从这个FPGA中移走一部分超限资源,使所述资源不超限。但是,当从FPGA中移走某个Module后,FPGA的对外接口的数量可能会发生改变(对外接口可能增加、不变,也可能减少),从而可能导致超限。另外,移走Module后,FPGA的其它资源也会随之减少。因此,本步骤主要是从Module层面去平衡各个FPGA中的资源,得到最终满足条件的分割方案。由于发明的方法降低了可被分割的层级,提高了分割精度和灵活性,从而提高了最终的分割方案中FPGA资源的利用率。
针对每个超限资源,主要分两步去处理:一是确定哪个Module可以被移走;二是确定那个FPGA可以接收所述Module。因此,所述预定移动策略包括:
步骤S410:找出超限资源对应的FPGA,计算所述FPGA中所述资源的超限额度,获取所述FPGA中所述资源的数量大于或等于超限额度的多个Module,根据最新的层次结构,计算移走每个Module对所述FPGA的对外IO接口以及其它资源的影响,确定待移动的Module。
假设FPGA1中LUT资源超限,超限额度(超限额度=实际值-上限阈值)为100,找到FPGA1中LUT资源数量大于100的Module,包括Module1~Module5,分别计算移走每个Module对所述FPGA的对外IO接口以及其它资源的影响。其中,此处移走Module后,FPGA的对外接口的数量可能会发生改变(对外接口可能增加、不变,也可能减少),从而可能导致超限。另外,移走Module后,其它资源也会随之减少。
优选的,所述“计算移走每个Module对所述FPGA的对外IO接口以及其它资源的影响,确定待移动的Module”具体包括:
步骤S411:计算移走每个Module后所述FPGA的对外IO接口的数量,获取所述IO接口能够满足对应FPGA的IO接口数量限制的对应Module的第一集合。
即从上文的Module1~Module5中,选出被移走后,FPGA的对外IO接口仍然满足数量限制的Module,放入第一集合,假设第一集合为{Module1,Module2,Module3}。
步骤S412:计算移走每个Module后所述FPGA的其它资源的利用率,获取所述其它资源的利用率不超限的对应Module的第二集合。
从上文的Module1~Module5中,选出被移走后,FPGA的其它资源的利用率不超限的Module,放入第二集合,假设第二集合为{Module2,Module3,Module4,Module5}.
步骤S413:从所述Module的第一集合和第二集合的交集中选择一个Module,作为待移动的Module。
第一集合和第二集合的交集为{Module2,Module3},可以从中随机选中一个Module作为待移动的Module,为了尽量提高利用率,也可以从交集中选择Module被移走后,FPGA的各种资源的利用率相对较高对应的Module。
步骤S420:获取能够容纳所述待移动的Module的所述资源的多个FPGA,根据最新的层次结构,计算将所述待移动的Module移入每个FPGA对对应FPGA的对外IO接口以及其它资源的影响,确定待移入的FPGA。
同样的,一个FPGA增加一个Module,其对外IO接口和各种资源都会有影响。因此需要找到能够容纳所述待移动的Module的所述资源的多个FPGA。例如待移动的Module中的所述资源(即前文中的超限资源)为LUA,数量为120,遍历其它的FPGA,找到能够容纳120个LUA且LUA资源不会超限的所有FPGA,再计算并确定最终待移入的FPGA。
优选的,所述“计算将所述待移动的Module移入每个FPGA对对应FPGA的对外IO接口以及其它资源的影响,确定待移入的FPGA”具体包括:
计算将所述待移动的Module移入每个FPGA后每个FPGA的对外接口的数量,获取所述IO接口能够满足对应FPGA的IO接口数量限制的对应FPGA的第一集合;
计算将所述待移动的Module移入每个FPGA后每个FPGA的其它资源的利用率,获取所述其它资源的利用率不超限的对应FPGA的第二集合;
从所述FPGA的第一集合和第二集合的交集中选择一个FPGA,作为待移入的FPGA。
可以从交集中随机选中一个FPGA作为待移入的FPGA。为了尽量提高利用率,也可以选择一个各种资源的利用率相对较高的FPGA,即比较所述Module移入到各个FPGA后,各个FPGA的各种资源的利用率。
步骤S430:将所述待移动的Module移入所述待移入的FPGA,并更新所述层次结构。
将待移动的Module移入所述待移入的FPGA中,此时层次结构发生了变化,因此需要更新所述层次结构。在下一次计算IO接口和各种资源时,需要在最新的层次结构的基础上进行。
需要说明的是,前文描述的本发明提供的方法的分割粒度是到Module层的,在一些更复杂的场景下,Module层下还有子Module层(即每个Module还包括多个子Module),当某个Module中的某个资源过大,超过FPGA的资源限制时,就可以使用类似的方法,自动降低可被分割的层级为子Module层。此时,需要另外增加的工作量为(1)将资源过大的这个Module的各个子层的各种资源存入数据库中;(2)解析源过大的这个Module的层次结构。
本发明的自动调整分割方案的方法,由于可以自动获取目标RTL设计的层次结构和每个Module的各种资源,因此能够对初始分割方案进行自动调整,得到满足条件的最终分割方案,减少人工的干预,高效地缩短分割任务的迭代周期。并且所述方法打破以Block为边界的分割限制,降低可被分割的层级,提高分割精度和灵活性,进一步提高资源的利用率。
本发明还提供一种电子设备,包括存储器和处理器,所述存储器存储有可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现上述所述自动调整分割方案的方法中的任意一个步骤,也就是说,实现上述所述自动调整分割方案的方法中任意一个技术方案中的步骤。
本发明还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述所述自动调整分割方案的方法中的任意一个步骤,也就是说,实现上述所述自动调整分割方案的方法中的任意一个技术方案中的步骤。
应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施方式中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。
Claims (7)
1.一种自动调整分割方案的方法,其特征在于,所述方法包括:
读取目标RTL设计代码的顶层,通过递归算法,解析出所述目标RTL设计的层次结构;
获取初始分割方案,所述初始分割方案设置的每个FPGA对外的IO接口满足对应FPGA的IO接口数量限制;
根据所述层次结构以及数据库中存储的每个Module包含的各种资源的数据信息,自动计算所述初始分割方案设置的每个FPGA中各个资源的利用率,得到资源利用率超限列表;
根据预定移动策略和最新的层次结构,依次处理所述资源利用率超限列表中的每个超限资源,直至每个FPGA中对外的IO接口满足对应FPGA的IO接口数量限制,并且所有资源的利用率都不超限,得到最终的分割方案;其中,所述预定移动策略具体包括:
找出超限资源对应的FPGA,计算所述FPGA中所述资源的超限额度,获取所述FPGA中所述资源的数量大于或等于超限额度的多个Module,根据最新的层次结构,计算移走每个Module对所述FPGA的对外IO接口以及其它资源的影响,确定待移动的Module;获取能够容纳所述待移动的Module的所述资源的多个FPGA,根据最新的层次结构,计算将所述待移动的Module移入每个FPGA对对应FPGA的对外IO接口以及其它资源的影响,确定待移入的FPGA;将所述待移动的Module移入所述待移入的FPGA,并更新所述层次结构;
所述“计算移走每个Module对所述FPGA的对外IO接口以及其它资源的影响,确定待移动的Module”具体包括:
计算移走每个Module后所述FPGA的对外IO接口的数量,获取所述IO接口能够满足对应FPGA的IO接口数量限制的对应Module的第一集合;计算移走每个Module后所述FPGA的其它资源的利用率,获取所述其它资源的利用率不超限的对应Module的第二集合;从所述Module的第一集合和第二集合的交集中选择一个Module,作为待移动的Module;
所述“计算将所述待移动的Module移入每个FPGA对对应FPGA的对外IO接口以及其它资源的影响,确定待移入的FPGA”具体包括:计算将所述待移动的Module移入每个FPGA后每个FPGA的对外接口的数量,获取所述IO接口能够满足对应FPGA的IO接口数量限制的对应FPGA的第一集合;计算将所述待移动的Module移入每个FPGA后每个FPGA的其它资源的利用率,获取所述其它资源的利用率不超限的对应FPGA的第二集合;从所述FPGA的第一集合和第二集合的交集中选择一个FPGA,作为待移入的FPGA。
2.根据权利要求1所述自动调整分割方案的方法,其特征在于,所述“读取目标RTL设计代码的顶层,通过递归算法,解析出所述目标RTL设计的层次结构”具体包括:
读取并解析目标RTL设计代码的顶层,获取所述顶层包括的所有Block、每个Block的IO接口以及Block之间的IO接口的连接关系;
遍历解析每个Block,获取每个Block包括的所有Module、每个Module的实例化份数、每个Module的IO接口以及所述IO接口的连接关系,其中所述IO接口的连接关系包括Module的IO接口与对应Block的IO接口的对应关系,以及同一个Block内的不同Module的IO接口的连接关系;
得到所述目标RTL设计的层次结构。
3.根据权利要求1所述自动调整分割方案的方法,其特征在于,所述“获取初始分割方案”具体包括:
将具有直连关系的多个Block和/或Module划分到相同的FPGA中;
调整每个FPGA中的Block和/或Module的数量,直至每个FPGA对外的IO接口满足对应FPGA的IO接口数量限制,得到所述初始分割方案。
4.根据权利要求1所述自动调整分割方案的方法,其特征在于,所述“根据所述层次结构以及数据库中存储的每个Module包含的各种资源的数据信息,自动计算所述初始分割方案设置的每个FPGA中各个资源的利用率,得到资源利用率超限列表”具体包括:
根据所述层次结构,得到每个FPGA下每个Block包括的所有Module;
根据数据库中存储的每个Module包含的各种资源的数据信息,计算每个FPGA中所有Module包括的各个资源的数量;
获取每个FPGA中各个资源的最大容纳数量,计算每个FPGA中各个资源的利用率,得到资源利用率超限列表。
5.根据权利要求1所述自动调整分割方案的方法,其特征在于,所述方法还包括:
从每个Module的综合资源数据文件中获取对应Module各种资源的数据信息,其中所述各种资源包括逻辑资源和存储资源;
以每个Module的名字作为数据库的关键字,将每个Module的各种资源的数据信息存入数据库中。
6.一种电子设备,包括存储器和处理器,所述存储器存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1-5任意一项所述自动调整分割方案的方法中的步骤。
7.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-5任意一项所述自动调整分割方案的方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011188632.7A CN112329368B (zh) | 2020-10-30 | 2020-10-30 | 自动调整分割方案的方法、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011188632.7A CN112329368B (zh) | 2020-10-30 | 2020-10-30 | 自动调整分割方案的方法、设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112329368A CN112329368A (zh) | 2021-02-05 |
CN112329368B true CN112329368B (zh) | 2024-04-12 |
Family
ID=74297406
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011188632.7A Active CN112329368B (zh) | 2020-10-30 | 2020-10-30 | 自动调整分割方案的方法、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112329368B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113255265B (zh) * | 2021-06-07 | 2021-09-28 | 上海国微思尔芯技术股份有限公司 | 分割及验证方法、装置、电子设备、存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006178827A (ja) * | 2004-12-24 | 2006-07-06 | Fujitsu Ltd | 論理回路分割方法及び装置 |
CN108256182A (zh) * | 2018-01-02 | 2018-07-06 | 西安交通大学 | 一种动态可重构fpga的布局方法 |
CN110941934A (zh) * | 2019-12-06 | 2020-03-31 | 思尔芯(上海)信息科技有限公司 | 一种fpga原型验证开发板分割仿真系统、方法、介质及终端 |
CN111027266A (zh) * | 2019-12-06 | 2020-04-17 | 思尔芯(上海)信息科技有限公司 | 一种多个fpga的设计分割的方法、系统、存储介质及终端 |
CN111125975A (zh) * | 2019-12-09 | 2020-05-08 | 思尔芯(上海)信息科技有限公司 | 一种fpga时分复用多路数据传输的方法、存储介质及终端 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7735050B2 (en) * | 2006-02-09 | 2010-06-08 | Henry Yu | Managing and controlling the use of hardware resources on integrated circuits |
US9959379B2 (en) * | 2015-10-07 | 2018-05-01 | Mentor Graphics Corporation | Hybrid compilation for FPGA prototyping |
IT201800000631A1 (it) * | 2018-01-09 | 2019-07-09 | Univ Degli Studi Di Napoli Federico Ii | Metodo per generare una configurazione ridondante in FPGA |
-
2020
- 2020-10-30 CN CN202011188632.7A patent/CN112329368B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006178827A (ja) * | 2004-12-24 | 2006-07-06 | Fujitsu Ltd | 論理回路分割方法及び装置 |
CN108256182A (zh) * | 2018-01-02 | 2018-07-06 | 西安交通大学 | 一种动态可重构fpga的布局方法 |
CN110941934A (zh) * | 2019-12-06 | 2020-03-31 | 思尔芯(上海)信息科技有限公司 | 一种fpga原型验证开发板分割仿真系统、方法、介质及终端 |
CN111027266A (zh) * | 2019-12-06 | 2020-04-17 | 思尔芯(上海)信息科技有限公司 | 一种多个fpga的设计分割的方法、系统、存储介质及终端 |
CN111125975A (zh) * | 2019-12-09 | 2020-05-08 | 思尔芯(上海)信息科技有限公司 | 一种fpga时分复用多路数据传输的方法、存储介质及终端 |
Non-Patent Citations (1)
Title |
---|
结合用户约束文件的高效多FPGA系统分割方法;张倩莉;于芳;刘忠立;李艳;陈亮;李明;郭旭峰;;哈尔滨工业大学学报(第07期);149-153 * |
Also Published As
Publication number | Publication date |
---|---|
CN112329368A (zh) | 2021-02-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109857451B (zh) | Ip核文件生成方法、装置、设备及介质 | |
CN108021982A (zh) | 数据传输方法和系统、电子设备 | |
US10372856B2 (en) | Optimizing constraint solving by rewriting at least one bit-slice constraint | |
KR100939132B1 (ko) | 순차적인 객체 지향 시스템 시뮬레이션들을 제어하기 위한방법 | |
CN112329368B (zh) | 自动调整分割方案的方法、设备和存储介质 | |
CN106682268B (zh) | 可编程逻辑器件配置方法及设备 | |
CN112270146A (zh) | 工艺设计工具包开发方法、装置、电子设备及存储介质 | |
US8196081B1 (en) | Incremental placement and routing | |
US7512922B1 (en) | Methods of structured placement of a circuit design | |
CN117151003B (zh) | 一种基于时钟域划分的fpga布局方法及装置 | |
CN114461858A (zh) | 一种因果关系分析模型构建及因果关系分析方法 | |
US8006215B1 (en) | Circuit clustering during placement | |
CN114912620A (zh) | 量子计算机操作系统、量子计算机及可读存储介质 | |
CN116911227A (zh) | 一种基于硬件的逻辑映射方法、装置、设备及存储介质 | |
US20130339913A1 (en) | Semi-automated method of FPGA timing closure | |
CN115130043B (zh) | 基于数据库的数据处理方法、装置、设备及存储介质 | |
CN111159967A (zh) | 一种基于网页排名算法的fpga电路布局与资源分配方法 | |
CN106250327B (zh) | 一种在键-值存储中热点识别方法及装置 | |
US6609234B2 (en) | Ordering binary decision diagrams used in the formal equivalence verification of digital designs | |
CN113221501B (zh) | 用于平衡电路不同划分间互联数的方法及可读存储介质 | |
CN112131814B (zh) | 一种利用区域重布局的fpga布局合法化方法 | |
CN112639761B (zh) | 一种为数据建立索引的方法以及装置 | |
JP2023536765A (ja) | 人工知能に基づく回路設計方法及び実装システム | |
JP3542138B2 (ja) | 電気回路のパーティショニングのためのコンピュータ支援された方法 | |
WO2019225420A1 (ja) | 変換装置、および、変換プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 215000 unit 13 / 16, 4th floor, building B, No.5 Xinghan street, Suzhou Industrial Park, Jiangsu Province Applicant after: Suzhou Shengke Communication Co.,Ltd. Address before: Xinghan Street Industrial Park of Suzhou city in Jiangsu province 215021 B No. 5 Building 4 floor 13/16 unit Applicant before: CENTEC NETWORKS (SUZHOU) Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |