CN117556760B - 一种宏单元和可编程逻辑块分阶段优化的fpga全局布局方法 - Google Patents
一种宏单元和可编程逻辑块分阶段优化的fpga全局布局方法 Download PDFInfo
- Publication number
- CN117556760B CN117556760B CN202410043988.3A CN202410043988A CN117556760B CN 117556760 B CN117556760 B CN 117556760B CN 202410043988 A CN202410043988 A CN 202410043988A CN 117556760 B CN117556760 B CN 117556760B
- Authority
- CN
- China
- Prior art keywords
- macro
- layout
- programmable logic
- logic block
- unit
- 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 105
- 238000005457 optimization Methods 0.000 title claims abstract description 20
- 239000011159 matrix material Substances 0.000 claims description 33
- 238000013507 mapping Methods 0.000 claims description 9
- 230000005540 biological transmission Effects 0.000 claims description 3
- 230000000694 effects Effects 0.000 abstract description 4
- 238000013461 design Methods 0.000 description 2
- 230000009191 jumping Effects 0.000 description 2
- 230000015654 memory Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000004148 unit process Methods 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/347—Physical level, e.g. placement or routing
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
本发明提供了一种宏单元和可编程逻辑块分阶段优化的FPGA全局布局方法。包括宏单元布局块和可编程逻辑块布局块,全局布局方法主要包括获取所有布局块的初始坐标位置,找到可编程逻辑块的所有拥挤区域,对拥挤区域进行扩展,使每个区域满足资源需求,对区域内的可编程逻辑块分配坐标位置,然后采用最小二分图匹配法和动态规划法对宏单元进行合法化处理,得到宏单元的最终坐标位置,基于所述宏单元的最终坐标位置调整可编程逻辑块的布局位置,得到所述FPGA的最终布局。通过这种分阶段优化的方法,提升了FPGA的整体布局质量、效率,优化了FPGA布局效果。
Description
技术领域
本发明属于可编程逻辑器件的软件设计领域,具体涉及一种宏单元和可编程逻辑块分阶段优化的FPGA全局布局方法。
背景技术
FPGA布局的目的是确定电路中的可编程逻辑块(CLB)、输入/输出管脚(Input/Output Block,IOB)、存储器(BRAM)、数字信号处理(DSP)等逻辑单元在FPGA芯片上的物理位置。布局是FPGA CAD流程中的一个重要阶段,其结果直接影响了电路的布通率和性能。随着FPGA容量和复杂性的增加,高性能的FPGA布局算法已成为当前CAD领域的一个研究热点。提高FPGA布局算法的性能,对于提升整个CAD工具的水平,缩短应用电路的设计周期,具有十分重要的作用。
当前主流的FPGA布局算法包含三个阶段:初始布局、全局布局和详细布局。全局布局阶段通过求解数学方程的方法来最小化线长,求解方程之后得到的布局结果存在大量的逻辑块重叠,在电路设计重叠的逻辑块是“非法”的布局。因此需要再通过“合法化”移动来移开重叠的逻辑块,产生“合法”的布局结果。FPGA布局中的宏单元包括存储器(BRAM)、数字信号处理(DSP)、进位链(Carry)等模块,通常要占用FPGA中上下连续的一段位置,因此在对宏单元进行布局时会受到更多的约束条件,比可编程逻辑块的布局要更复杂一些。但目前在对布局合法化过程中未考虑这种复杂性,将宏单元和可编程逻辑块的合法化放在同一流程中处理,导致布局质量和效率的下降,如线长和延时的增加。
发明内容
鉴于以上所述现有技术的全部或部分不足,本发明的目的在于:提供一种宏单元和可编程逻辑块分阶段优化的FPGA全局布局方法,提升FPGA的整体布局质量,优化FPGA布局效果,提高布局效率。
为实现上述发明目的,本发明提供以下技术方案:
一种宏单元和可编程逻辑块分阶段优化的FPGA全局布局方法,所述布局方法包括:
S1 获取所述FPGA中的所有布局块的初始坐标位置,所述布局块包括宏单元布局块和可编程逻辑布局块;
S2 依据获取的布局块初始坐标位置,找寻可编程逻辑块的所有拥挤区域,对所述可编程逻辑块的每一个拥挤区域进行扩展,并为扩展后的可编程逻辑块区域内的布局块分配坐标位置;
S3获取与每个宏单元资源类型相同且能容纳该宏单元的初始坐标位置,并调用最小二分图匹配法求解出该初始坐标位置,依据该初始坐标位置获取宏单元到列的映射关系,扩展拥挤列的宏单元到附近的列中形成固定列的宏单元,采用动态规划的方法求解出固定列后的每个宏单元的最终坐标位置;
S4基于固定列后的宏单元的最终坐标位置调整可编程逻辑块的布局位置,得到所述FPGA的最终布局。
所述步骤S1中,获取所述布局块的初始坐标位置方式为遍历FPGA电路网表中的每一条线网,建立X方向的方程式及建立Y方向的方程式,并依次求解出每个布局块的X坐标值及Y坐标值。
所述步骤S2中,找寻可编程逻辑块的拥挤区域的具体方法为,从左往右、从上往下遍历芯片中的任一坐标位置,依据步骤S1中得到的布局块的初始坐标位置,判断布局到任一坐标位置的布局块数量是否大于该坐标位置可容纳的布局块数量,所述可容纳的布局块数量为1,判断结果为是的情况下,则该位置作为一个拥挤区域,获取每个拥挤区域得到区域集合S。
对区域集合S内的每一个拥挤区域进行扩展,扩展方式为,对每一个拥挤区域依次向左、向右、向下、向上分别扩展一个单位大小的范围,扩展过程中遇到另一个新的拥挤区域a时,将新的拥挤区域a与当前拥挤区域合并;直至每一个拥挤区域在扩展过程中不再遇到拥挤区域a时,则停止扩展过程,得到扩展后的可编程逻辑块区域b。
所述为扩展后的可编程逻辑块区域内的布局块分配坐标位置包括对可编程逻辑块区域b进行X方向以及Y方向的分割和分配;所述X方向及所述Y方向的分割和分配方法是对可编程逻辑块区域b内的所有布局块按X坐标方向或Y坐标方向从小到大的顺序进行顺序排序,找到所述的可编程逻辑块区域b的布局块的中心点P,并将所述的可编程逻辑块区域b的布局块按X方向分成左右两部分或者按Y方向分成上下两部分;根据布局块中心点P找到所述的可编程逻辑块区域b的资源中心点Q,将可编程逻辑块区域b按照资源X方向及Y方向分割成左右部分及上下部分;采用线性插值方法,将所述的左右部分内的布局块按X坐标顺序与左右部分资源数量大小相匹配的方式插入至资源区域的左右部分中;将所述的上下部分的布局块按Y坐标顺序与上下部分资源数量大小相匹配的方式插入至资源区域的上下部分中;将X方向及Y方向分割后的区域都加入至区域集合C内,直至区域集合C内没有未处理的区域。
所述步骤S3中获取与每个宏单元资源类型相同且能容纳该宏单元的初始坐标位置,并求解出该宏单元的初始坐标位置的方法为,以宏单元为中心,划出一个边长为d的正方形范围,在该范围内找到能够与宏单元资源类型相同且能容纳该宏单元的所有坐标位置,并将该坐标位置作为宏单元的初始候选位置列表;再创建从宏单元的布局块到候选位置的二分图,调用最小二分图匹配方法求解出每个宏单元的初始坐标位置。
所述边长为d的正方形范围内能够与宏单元资源类型相同且能容纳该宏单元的所有坐标位置数量范围为20-30;否则将正方形范围向上、下、左、右方向各扩展一个单位长度,直至满足容纳该宏单元的所有坐标位置数量范围为20-30。
所述求解出固定列后的每个宏单元的最终坐标位置方法为,根据所述的宏单元的初始坐标位置获取每个宏单元到网格单元的列的映射关系,扩展拥挤列的宏单元到附近的列中,为每个宏单元在分配的列中找到与该宏单元类型相匹配的所有坐标位置,作为过程候选位置列表,创建从宏单元布局块到候选位置的二分图,调用最小二分图匹配法求解出每个宏单元的过程坐标位置;对任一列处理时,找到该列中的所有宏单元集合D,为宏单元集合D中的每个宏单元找到与该宏单元相匹配的所有坐标位置,作为最终候选位置列表;采用动态规划的方法,逐层遍历每个宏单元的每个候选位置,传播宏单元到候选位置的路径变化,并记录传播过程的每一层次的选择,搜索到一条最小代价变化的路径出来,进而确定了每个宏单元的最终坐标位置,所述宏单元包括BRAM、DSP、进位链类型的宏单元。
所述扩展拥挤列的宏单元到附近的列中形成固定列的宏单元方法为,根据宏单元与列的映射关系,找到资源拥挤列中最左边一列,计算该列需要扩展到左边列的宏单元数量n1和扩展到右边列的宏单元数量n2,分别往左边一列和右边一列扩散n1和n2个宏单元,重复上述的宏单元拥挤列的扩展步骤,直至不出现拥挤列的宏单元。
所述调整可编程逻辑块的布局位置是指对非进位链的可编程逻辑块位置进行调整,调整方法为,建立非进位链的可编程逻辑块的布局块X方向以及Y方向的方程式,求解出非进位链的可编程逻辑块的布局块的X、Y坐标值,扩展可编程逻辑块坐标位置,使得每个区域内的可编程逻辑块资源充分;再将位置出现重叠的可编程逻辑块布局块移动至合适的可编程逻辑块区域内。
建立X方向的方程式为建立布局块权重矩阵A、布局块X坐标值的单列矩阵B以及固定值C之间的方程,具体方程式为A*B=C;建立Y方向的方程式为建立布局块权重矩阵A、布局块Y坐标值的单列矩阵B以及固定值C之间的方程,具体方程式为A*B=C;利用稀疏矩阵的求解方法解得X、Y方向的坐标值,得到可编程逻辑块布局块的坐标位置。
所述建立X方向的方程式以及建立Y方向的方程式,求解出X坐标值及Y坐标值的过程不少于5次。
建立布局块权重矩阵A的方法为,遍历电表线网中的所有终节点,计算出线网矩形框的下边界点以及上边界点;再次遍历该线网的所有终节点,对于每个终节点,计算出该终节点到下边界点以及上边界点连线的权重,每个终节点到上边界或下边界的连线都会产生4个权重至矩阵A中;当某个终节点的位置是宏单元的最终坐标位置时,则只增加上边界点或下边界点到该终节点连线的1个权重至矩阵A中。
与现有技术相比,本发明产生的有益效果为:先进行可编程逻辑块的扩展,对所有可编程逻辑块分配一个坐标位置,再确定宏单元的坐标位置,最后基于宏单元的坐标位置调整可编程逻辑块的坐标位置,通过这种分阶段优化的方法,充分考虑宏单元的布局需求,提升FPGA的整体布局质量、效率,优化布局效果。
附图说明
图1为本发明提供的一种宏单元和可编程逻辑块分阶段优化的FPGA全局布局方法的流程示意图;
图2为本发明提供的一种宏单元和可编程逻辑块分阶段优化的FPGA全局布局方法中建立布局块权重矩阵的流程示意图;
图3为本发明提供的一种宏单元和可编程逻辑块分阶段优化的FPGA全局布局方法中对可编程逻辑块扩展,分配坐标位置的流程示意图;
图4为本发明提供的一种宏单元和可编程逻辑块分阶段优化的FPGA全局布局方法中获取宏单元初始坐标位置的流程示意图;
图5为本发明提供的一种宏单元和可编程逻辑块分阶段优化的FPGA全局布局方法中获取宏单元过程坐标位置的流程示意图。
具体实施方式
为了能够更加详尽的了解本申请的特点与技术内容,下面结合附图对本申请的技术方案进行详细阐述,附图仅用作参考说明使用,并非用来限定本申请。
参考图1,本发明提供了一种宏单元和可编程逻辑块分阶段优化的FPGA全局布局方法,所述方法包括:
S1 获取所述FPGA中的所有布局块的初始坐标位置;
S2 依据获取的布局块初始坐标位置,找寻可编程逻辑块的所有拥挤区域,对所述可编程逻辑块的每一个拥挤区域进行扩展,并为扩展后的可编程逻辑块区域内的布局块分配坐标位置;
S3 获取与每个宏单元资源类型相同且能容纳该宏单元的初始坐标位置,并求解出该初始坐标位置,依据该初始坐标位置获取宏单元到列的映射关系,扩展拥挤列的宏单元到附近的列中形成固定列的宏单元,并求解出固定列后的每个宏单元的最终坐标位置;
S4 基于所述固定列后的宏单元的最终坐标位置调整可编程逻辑块的布局位置,得到所述FPGA的最终布局。
在步骤S1中:
首先,遍历FPGA电路网表中的每一条线网,建立X方向及Y方向的方程式,并依次求解出每个布局块的X坐标值及Y坐标值,整个建立以及求解方程式的过程在本实施例中会执行5次。
建立X方向方程式为建立布局块权重矩阵A、布局块X坐标值的单列矩阵B以及固定值C之间的方程,具体方程式为A*B=C;建立Y方向方程式为建立布局块权重矩阵A、布局块Y坐标值的单列矩阵B以及固定值C之间的方程,具体方程式为A*B=C;利用稀疏矩阵的求解方法解得X、Y方向的坐标值,得到所述所有布局块的初始坐标位置。其中C为固定值,C一般是0或者1。其中稀疏矩阵的求解方法包括直接法、迭代法等,此处为现有技术,不进行赘述。
其中建立布局块权重矩阵A的方法为,遍历电表线网中的所有终节点,计算出线网矩形框的下边界点以及上边界点;再次遍历该线网的所有终节点,对于每个终节点,计算出该终节点到下边界点以及上边界点连线的权重,每个终节点到上边界或下边界的连线都会产生4个权重至矩阵A中。具体流程可参考图2:
遍历线网(net)的所有终节点(sink),计算出该net矩形框的下边界点(lport)和上边界点(uport);
再次遍历该net的所有sink,对每个sink节点port,分别计算出port到lport和uport连线的权重;
将port到lport和uport连线的权重增加到方程式的矩阵中。
设定对于任一个port,其到lport和uport连线,都会增加4个权重到方程式的矩阵中。以port到lport的连线为例:port到lport的连线的权重为weight,则增加的4个权重分别是:
port到port的权重weight;
port到lport的权重weight;
lport到lport的权重weight;
lpor到port的权重weight。
在步骤S1中,虽然为所有的可编程逻辑块都分配了初始坐标位置,但会出现很多的重叠情况,即出现多个可编程逻辑块占用同一个坐标位置的情况,因此需要将资源拥挤的区域扩展开,解决可编程逻辑块布局位置重叠的问题。
参考图3,在步骤S2中,找寻可编程逻辑块的拥挤区域的具体方法为,从左往右、从上往下遍历芯片中的任一坐标位置,依据步骤S1中得到的布局块的初始坐标位置,判断布局到任一坐标位置的布局块数量是否大于该坐标位置可容纳的布局块数量(可容纳的布局块数量为1),判断结果为是的情况下,则该位置作为一个拥挤区域,获取每个拥挤区域得到区域集合S。
对区域集合S内的每一个拥挤区域进行扩展,扩展方式为:对每一个拥挤区域依次向左、向右、向下、向上分别扩展一个单位大小的范围,扩展过程中遇到另一个新的拥挤区域a时,将遇到的新的拥挤区域a与当前拥挤区域合并;直至每一个拥挤区域在扩展过程中不再遇到拥挤区域a时,则停止扩展过程,得到扩展后的可编程逻辑块区域b。
为扩展后的可编程逻辑块区域内的布局块分配坐标位置包括对可编程逻辑块区域b进行X方向以及Y方向的分割和分配;X方向及Y方向的分割和分配方法是对可编程逻辑块区域b内的所有布局块按X坐标方向或Y坐标方向从小到大的顺序进行顺序排序,找到可编程逻辑块区域b的布局块的中心点P,并将所述的可编程逻辑块区域b的布局块按X方向分成左右两部分或者按Y方向分成上下两部分;根据布局块中心点P找到可编程逻辑块区域b的资源中心点Q,将可编程逻辑块区域b按照资源X方向及Y方向分割成左右部分及上下部分;采用线性插值方法,将左右部分内的布局块按X坐标顺序与左右部分资源数量大小相匹配的方式插入至资源区域中;将上下部分内的布局块按Y坐标顺序与上下部分资源数量大小相匹配的方式插入至资源区域的上下部分中;将X方向及Y方向分割后的区域都加入至区域集合C内,直至区域集合C内没有未处理的区域。
在步骤S3中,获取与每个宏单元资源类型相同且能容纳该宏单元的初始坐标位置,并求解出该宏单元的初始坐标位置的方法为,以宏单元为中心,划出一个边长为d的正方形范围,在该范围内找到能够与宏单元资源类型相同且能容纳该宏单元的所有坐标位置,并将该坐标位置作为宏单元的初始候选位置列表;再创建从宏单元的布局块到候选位置的二分图,调用最小二分图匹配方法求解出每个宏单元的初始坐标位置,具体过程可参考图4:
(1)遍历每个宏单元,执行步骤(2)-(4);
(2)以当前宏单元为中心点,划分出一个边长为d的正方形范围;
(3)在该正方形范围内找到与该宏单元资源类型相同且能容纳该宏单元的坐标位置,作为该宏单元的候选位置列表;
(4)如果当前找到的合法候选位置数量小于参数C(该参数C为一个常数,数值范围在20-30),则执行步骤(5),否则跳到步骤(6);
(5)将正方形范围往上、下、左、右4方向分别扩展一个单位的长度,跳到步骤(3);
(6)创建从宏单元的布局块到候选位置的二分图;
(7)调用最小二分图匹配方法来求解出每个宏单元的初始坐标位置。
求解出固定列后的每个宏单元的最终坐标位置方法为,根据所述的宏单元的初始坐标位置获取每个宏单元到网格单元的列的映射关系,扩展拥挤列的宏单元到附近的列中形成固定列的宏单元,为每个宏单元在分配的列中找到该宏单元的过程候选位置列表,创建从宏单元的布局块到候选位置的二分图,调用最小二分图匹配法来求解出每个宏单元的坐标位置,具体过程可参考图5:
(1)根据图4中宏单元的初始坐标位置,获取每个宏单元到列的映射关系;
(2)找到资源拥挤列中最左边的一列;
(3)计算该列需要扩散到左边列的宏单元数量n1和扩散到右边列的宏单元数量n2;
(4)分别往左边一列和右边一列扩散n1和n2个宏单元;
(5)判断当前还有没有资源拥挤的列,如果有,回到步骤(2),否则执行步骤(6);
(6)为每个宏单元在分配的列中找到该宏单元的候选位置列表;
(7)创建从宏单元的布局块到候选位置的二分图;
(8)调用最小二分图匹配方法来求解出每个宏单元的过程坐标位置。
在对任一列处理时,找到该列中的所有宏单元集合,为宏单元集合中的每个宏单元找到最终候选的位置列表;逐层遍历每个宏单元的每个候选位置,传播宏单元到候选位置的路径变化,并记录传播过程的每一层次的选择,搜索到一条最小代价变化的路径出来,进而确定了每个宏单元的最终坐标位置。处理步骤主要分为三步,伪代码行数为30行,具体为:
第一步用来初始化第一个宏单元的cost,对应伪代码如下:
(1)for 集合S中第一个宏单元的每个合法候选位置j {
(2) 计算该宏单元布局位置移动到j的线长代价变化cur_hpwl;
(3) if(cur_hpwl<min_cost) {
(4) min_cost = cur_hpwl;
(5) choice[0][j]= 1;
(6) }
(7) cost[0][j]= min_cost;
(8)}
(9)total_cell[0] = macro_cell[0];
第二步主要是采用动态规划的方法,从前往后逐层传播延时,计算每一个宏单元每个位置的cost和输入选择choice。对于宏单元i的每个位置j,首先计算宏单元i移动到布局位置j的线长代价变化cur_hpwl,如果cost[i-1][j-macro_cell[i]]+ cur_hpwl<cost[i][j],则将更新cost[i][j]的值,并且设置choice[i][j]=1。如果当前宏单元i是最后一个宏单元,则比较cost[i][j]是否小于min_cost,如果是,则把min_cost更新为cost[i][j],并记录best_choice等于j。对应伪代码如下:
(10)for 集合S中的宏单元i 从1到n-1 {
(11)total_cell[i] += 宏单元i的cell数量;
(12) for j从total_cell[i]到最大候选位置 {
(13) 计算宏单元i布局位置移动到j的线长代价变化cur_hpwl;
(14) if(cost[i][j]>cost[i-1][j-macro_cell[i]]+ cur_hpwl){
(15) cost[i][j]= cost[i-1][j-macro_cell[i]]+ cur_hpwl;
(16)choice[i][j]= 1;
(17)if(i = n-1并且cost[i][j]<min_cost) {
(18) min_cost = cost[i][j];
(19)best_choice = j;
(20) }
(21) }
(22)}
(23)}
第三步主要是根据choice和best_choice的信息,来获取最终每个宏单元布局选择的位置。对应伪代码如下:
(24)for集合S中的宏单元i 从n-1到0 {
(25) while (!choice[i][best_choice]) {
(26) best_choice--;
(27) }
(28) macro_loc[i] = best_choice;
(29) best_choice -= macro_cell[i];
(30)}
对上述伪代码声明如下:
n:当前列宏单元的数量;
min_cost:当前最小的线长代价变化;
cost[i][j]:第i个宏单元布局位置索引不超过j的最小线长代价变化;
best_choice:终节点选择的位置;
choice[i][j]:记录每个宏单元i 在每个位置j上线长代价是否变小;
macro_cell[i]:宏单元i的cell数量;
total_cell[i]:记录宏单元0..i的cell总数;
macro_loc[i]:记录每个宏单元i布局的位置。
在确定宏单元最终位置的过程中,特别是对Carry宏单元合法化的过程中,会使用到所有可能的可编程逻辑块位置,这样会使非进位链的可编程逻辑块的位置再次出现重叠、不合法的情况,因此需要对非进位链的可编程逻辑块位置进行调整,调整方法为,建立非进位链的可编程逻辑块的布局块X方向以及Y方向的方程式,求解出非进位链的可编程逻辑块的布局块的X、Y坐标值,扩展可编程逻辑块坐标位置,使得每个区域内的可编程逻辑块资源充分;再将位置出现重叠的可编程逻辑块布局块移动至合适的可编程逻辑块区域内。
建立X方向的方程式为建立布局块权重矩阵A、布局块X坐标值的单列矩阵B以及固定值C之间的方程,具体方程式为A*B=C;所述建立Y方向的方程式为建立布局块权重矩阵A、布局块Y坐标值的单列矩阵B以及固定值C之间的方程,具体方程式为A*B=C;利用稀疏矩阵的求解方法解得X、Y方向的坐标值,得到可编程逻辑块布局块的坐标位置。
布局块权重矩阵A的建立方式为,遍历电表线网中的所有终节点,计算出线网矩形框的下边界点以及上边界点;再次遍历该线网的所有终节点,对于每个终节点,计算出该终节点到下边界点以及上边界点连线的权重,每个终节点到上边界或下边界的连线都会产生4个权重至矩阵A中;当某个终节点的位置是宏单元的最终坐标位置时,则只增加上边界点或下边界点到该终节点连线的1个权重至矩阵A中,例如当某个sink点port的位置时宏单元的最终坐标位置时,则port到Iport或uport的连线,都只增加Iport或uport到port的权重到方程的矩阵中。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (13)
1.一种宏单元和可编程逻辑块分阶段优化的FPGA全局布局方法,其特征在于:所述布局方法包括:
S1 获取所述FPGA中的所有布局块的初始坐标位置,所述布局块包括宏单元布局块和可编程逻辑块布局块;
S2 依据获取的布局块初始坐标位置,找寻可编程逻辑块的所有拥挤区域,对所述可编程逻辑块的每一个拥挤区域进行扩展,并为扩展后的可编程逻辑块区域内的布局块分配坐标位置;
S3获取与每个宏单元资源类型相同且能容纳该宏单元的初始坐标位置,并调用最小二分图匹配法求解出该初始坐标位置,依据该初始坐标位置获取宏单元到列的映射关系,扩展拥挤列的宏单元到附近的列中形成固定列的宏单元,采用动态规划的方法求解出固定列后的每个宏单元的最终坐标位置;
S4基于固定列后的宏单元的最终坐标位置调整可编程逻辑块的布局位置,得到所述FPGA的最终布局。
2.根据权利要求1所述的一种宏单元和可编程逻辑块分阶段优化的FPGA全局布局方法,其特征在于:所述步骤S1中,获取所述布局块的初始坐标位置方式为遍历FPGA电路网表中的每一条线网,建立X方向的方程式及建立Y方向的方程式,并依次求解出每个布局块的X坐标值及Y坐标值。
3.根据权利要求1所述的一种宏单元和可编程逻辑块分阶段优化的FPGA全局布局方法,其特征在于:所述步骤S2中,找寻可编程逻辑块的拥挤区域的具体方法为,从左往右、从上往下遍历芯片中的任一坐标位置,依据步骤S1中得到的布局块的初始坐标位置,判断布局到任一坐标位置的布局块数量是否大于该坐标位置可容纳的布局块数量,所述可容纳的布局块数量为1,判断结果为是的情况下,则该位置作为一个拥挤区域,获取每个拥挤区域得到区域集合S。
4.根据权利要求3所述的一种宏单元和可编程逻辑块分阶段优化的FPGA全局布局方法,其特征在于:对区域集合S内的每一个拥挤区域进行扩展,扩展方式为,对每一个拥挤区域依次向左、向右、向下、向上分别扩展一个单位大小的范围,扩展过程中遇到另一个新的拥挤区域a时,将新的拥挤区域a与当前拥挤区域合并;直至每一个拥挤区域在扩展过程中不再遇到拥挤区域a,则停止扩展过程,得到扩展后的可编程逻辑块区域b。
5.根据权利要求4所述的一种宏单元和可编程逻辑块分阶段优化的FPGA全局布局方法,其特征在于:所述为扩展后的可编程逻辑块区域内的布局块分配坐标位置包括对可编程逻辑块区域b进行X方向以及Y方向的分割和分配;所述X方向及所述Y方向的分割和分配方法是对可编程逻辑块区域b内的所有布局块按X坐标方向或Y坐标方向从小到大的顺序进行顺序排序,找到所述的可编程逻辑块区域b的布局块的中心点P,并将所述的可编程逻辑块区域b的布局块按X方向分成左右两部分或者按Y方向分成上下两部分;根据布局块中心点P找到所述的可编程逻辑块区域b的资源中心点Q,将可编程逻辑块区域b按照资源X方向及Y方向分割成左右部分及上下部分;采用线性插值方法,将所述的左右部分内的布局块按X坐标顺序与左右部分资源数量大小相匹配的方式插入至资源区域的左右部分中;将所述的上下部分的布局块按Y坐标顺序与上下部分资源数量大小相匹配的方式插入至资源区域的上下部分中;将X方向及Y方向分割后的区域都加入至区域集合C内,直至区域集合C内没有未处理的区域。
6.根据权利要求1所述的一种宏单元和可编程逻辑块分阶段优化的FPGA全局布局方法,其特征在于:所述步骤S3中获取与每个宏单元资源类型相同且能容纳该宏单元的初始坐标位置,并求解出该宏单元的初始坐标位置的方法为,以宏单元为中心,划出一个边长为d的正方形范围,在该范围内找到能够与宏单元资源类型相同且能容纳该宏单元的所有坐标位置,并将该坐标位置作为宏单元的初始候选位置列表;再创建从宏单元的布局块到候选位置的二分图,调用最小二分图匹配方法求解出每个宏单元的初始坐标位置。
7.根据权利要求6所述的一种宏单元和可编程逻辑块分阶段优化的FPGA全局布局方法,其特征在于:所述边长为d的正方形范围内能够与宏单元资源类型相同且能容纳该宏单元的所有坐标位置数量范围为20-30;否则将正方形范围向上、下、左、右方向各扩展一个单位长度,直至满足容纳该宏单元的所有坐标位置数量范围为20-30。
8.根据权利要求7所述的一种宏单元和可编程逻辑块分阶段优化的FPGA全局布局方法,其特征在于:所述求解出固定列后的每个宏单元的最终坐标位置方法为,根据所述的宏单元的初始坐标位置获取每个宏单元到网格单元的列的映射关系,扩展拥挤列的宏单元到附近的列中,为每个宏单元在分配的列中找到与该宏单元类型相匹配的所有坐标位置,作为过程候选位置列表,创建从宏单元布局块到候选位置的二分图,调用最小二分图匹配法求解出每个宏单元的过程坐标位置;对任一列处理时,找到该列中的所有宏单元集合D,为宏单元集合D中的每个宏单元找到与该宏单元相匹配的所有坐标位置,作为最终候选位置列表;采用动态规划的方法,逐层遍历每个宏单元的每个候选位置,传播宏单元到候选位置的路径变化,并记录传播过程的每一层次的选择,搜索到一条最小代价变化的路径出来,进而确定了每个宏单元的最终坐标位置,所述宏单元包括BRAM、DSP、进位链类型的宏单元。
9.根据权利要求8所述的一种宏单元和可编程逻辑块分阶段优化的FPGA全局布局方法,其特征在于:所述扩展拥挤列的宏单元到附近的列中形成固定列的宏单元方法为,根据宏单元与列的映射关系,找到资源拥挤列中最左边一列,计算该列需要扩展到左边列的宏单元数量n1和扩展到右边列的宏单元数量n2,分别往左边一列和右边一列扩散n1和n2个宏单元,重复上述的宏单元拥挤列的扩展步骤,直至不出现拥挤列的宏单元。
10.根据权利要求1所述的一种宏单元和可编程逻辑块分阶段优化的FPGA全局布局方法,其特征在于:所述调整可编程逻辑块的布局位置是指对非进位链的可编程逻辑块位置进行调整,调整方法为,建立非进位链的可编程逻辑块的布局块X方向以及Y方向的方程式,求解出非进位链的可编程逻辑块的布局块的X、Y坐标值,扩展可编程逻辑块坐标位置,使得每个区域内的可编程逻辑块资源充分;再将位置出现重叠的可编程逻辑块布局块移动至合适的可编程逻辑块区域内。
11.根据权利要求2或10所述的一种宏单元和可编程逻辑块分阶段优化的FPGA全局布局方法,其特征在于:建立X方向的方程式为建立布局块权重矩阵A、布局块X坐标值的单列矩阵B以及固定值C之间的方程,具体方程式为A*B=C;建立Y方向的方程式为建立布局块权重矩阵A1、布局块Y坐标值的单列矩阵B1以及固定值C1之间的方程,具体方程式为A1*B1=C1;利用稀疏矩阵的求解方法解得X、Y方向的坐标值,得到可编程逻辑块布局块的坐标位置。
12.根据权利要求11所述的一种宏单元和可编程逻辑块分阶段优化的FPGA全局布局方法,其特征在于:所述建立X方向的方程式以及所述建立Y方向的方程式,求解出X坐标值及Y坐标值的过程不少于5次。
13.根据权利要求12所述的一种宏单元和可编程逻辑块分阶段优化的FPGA全局布局方法,其特征在于:建立布局块权重矩阵A的方法为,遍历电表线网中的所有终节点,计算出线网矩形框的下边界点以及上边界点;再次遍历该线网的所有终节点,对于每个终节点,计算出该终节点到下边界点以及上边界点连线的权重,每个终节点到上边界或下边界的连线都会产生4个权重至矩阵A中;当某个终节点的位置是宏单元的最终坐标位置时,则只增加上边界点或下边界点到该终节点连线的1个权重至矩阵A中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410043988.3A CN117556760B (zh) | 2024-01-12 | 2024-01-12 | 一种宏单元和可编程逻辑块分阶段优化的fpga全局布局方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410043988.3A CN117556760B (zh) | 2024-01-12 | 2024-01-12 | 一种宏单元和可编程逻辑块分阶段优化的fpga全局布局方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117556760A CN117556760A (zh) | 2024-02-13 |
CN117556760B true CN117556760B (zh) | 2024-04-05 |
Family
ID=89817014
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410043988.3A Active CN117556760B (zh) | 2024-01-12 | 2024-01-12 | 一种宏单元和可编程逻辑块分阶段优化的fpga全局布局方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117556760B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118569177B (zh) * | 2024-08-01 | 2024-09-27 | 济南智多晶微电子有限公司 | 基于dbscan聚类算法的fpga布局拥挤预估方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101145169A (zh) * | 2007-06-14 | 2008-03-19 | 上海芯域微电子有限公司 | SoC 集成电路自动布局设计中的模组、宏单元、标准单元同步布局的收敛方法和系统 |
CN114896937A (zh) * | 2022-05-24 | 2022-08-12 | 广东工业大学 | 一种基于强化学习的集成电路布局优化方法 |
CN115526138A (zh) * | 2022-02-07 | 2022-12-27 | 比科奇微电子(杭州)有限公司 | 集成电路的布局方法和装置 |
CN116562218A (zh) * | 2023-05-05 | 2023-08-08 | 之江实验室 | 一种基于强化学习实现矩形宏单元的布图规划方法和系统 |
CN117151003A (zh) * | 2023-10-27 | 2023-12-01 | 中科亿海微电子科技(苏州)有限公司 | 一种基于时钟域划分的fpga布局方法及装置 |
-
2024
- 2024-01-12 CN CN202410043988.3A patent/CN117556760B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101145169A (zh) * | 2007-06-14 | 2008-03-19 | 上海芯域微电子有限公司 | SoC 集成电路自动布局设计中的模组、宏单元、标准单元同步布局的收敛方法和系统 |
CN115526138A (zh) * | 2022-02-07 | 2022-12-27 | 比科奇微电子(杭州)有限公司 | 集成电路的布局方法和装置 |
CN114896937A (zh) * | 2022-05-24 | 2022-08-12 | 广东工业大学 | 一种基于强化学习的集成电路布局优化方法 |
CN116562218A (zh) * | 2023-05-05 | 2023-08-08 | 之江实验室 | 一种基于强化学习实现矩形宏单元的布图规划方法和系统 |
CN117151003A (zh) * | 2023-10-27 | 2023-12-01 | 中科亿海微电子科技(苏州)有限公司 | 一种基于时钟域划分的fpga布局方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN117556760A (zh) | 2024-02-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN117556760B (zh) | 一种宏单元和可编程逻辑块分阶段优化的fpga全局布局方法 | |
CN110795908B (zh) | 偏差驱动的总线感知总体布线方法 | |
Huang et al. | Partitioning-based standard-cell global placement with an exact objective | |
US6480991B1 (en) | Timing-driven global placement based on geometry-aware timing budgets | |
JP2895129B2 (ja) | 論理セルの配置処理方法及び論理セルの配置処理装置 | |
CN106682306B (zh) | 一种快速fpga布线方法 | |
Pattison et al. | GPlace: A congestion-aware placement tool for ultrascale FPGAs | |
CN112183000B (zh) | 一种支持互连约束的超图划分方法 | |
CN113709754B (zh) | 基于聚类算法的无线宽带通信系统布站组网方法及系统 | |
CN106021722A (zh) | 基于fpga布局的优化方法 | |
Dhar et al. | An effective timing-driven detailed placement algorithm for FPGAs | |
CN113807043B (zh) | 时钟树综合和布局混合优化方法和装置、存储介质和终端 | |
CN117151003B (zh) | 一种基于时钟域划分的fpga布局方法及装置 | |
CN116738925B (zh) | 一种fpga详细布局方法及系统 | |
CN113627120A (zh) | 超导集成电路布局优化方法和装置、存储介质和终端 | |
CN112183001B (zh) | 一种基于超图的集成电路的多级聚类方法 | |
CN111753484B (zh) | 一种基于电路性能的多裸片结构fpga的布局方法 | |
CN111931447A (zh) | Fpga布局方法、装置、电子设备及存储介质 | |
Ran et al. | Via-configurable routing architectures and fast design mappability estimation for regular fabrics | |
CN111062180A (zh) | 一种fpga布线方法及装置 | |
CN110543664B (zh) | 一种面向具有特有结构fpga的工艺映射方法 | |
US11681846B1 (en) | Sub-FPGA level compilation platform with adjustable dynamic region for emulation/prototyping designs | |
JP3433025B2 (ja) | モジュール配置方法 | |
CN112183006A (zh) | 时延评估方法及装置、可读存储介质 | |
CN113221493B (zh) | 一种基于异质型fpga布局的时钟合法化方法 |
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 |