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

可编程逻辑器件布局优化方法、装置及相关设备与流程

2022-02-20 05:45:58 来源:中国专利 TAG:


1.本发明涉及可编程逻辑器件(programmable logic device)技术领域,尤其涉及可编程逻辑器件布局优化方法、装置、计算机设备及存储介质。


背景技术:

2.在可编程逻辑器件中的fpga芯片的eda(electronic design automation)工具中,布局算法对芯片设计的时序性能的优化在详细布局流程,是对全局布局流程得到的结果进行时序性能优化,且在详细布局流程中针对时序优化只是在合法性布局的结果上做小范围的调整,并且此时调整布局必须保证调整后的位置能够布局成功。
3.以上的限制条件就会导致在详细布局流程时优化时序后,无法取得较好的时序设计结果,用户网表的整体时序性能无法达标。


技术实现要素:

4.本发明实施例提供一种可编程逻辑器件布局优化方法、装置、计算机设备及存储介质,以解决传统fpga芯片设计中详细布局流程时序优化后的用户网表的整体时序性能无法得到满足的问题。
5.一种可编程逻辑器件布局优化方法,包括:
6.从用户网表中获取不满足预设时序规定的设计单元,对所述设计单元按照时序性能进行降序或升序排列后进行归类以生成设计单元集合;
7.从排序后的所述设计单元集合中按照预设比例选取时序性能差的所述设计单元作为关键单元,将所述关键单元进行归类以生成关键单元集合;
8.根据预设计算方法为所述关键单元集合中的所述关键单元构建候选位置点并生成候选位置点集合;
9.从所述候选位置点集合中确定时序性能最优的候选位置点进行布局;
10.循环所述从用户网表中获取不满足预设时序规定的设计单元至所述从所述候选位置点集合中确定时序性能最优的候选位置点进行布局的步骤,直至迭代次数达到预设迭代最大次数,或所述设计单元都满足预设时序规定时,得到全局布局的最优化结果。
11.一种可编程逻辑器件布局优化装置,包括:
12.设计单元归类模块,用于从用户网表中获取不满足预设时序规定的设计单元,对所述设计单元按照时序性能进行降序或升序排列后进行归类以生成设计单元集合;
13.关键单元归类模块,用于从所述设计单元集合中按照预设比例选取时序性能差的所述设计单元作为关键单元,将所述关键单元进行归类以生成关键单元集合;
14.候选位置点计算模块,用于根据预设计算方法为所述关键单元集合中的所述关键单元构建候选位置点并生成候选位置点集合;
15.最优候选位置点布局模块,用于从所述候选位置点集合中确定时序性能最优的候选位置点进行布局;
16.循环模块,用于循环所述从用户网表中获取不满足预设时序规定的设计单元至所述从所述候选位置点集合中确定时序性能最优的候选位置点进行布局的步骤,直至迭代次数达到预设迭代最大次数,或所述设计单元都满足预设时序规定时,得到全局布局的最优化结果。
17.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述可编程逻辑器件布局优化方法的步骤。
18.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述可编程逻辑器件布局优化方法的步骤。
19.上述可编程逻辑器件布局优化方法、装置、计算机设备及存储介质,通过将全局布局过程中时序性能表现差的设计单元进行归类后,通过预设计算方法得到最优的候选位置点进行调整,最后得到时序性能最优化的全局布局结果,在详细布局流程之前的全局布局流程提前进行时序性能优化,保证了进行详细布局前的全局布局结果的整体时序性能比传统技术中的更加优化,减小了详细布局后的用户网表的整体时序性能无法达标的可能性。
附图说明
20.为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
21.图1是本发明一实施例中可编程逻辑器件布局优化方法的一流程图;
22.图2是本发明一实施例中可编程逻辑器件布局优化方法的边界框示意图;
23.图3是本发明一实施例中可编程逻辑器件布局优化装置的结构示意图;
24.图4是本发明一实施例中计算机设备的一示意图。
具体实施方式
25.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
26.在一实施例中,如图1所示,提供一种可编程逻辑器件布局优化方法,包括如下步骤s101至s105:
27.s101、从用户网表中获取不满足预设时序规定的设计单元,对所述设计单元按照时序性能进行降序或升序排列后进行归类以生成设计单元集合。
28.其中,在本实施例中以可编程逻辑器件之一的fpga芯片为例进行说明。
29.其中,在传统技术中fpga芯片设计优化时序的时候会出现在迭代调整几轮后时序无法再进一步进行优化的现象,即收集到的候选点的时序均未优于现有的布局位置;此时将用户网表中不满足预设时序规定的设计单元进行归类,然后按照所述设计单元的时序性能进行升序挥着降序的方法进行排列,最后得到排序后的设计单元集合;还可以在所述迭
代调整次数满足预设迭代次数时,从用户网表中获取不满足预设时序规定的设计单元,对所述设计单元按照时序性能进行降序或升序排列后进行归类以生成设计单元集合。
30.其中,所述设计单元被归类后,会将被归类的所述设计单元现有的布局位置的相对关系进行存储,在后续的布局调整过程中将所述相对关系取出后按照所述相对关系将所述设计单元作为整体进行移动。
31.s102、从排序后的所述设计单元集合中按照预设比例选取时序性能差的所述设计单元作为关键单元,将所述关键单元进行归类以生成关键单元集合。
32.其中,所述设计单元集合中的所述设计单元按照时序性能进行排序后,能够清晰的判断所述设计单元集合中时序性能最差的所述设计单元;然后根据所述设计单元集合中所述设计单元的个数及预设比例计算出需要取出的所述设计单元的数量;最后再所述设计单元集合中,按照时序性能从最差到最优的顺序,依次取出所述设计单元至已经取出的所述设计单元的数量达到所述需要取出的所述设计单元的数量。
33.s103、根据预设计算方法为所述关键单元集合中的所述关键单元构建候选位置点并生成候选位置点集合。
34.进一步地,所述根据预设计算方法为所述关键单元集合中的所述关键单元构建候选位置点并生成候选位置点集合的步骤包括:
35.获取与所述关键单元连接且到所述关键单元的时序小于预设第一时序值的输入单元和输出单元,计算所述输入单元和所述输出单元的未加权平均坐标;
36.根据所述关键单元的时序信息计算权重,再根据所述权重和所述未加权平均坐标计算所述输入单元和所述输出单元的加权平均坐标;
37.根据所述输入单元和所述输出单元的加权平均坐标构建边界框,将所述边界框的中心点作为所述候选位置点。
38.进一步地,所述根据所述关键单元的时序信息计算权重的步骤包括:
39.通过如下公式计算所述关键单元变换后的时序信息:
[0040][0041]
其中,t表示关键单元的初始时序信息,t表示关键单元变换后的时序信息;
[0042]
通过如下公式计算所述关键单元的权重:
[0043][0044]
其中,wj表示第j个关键单元的权重。
[0045]
进一步地,所述根据所述权重和所述未加权平均坐标计算所述输入单元和所述输出单元的加权平均坐标的步骤包括:
[0046]
根据如下公式计算x轴方向上的控制变量:
[0047]
[0048]
其中,flag
x
表示x轴方向上的控制标量,td表示所述输入单元或所述输出单元的时序信息,xd表示所述输入单元或所述输出单元的x轴坐标,xc表示表示所述关键单元的x轴坐标;
[0049]
根据如下公式计算y轴方向上的控制变量:
[0050][0051]
其中,flagy表示y轴方向上的控制标量,yd表示所述输入单元或所述输出单元的y轴坐标,yc表示表示所述关键单元的y轴坐标;
[0052]
根据如下公式计算所述加权平均坐标的x轴坐标:
[0053]
x'j=(1 flag
x
*wj)*xj[0054]
其中,xj表示所述输入单元和所述输出单元的未加权x轴平均坐标,x'j表示所述输入单元和所述输出单元的加权x轴平均坐标;
[0055]
根据如下公式计算所述加权平均坐标的y轴坐标:
[0056]
y'j=(1 flagy*wj)*yj[0057]
其中,yj表示所述输入单元和所述输出单元的未加权y轴平均坐标,y'j表示所述输入单元和所述输出单元的加权y轴平均坐标。
[0058]
进一步地,所述根据所述输入单元和所述输出单元的加权平均坐标构建边界框,将所述边界框的中心点作为所述候选位置点的步骤包括:
[0059]
筛选出所述候选位置点的时序小于预设第二时序阈值的所述输入单元和所述输出单元,得到边界单元集合;
[0060]
根据所述边界单元集合中的所述输入单元和所述输出单元的加权平均坐标构建边界框;
[0061]
计算所述边界框的中心点,并将所述中心点作为所述候选位置点。
[0062]
其中,如图2所示,204是大于预设第二时序阈值的输出单元,201、202、是小于预设第二时序阈值的输出单元,203、205是小于预设第二时序阈值的输入单元;则根据所述输出单元201、所述输出单元202、所述输入单元203和所述输入单元205生成所述边界单元集合;207是根据所述边界单元集合中的所述输入单元和所述输出单元的加权平均坐标构建边界框;206是所述边界框207的中心点,则将所述中心点206作为所述候选位置点。
[0063]
其中,对于所述候选位置点,只有在所述候选位置点的时序性能优于原始布局位置时才将所述候选位置点放入所述候选位置点集合。
[0064]
s104、从所述候选位置点集合中确定时序性能最优的候选位置点进行布局。
[0065]
进一步地,所述从所述候选位置点集合中确定时序性能最优的候选位置点进行布局的步骤还包括:
[0066]
将确定的所述时序性能最优的候选位置点进行布局后得到的用户网表保存到用户网表集合。
[0067]
s105、循环所述从用户网表中获取不满足预设时序规定的设计单元至所述从所述候选位置点集合中确定时序性能最优的候选位置点进行布局的步骤,直至迭代次数达到预设迭代最大次数,或所述设计单元都满足预设时序规定时,得到全局布局的最优化结果。
[0068]
进一步地,循环结束之后在所述用户网表集合中获取时序性能最优的用户网表作为全局布局的最优化结果。
[0069]
其中,在循环过程中,只要所述用户网表的整体时序在预设的时序容错范围内,那么当前轮次循环调整后的所述用户网表将被放入到所述用户网表集合并且作为下一轮循环进行调整的初始用户网表。
[0070]
其中,上述可编程逻辑器件布局优化方法会在所述fpga芯片设计的全局布局过程中执行,还会在所述fpga芯片设计的全局布局过程结束后执行,确保最终得到的全局布局的时序性能是最优化的结果。
[0071]
其中,需要特别指出的是所述可编程逻辑器件布局优化方法的执行次数还可以不受限制,即所述可编程逻辑器件布局优化方法在所述fpga芯片设计的全局布局过程中至少执行一次,同时在所述fpga芯片设计的全局布局过程结束后至少执行一次。
[0072]
本实施例提出的可编程逻辑器件布局优化方法,在fpga芯片设计的全局布局过程中和全局布局过程结束后各执行一次,通过将用户网表中时序性能较差的设计单元归类,然后通过预设的计算方法得到与所述设计单元相连的输入单元和输出单元的加权平均坐标,并筛选所述输入单元和所述输出单元后构建边界框确定中心点为预调整的候选位置点,最后确定唯一的时序最佳的候选位置点为调整的位置点,且采用用户网表迭代调整过程中整体时序最佳的用户网表作为最终的用户网表布局结果;将传统fpga芯片设计的详细布局流程才进行的时序性能优化提前到全局布局流程执行,并且将候选位置点的限制条件缩小得到更多的候选位置点,能够得到时序性能更加优化的全局布局结果,即在传统fpga芯片设计的全局布局流程中使用了本实施例的可编程逻辑器件布局优化方法得到的布局结果,比传统技术中直接进行原有全局布局流程得到的布局结果的时序性能更加优化。
[0073]
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
[0074]
在一实施例中,提供一种可编程逻辑器件布局优化装置30,该可编程逻辑器件布局优化装置30与上述实施例中可编程逻辑器件布局优化方法一一对应。如图3所示,该可编程逻辑器件布局优化装置30包括设计单元归类模块301、关键单元归类模块302、候选位置点计算模块303、最优候选位置点布局模块304和循环模块305。各功能模块详细说明如下:
[0075]
设计单元归类模块301,用于从用户网表中获取不满足预设时序规定的设计单元,对所述设计单元按照时序性能进行降序或升序排列后进行归类以生成设计单元集合;
[0076]
关键单元归类模块302,用于从所述设计单元集合中按照预设比例选取时序性能差的所述设计单元作为关键单元,将所述关键单元进行归类以生成关键单元集合;
[0077]
候选位置点计算模块303,用于根据预设计算方法为所述关键单元集合中的所述关键单元构建候选位置点并生成候选位置点集合;
[0078]
最优候选位置点布局模块304,用于从所述候选位置点集合中确定时序性能最优的候选位置点进行布局;
[0079]
循环模块305,用于循环所述从用户网表中获取不满足预设时序规定的设计单元至所述从所述候选位置点集合中确定时序性能最优的候选位置点进行布局的步骤,直至迭代次数达到预设迭代最大次数,或所述设计单元都满足预设时序规定时,得到全局布局的
最优化结果。
[0080]
进一步地,所述候选位置点集合生成模块303包括:
[0081]
未加权平均坐标计算子模块,用于获取与所述关键单元连接且到所述关键单元的时序小于预设第一时序值的输入单元和输出单元,计算所述输入单元和所述输出单元的未加权平均坐标;
[0082]
加权平均坐标计算子模块,用于根据所述关键单元的时序信息计算权重,再根据所述权重和所述未加权平均坐标计算所述输入单元和输出单元的加权平均坐标;
[0083]
候选位置点计算子模块,用于根据所述输入单元和输出单元的加权平均坐标构建边界框,将所述边界框的中心点作为所述候选位置点。
[0084]
进一步地,所述加权平均坐标计算子模块还包括:
[0085]
时序变换计算子单元,用于通过如下公式计算所述关键单元变换后的时序信息:
[0086][0087]
其中,t表示关键单元的初始时序信息,t表示关键单元变换后的时序信息;
[0088]
权重计算子单元,用于通过如下公式计算所述关键单元的权重:
[0089][0090]
其中,wj表示第j个关键单元的权重。
[0091]
进一步地,所述加权平均坐标计算子模块还包括:
[0092]
x轴控制变量计算子单元,用于根据如下公式计算x轴方向上的控制变量:
[0093][0094]
其中,flag
x
表示x轴方向上的控制标量,td表示所述输入单元或所述输出单元的时序信息,xd表示所述输入单元或所述输出单元的x轴坐标,xc表示表示所述关键单元的x轴坐标;
[0095]
y轴控制变量计算子单元,用于根据如下公式计算y轴方向上的控制变量:
[0096][0097]
其中,flagy表示y轴方向上的控制标量,yd表示所述输入单元或所述输出单元的y轴坐标,yc表示表示所述关键单元的y轴坐标;
[0098]
x轴加权平均坐标计算子单元,用于根据如下公式计算所述加权平均坐标的x轴坐标:
[0099]
x'j=(1 flag
x
*wj)*xj[0100]
其中,xj表示所述输入单元和所述输出单元的未加权x轴平均坐标,x'j表示所述输
入单元和所述输出单元的加权x轴平均坐标;
[0101]
y轴加权平均坐标计算子单元,用于根据如下公式计算所述加权平均坐标的y轴坐标:
[0102]
y'j=(1 flagy*wj)*yj[0103]
其中,yj表示所述输入单元和所述输出单元的未加权y轴平均坐标,y'j表示所述输入单元和所述输出单元的加权y轴平均坐标。
[0104]
进一步地,所述候选位置点计算子模块还包括:
[0105]
边界单元集合生成子单元,筛选出所述候选位置点的时序小于预设第二时序阈值的所述输入单元和所述输出单元,得到边界单元集合;
[0106]
边界框构建子单元,根据所述边界单元集合中的所述输入单元和所述输出单元的加权平均坐标构建边界框;
[0107]
候选位置点确定子单元,计算所述边界框的中心点,并将所述中心点作为所述候选位置点。
[0108]
进一步地,所述最优候选位置点布局模块304还包括:
[0109]
用户网表集合存储子单元,循环过程中将每次确定的所述候选位置点进行布局后得到的用户网表保存到用户网表集合;
[0110]
全局布局最优结果确定子单元,循环结束之后在所述用户网表集合中获取时序性能最优的用户网表作为全局布局的最优化结果。
[0111]
其中上述模块/单元中的“第一”和“第二”的意义仅在于将不同的模块/单元加以区分,并不用于限定哪个模块/单元的优先级更高或者其它的限定意义。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块,本技术中所出现的模块的划分,仅仅是一种逻辑上的划分,实际应用中实现时可以有另外的划分方式。
[0112]
关于可编程逻辑器件布局优化装置的具体限定可以参见上文中对于可编程逻辑器件布局优化方法的限定,在此不再赘述。上述可编程逻辑器件布局优化装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
[0113]
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述实施例中可编程逻辑器件布局优化方法的步骤,例如图1所示的步骤s101至步骤s105及该方法的其它扩展和相关步骤的延伸。或者,处理器执行计算机程序时实现上述实施例中可编程逻辑器件布局优化装置的各模块/单元的功能,例如图3所示模块301至模块305的功能。为避免重复,这里不再赘述。
[0114]
所述处理器可以是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、
分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述计算机装置的控制中心,利用各种接口和线路连接整个计算机装置的各个部分。
[0115]
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述计算机装置的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如文字编辑功能、图像绘制功能等)等;存储数据区可存储根据计算机设备的使用所创建的数据(比如文字数据、图像数据等)等。
[0116]
所述存储器可以集成在所述处理器中,也可以与所述处理器分开设置。
[0117]
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述实施例中可编程逻辑器件布局优化方法的步骤,例如图1所示的步骤s101至步骤s105及该方法的其它扩展和相关步骤的延伸。或者,计算机程序被处理器执行时实现上述实施例中可编程逻辑器件布局优化装置的各模块/单元的功能,例如图3所示模块301至模块305的功能。为避免重复,这里不再赘述。
[0118]
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
[0119]
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
[0120]
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
再多了解一些

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

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

相关文献