CN112183014B - 基于最大流算法进行拥挤区域展开的力导向布局方法 - Google Patents
基于最大流算法进行拥挤区域展开的力导向布局方法 Download PDFInfo
- Publication number
- CN112183014B CN112183014B CN202011026541.3A CN202011026541A CN112183014B CN 112183014 B CN112183014 B CN 112183014B CN 202011026541 A CN202011026541 A CN 202011026541A CN 112183014 B CN112183014 B CN 112183014B
- Authority
- CN
- China
- Prior art keywords
- layout
- node
- nodes
- positions
- fpga chip
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
- G06F30/392—Floor-planning or layout, e.g. partitioning or placement
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Architecture (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本发明公开了一种基于最大流算法进行拥挤区域展开的力导向布局方法,涉及FPGA布局技术领域,该方法在利用力导向布局算法模型进行解析式算法迭代过程中,阶段性的选取布局拥挤度高的目标区域进行抽象建立剩余图并赋值,基于最小花费最大流算法对剩余图进行求解,使得全局布局在满足退出条件之前,可重布节点就当前布局状态下所处的位置得到一个合法的迭代位置,通过在迭代位置处添加对可重布节点的虚拟加力点进行牵引可以使可重布节点有往合法的迭代位置移动的趋势,从而可以导向性的加速拥挤区域展开速度,从而减少解析式算法的迭代次数,减少运行时间,提高布局效率。
Description
技术领域
本发明涉及FPGA布局技术领域,尤其是一种基于最大流算法进行拥挤区域展开的力导向布局方法。
背景技术
现场可编程逻辑门阵列(Field-Programmable Gate Array,FPGA)是一种在日用家电、大型机械乃至航空航天都有广泛使用的芯片。FPGA芯片的使用离不开电子设计自动化(Electronic Design Automation,EDA)工具。布局则是EDA工具中重要的一环,其对EDA工具本身运行速度、所处理电路的最终质量有着很大影响。近年来,FPGA芯片的电路规模快速增长,使其功能更加强大,但同时也给相应的EDA工具带来了挑战。
布局的主要作用就是在优化目标下将输入网表中的功能模块一一映射到FPGA芯片具有实际物理坐标的布局位置上,解析型布局算法以其可以使用数学方法快速求得全局最优解的特性成为当今布局算法的主流方向之一。但是解析型布局算法的求解结果往往存在功能模块的重叠问题,而布局合法的前提条件是功能模块之间不能存在重叠,一般情况下解析型布局算法前几次求解得到的布局结果会存在大量的重叠,需要多次迭代对求解结果进行展开直至达到一个较为理想的低重叠度,但即使是最后一次迭代也往往不能完全消除布局结果的重叠,因此解析型布局算法后续通常仍需要结合合法化处理才能获得一个合理的布局结果。现阶段的输入网表的电路结构往往体积庞大,往往需要多次尝试迭代才能将过分拥挤的区域展开,因此迭代展开过程的处理时间通常较长,降低布局效率。
发明内容
本发明人针对上述问题及技术需求,提出了一种基于最大流算法进行拥挤区域展开的力导向布局方法,本发明的技术方案如下:
一种基于最大流算法进行拥挤区域展开的力导向布局方法,该方法包括:
获取FPGA芯片对应的输入网表,按照输入网表利用力导向布局算法模型对FPGA芯片进行求解布局得到布局状态,布局状态包括若干个可重布节点以及若干个可布位置,每个可重布节点分别为输入网表中的一个功能模块,每个可布位置分别FPGA芯片上的一个布局位置;
根据当前的布局状态对FPGA芯片上各个目标区域中的布局状态分别进行抽象建立剩余图并根据布局状态进行赋值,目标区域是布局拥挤度达到预定阈值的区域;
基于最小花费最大流算法对剩余图进行求解确定各个可重布节点对应的可布位置作为迭代位置;
在每个迭代位置处添加对应的可重布节点的虚拟加力点,按照输入网表基于虚拟加力点对当前的布局状态中的相应的可重布节点的牵引作用利用力导向布局算法模型对FPGA芯片进行重新求解布局,并再次执行根据当前的布局状态对FPGA芯片上各个目标区域中的布局状态分别进行抽象建立剩余图的步骤,直至FPGA芯片上各个区域内的布局拥挤度都小于预定阈值时,根据当前的布局状态完成对FPGA芯片的全局合法化。
其进一步的技术方案为,在每次的布局状态中,每个可重布节点受到具有连接关系的其他功能模块的牵引以及对应的迭代位置处的虚拟加力点的牵引,虚拟加力点产生的牵引力远小于其他功能模块的牵引力。
其进一步的技术方案为,布局状态中的可重布节点包括若干个已被指定摆放于FPGA的合法位置上且布局位置可变的合法节点以及若干个未被指定合法位置的非法节点,每个目标区域中的可布位置包括目标区域内已被指定给合法节点的布局位置以及未被任何节点占用的布局位置。
其进一步的技术方案为,对FPGA芯片上各个目标区域中的布局状态分别进行抽象建立剩余图并根据布局状态进行赋值,包括:
将布局状态中各个可重布节点和各个可布位置抽象形成图形节点,将可重布节点和可布位置之间的关系抽象形成对应的图形节点之间的第一有向边;建立虚拟源点并在虚拟源点与各个可重布节点的图形节点之间建立第二有向边,建立虚拟终点并在各个可布位置的图形节点与虚拟终点之间建立第三有向边;
根据布局状态确定各条第一有向边的花费并进行赋值,将各条第二有向边和各条第三有向边的花费均赋值为0。
其进一步的技术方案为,根据布局状态对剩余图中的各条第一有向边进行赋值得到各条第一有向边的花费,包括:
根据布局状态确定线网长度、本地拥挤度和时序余量中的至少一种,并根据确定得到的线网长度、本地拥挤度和时序余量中的至少一种计算得到各条第一有向边的花费进行赋值。
其进一步的技术方案为,基于最小花费最大流算法对剩余图进行求解确定各个可重布节点对应的可布位置作为迭代位置,包括:
利用Dijkstra最短路径算法在剩余图中寻找花费最小的路径,并对路径进行增广、将寻找到的花费最小的路径上所有的第一有向边反向并将第一有向边的花费取负,得到新的剩余图;
重复执行利用Dijkstra最短路径算法在剩余图中寻找花费最小的路径的步骤,直至虚拟源点与虚拟终点之间不存在路径时,确定最终得到的到流最大且在相同流量情况下花费最小的剩余图中各个可重布节点同一路径中的可布位置为迭代位置。
其进一步的技术方案为,每次的布局状态还包括若干个已被指定摆放于FPGA芯片的合法位置上且布局位置固定的固定节点,每个固定节点也为输入网表中的一个功能模块,则每个目标区域中的可重布节点为除固定节点之外的其他所有功能模块,每个目标区域中的可布位置为除被固定节点占用的布局位置之外的其他布局位置。
其进一步的技术方案为,固定节点包括BRAM、CMT、DSP、GTP、PCI、EMAC、IO和硅连接点中的至少一种功能模块。
其进一步的技术方案为,每个可重布节点均为输入网表中的最小基本单元,对应FPGA架构中的一个slice级别模块或者一个查找表/寄存器级别模块。
其进一步的技术方案为,每个目标区域内包含的总的布局位置的数量不少于目标区域内包含的总的功能模块的数量,且包含的总的可布位置的数量不少于包含的总的可重布节点的数量。
其进一步的技术方案为,该方法还包括:
将FPGA芯片划分为若干个区域并在各个区域中选定目标区域,划分得到的各个区域的区域范围均相同或者存在至少两个区域的区域范围不同。
其进一步的技术方案为,将FPGA芯片划分为若干个区域,包括:
按照FPGA架构中的各个域将FPGA芯片划分为若干个区域,则划分得到的各个区域与FPGA架构的各个域相同。
其进一步的技术方案为,将FPGA芯片划分为若干个区域,包括:
按照自定义划分规则加工FPGA芯片划分为若干个区域,则划分得到的各个区域与FPGA架构的各个域不同。
本发明的有益技术效果是:
本申请公开了一种基于最大流算法进行拥挤区域展开的力导向布局方法,该方法在利用力导向布局算法模型进行解析式算法迭代过程中,阶段性的选取目标区域进行局部的最大流合法化操作,使得全局布局在满足退出条件之前,可重布节点就当前布局状态下所处的位置得到一个合法的迭代位置,通过在迭代位置处添加对可重布节点的虚拟加力点进行牵引可以使可重布节点有往合法的迭代位置移动的趋势,从而可以导向性的加速拥挤区域展开速度,从而减少解析式算法的迭代次数,减少运行时间,提高布局效率。
附图说明
图1是本申请公开的力导向布局方法的方法流程图。
图2是力导向布局算法中的一个示意图。
图3是力导向布局算法中的另一个示意图。
图4是力导向布局算法中的另一个示意图。
图5是力导向布局算法中的另一个示意图。
图6是建立得到的剩余图的示意图。
具体实施方式
下面结合附图对本发明的具体实施方式做进一步说明。
本申请公开了一种基于最大流算法进行拥挤区域展开的力导向布局方法,请参考图1所示的流程图,该方法包括如下步骤:
步骤S1,获取FPGA芯片对应的输入网表,按照输入网表利用力导向布局算法模型对FPGA芯片进行求解布局得到布局状态。
本申请对力导向布局算法模型(Quadratic算法模型)的原理介绍如下:
(1-1)Quadratic网表模型的建立。
在输入网表中,可以把所有的功能模块看作节点,把所有节点之间的信号关系建立成点到点的边的关系。如图2所示,网表中有节点A、B、C、D、E共5个节点,信号1从节点A输出,到达节点B、C、D、E上的4个目的端。在建模时将信号1转换成图中边1,边2,边3,边4,形成点->边->点模型。这样,以线长作为约束条件布局的话,信号1从源端A到目的端B、C、D、E的线长最短可以等效看作为边1,边2,边3,边4的边长总和最短。那么对整个输入网表而言,布局优化目标就是使得网表中所有边的长度总和最小。
如图2中,假设节点A(x1,y1),B(x2,y2),如果A,B节点的大小忽略不计,假设边1的权重为1,则边1的长度由边1长度的表达式可以知道边1的长度大小正相关于表达式(x2-x1)2+(y2-y1)2,即length在(x2-x1)2+(y2-y1)2取得最小值是获得最小值。
(1-2)构建求解矩阵。
对于整个输入网表而言,假设有n个节点,则优化目标函数可以等效为:由目标函数的二次性可知,在其偏导数为0的情况下取得极小值,即:以写成矩阵方程形式AX=B,AY=B。举一个实例在说明,如图3所示,假设网表中A、B、E、F是4个固定点,其中A、B的X坐标都为10,E、F的X坐标都为40,C、D为布局目标点,需要确定位置使得整个输入网表的线长最小。则X方向的目标函数可以确立为:
φ=(xc-10)2+2(xc-10)2+(xd-xc)2+(xd-40)2+2(xd-40)2 (1)
还是上述实例,求解可知节点C的X坐标为16,D的X坐标为34,那么以C节点来看,固定点A、B对C在X方向上可以认为产生一个向左的拉力。可动点D对C在X方向上可以认为产生一个向右的拉力,大小为:forceright=wcd(xd-xc)=1*(34-16)=18。由此可以知道,X方向上,点C处于一个力平衡状态,同理可以得出D也是处于一个力平衡状态。那么以力模型建立网表结构以后,在布局改变可动点位置时,只需要根据力平衡模型,对目标节点加上一个固定的力就可以达到目的。
求解侯建的矩阵即能得到布局状态,由此可以将输入网表中的各个功能模块布局到FPGA芯片上。每次通过力导向布局算法模型完成求解布局后,输入网表中有一部分功能模块会被各自指定排放于FPGA芯片的各个布局位置处,则这一部分功能模块的布局即为合法的,还有一些功能模块可能会存在位置重叠的现象,则这一部分功能模块的布局即为非法的。相应的,FPGA芯片上的所有布局位置中,有一部分布局位置会被指定给一个功能模块、该类布局位置为合法位置,还有部分布局位置可能会被指定给多个功能模块,还有部分布局位置可能未被指定给任何功能模块。
而对于被各自指定排放于FPGA的各个合法位置处的功能模块来说,其又可以包含两种:一种称为合法节点,另一种称为固定节点,合法节点是已被指定摆放于FPGA芯片的合法位置上且布局位置可以再次变动的功能模块,而固定节点是已被指定摆放于FPGA的合法位置上且布局位置固定不能再次变动的功能模块,也即固定节点的布局位置按照求解得到的布局状态确定好后不能再变动,这一类固定节点通常是预先标记好的,可能存在零个或任意多个,在本申请中,固定节点包括BRAM、CMT、DSP、GTP、PCI、EMAC、IO和硅连接点(也即裸片间的连接点)中的至少一种功能模块。
因此在本申请中,每次求解得到的布局状态包括若干个可重布节点,或者,包括若干个可重布节点以及若干个固定节点。可重布节点和固定节点都是输入网表中的一个功能模块,该功能模块为输入网表中的最小基本单元,对应FPGA架构中的一个slice级别模块或者一个查找表/寄存器(LUT/REG)级别模块。其中,可重布节点又包含若干个合法节点和若干个非法节点,非法节点是未被指定合法位置的功能模块,合法节点和固定节点的定义如上所述。
除此之外,每次求解得到的布局状态还包括FPGA芯片上的若干个可布位置,或者,还包括FPGA芯片上的若干个可布位置和固定位置,可布位置和固定位置都是FPGA上的一个布局位置。其中,可布位置又包括已被指定给合法节点的布局位置以及未被任何节点占用的布局位置,固定位置是指定给固定节点占用的布局位置。
步骤S2,选择目标区域进行局部合法化。
在实际实现时,在求解力导向布局算法模型后,通常会先进行若干次的拥挤区域展开,然后选择目标区域进行局部合法化,本申请对拥挤区域展开方法介绍如下:
求解力导向布局算法模型后得到的布局状态会存在很大程度上的功能模块重叠,而布局合法的前提条件是功能模块之间不能存在重叠。因此需要对求解出来的结果进行展开,使得不断重叠降低。如图4所示,在从左到右5个方格中依次有1、2、3、4、5个节点,假设图中每个方格的最大容量是3个节点。以图中虚线作为切割线,如果要切割线左右两边单位方格里的节点数一样,则需要从切割线左边向右边或者从右边向左边移动若干个结点。假设从切割线左边向右边移动为正,怎么可以成立等式:其中Ln代表切割线左边的节点数量,Rn代表切割线右边的节点数量,Lc代表切割线左边的方格的容量总和,Rc代表切割线右边的方格的容量总和,P代表需要向右移动的节点的数量。通过等式可以得出即其中Tc代表所有方格的容量总和。
假设方格的容量和方格的长度成正比,那么我们可以把node的移动转换为切割线所在的方格边的移动,如图4所示。假设向右移动为正,则切割线所在方格边的移动其中P是需要向右移动的节点数量,Wb是单个方格的宽度,Cb单个方格的容量。假设方格宽度为1,则 由求解结果可知,切割线所在方格边需要向左移动距离。
其中min代表整行方格的左边边界的x坐标,max代表整行方格的右边边界x坐标,L1代表切割线左边的方格的长度总和,Lr代表切割线右边的方格长度总和,xori代表节点原来的x坐标值,xnew代表需要求的节点新坐标。通过上述等式,可以求得节点的目标位置,如果以向右方向代表正方向,那么可以得出节点需要向右移动距离xnew-xori。
通过以上方法,将切割线依次向右移动一个方格,重新计算,可以得到基于节点密度平衡的所有节点的新位置。这样经过多次的迭代以后,可以将目标范围内的节点拉的比较均匀。根据上文描述的力模型,如果需要在网表中将节点移动一段距离,怎么可以等效的认为朝移动的方向上加一个力,使之处于一个新的平衡状态。如图5所示,点D原来在A,B,C的力平衡状态,现在需要将D移动到D′位置,则可以在D点的右边加一个固定点E,使它产生一个对D拉向D′的力,即拉力大小为f=|D′-D|。在E点出,可以认为加的力权重为其中w代表D、E间连线的权重,Lde代表D、E在X方向上的距离。
常规的布局做法是采用上述方法不断进行拥挤区域展开直达满足全局布局退出条件,但本申请在采用上述方法进行预定次数的拥挤区域展开后,选择目标区域进行局部合法化,该预定次数为自定义值。
其中,目标区域的选取方法是:首先将FPGA芯片划分为若干个区域本申请提供两种划分依据:(1)按照FPGA架构中的各个域对FPGA进行划分,则划分得到的各个区域与FPGA架构的各个域相同。(2)按照自定义划分规则对FPGA进行划分,则划分得到的各个区域与FPGA架构的各个域不同。划分得到的各个区域的区域范围均相同或者存在至少两个区域的区域范围不同。但每个区域内的布局位置与功能模块需要满足如下一些条件:每个区域内包含的总的布局位置的数量不少于该区域内包含的总的功能模块的数量,而由于固定节点与其占有的固定位置是固定的,因此也有,每个区域内包含的总的可布位置的数量不少于该区域内包含的总的可重布节点的数量。比如一个区域内包含K个布局位置,其中有K1个可布位置和K2个固定位置,该区域内包含L个功能模块,其中有L1个可重布节点和L2个若干个固定节点,则有K≥L,K1≥L1,K2=L2。
在划分区域后,在各个区域中选定布局拥挤度达到预定阈值的区域作为目标区域并针对每个目标区域执行如下步骤S3,该预定阈值为自定义值,区域的布局拥挤度的具体估算方法是现在布局方法中都会使用的,通过计算区域内每个物理位置的容量和实际当前有多少个物理逻辑确定得到,本申请对具体估算方法不详细展开。若每个区域的布局拥挤度都小于该预定阈值,则直接执行如下步骤S6。
步骤S3,根据当前的布局状态对FPGA芯片上各个目标区域中的布局状态分别进行抽象建立剩余图并根据布局状态进行赋值。
在针对每个目标区域建立剩余图时,将该目标区域的布局状态中各个可重布节点和各个可布位置抽象形成图形节点,将可重布节点和可布位置之间的关系抽象形成对应的图形节点之间的第一有向边,建立虚拟源点S并在虚拟源点S与各个可重布节点的图形节点之间建立第二有向边,建立虚拟终点T并在各个空置位置的图形节点与虚拟终点T之间建立第三有向边。建立得到的剩余图的示意图如图6所示。
这样布局合法化问题就变成了求解由虚拟源点S到虚拟终点T的最大流。为了使寻找的过程具有导向性,本申请按照当前的布局状态对该剩余图中的各条有向边进行赋值:根据布局状态确定各条第一有向边的花费并进行赋值,将各条第二有向边和各条第三有向边的花费均赋值为0。在本申请中,根据布局状态确定各条第一有向边的花费的方法为:根据布局状态确定线网长度、本地拥挤度和时序余量中的至少一种,并根据确定得到的线网长度、本地拥挤度和时序余量中的至少一种计算得到各条第一有向边的花费进行赋值,在计算时,可以将几类确定得到的参数通过相应的权重进行加权相加得到花费。这样又进一步将布局合法化问题转化为了最大流算法中的最小花费最大流(Min-Cost Max-Flow)问题。
步骤S4,基于最小花费最大流算法对剩余图进行求解确定各个可重布节点对应的可布位置作为迭代位置。
求解过程如下:
(1)利用Dijkstra最短路径算法在剩余图中寻找花费最小的路径。Dijkstra最短路径算法不允许剩余图中路径出现负值,因此首先要为每一个图形节点加势使得在保证剩余图结构不变的情况下将含有负花费的路径的剩余图转化为不含有负花费的路径的图以适用该算法,比如可以对所有路径的花费同时增加相应的值等等,本申请不赘述。
(2)对路径进行增广、将寻找到的花费最小的路径上所有的第一有向边反向并将第一有向边的花费取负,得到新的剩余图。
(3)重新执行上述(1)和(2),直至虚拟源点S与虚拟终点T之间不存在路径时,得到的剩余图即为流最大且在相同流量情况下花费最小的剩余图,在该最终得到的剩余图中各个可重布节点同一路径中的可布位置为迭代位置。
上述过程使用了Ford-Fulkerson算法以确保最终找到最大流,并可以使用数学归纳法简单证明求解过程每次循环都找出了当前流量下花费最小的流,其中涉及的图的相关性质这里不做赘述:
1、流量为1时,显然成立。
2、设流量为i时,f是花费最小的流,则其剩余图中必不含有花费为负的环路。
3、由求解方法推导出的流量为i+1时的流记为g,则g-f为一条虚拟源点S与虚拟终点T的花费最小的路径,将该路径记为r。
4、若在流量为i+1时存在比g的花费更小的流h,则对于这两个流量相同的流,h-g必存在环路,又因为h的花费小于g,则h-g的环路中必包含至少一个花费为负的环路,则h-f是路径r与存在花费为负的环路的若干环路组成,即f的剩余图中存在花费为负的环路。
5、f的剩余图中存在花费为负的环路,则f不是流量为i时花费最小的流,这与假设条件相悖。
6、所以流量为i+1时g即为花费最小的流,原结论得证。
步骤S5,在每个迭代位置处添加对应的可重布节点的虚拟加力点,该虚拟加力点对可重布节点有牵引作用,比如当可重布节点在当前布局状态中位于A处,通过上述合法化过程求得的迭代位置为A′,则在A′处添加虚拟加力点对该可重布节点外加一个额外的牵引力F,同时该可重布节点还会受到具有连接关系的其他功能模块的牵引,该虚拟加力点产生的牵引力远小于其他功能模块的牵引力,远小于也即虚拟加力点产生的牵引力与其他功能模块的牵引力之间的差值达到一定阈值。
在上述的力导向布局算法模型中,可重布节点从A位置移动到A′位置时,可重布节点便处于力平衡状态,从而有把可重布节点往A′位置导向性移动的其实,然后根据新的加力情况,按照输入网表基于虚拟加力点对当前的布局状态中的相应的可重布节点的牵引作用利用力导向布局算法模型对FPGA芯片进行重新求解布局再次得到新的布局状态,也即重新回到步骤S1的状态重新求解力导向布局算法模型的求解矩阵,再次执行上述步骤S2~S5。虚拟加力点的牵引作用使得可重布节点有往合法的迭代位置处缓慢移动的趋势,从而可以导向性的加速拥挤区域展开速度,从而减少解析式算法的迭代此处,减少运行时间。
步骤S6,当循环迭代至FPGA芯片上各个区域内的布局拥挤度都小于预定阈值时,表明达到退出全局布局的条件,此时退出解析式算法,然后根据当前的布局状态完成对FPGA芯片的全局合法化,直至最终布局结果完全合法,合法化操作可以按照上述方法采用最小花费最大流算法对各个区域分别进行局部合法化,也可以采用其他现有常规的合法化方法,本申请不做限定。
以上所述的仅是本申请的优选实施方式,本发明不限于以上实施例。可以理解,本领域技术人员在不脱离本发明的精神和构思的前提下直接导出或联想到的其他改进和变化,均应认为包含在本发明的保护范围之内。
Claims (12)
1.一种基于最大流算法进行拥挤区域展开的力导向布局方法,其特征在于,所述方法包括:
获取FPGA芯片对应的输入网表,按照所述输入网表利用力导向布局算法模型对所述FPGA芯片进行求解布局得到布局状态,所述布局状态包括若干个可重布节点以及若干个可布位置,每个可重布节点分别为所述输入网表中的一个功能模块,每个可布位置分别所述FPGA芯片上的一个布局位置;
根据当前的布局状态对所述FPGA芯片上各个目标区域中的布局状态分别进行抽象建立剩余图并根据所述布局状态进行赋值,包括:将所述布局状态中各个可重布节点和各个可布位置抽象形成图形节点,将可重布节点和可布位置之间的关系抽象形成对应的图形节点之间的第一有向边;建立虚拟源点并在所述虚拟源点与各个可重布节点的图形节点之间建立第二有向边,建立虚拟终点并在各个可布位置的图形节点与所述虚拟终点之间建立第三有向边;根据所述布局状态确定各条第一有向边的花费并进行赋值,将各条第二有向边和各条第三有向边的花费均赋值为0;所述目标区域是布局拥挤度达到预定阈值的区域;
基于最小花费最大流算法对所述剩余图进行求解确定各个可重布节点对应的可布位置作为迭代位置;
在每个迭代位置处添加对应的可重布节点的虚拟加力点,按照所述输入网表基于虚拟加力点对当前的布局状态中的相应的可重布节点的牵引作用利用力导向布局算法模型对所述FPGA芯片进行重新求解布局,并再次执行所述根据当前的布局状态对所述FPGA芯片上各个目标区域中的布局状态分别进行抽象建立剩余图的步骤,直至所述FPGA芯片上各个区域内的布局拥挤度都小于所述预定阈值时,根据当前的布局状态完成对所述FPGA芯片的全局合法化。
2.根据权利要求1所述的方法,其特征在于,在每次的布局状态中,每个可重布节点受到具有连接关系的其他功能模块的牵引以及对应的迭代位置处的虚拟加力点的牵引,所述虚拟加力点产生的牵引力远小于其他功能模块的牵引力。
3.根据权利要求1所述的方法,其特征在于,布局状态中的可重布节点包括若干个已被指定摆放于所述FPGA的合法位置上且布局位置可变的合法节点以及若干个未被指定合法位置的非法节点,每个目标区域中的可布位置包括所述目标区域内已被指定给合法节点的布局位置以及未被任何节点占用的布局位置。
4.根据权利要求1所述的方法,其特征在于,所述根据所述布局状态对所述剩余图中的各条第一有向边进行赋值得到各条第一有向边的花费,包括:
根据所述布局状态确定线网长度、本地拥挤度和时序余量中的至少一种,并根据确定得到的线网长度、本地拥挤度和时序余量中的至少一种计算得到各条第一有向边的花费进行赋值。
5.根据权利要求1所述的方法,其特征在于,所述基于最小花费最大流算法对所述剩余图进行求解确定各个可重布节点对应的可布位置作为迭代位置,包括:
利用Dijkstra最短路径算法在所述剩余图中寻找花费最小的路径,并对所述路径进行增广、将寻找到的花费最小的路径上所有的第一有向边反向并将所述第一有向边的花费取负,得到新的剩余图;
重复执行所述利用Dijkstra最短路径算法在所述剩余图中寻找花费最小的路径的步骤,直至所述虚拟源点与所述虚拟终点之间不存在路径时,确定最终得到的到流最大且在相同流量情况下花费最小的剩余图中各个可重布节点同一路径中的可布位置为迭代位置。
6.根据权利要求1-5任一所述的方法,其特征在于,每次的布局状态还包括若干个已被指定摆放于所述FPGA芯片的合法位置上且布局位置固定的固定节点,每个所述固定节点也为输入网表中的一个功能模块,则每个目标区域中的可重布节点为除固定节点之外的其他所有功能模块,每个目标区域中的可布位置为除被固定节点占用的布局位置之外的其他布局位置。
7.根据权利要求6所述的方法,其特征在于,所述固定节点包括BRAM、CMT、DSP、GTP、PCI、EMAC、IO和硅连接点中的至少一种功能模块。
8.根据权利要求1-5任一所述的方法,其特征在于,每个可重布节点均为所述输入网表中的最小基本单元,对应FPGA架构中的一个slice级别模块或者一个查找表/寄存器级别模块。
9.根据权利要求1所述的方法,其特征在于,每个目标区域内包含的总的布局位置的数量不少于所述目标区域内包含的总的功能模块的数量,且包含的总的可布位置的数量不少于包含的总的可重布节点的数量。
10.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将所述FPGA芯片划分为若干个区域并在各个区域中选定所述目标区域,划分得到的各个区域的区域范围均相同或者存在至少两个区域的区域范围不同。
11.根据权利要求10所述的方法,其特征在于,所述将所述FPGA芯片划分为若干个区域,包括:
按照FPGA架构中的各个域将所述FPGA芯片划分为若干个区域,则划分得到的各个区域与FPGA架构的各个域相同。
12.根据权利要求10所述的方法,其特征在于,所述将所述FPGA芯片划分为若干个区域,包括:
按照自定义划分规则加工所述FPGA芯片划分为若干个区域,则划分得到的各个区域与FPGA架构的各个域不同。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011026541.3A CN112183014B (zh) | 2020-09-25 | 2020-09-25 | 基于最大流算法进行拥挤区域展开的力导向布局方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011026541.3A CN112183014B (zh) | 2020-09-25 | 2020-09-25 | 基于最大流算法进行拥挤区域展开的力导向布局方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112183014A CN112183014A (zh) | 2021-01-05 |
CN112183014B true CN112183014B (zh) | 2022-02-18 |
Family
ID=73944060
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011026541.3A Active CN112183014B (zh) | 2020-09-25 | 2020-09-25 | 基于最大流算法进行拥挤区域展开的力导向布局方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112183014B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103412253A (zh) * | 2013-08-05 | 2013-11-27 | 电子科技大学 | 互联结构模型化方法和互联资源配置向量自动生成方法 |
CN103885771A (zh) * | 2014-03-04 | 2014-06-25 | 西安电子科技大学 | 基于局部最小化robdd及面积延迟优化的工艺映射的方法 |
US8893071B1 (en) * | 2013-07-12 | 2014-11-18 | Xilinx, Inc. | Methods of pipelining a data path in an integrated circuit |
CN104348479A (zh) * | 2013-07-31 | 2015-02-11 | 京微雅格(北京)科技有限公司 | 现场可编程逻辑门阵列芯片布局优化方法 |
CN104572579A (zh) * | 2013-10-10 | 2015-04-29 | 京微雅格(北京)科技有限公司 | 基于fpga解析型布局求解器的多选择区域动态划分方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1258729C (zh) * | 2003-11-14 | 2006-06-07 | 清华大学 | 基于虚拟模块的大规模混合模式布图方法 |
US9743309B2 (en) * | 2015-10-17 | 2017-08-22 | Macau University Of Science And Technology | MAC design for wireless hot-spot networks |
-
2020
- 2020-09-25 CN CN202011026541.3A patent/CN112183014B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8893071B1 (en) * | 2013-07-12 | 2014-11-18 | Xilinx, Inc. | Methods of pipelining a data path in an integrated circuit |
CN104348479A (zh) * | 2013-07-31 | 2015-02-11 | 京微雅格(北京)科技有限公司 | 现场可编程逻辑门阵列芯片布局优化方法 |
CN103412253A (zh) * | 2013-08-05 | 2013-11-27 | 电子科技大学 | 互联结构模型化方法和互联资源配置向量自动生成方法 |
CN104572579A (zh) * | 2013-10-10 | 2015-04-29 | 京微雅格(北京)科技有限公司 | 基于fpga解析型布局求解器的多选择区域动态划分方法 |
CN103885771A (zh) * | 2014-03-04 | 2014-06-25 | 西安电子科技大学 | 基于局部最小化robdd及面积延迟优化的工艺映射的方法 |
Non-Patent Citations (4)
Title |
---|
Maximum flow algorithms for maximum observability during FPGA debug;E. Hung 等;《IEEE》;20140123;第20-27页 * |
Quadratic布局算法力模型的建立和一种均匀展开的方法;虞健 等;《电子与封装》;20170720;第17卷(第07期);第31-35页 * |
Scalable clustering and mapping algorithm for application distribution on heterogeneous and irregular FPGA clusters;Lester Kalms 等;《Journal of Parallel and Distributed Computing》;20191130;第133卷;第367-376页 * |
百万门级FPGA电路资源的覆盖测试;何东东;《中国优秀博硕士学位论文全文数据库(硕士) 信息科技辑》;20180615;第I135-448页 * |
Also Published As
Publication number | Publication date |
---|---|
CN112183014A (zh) | 2021-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10460062B2 (en) | Method and computer program for determining a placement of at least one circuit for a reconfigurable logic device | |
US20050166169A1 (en) | Method for legalizing the placement of cells in an integrated circuit layout | |
CN105205205A (zh) | 基于网表位置信息最优划分的fpga粗粒度并行布线方法 | |
CN113408224B (zh) | 利用网表局部再综合实现布局合法化的fpga布局方法 | |
US10997352B1 (en) | Routing congestion based on layer-assigned net and placement blockage | |
CN106682306A (zh) | 一种快速fpga布线方法 | |
JP2021532605A (ja) | 二進コードによるデジタル集積回路の配線方法および端末装置 | |
US7134112B1 (en) | Incremental routing in integrated circuit design | |
CN112183014B (zh) | 基于最大流算法进行拥挤区域展开的力导向布局方法 | |
CN111753482A (zh) | 一种io自动分配的多裸片结构fpga的布局方法 | |
Siddiqi et al. | A game theory-based heuristic for the two-dimensional VLSI global routing problem | |
CN102411663B (zh) | 面向电路微调加速电路仿真的计算复用方法、设备和系统 | |
US10643014B1 (en) | Irregular sink arrangement for balanced routing tree structures | |
Sait et al. | A stochastic evolution algorithm based 2D VLSI global router | |
CN112131814B (zh) | 一种利用区域重布局的fpga布局合法化方法 | |
CN112149376B (zh) | 一种基于最大流算法的fpga布局合法化方法 | |
CN113919277A (zh) | 电路设计方法、平台及终端设备 | |
US10706202B1 (en) | Devices and methods for balanced routing tree structures | |
US10706201B1 (en) | Circuit design routing using multi-panel track assignment | |
US7313778B1 (en) | Method system and apparatus for floorplanning programmable logic designs | |
US10579767B1 (en) | Systems and methods for routing a clock net with multiple layer ranges | |
US11461530B1 (en) | Circuit design routing based on routing demand adjustment | |
Zheng et al. | Topopart: a multi-level topology-driven partitioning framework for multi-fpga systems | |
CN111611761A (zh) | 生成电路版图图案的方法、设备和计算机可读存储介质 | |
CN105512435A (zh) | 基于边表示短路关键面积网络的集成电路版图优化方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |