首页> 中国专利> 针对多裸片FPGA的基于时钟域的网表分割方法

针对多裸片FPGA的基于时钟域的网表分割方法

摘要

本发明公开了一种针对多裸片FPGA的基于时钟域的网表分割方法,涉及FPGA技术领域,该方法根据用户输入网表中各个实例模块的信号连接关系确定各个实例模块所属的时钟域,根据预定算法确定各个时钟域所对应的子网表,并将每个时钟域内的所有实例模块分配到对应的子网表中,由此分割得到每个FPGA裸片对应的子网表可以把同一个时钟域的实例模块尽量分配在同一个子网表,从而可以有效减少关键路径跨FPGA裸片的情况,从而降低信号时延,使得多裸片FPGA的工作性能更优,提升多裸片FPGA实现的速度。

著录项

  • 公开/公告号CN113128150A

    专利类型发明专利

  • 公开/公告日2021-07-16

    原文格式PDF

  • 申请/专利权人 无锡中微亿芯有限公司;

    申请/专利号CN202110428926.0

  • 发明设计人 杜学军;惠锋;虞健;董志丹;刘佩;

    申请日2021-04-21

  • 分类号G06F30/347(20200101);

  • 代理机构32228 无锡华源专利商标事务所(普通合伙);

  • 代理人过顾佳;聂启新

  • 地址 214000 江苏省无锡市建筑西路777号B1幢2层

  • 入库时间 2023-06-19 11:52:33

说明书

技术领域

本发明涉及FPGA技术领域,尤其是一种针对多裸片FPGA的基于时钟域的网表分割方法。

背景技术

FPGA(Field Programmable Gate Array,现场可编程逻辑门阵列)是一种硬件可编程的逻辑器件,除了应用于移动通信、数据中心等领域,还广泛应用于集成电路设计中的原型验证,能够有效验证电路功能的正确性,同时加快电路设计速度。

随着集成电路规模的不断增大及复杂功能的实现,对FPGA的可编程逻辑资源的数量的需求不断提高,为了避免芯片面积增大所带来的加工难度的增大和生产良率的降低,目前会利用硅堆叠互连技术(SSI)、CoWoS技术(Chip on Wafer on Substrate)或其他技术来实现多个FPGA裸片的互连设计,从而构成多裸片FPGA,利用多个FPGA裸片上的逻辑资源共同实现所需的电路结构。

但这又给多裸片FPGA的布局布线带来了挑战,因此如何将复杂的电路合理排布到多个芯片上以获得较优的性能是多裸片FPGA设计流程中的一个关键问题。在对多裸片FPGA进行布局布线之前,首先需要将多裸片FPGA对应的用户网表分割成多个相连的子网表,每个子网表分别对应一个FPGA裸片,然后根据每个子网表对对应的FPGA裸片进行布局布线。因此对用户网表的分割方式会直接影响多裸片FPGA的布局布线过程,也会影响多裸片FPGA的最终性能。目前在分割用户网表时,通常只会考虑与FPGA裸片所包含的逻辑资源数量之间的匹配度,也即仅需保证对应的FPGA裸片可以满足子网表的逻辑资源需求即可,但这种做法往往使得多裸片FPGA的性能难以保证。

发明内容

本发明人针对上述问题及技术需求,提出了一种针对多裸片FPGA的基于时钟域的网表分割方法,本发明的技术方案如下:

一种针对多裸片FPGA的基于时钟域的网表分割方法,该方法包括:

根据多裸片FPGA中每个FPGA裸片包含的逻辑资源确定对应的子网表的容纳能力,子网表的容纳能力包括子网表所能包含的实例模块的类型及最大数量;

获取用户输入网表,根据用户输入网表中各个实例模块的信号连接关系确定各个实例模块所属的时钟域;

根据预定算法确定各个时钟域所对应的子网表,每个时钟域所对应的子网表的容纳能力满足时钟域内的实例模块的逻辑资源需求;

将每个时钟域内的所有实例模块分配到对应的子网表中;

分割得到每个FPGA裸片对应的子网表,每个子网表包括分配到的所有实例模块以及实例模块之间的网表线网;

其中,每个FPGA裸片上的逻辑资源数量满足分割得到的对应的子网表的逻辑资源需求,FPGA裸片上的输入信号连接点引出端满足对应的子网表的输入信号数量,FPGA裸片上的输出信号连接点引出端满足对应的子网表的输出信号数量,与多裸片FPGA的IO管脚所连接的FPGA裸片满足对应的子网表的IO口需求。

其进一步的技术方案为,根据预定算法确定各个时钟域所对应的子网表,包括:

按照预定顺序基于贪心算法依次确定每个时钟域所对应的子网表。

其进一步的技术方案为,预定顺序包括按照各个时钟域所需的逻辑资源数量从大到小的顺序;

或者,预定顺序包括按照各个时钟域的频率由高到低的顺序;

或者,预定顺序包括按照各个时钟域所包含的实例模块的数量由大到小的顺序。

其进一步的技术方案为,根据预定算法确定各个时钟域所对应的子网表,包括:

利用全部时钟域对第一个子网表进行0-1背包算法求解,确定第一个子网表对应的各个时钟域;

利用剩余未匹配的时钟域对第i+1子网表进行0-1背包算法求解确定第i+1子网表对应的各个时钟域,i为参数且i的起始值为1;

令i=i+1并再次执行利用剩余未匹配的时钟域对第i+1子网表进行0-1背包算法求解的步骤,直到遍历完所有的子网表。

其进一步的技术方案为,当遍历完所有的子网表后,若仍存在剩余未匹配的时钟域,则将剩余未匹配的时钟域对应到任意子网表。

其进一步的技术方案为,将每个时钟域内的所有实例模块分配到对应的子网表中,包括:

当存在至少一个子网表的容纳能力满足时钟域内的实例模块的逻辑资源需求时,时钟域对应一个子网表,将时钟域内的所有实例模块分配到同一个子网表中;

当所有子网表的容纳能力都不满足时钟域内的实例模块的逻辑资源需求时,时钟域对应多个子网表,将时钟域内的部分实例模块分配到同一个子网表中,分配完当前的子网表后,将其余的实例模块分配到对应的另一个子网表,直至分配完成时钟域内的所有实例模块。

其进一步的技术方案为,将时钟域内的部分实例模块分配到同一个子网表中,包括:

将时钟域内的存在连线关系的部分实例模块分配到同一个子网表中;其中,当两个实例模块直接相连,或者,在同一个数据通路上通过若干个其他实例模块间接相连时,确定两个实例模块存在连线关系。

其进一步的技术方案为,根据用户输入网表中各个实例模块的信号连接关系确定各个实例模块所属的时钟域,包括:

将每一个时钟信号及其产生的子信号作为一个时钟域,确定时钟域包含的实例模块包括:时钟信号输入的各个实例模块,以及与时钟信号输入的实例模块存在连线关系的其他各个没有时钟信号输入的实例模块。

其进一步的技术方案为,该方法包括:

按照第一目标函数计算将剩余实例模块分配到每个可容纳剩余实例模块的子网表中的得分,将剩余实例模块分配到对应得分最高的子网表中;第一目标函数基于至少一项芯片性能参数构建,将剩余实例模块分配到子网表中实现的芯片性能参数越优、对应的得分越高,剩余实例模块是不属于任何一个时钟域的实例模块。

其进一步的技术方案为,不同的剩余实例模块对应的第一目标函数相同或者不同。

其进一步的技术方案为,根据用户输入网表中各个实例模块的信号连接关系确定各个实例模块所属的时钟域,包括:

根据用户指令将预设的特定实例模块分配到特定的子网表中;

根据用户输入网表中各个实例模块的信号连接关系确定用户输入网表中除特定实例模块之外的其他各个实例模块所属的时钟域。

其进一步的技术方案为,该方法还包括:

在将每个时钟域内的所有实例模块分配到对应的子网表后得到初始分配结果,在保持预设的固定实例模块的分配结果不变的基础上,根据优化目标对待优化实例模块的分配结果进行调整从而对初始分配结果进行优化,最终分割得到每个FPGA裸片对应的子网表,待优化实例模块是除固定实例模块之外的实例模块。

其进一步的技术方案为,根据优化目标对待优化实例模块的分配结果进行调整,包括:

按照第二目标函数计算将各个待优化实例模块分配到各个可容纳待优化实例模块的子网表中的得分,第二目标函数基于与优化目标对应的至少一项芯片性能参数构建,将待优化实例模块分配到子网表中实现的芯片性能参数越优、对应的得分越高;

将对应得分最高的待优化实例模块重新分配到对应得分最高的子网表中;

按照第二目标函数更新其他各个待优化实例模块对应的得分,并再次执行将对应得分最高的待优化实例模块重新分配到对应得分最高的子网表中的步骤,直到对所有待优化实例模块完成重新分配。

其进一步的技术方案为,优化目标对应的芯片性能参数包括功耗,则优化目标包括每个FPGA裸片的最大功耗在第一预定范围内,和/或,所有FPGA裸片的总功耗达到最小;

和/或,优化目标对应的芯片性能参数包括时序余量,优化目标包括用户输入网表中的所有第一预定关键路径的时序余量均在第二预定范围内;

和/或,优化目标对应的芯片性能参数包括跨FPGA裸片信号数量,优化目标包括:跨FPGA裸片的信号总数达到最小值,和/或,用户输入网表中的所有第二预定关键路径的跨FPGA裸片的最大次数均在第三预定范围内,和/或,用户输入网表中的所有第三预定关键路径的跨FPGA裸片的总次数得到最小值;

和/或,优化目标对应的芯片性能参数包括时钟参数,优化目标包括用于实现最高频的时钟树的FPGA裸片数目达到最小值。

其进一步的技术方案为,多裸片FPGA中存在至少一个FPGA裸片有一种逻辑资源的数目与其他FPGA裸片不同,和/或,存在至少一个FPGA裸片有一种逻辑资源的种类与其他FPGA裸片不同。

本发明的有益技术效果是:

本申请公开了一种针对多裸片FPGA的基于时钟域的网表分割方法,该方法在分割用户输入网表时,把同一个时钟域的实例模块尽量分配在同一个子网表,即便一个时钟域的实例模块需要分配到多个子网表,也优先将存在连线关系的实例模块分配到同一子网表,这一做法可以有效减少关键路径跨FPGA裸片的情况,从而降低信号时延,使得多裸片FPGA的工作性能更优,提升多裸片FPGA实现的速度。

虽然现在一些多FPGA系统(由多个FPGA芯片构成)也会涉及到网表分割,但多FPGA系统中不同FPGA芯片之间通过FPGA芯片的IO相连,因此跨分割信号数受限于单个FPGA芯片的IO数量(大约最多在2000个IO左右),在分割网表时,跨分割信号数的约束条件达成难度较大。而本申请的多裸片FPGA中不同FPGA裸片之间通过硅堆叠连接点相连,因此跨分割信号数受限于单个FPGA裸片的硅堆叠连接点数量,该数量远远大于FPGA芯片的IO数量,通常有40000个左右,因此使得在分割网表时,跨分割信号数的约束条件达成难度较低且还有余力考虑其余的约束条件,使得本申请公开的方法在多裸片FPGA的场景中得以实现以及实际应用。

附图说明

图1是本申请公开的网表分割方法的一个实施例的方法流程图。

图2是本申请所针对的多裸片FPGA的部分结构示意图。

图3是本申请公开的网表分割方法的另一个实施例的方法流程图。

图4是本申请公开的网表分割方法的又一个实施例的方法流程图。

具体实施方式

下面结合附图对本发明的具体实施方式做进一步说明。

本申请公开了一种针对多裸片FPGA的基于时钟域的网表分割方法,包括如下步骤,请参考图1:

步骤S1,根据多裸片FPGA中每个FPGA裸片包含的逻辑资源确定对应的子网表的容纳能力,子网表的容纳能力包括子网表所能包含的实例模块的类型及最大数量。

多裸片FPGA的部分结构示意图请参考图2,其主要包括从下至上依次层叠设置的基板1、硅连接层2和若干个FPGA裸片(图2包括FPGA裸片1和FPGA裸片2),硅连接层2覆盖所有FPGA裸片。每个FPGA裸片内包含若干不同类型和数量的逻辑资源,包括IOB、LUT、REG、DSP、BRAM、Clocks、CMT和GTP中的至少一种,不同FPGA裸片内包含的逻辑资源的类型和/或数量相同或者不同。在本申请中,多裸片FPGA中存在至少一个FPGA裸片有一种逻辑资源的数目与其他FPGA裸片不同,和/或,存在至少一个FPGA裸片有一种逻辑资源的种类与其他FPGA裸片不同。

每个FPGA裸片还包括若干个用于输入信号的输入信号连接点和若干个用于输出信号的输出信号连接点,输入信号连接点和输出信号连接点由布设在FPGA裸片上的硅堆叠连接点3实现,FPGA裸片内部的逻辑资源直接会间接的连接至输入信号连接点和/或输出信号连接点进行信号的输入输出。不同的FPGA裸片之间通过输入信号连接点和/或输出信号连接点利用硅连接层2内的跨裸片连线4相连,构成FPGA裸片之间的信号级联结构。硅连接层2层叠设置在基板1上,具体的,硅连接层2远离FPGA裸片的一侧生长有微凸球,硅连接层2通过微凸球连接基板1。硅连接层2上还开设有硅通孔5,FPGA裸片上的相应的输入信号连接点和/或输出信号连接点通过硅连接层2上的硅通孔5连接至基板1继而连接至与基板相连的用于信号引出的管脚。

本申请的网表分割方法在于将针对整个多裸片FPGA的用户输入网表分割成多个子网表,每个子网表对应一个FPGA裸片,从而可以分别按照每个FPGA裸片对应的子网表对相应的FPGA裸片进行布局布线,完成整个多裸片FPGA的布线。用户输入网表包括若干个实例模块以及不同实例模块之间的网表线网,常见的实例模块有GTP、查照表、寄存器、PCIE、EMAC、CMT、BRAM、DSP、IOB等,用户输入网表中包含的实例模块的类型不多于多裸片FPGA内的逻辑资源的类型。分割得到的每个子网表也包括若干个实例模块以及不同实例模块之间的网表线网,而在按照子网表对相应的FPGA裸片进行布局布线时,需要利用FPGA裸片来实现相应子网表的功能,因此网表分割时最基础的要求是,FPGA裸片可以满足分割得到的相应的子网表的逻辑资源需求。主要包括如下两个方面:需要利用FPGA裸片内的逻辑资源实现子网表的实例模块,以及,需要利用FPGA裸片上的输入信号连接点和/或输出信号连接点实现子网表的信号连接功能。除此之外,还会存在如下一个方面:需要利用FPGA裸片连接的管脚实现子网表的IO口。

因此本申请首先确定每个FPGA裸片对应的子网表的限制条件,在如下分割过程中必须在满足该限制条件的基础下进行,包括:每个FPGA裸片上的逻辑资源数量满足分割得到的对应的子网表的逻辑资源需求,FPGA裸片上的输入信号连接点引出端满足对应的子网表的输入信号数量,FPGA裸片上的输出信号连接点引出端满足对应的子网表的输出信号数量,与多裸片FPGA的IO管脚所连接的FPGA裸片满足对应的子网表的IO口需求。对于其中FPGA裸片上的逻辑资源数量满足分割得到的对应的子网表的逻辑资源需求这一要求主要包括:本申请根据多裸片FPGA中每个FPGA裸片包含的逻辑资源确定对应的子网表所能包含的实例模块的类型及最大数量,子网表所能包含的实例模块的类型不多于对应的FPGA裸片内包含的逻辑资源的类型,每种类型的实例模块的最大数量小于等于对应的FPGA裸片内包含的该类型的逻辑资源的数量。比如举例说明,可以确定一个子网表能包括最多一个GTP、最多2个PCIE以及最多3个EMAC。实际应用时,可以根据设定的模块使用率来确定每种类型的实例模块的最大数量,比如设定模块使用率为80%,则每种类型的实例模块的最大数量为对应的FPGA裸片内包含的该类型的逻辑资源的数量的80%。

步骤S2,获取用户输入网表,获取到的用户输入网表是针对整个多裸片FPGA的,其总的逻辑资源需求超过其中任意一个FPGA裸片上的逻辑资源数量,但小于等于所有FPGA裸片的逻辑资源数量的总和。

用户输入网表中包括IO口,这些IO口需要使用多裸片FPGA上的管脚来实现,可选的,本申请在分割用户输入网表之前,首先将用户输入网表中的IO口分配给多裸片FPGA上的相应管脚作为IO管脚。本申请分配IO口的方法包括:根据用户指令将至少一个IO口分配给多裸片FPGA的相应管脚,或者,按任意序排列将至少一个IO口分配给多裸片FPGA的相应管脚,或者,按照IO自动排布算法将至少一个IO口分配给多裸片FPGA的相应管脚。

根据用户输入网表中各个实例模块的信号连接关系确定各个实例模块所属的时钟域。用户输入网表中有些实例模块存在时钟输入(比如寄存器),有些实例模块没有时钟输入(比如查找表、DSP和BRAM等),确定各个实例模块所属的时钟域的实际做法是:将用户输入网表中每一个时钟信号及其产生的子信号作为一个时钟域,对于有时钟输入的实例模块,将各个实例模块归入其时钟输入所属的时钟域;对于没有时钟输入的实例模块,将该没有时钟输入的实例模块归入与其存在连线关系的有时钟输入的实例模块所属的时钟域。比如,假设寄存器1属于时钟域1,寄存器2属于时钟域2,而查找表1与寄存器1存在连线关系,则确定查找表1属于时钟域1。因此确定得到的每个时钟域包含的实例模块包括:该时钟信号输入的各个实例模块,以及与时钟信号输入的实例模块存在连线关系的其他各个没有时钟信号输入的实例模块。

上述过程中,存在连线关系的两个实例模块是指直接相连或者在同一个数据通路上通过若干个其他实例模块间接相连,因此在确定与没有时钟信号输入的实例模块存在连线关系的有时钟输入的实例模块时,可能与多个有时钟输入的实例模块都存在连线关系,则此时将具有最近连接关系的有时钟输入的实例模块所属时钟域作为该没有时钟信号输入的实例模块所属的时钟域。

步骤S3,根据预定算法确定各个时钟域所对应的子网表,每个时钟域所对应的子网表的容纳能力满足时钟域内的实例模块的逻辑资源需求。

本申请所采用的预定算法包括贪心算法和0-1背包算法,具体的:

方法一(贪心算法):按照预定顺序基于贪心算法依次确定每个时钟域所对应的子网表。其中,预定顺序包括按照各个时钟域所需的逻辑资源数量从大到小的顺序;或者,预定顺序包括按照各个时钟域的频率由高到低的顺序;或者,预定顺序包括按照各个时钟域所包含的实例模块的数量由大到小的顺序。

方法二(0-1背包算法):按照预先设定的顺序依次遍历各个子网表,利用全部时钟域对第一个子网表进行0-1背包算法求解,确定第一个子网表对应的各个时钟域。利用剩余未匹配的时钟域对第i+1子网表进行0-1背包算法求解确定第i+1子网表对应的各个时钟域,i为参数且i的起始值为1。令i=i+1并再次执行利用剩余未匹配的时钟域对第i+1子网表进行0-1背包算法求解的步骤,直到遍历完所有的子网表。当遍历完所有的子网表后,若仍存在剩余未匹配的时钟域,则将剩余未匹配的时钟域对应到任意子网表。

