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

一种多阶段优化的FPGA布局方法与流程

2022-09-15 06:04:11 来源:中国专利 TAG:

一种多阶段优化的fpga布局方法
技术领域
1.本发明涉及fpga技术领域,尤其是一种多阶段优化的fpga布局方法。


背景技术:

2.现场可编程逻辑门阵列(field-programmable gate array,fpga)是一种在日用家电、大型机械乃至航空航天都有广泛使用的芯片。随着fpga芯片规模的扩大,芯片的布局愈发显得关键和重要,直接影响着芯片的面积、频率等性能。因此在芯片布局上需要综合考虑多方面的代价,在满足多种约束的条件下,如何通过芯片布局的优化来保证芯片的性能和可布性成为保证芯片质量的关键。
3.模拟退火算法是目前fpga的布局优化过程中常用的算法,模拟退火算法是一种启发式的迭代搜索算法,它由metropolis于1953年提出,其设计原理来自于真实的物理退火过程。
4.模拟退火算法用于解决fpga的布局问题时的流程请参考图1所示的流程图,首先随机形成一个fpga上的全局初始布局结果,全局初始布局结果包括所有元件实例的初始的布局位置,并初始化设置一个退火的初始温度、一个退火的退出温度、一个可达全域的状态改变空间。模拟退火算法主要包括外循环和内循环,外循环用于控制退火温度和状态改变空间,内循环用于交换和移动元件实例的布局位置。外循环从退火的初始温度和可达全域的状态改变空间开始,在当前外循环下进入内循环,在当前的状态改变空间内随机交换和移动元件实例的布局位置以改变布局结果,每次布局结果改变操作都会以一定的概率进行接受,这个概率与当前的退火温度以及布局结果改变操作所产生的影响有关,布局结果改变操作所产生的影响一般通过计算代价函数来确定,退火温度越高、接受概率越大,此次布局结果改变操作对布局结果优化效果越明显、接受概率越大,这一过程模拟固体粒子的运动。内循环结束后,会降低退火温度并减少状态改变空间进入下一次外循环,模拟固体冷却过程能量逐渐降低固体粒子活跃性逐渐减小。直到退火温度达到退出温度时退出外循环。初始温度一般较高,可以使元件实例的布局结果改变操作很容易被接受,模拟固体的高温状态。退出温度一般较低,元件实例的布局结果改变操作从而变得难以接受,模拟固体的低温状态。外循环退出后,将退火温度设置为0,再进行若干次元件实例的布局位置的交换以改变它们的状态,这时只能接受使布局结果优化的布局结果改变操作,最终完成模拟退火算法,得到fpga上的最终布局结果。
5.如上描述,模拟退火算法用于解决fpga的布局问题时,若需要得到较优的全局布局质量,则需要通过多次内外循环来交换和移动元件实例的布局位置,往往需要进行大量的随机交换和移动来保证向全局最优布局结果收敛,因此算法执行时间通常较长,而且通过加大循环次数延长算法运行时间也并不能线性的优化全局布局质量,整体布局效率较低。


技术实现要素:

6.本技术人针对上述问题及技术需求,提出了一种多阶段优化的fpga布局方法,本技术的技术方案如下:
7.一种多阶段优化的fpga布局方法,该方法包括:
8.在第一个布局阶段,利用当前布局阶段对应的布局算法按照用户网表对fpga进行全局布局并完成合法化处理,得到当前布局阶段的全局布局结果以及布局传递信息,布局传递信息指示当前布局阶段的全局布局结果中影响全局布局质量的局部布局结果,每个布局阶段的全局布局结果中所有元件实例都在对应的合法布局位置处;
9.从第二个布局阶段开始,利用当前布局阶段对应的布局算法基于上一个布局阶段确定的布局传递信息、对上一个布局阶段的全局布局结果进行优化,并得到当前布局阶段的全局布局结果以及布局传递信息;迭代执行多个布局阶段直至得到全局布局质量达到布局目标的最终布局结果。
10.其进一步的技术方案为,一个布局阶段确定的布局传递信息包括影响全局布局质量的元件实例和/或区域和/或路径。
11.其进一步的技术方案为,影响全局布局质量的元件实例包括受当前布局阶段的合法化处理过程影响的元件实例,和/或,包括位于影响全局布局质量的区域内的元件实例,和/或,包括位于影响全局布局质量的路径中的元件实例。
12.其进一步的技术方案为,一个布局阶段在初始布局结果下经过合法化处理得到全局布局结果,初始布局结果中存在至少一个元件实例未布局在合法布局位置处;则一个布局阶段中受当前布局阶段的合法化处理过程影响的元件实例包括:在当前布局阶段的初始布局结果中未有合法布局位置但经过合法化处理后获得合法布局位置的元件实例;和/或,在当前布局阶段的初始布局结果中已有合法布局位置但经过合法化处理后受其他元件实例的影响而导致合法布局位置发生变化的元件实例。
13.其进一步的技术方案为,影响全局布局质量的区域包括可布线度低于布线度阈值的区域,影响全局布局质量的路径包括时序裕量低于裕量阈值的路径。
14.其进一步的技术方案为,当一个预定范围的区域的布局拥挤度达到拥挤度阈值时,和/或,区域内的预定资源模块的利用率达到利用率阈值时,确定区域的可布线度低于布线度阈值。
15.其进一步的技术方案为,相邻两个布局阶段采用的布局算法相同或不同、采用的代价函数相同或不同。
16.其进一步的技术方案为,在当前布局阶段对上一个布局阶段的全局布局结果进行优化的方法,包括:
17.利用当前布局阶段对应的布局算法优先调整上一个布局阶段的布局传递信息指示的局部布局结果以优化上一个布局阶段的全局布局结果。
18.其进一步的技术方案为,从第二个布局阶段开始的一个当前布局阶段对应的布局算法为模拟退火算法,在当前布局阶段对上一个布局阶段的全局布局结果进行优化的方法,包括:
19.当退火温度为初始温度时,从上一个布局阶段的布局传递信息指示的局部布局结果对应的元件实例中迭代选取元件实例,按照当前的退火温度以及代价函数对应的接受
率、对选取的元件实例的布局位置在交换半径内进行调整,以优化上一个布局阶段的全局布局结果。
20.其进一步的技术方案为,在从上一个布局阶段的布局传递信息指示的局部布局结果对应的元件实例中选取元件实例时,元件实例在上一个布局阶段的全局布局结果中的性能指标越差、元件实例的选取频次越高。
21.其进一步的技术方案为,从第二个布局阶段开始的一个当前布局阶段在执行模拟退火算法时的退火温度的初始温度低于温度阈值;交换半径小于半径阈值。
22.本技术的有益技术效果是:
23.本技术公开了一种多阶段优化的fpga布局方法,该方法多个阶段来完成fpga的布局,第一个布局阶段得到全局布局结果后,后续的布局结果都在上一个布局阶段的全局布局结果的基础上再次优化,有利于在布局时间和全局布局质量之间达到较好的平衡,解决单阶段布局存在的问题。而且每个布局阶段都会向后一个布局阶段传递一些影响全局布局质量的关键信息,使得后一个布局阶段可以基于布局传递信息针对性的进行布局优化,布局优化的针对性更强,可以加速布局优化的效果,提高布局效率。
24.不同布局阶段可以采用不同布局算法和代价函数,从而可以融合不同布局算法的特点和效果,使得布局优化效果更明显,得到更好的布局结果。
附图说明
25.图1是现有传统的模拟退火算法实现fpga布局的流程图。
26.图2是本技术一个实施例中多阶段优化的fpga布局方法的流程图。
27.图3是一个实施例中通过第一个布局阶段的力导向布局算法和第二个布局阶段的模拟退火算法实现多阶段优化的fpga布局方法的流程图。
具体实施方式
28.下面结合附图对本技术的具体实施方式做进一步说明。
29.本技术公开了一种多阶段优化的fpga布局方法,该方法包括如下步骤,请参考图2所示的流程图:
30.步骤210,在第一个布局阶段,利用当前布局阶段对应的布局算法按照用户网表对fpga进行全局布局并完成合法化处理,得到当前布局阶段的全局布局结果以及布局传递信息。
31.每个布局阶段所使用的布局算法可以采用现有的任意一种布局算法,目前常见的布局算法包括如下几类:随机算法、min-cut最小割算法、解析式算法、non-linear非线性建模算法。随机算法常见的有模拟退火算法,解析式算法常见的有quadratic力导向布局算法。不同的布局算法有不同的算法流程和算法特点,也适用于不同的布局场景和布局需求,会对不同种类的用户设计产生不同的布局效果。布局算法受限于如运行时间、模型精确度(包括拥挤度的计算、时序的估算、可布线程度的估算)、实现的完美度、用户约束的复杂度等各种因素,各有不同的效果。理论上说,一项布局算法运行时间越久,得到的布局结果的全局布局质量会更好,但是对全局布局质量的优化效果并不是随着运行时间线性增加的,因此需要平衡运行时间和全局布局质量。
32.本技术首先利用布局算法按照用户网表在布局约束下对fpga进行快速地全局布局,通过若干次迭代得到初始布局结果,布局约束常见的包括时序约束、某些元件实例的位置约束等等,布局约束由用户输入。此时得到的初始布局结果的全局布局质量一般较差,包括两个方面:一方面存在布局不合法的现象,初始布局结果往往会存在较多布局位置重叠的元件实例、这些元件实例的布局即为非法的,也即初始布局结果中存在至少一个元件实例未布局在合法布局位置处,合法布局位置是fpga上已被指定给一个元件实例的布局位置。另一方面布局性能指标较差,包括拥挤度较高、时序较差等问题。
33.然后在初始布局结果下经过合法化处理得到当前布局阶段的全局布局结果,合法化处理将初始布局结果中布局位置重叠的元件实例强行展开,使得元件实例的布局位置互不重叠,由此得到的全局布局结果中所有元件实例都在对应的合法布局位置处。合法化处理可以采用现有的操作方法,比如常见的依据曼哈顿距离图由近及远依次寻找空置的合法位置来放置当前布局不合法的元件实例,再比如可以基于最大流算法来实现等等,本技术不赘述。
34.合法化处理虽然能快速的将初始布局结果中的非法布局合法化,却往往不能兼顾布局性能指标问题,因此虽然全局布局结果解决了布局不合法的现象,但是仍然可能因为布局性能指标较差而导致全局布局质量不够理想。
35.本技术的方法在每个布局阶段得到当前布局阶段的全局布局结果之外,还得到布局传递信息,布局传递信息指示当前布局阶段的全局布局结果中影响全局布局质量的局部布局结果。这里的局部布局结果具体有如下几种类型的信息:元件实例、区域、路径,因此一个布局阶段确定的布局传递信息包括影响全局布局质量的元件实例和/或区域和/或路径。
36.(1)对于一个区域来说,其主要的布局性能指标是可布线度,因此影响全局布局质量的区域包括可布线度低于布线度阈值的区域。
37.一个区域可以是按照fpga架构的各个域划分得到的,也可以是按照自定义划分规则划分得到的,不同区域包含的区域范围可以相同也可以不同。
38.区域的可布线度难以准确建模计算,一般需要通过其他方法来逼近代替。在一个实施例中,当一个预定范围的区域的布局拥挤度达到拥挤度阈值时,和/或,区域内的预定资源模块的利用率达到利用率阈值时,确定区域的可布线度低于布线度阈值。也即利用区域整体的布局拥挤度和/或区域内特定资源的利用率来逼近代替可布线度,每个区域内的特定资源可以自定义。其他方法还可以通过预估走线长度或实例端口数来估算可布线度,但是误差较大。
39.(2)对于一条布线路径来说,其主要的布局性能指标是时序,影响全局布局质量的路径包括时序裕量低于裕量阈值的路径。
40.(3)影响全局布局质量的元件实例包括受当前布局阶段的合法化处理过程影响的元件实例,和/或,包括位于影响全局布局质量的区域内的元件实例,和/或,包括位于影响全局布局质量的路径中的元件实例。
41.影响全局布局质量的区域和影响全局布局质量的路径的含义与上述情况(1)和(2)相同,在此不做赘述,当确定影响全局布局质量的区域和路径后,区域和路径中的元件实例即能确定。
42.受当前布局阶段的合法化处理过程影响的元件实例包括:在当前布局阶段的初始
布局结果中未有合法布局位置但经过合法化处理后获得合法布局位置的元件实例,也即在合法化处理过程中被强行合法化的元件实例。和/或,在当前布局阶段的初始布局结果中已有合法布局位置但经过合法化处理后受其他元件实例的影响而导致合法布局位置发生变化的元件实例,也即原已合法,但在合法化处理过程中受影响的元件实例。
43.因此每个布局阶段得到的布局传递信息从来源上实际可以包括如下两类:一类是在合法化处理过程中得到的信息,主要是受当前布局阶段的合法化处理过程影响的元件实例,这一类信息无法通过分析全局布局结果得到。另一类是通过分析全局布局结果得到的信息,主要是在全局布局结果中布局性能指标较差的元件实例和/或区域和/或路径。
44.步骤220,从第二个布局阶段开始,利用当前布局阶段对应的布局算法基于上一个布局阶段确定的布局传递信息、对上一个布局阶段的全局布局结果进行优化,并得到当前布局阶段的全局布局结果以及布局传递信息。
45.相邻两个布局阶段采用的布局算法相同或不同、采用的代价函数相同或不同。如上所述,不同布局算法有不同的算法特点、会产生不同的布局效果,因此当前布局阶段对应的布局算法一般与上一个布局阶段对应的布局算法不同,从而可以融合不同布局算法的特点,能够更好的优化全局布局质量。
46.具体的,在当前布局阶段对上一个布局阶段的全局布局结果进行优化时,利用当前布局阶段对应的布局算法优先调整上一个布局阶段的布局传递信息指示的局部布局结果以优化上一个布局阶段的全局布局结果。不同的布局算法有不同的算法流程,不同的布局算法优先调整上一个布局阶段的布局传递信息指示的局部布局结果的具体步骤根据实际算法流程来确定。
47.每个布局阶段输入的用户网表和布局约束都是相同的,而且除了获取到用户网表和布局约束之外,还会获取到上个布局阶段输入的布局传递信息,当前布局阶段承接上一个布局阶段的全局布局结果,延续上一个布局阶段的布局算法未达成的目标,用当前布局阶段的布局算法来提升全局布局质量,这种优化是全局性的布局优化,与局部优化不同,局部再优化可以一定程度上优化布局结果,但是有其局限性,比如存在较大范围的拥挤区时,局部再优化的效果就不理想,而本技术的方法则可以很好的实现优化。而且在当前布局阶段内,布局算法并不仅仅根据全局的用户网表和用户输入的布局约束来进行盲目的全局优化,而是会参考上一个布局阶段确定的布局传递信息来针对性的重点对影响全局布局质量的部分进行优化,从而可以加速布局优化,提升布局效率。
48.在完成对上一个布局阶段的全局布局结果的优化后,如果存在布局非法化的情况,则再次进行合法化处理得到当前布局阶段的全局布局结果,若还有下一个布局阶段,则还得到布局传递信息用于传递至下一个布局阶段。不同布局阶段的布局传递信息指示的信息类别可以相同也可以不同。
49.在本技术中,每个布局阶段得到的全局布局结果都是合法的。而每个布局阶段产生并需要传递给下一个布局阶段的布局传递信息是始终存在的,一般是文件形式存在,即便算法突然退出或程序断电,布局传递信息仍然存在。
50.步骤230,如果还有下一个布局阶段,则再次执行步骤220迭代执行。如果经过当前布局阶段已经得到全局布局质量达到布局目标的最终布局结果,则结束流程。具体有多少个布局阶段,每个布局阶段选用何种布局算法可以根据实际情况配置。
51.基于本技术提供的多阶段优化布局的方法思路,在一个实施例中,出于平衡运行时间和全局布局质量并降低实现难度的考虑,fpga布局过程包括两个布局阶段,第一个布局阶段采用力导向布局算法,第二个布局阶段采用模拟退火算法,则第一个布局阶段执行力导向布局算法得到合法的全局布局结果和布局传递信息后传递给第二个布局阶段,请参考图3。
52.第二个布局阶段执行模拟退火算法优先调整上一个布局阶段的布局传递信息指示的局部布局结果以优化上一个布局阶段的全局布局结果。如上所述,布局传递信息指示的局部布局结果具体可以是元件实例和/或区域和/或路径,调整区域的局部布局结果实际就是调整该区域对应的、也即区域内的元件实例的布局结果,调整路径的局部布局结果实际就是调整该路径对应的、也即路径上的元件实例的布局结果,因此无论布局传递信息指示的局部布局结果是何种信息类别,在优先调整上一个布局阶段的布局传递信息指示的局部布局结果时,实际就是优先调整布局传递信息指示的局部布局结果对应的元件实例。如背景技术所记载的,通用的模拟退火算法通过外循环和内循环的嵌套,通过随机选择元件实例交换布局位置来迭代执行。而在本技术中,利用上一个布局阶段传递的布局传递信息,模拟退火算法仍然通过外循环和内循环的嵌套,但不再随机选择元件实例交换布局位置来迭代执行了,而是优先从上一个布局阶段的布局传递信息指示的局部布局结果对应的元件实例中迭代选取元件实例交换布局位置来迭代执行,从而优先调整布局传递信息指示的局部布局结果。
53.由于模拟退火算法需要在不同退火温度对应的外循环下,分别执行多次内循环交换元件实例的布局位置,具体在哪些外循环和哪些内循环下优先从上一个布局阶段的布局传递信息指示的元件实例中选取交换布局位置是可以自由设置的,算法弹性比较大。
54.最直接也是最常见的做法是,在第一次外循环时优先从上一个布局阶段的布局传递信息指示的元件实例中选取,也即当退火温度为初始温度时,从上一个布局阶段的布局传递信息指示的局部布局结果对应的元件实例中迭代选取元件实例,按照当前的退火温度以及代价函数对应的接受率、对选取的元件实例的布局位置在交换半径内进行调整,以优化上一个布局阶段的全局布局结果。具体的:
55.(1)初始化模拟退火算法的系统参数,主要包括初始温度、退出温度、状态改变空间,状态改变空间一般可以用交换半径来定义。由于第二个布局阶段的模拟退火算法承接了上一个布局阶段的全局布局结果,而上一个布局阶段的全局布局结果已经经过合法化处理,比起常规随机布局得到的结果已经算是一个相对较优的布局结果了,因此模拟退火算法时的退火温度的初始温度低于温度阈值,该温度阈值不大于常规的模拟退火算法的初始温度,也即在本技术的方法中,第二个布局阶段开始的模拟退火算法的初始温度较低,以免破坏已有的相对较优的全局布局结果。
56.而因为初始温度较低而且在一个相对较优的全局布局结果下优化,若按照模拟退火算法的常规设置将交换半径初始化为可达全芯片,则会导致后续的交换几乎不能被接受,做很多无用功,因此第二个布局阶段开始的模拟退火算法的交换半径小于半径阈值,也即交换半径相对于常规交换半径较小,且后续迭代过程一般不再随退火温度降低而减小。
57.(2)若当前退火温度未达到退出温度,则在当前的退火温度下,从上一个布局阶段的布局传递信息包含的元件实例中选取一个元件实例。
58.在一个实施例中,每次从布局传递信息包含的元件实例中随机选取一个元件实例。在另一个实施例中,为了进一步提高选取的元件实例的有效性而加快收敛,在从上一个布局阶段的布局传递信息指示的局部布局结果对应的元件实例中选取元件实例时,元件实例在上一个布局阶段的全局布局结果中的性能指标越差、元件实例的选取频次越高。性能指标如上所记载,可以以元件实例所在区域的可布线度和/或所在路径的时序来衡量。也即在该实施例中,并不完全随机从布局传递信息包含的元件实例中选取元件实例,而会按照不同的选取频次来选取不同性能指标的元件实例,使得更高频次的选取性能指标差的元件实例来交换布局位置,从而重点优化这些性能指标差的元件实例,以更快的优化布局结果。
59.(3)按照当前的退火温度以及预设代价函数对应的接受率、对选取的元件实例在当前的全局布局结果中的布局位置、在当前的交换半径内进行优化。与常规模拟退火算法类似,需要在当前的状态改变空间内选取起点和目标点进行布局位置的交换,可以仅按照本技术提供的方法选取元件实例作为起点,而目标点仍随机选取。每次布局结果改变操作都会以一定的概率进行接受,这部分与常规模拟退火算法类似,本技术不赘述。
60.在退火温度为初始温度时的第一个外循环中,当前的交换半径即为初始化时的交换半径。在退火温度为初始温度时的第一个内循环中,当前的全局布局结果即为上一个布局阶段得到的合法的全局布局结果,而从第二个内循环开始,当前的全局布局结果即为在上一个布局阶段的全局布局结果的基础上调整后得到的布局结果。
61.(4)若当前退火温度下的内循环还未结束,则重新执行(2)和(3)进行布局优化。在一个退火温度下,可以只从上一个布局阶段的布局传递信息包含的元件实例中选取元件实例来交换布局位置,也可以在优先从上一个布局阶段的布局传递信息包含的元件实例中选取元件实例来交换布局位置的基础上,仍然按常规方法随机选取一部分元件实例来交换布局位置,算法灵活度较大。
62.(5)当前退火温度下的内循环迭代结束,则降低退火温度进入下一个外循环,在后续退火温度下的外循环中,也可以利用布局传递信息包含的元件实例,或者不再利用,根据实际情况设置,直到算法结束。
再多了解一些

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

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

相关文献