经过上述方法,确定得到的每个时钟域所对应的子网表包括一个或多个,当存在至少一个子网表的容纳能力满足时钟域内的实例模块的逻辑资源需求时,选择其中一个作为该时钟域对应的子网表,则此时该时钟域对应一个子网表且该子网表的容纳能力满足时钟域内的实例模块的逻辑资源需求。当所有子网表的容纳能力都不满足时钟域内的实例模块的逻辑资源需求时,选择其中多个共同作为该时钟域对应的子网表,此时该时钟域对应多个子网表且这多个子网表的总的容纳能力满足该时钟域内的实例模块的逻辑资源需求。

步骤S4,将每个时钟域内的所有实例模块分配到对应的子网表中。

如上所述步骤所述,一个时钟域可能对应一个子网表,也可能对应多个子网表,这两种情况在进行实例模块分配时的具体做法也有不同,请参考图3:

(1)时钟域对应一个子网表。在这种情况中,直接将该时钟域内的所有实例模块分配到对应的同一个子网表中。

(2)时钟域对应多个子网表。在这种情况中,将该时钟域内的部分实例模块分配到同一个子网表中,分配完当前的子网表后,将其余的实例模块分配到对应的另一个子网表,直至分配完成时钟域内的所有实例模块。在将时钟域内的实例模块依次分配到多个子网表中时,可以按照预先设定的子网表的遍历顺序的先后顺序依次将实例模块分配到各个子网表中。

而在将部分实例模块分配到同一个子网表中时,基于实例模块之间的连线关系进行分配,将时钟域内的存在连线关系的部分实例模块分配到同一个子网表中。其中,当两个实例模块直接相连,或者,在同一个数据通路上通过若干个其他实例模块间接相连时,确定这两个实例模块存在连线关系。实际的做法可以是:按照预定次序依次对该时钟域内的实例模块进行分配,在完成一个实例模块的分配后,将与该实例模块存在连线关系的实例模块也分配到同一个子网表内。依次对实例模块进行分配的顺序可以按照读入用户输入网表时的实例模块的顺序,或者,按照实际需要对实例模块进行排序后按照排序的次序依次分配,而在对实例模块进行排序时,可以按照各种不同的原则进行排序,比如按照实例模块的某一性能参数进行排序。

本申请还可以处理用户对某些实例模块的特殊指定要求,而且通常在最先执行,因此可选的,根据用户指令将预设的特定实例模块分配到特定的子网表中,然后对其他实例模块按照所属的时钟域来分配。

步骤S5,分割得到每个FPGA裸片对应的子网表,每个子网表包括分配到的所有实例模块以及实例模块之间的网表线网;然后按照每个FPGA裸片对应的子网表对各个FPGA裸片进行布局布线即可实现对整个多裸片FPGA的布局布线。而且基于本申请提供的上述网表分割方法可知,每个FPGA裸片上的逻辑资源数量满足分割得到的对应的子网表的逻辑资源需求,FPGA裸片上的输入信号连接点引出端满足对应的子网表的输入信号数量,FPGA裸片上的输出信号连接点引出端满足对应的子网表的输出信号数量,多裸片FPGA的IO口满足对应的子网表的IO口需求。

可选的,在按照上述步骤S1-S4对实例模块按照所属的时钟域分配后,可能存在某些实例模块不属于任何时钟域,因此仍然未被分配,则本申请还包括如下步骤S6:

步骤S6,按照第一目标函数计算将剩余实例模块分配到每个可容纳剩余实例模块的子网表中的得分,将剩余实例模块分配到对应得分最高的子网表中,剩余实例模块是不属于任何一个时钟域的实例模块。其中,第一目标函数基于至少一项芯片性能参数构建,将剩余实例模块分配到子网表中实现的芯片性能参数越优、对应的得分越高。芯片性能参数包括单个FPGA裸片的功耗、多裸片FPGA的功耗、时序余量、跨FPGA裸片信号数量和时钟参数中的至少一种。比如假设第一目标函数基于单个FPGA裸片的功耗构建,则将剩余实例模块分配到子网表中使得单个FPGA裸片的功耗越低时、对应的得分越高,因此实现的分配效果是将剩余实例模块分配到使得单个FPGA裸片的功耗最小的子网表中。不同的剩余实例模块对应的第一目标函数相同或者不同。

可选的,通过上述内容可以完成对用户输入网表的初始分配得到初始分配结果,本申请可以将初始分配结果直接作为最后分配结果得到每个FPGA裸片对应的子网表,或者可以对初始分配结果进行二次优化后得到最后分配结果,二次优化一方面可以解决初始分配结果中可能存在的不合法情况,另一方面可以进一步寻求网表分割的更优解,则该方法在步骤S5之前还包括如下步骤S7:

步骤S7,在将每个时钟域内的所有实例模块分配到对应的子网表后得到初始分配结果,在保持预设的固定实例模块的分配结果不变的基础上,根据优化目标对待优化实例模块的分配结果进行调整从而对初始分配结果进行优化,最终分割得到每个FPGA裸片对应的子网表,待优化实例模块是除固定实例模块之外的实例模块。

其中,待优化实例模块是除固定实例模块之外的实例模块,任意一个实例模块在二次优化过程中可以被作为固定实例模块或者被作为待优化实例模块。固定实例模块通常由用户指定,比如指定IOB为固定实例模块,常见的可能会被指定为固定实例模块的还有GTP、PCIE、EMAC和BRAM等。

根据优化目标对待优化实例模块的分配结果进行调整的做法如下:按照第二目标函数计算将各个待优化实例模块分配到各个可容纳待优化实例模块的子网表中的得分。将对应得分最高的待优化实例模块重新分配到对应得分最高的子网表中。若存在多个待优化实例模块分配到相应子网表时对应得分都最高,则按照待优化实例模块读入顺序或预定义排序顺序选择将排序顺序最前且对应得分最高的待优化实例模块进行重分配;若存在一个待优化实例模块分配到多个子网表时都对应最高得分,则按照子网表的遍历顺序或自定义排序顺序选择将待优化实例模块重新分配到排序顺序最前且对应得分最高的子网表中。然后按照第二目标函数更新其他各个待优化实例模块对应的得分,并再次执行将对应得分最高的待优化实例模块重新分配到对应得分最高的子网表中的步骤,直到对所有待优化实例模块完成重新分配。实际应用时,可以将上述过程作为依次优化循环,而整个二次优化过程包括多个上述优化循环,可以通过定义循环次数来结束上述二次优化过程。

其中,第二目标函数基于与优化目标对应的至少一项芯片性能参数构建,将待优化实例模块分配到子网表中实现的芯片性能参数越优、对应的得分越高。第二目标函数与初次分配时使用到的第一目标函数通常是不同的,从而可以从不同的芯片性能参数角度进行分配结果的优化以得到最优解。

二次优化过程的优化目标包括布局后的多裸片FPGA的功耗,和/或,时序余量,和/或,跨FPGA裸片信号数量,和/或,时钟参数中的至少一种,且有:

(a)当优化目标包括功耗时,优化目标包括每个FPGA裸片的最大功耗在第一预定范围内,和/或,所有FPGA裸片的总功耗达到最小。

(b)当优化目标包括时序余量时,优化目标包括用户输入网表中的所有第一预定关键路径的时序余量均在第二预定范围内。

(c)当优化目标包括跨FPGA裸片信号数量时,优化目标包括:跨FPGA裸片的信号总数达到最小值,和/或,用户输入网表中的所有第二预定关键路径的跨FPGA裸片的最大次数均在第三预定范围内,和/或,用户输入网表中的所有第三预定关键路径的跨FPGA裸片的总次数得到最小值。

(d)当优化目标包括时钟参数时,优化目标包括用于实现最高频的时钟树的FPGA裸片数目达到最小值。

以上的仅是本申请的优选实施方式,本发明不限于以上实施例。可以理解,本领域技术人员在不脱离本发明的精神和构思的前提下直接导出或联想到的其他改进和变化,均应认为包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号