CN108287932A - 一种基于解析方法的总体fpga自动化布局方法 - Google Patents
一种基于解析方法的总体fpga自动化布局方法 Download PDFInfo
- Publication number
- CN108287932A CN108287932A CN201710019566.2A CN201710019566A CN108287932A CN 108287932 A CN108287932 A CN 108287932A CN 201710019566 A CN201710019566 A CN 201710019566A CN 108287932 A CN108287932 A CN 108287932A
- Authority
- CN
- China
- Prior art keywords
- layout
- circuit unit
- object function
- unit module
- module
- 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.)
- Granted
Links
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自动化布局方法,包含:S1将约束信息及电路网表信息通过映射打包输入;S2将用户约束的时延信息通过静态时延分析器输入;S3将各电路单元模块按照用户指定的物理约束自动布局在芯片物理设计中的对应位置,包括输入输出布局、全局时钟布局、初始布局、总体布局、合法化布局和详细布局;总体布局是根据电路单元模块的初始位置和电路拓扑连接,采用基于混合步长调整策略的共轭梯度法求解,针对不同级别的电路单元模块、布局状态,动态调整步长计算方式,分布电路单元模块;S4输出电路网表信息。本发明对芯片版图进行快速自动化布局,使线网的线长和时延满足用户约束;通过调整总体布局中步长优化策略,优化布局质量和速度。
Description
技术领域
本发明涉及一种FPGA自动化布局方法,具体是指一种基于解析方法的总体FPGA自动化布局方法,属于集成电路设计领域,尤其是属于专用集成电路领域中的一种半定制电路FPGA(Field Programmable Gate Array,现场可编程门阵列)的自动化布局相关技术领域范畴。
背景技术
FPGA采用了逻辑单元阵列(LCA,Logic Cell Array)这样一个概念,内部包括的电路单元模块有:可配置逻辑模块(CLB,Configurable Logic Block)、输入输出模块(IOB,Input Output Block)和内部连线(Interconnect)等部分。FPGA芯片是二维结构,每个点对应一个CLB,每个CLB里包含片结构SLICE,而SLICE里面包含门级表(GATE)。FPGA是可编程器件,与传统逻辑电路和门阵列(如PAL,GAL及CPLD器件)相比,FPGA具有不同的结构。FPGA利用小型查找表(16×1RAM)来实现组合逻辑,每个查找表连接到一个D触发器的输入端,该D触发器再驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O之间的连接方式,并最终决定了FPGA所能实现的功能,FPGA允许无限次的编程。
典型FPGA的开发流程一般包括功能定义、器件选型、设计输入、功能仿真、综合优化、综合后仿真、布局、布线、后仿真、板级仿真以及芯片编程与调试等主要步骤。
其中,布局是整个流程中比较费时的一步,具体是指将电路元件摆放到芯片上合法的位置,不存在违法物理约束摆放。在将逻辑网表中的硬件原语和底层单元合理地配置到芯片内部的固有硬件结构上的过程中,往往需要在速度最优和面积最优之间做出选择。目前,FPGA的规模越来越大,结构也越来越复杂,其中逻辑单元模块的类型越来越多,且包含像DSP(数字信号处理器)和RAM(随机存取存储器)这种大的逻辑单元,并且有些单元之间的走线都是固定连接,如Carry Chain(进位链)和Shift Register(移位寄存器)等等,这些都限制了逻辑单元的随意摆放,特别是在有时序约束条件时,由于布局对FPGA版图速度的快慢起到决定性的作用,从而在布局过程中就要将时序约束考虑进去,否则通过后续的布线等优化很难满足时序的约束。因此,如何快速有效的进行自动化布局,对FPGA的版图设计起到至关重要的作用。
在求解优化问题时,共轭梯度法随着变量数目的增加,收敛的迭代步数线性增长。电路总体布局实质是一个优化问题,每个可移动的单元模块即代表一个变量,当电路变大时,布局速度明显降低,且总体布局过程中,为了将单元分散开,目标函数随着迭代次数的增大会逐渐增大单元模块重叠度的惩罚力度,所以真实布局的过程中,不可能每轮目标函数的求解都将迭代次数用尽,所以要在有限步或者很少的迭代次数之内尽量获得目标函数的最优解,确保布局能在特定的时间内获得比较好的布局结果。
发明内容
本发明的目的在于提供一种基于解析方法的总体FPGA自动化布局方法,可根据优化目标对芯片版图进行快速的自动化布局,使线网的线长和时延满足用户约束或者尽可能的小;并且通过调整总体布局中步长的优化策略,优化整体布局的质量和速度。
为了达到上述目的,本发明提供一种基于解析方法的总体FPGA自动化布局方法,包含以下步骤:
S1、将FPGA的芯片约束信息以及电路网表信息通过映射打包输入;
S2、将FPGA的用户约束的时延信息通过静态时延分析器输入;
S3、根据输入的芯片约束信息、电路网表信息和用户约束信息,将各个电路单元模块自动布局在整个芯片物理设计中的对应位置,具体包括依次进行的输入输出布局、全局时钟布局、初始布局、总体布局、合法化布局和详细布局;
其中,总体布局是指根据所有电路单元模块的初始位置和电路的拓扑连接,构建近似于半周长的目标约束,并采用基于混合步长调整策略的共轭梯度法求解,针对不同级别的电路单元模块、布局的状态,动态调整步长的计算方式,总体分布电路单元模块;
S4、输出完成布局之后的电路网表信息,进行后续布线操作。
所述的用户约束信息包括:存储在用户设计文件中的物理约束信息,以及存储在时钟约束文件中的时延约束信息。
所述的S3中,自动布局电路单元模块的过程,具体包含以下步骤:
S31、输入输出布局:摆放输入输出模块,根据FPGA的物理约束信息,随机将所有的输入输出模块摆放到指定的位置上,构建一个整数规划问题,通过求解获得最优的输入输出布局;如果不能获得最优解,报错并停止布局;
S32、全局时钟布局:当FPGA中用到的时钟线网多于每个时钟区域支持的时钟线网数目时,需把由时钟线网驱动的模块进行位置的预分配,将其分配到指定的时钟区域内,形成时钟区域约束;如果不能完成由钟线线网驱动的模块的位置预分配,报错并停止布局;
S33、初始布局:根据已经摆放好的输入输出模块的位置以及时钟区域约束,构建二次线长的目标约束问题,并采用预优处理的共轭梯度法对其求解,获得所有电路单元模块的初始位置,得到线长最短的布局;
S34、总体布局;
S35、合法化布局:将电路单元模块近距离移动到合法的整数位置上,保证各个电路单元模块之间不存在重叠,且电路单元模块移动到的位置与该电路单元模块的类型兼容;
S36、详细布局:基于低温模拟退火方法,近距离的移动或者交换两个电路单元模块,弥补总体布局和合法化布局对局部布局造成的破坏。
所述的S31~S36中,在每个步骤所进行的布局之后,需要衡量当前布局的状态,如果发现不可继续往下执行其他布局,需返回重新进行当前布局,以调整执行整个布局流程。
所述的S34中,总体布局的流程,具体包含以下步骤:
S341、构建目标函数:对总体布局进行优化的目标包含线网的总线长、整个FPGA芯片的关键时延、拥挤度、耗电量以及散热量,分别对每个目标构建目标函数;
S342、将每个目标函数均转化成平滑的目标函数;
S343、采用共轭梯度法求解转化后的平滑的目标函数;此时,对于构建的目标函数,需满足连续且一阶可导;
S344、根据求解得到的目标函数的结果,将电路单元模块移动至合理合适的位置;
S345、判断求解得到的目标函数的结果是否达到最优解;如果未达到,则返回S343,重新求解转化后的平滑的目标函数,进行下一轮移动优化;如果达到,则完成总体布局并退出。
所述的S345中,判断并衡量总体布局是否达到最优解的方法是计算每条线网的半周长和电路单元模块的密度,并采用分段函数拼接的方式构建得到满足共轭梯度法的目标函数。
所述的每条线网的半周长是指每条线网连接的所有电路单元模块的所在位置的最小包络矩形的周长的一半;所述的电路单元模块的密度是指单位面积上电路单元模块的拥挤度。
所述的S343中,采用共轭梯度法求解优化目标函数的过程,具体为:根据构建的目标函数,计算目标函数中所有变量的目标梯度和共轭方向;根据目标梯度和共轭方向计算目标函数所有变量沿共轭方向移动的步长,将每个电路单元模块沿着其各自的共轭梯度方向向前移动该步长的距离;判断目标函数的值是否降低;如否,则返回再次计算目标梯度和共轭方向;如是,则表明计算得到的移动步长为最优步长,停止求解,以使得将电路单元模块从密度高的地方推移向密度低的地方。
所述的目标函数的移动步长的计算,具体为:针对电路单元模块中的宏模块采用初始比例大的粗粒度的步长进行优化的移动策略,针对电路单元模块中的标准模块采用初始比例小的细粒度的步长进行优化的移动策略,在总体布局的优化初期基于黄金分割法动态搜索步长进行优化,以及在总体布局的优化后期基于固定比例静态调整步长进行优化。
综上所述,本发明提供的基于解析方法的总体FPGA自动化布局方法,公开了一种快速自动化布局框架,可根据优化目标对芯片版图进行快速的自动化布局,将电路单元模块摆放到版图的合理位置上,使线网的线长和时延满足用户约束或者尽可能的小,为后续的布线打基础;并且通过调整总体布局中步长的优化策略,优化整体布局的质量和速度。
附图说明
图1为本发明中的基于解析方法的总体FPGA自动化布局方法的设计流程图;
图2为本发明中的自动布局电路单元模块的流程图;
图3为本发明中的总体布局的流程图;
图4为本发明中的Sigmoid函数的常用形式;
图5为本发明中的采用共轭梯度法求解优化目标函数的流程图;
图6为本发明中的计算目标函数的移动步长的示意图。
具体实施方式
以下结合图1~图6,通过详细说明一个较佳的具体实施例,对本发明做进一步阐述。
如图1所示,为本发明提供的基于解析方法的总体FPGA自动化布局方法的设计流程图,包含以下步骤:
S1、将FPGA的芯片约束信息以及电路网表信息通过映射打包输入;
S2、将FPGA的用户约束时延信息通过静态时延分析器输入;
S3、根据输入的芯片约束信息、电路网表信息和用户约束信息,将各个电路单元模块自动布局在整个芯片物理设计中的对应位置,具体包括依次进行的输入输出布局、全局时钟布局、初始布局、总体布局、合法化布局和详细布局;
S4、输出完成布局之后的电路网表信息,供Router进行后续布线操作。
所述的用户约束信息包括:存储在UCF文件(用户设计文件)中的物理约束信息,以及存储在SDC文件(时钟约束文件)中的时延约束信息。
如图2所示,所述的S3中,自动布局电路单元模块的过程,具体包含以下步骤:
S31、输入输出布局:摆放输入输出模块(IOB),根据FPGA的物理约束信息,包括电压、电平等,随机将所有的输入输出模块摆放到指定的位置上,即构建一个整数规划问题,通过求解整数规划问题,获得最优的输入输出布局;如果不能获得最优解,报错并停止布局;
S32、全局时钟布局:当FPGA中用到的Clock(时钟)线网多于每个时钟区域支持的Clock线网数目时,需把由Clock线网驱动的模块进行位置的预分配,将其分配到指定的时钟区域内,形成时钟区域约束,保证整个电路的时钟线网不会出现拥挤;如果不能完成由Clock线网驱动的模块的位置预分配,报错并停止布局;
S33、初始布局:根据已经摆放好的输入输出模块的位置以及时钟区域约束,构建二次线长的目标约束问题,并采用预优处理的共轭梯度法对其求解,获得所有电路单元模块的初始位置,其不依赖于布局的初始解,以获得线长最短的布局;
S34、总体布局:根据所有电路单元模块的初始位置和电路的拓扑连接,构建近似于半周长的目标约束问题,并采用基于混合步长调整策略的共轭梯度法求解,针对不同级别的电路单元模块、布局的状态,动态调整步长的计算方式,总体分布电路单元模块;完成总体布局之后,电路单元模块的总体分布是十分均匀的,但局部存在重叠的电路单元模块;
S35、合法化布局:总体布局之后,在整个FPGA芯片上,电路单元模块的分布是相对均匀的,但其仍然只是浮点坐标,因此需要将其近距离移动到合法的整数位置上,保证各个电路单元模块之间不存在重叠,且电路单元模块移动到的位置与该电路单元模块的类型要相互兼容;
S36、详细布局:总体布局并没有保证局部的最优性,合法化布局进一步破坏了局部的最优解,所以需进行详细布局,弥补总体布局和合法化布局对局部布局造成的破坏;详细布局基于低温模拟退火的方法,近距离的移动或者交换两个电路单元模块,优化局部区域的布局。
所述的S31~S36中,在每个步骤所进行的布局之后,需要衡量当前布局的状态,如果发现不可继续往下执行其他布局,需返回重新进行当前布局,以调整执行整个布局流程。
在上述的整个布局电路单元模块的过程中,对布局质量影响最大的就是S34中所述的总体布局,这个步骤几乎包含了电路单元模块的百分之百的大范围移动和百分之五十的小范围移动,并且这个步骤也是对整个布局的速度起到主导作用的阶段,除了总体布局自身比较花费时间之外,总体布局的结果好坏对后续的合法化布局和详细布局的影响也非常大。因此,本发明主要是对总体布局本身的速度进行优化。
进行总体布局的目标是将电路单元模块均匀的分散到整个FPGA芯片上,总体上获得较优的线长时延等,当然其允许局部的电路单元模块有重叠。本发明采用解析的方法,将布局问题转化成一个优化问题,通过求解优化问题的最优解进行布局。
如图3所示,所述的S34中,总体布局的流程,具体包含以下步骤:
S341、构建目标函数:对总体布局进行优化的目标包含线网的总线长、整个FPGA芯片的关键时延、拥挤度、耗电量以及散热量等,分别对每个目标构建目标函数;
S342、将每个目标函数均转化成平滑的目标函数,根据具体的求解方法,决定各个目标函数具体转换的连续阶数;
S343、求解转化后的平滑的目标函数,具体求解方法包含最速下降法、牛顿法、共轭梯度法等;
S344、根据求解得到的目标函数的结果,将电路单元模块移动至合理合适的位置;
S345、判断求解得到的目标函数的结果是否达到最优解;如果未达到,则返回S343,重新求解转化后的平滑的目标函数,进行下一轮移动优化;如果达到,则完成总体布局并退出。
在上述的总体布局过程中,中最关键的一步就是如何求解构建出来的目标函数的最优值,其决定平滑的目标函数的构造,又决定总体布局的优化过程的快慢。求解目标函数即求解一个优化的问题,而优化问题有很多成熟的求解方法,其中共轭梯度法是介于最速下降法与牛顿法之间的一个方法,其仅需利用一阶导数信息,既克服了最速下降法收敛慢的缺点,又避免了牛顿法需要存储和计算Hessen矩阵并求逆的缺点,因此共轭梯度法不仅是解决大型线性方程组最有用的方法之一,也是求解大型非线性最优化最有效的算法之一。共轭梯度法的优点是所需存储量小,具有步收敛性,稳定性高,而且不需要任何外来参数。因此,在本发明中,决定采用共轭梯度法对总体布局问题进行求解。
所述的S343中,采用共轭梯度法求解平滑的目标函数,因此,对于构建的目标函数,只需满足其连续且一阶可导即可,利于目标函数的构建。
所述的S345中,判断并衡量总体布局是否达到最优解的最简单且最直接的目标方法就是计算每条线网的半周长和电路单元模块的密度;其中,每条线网的半周长是指每条线网连接的所有电路单元模块的所在位置的最小包络矩形的周长的一半;电路单元模块的密度是指单位面积上电路单元模块的拥挤度;由于以线网的半周长和电路单元模块密度为目标构建的目标函数不是连续可微的函数,因此采用简单的分段函数拼接的方式来构建得到满足共轭梯度法的目标函数。本实施例中,采用最常用的分段拼接函数Sigmoid函数,如图4所示,Sigmoid函数有很多种形式,这里只是列举了其中一些常用的形式。
在完成连续可微的目标函数构建之后,即可采用共轭梯度法对其进行求解。根据共轭梯度法的原理,如果目标函数是二次正定连续可微的,其最多通过变量的数目次迭代即可获得最优解,但是显然,总体布局问题不像初始布局是二次正定的,并且也不是严格凸的,所以不能保证有限步获得最优解。根据总体布局问题本身的特性,并不需每轮优化都要找一个最优解,即使找到的是较优解,也可以达到布局的要求,因为最终的布局结果是整数解,且总体布局之后,还有合法化布局和详细布局进行进一步的修复布局结果。在进行转换之后的平滑连续函数获得的仍然是浮点解,需要在合法化布局时要将其转化成整数,并不是取求解后的最优解。例如求解之后,解出电路单元模块A的最优坐标是(4.7,8.9),合法化布局之后该电路单元模块A被分配到坐标为(5.0,9.0)的位置,即使加上再后面的详细布局,电路单元模块A也无法摆放在最优的浮点位置(4.7,8.9)上,而是离最优位置较近的整数坐标上,所以目标函数的求解不需最优,较优的结果也并不损坏总体布局的中间状态,比如经过几轮迭代之后即获得电路单元模块A的坐标是(4.9,8.6),此时是可以退出迭代的了,因为基于这个结果进行合法化之后,由于离其最近的整数坐标点是(5.0,9.0),假如没有拥挤的话,电路单元模块A会百分之百被分配到(5.0,9.0)的位置,假如存在拥挤的话,电路单元模块A也有百分之九十五的机率被分配到(5.0,9.0)的位置,其余的百分之五的偏差也能在后面的详细布局中进一步修复。
在总体布局中,能够快速获得较优解是通过每轮的电路单元模块的移动策略决定的,也即共轭梯度法的搜索方向和搜索步长。在总体布局的优化过程中,采用更快速有效的电路单元模块的移动策略,更优的选取电路单元模块的移动方向和移动步长,消除变量增多对共轭梯度法收敛所需步数增多的问题,使其以最快的速度获得目标方程的最优解。
所述的总体布局的数学表现形式就是将每个电路单元模块沿着其各自的共轭梯度的方向向前移动,移动到一个较优的距离,通过这种方式降低目标函数的值,在尽量小的破坏线长和时延的情况下,将电路单元模块从密度高的地方推移向密度低的地方。如图5所示,所述的S343中,采用共轭梯度法求解优化目标函数的过程,具体为:根据构建的目标函数,计算目标函数中所有变量的目标梯度和共轭方向;根据目标梯度和共轭方向计算目标函数所有变量沿共轭方向的移动步长;判断目标函数的值是否降低;如否,则返回再次计算目标梯度和共轭方向;如是,则表明计算得到的移动步长为最优步长,停止求解。
在总体布局的过程中,目标函数变量的共轭方向的计算方式比较统一,常用的有Fletcher-Reeves(FR),Dixon-Myers(DM),Polak-Ribiere-Polyak(PRP)和Crowder-wolfe(CW)等方法,通过调整共轭梯度的计算方式并不能明显的加速总体布局的优化流程,而共轭梯度法中沿共轭方向移动的步长是***的,将对求解的质量和速度起到主导作用。
在总体布局的过程中,沿共轭方向移动的步长偏大会产生乒乓效果,偏小则会导致电路单元模块分散的速度过慢。因此,本发明中,针对步长的计算方法主要提供以下四种。
如图6所示,所述的目标函数的移动步长的计算,具体为:针对电路单元模块中的宏模块采用初始比例大的粗粒度的步长进行优化的移动策略,针对电路单元模块中的标准模块采用初始比例小的细粒度的步长进行优化的移动策略,基于黄金分割法动态搜索步长,以及基于固定比例静态调整步长;通过采取上述的步长计算和调整策略,明显提升总体布局的速度。对于包含几万个移动的电路单元模块的网表信息,每轮总体布局优化大约只需二十到三十轮搜索即可以获得较为优化的结果,整个FPGA芯片大约进行二十轮左右的总体布局优化就可以获得最终的总体布局的结果。
在所述的目标函数的移动步长的计算中,针对宏模块(DSP/RAM)的移动,采用初始比例大的粗粒度步长移动策略。在整个FPGA芯片上,宏模块的资源相对比较少,并且分布相对分散,每两列DSP或者RAM之间都有数列CLB存在,所以对于宏模块的移动是大范围的移动。如水平方向上,两列DSP分别在第1列和第9列,则DSP每轮的水平移动步长最好超过(9-1)/2=4,假如太小的话,经过多轮移动,DSP仍然处于局部最优解空间中,很难跳出当前的局部解空间,从而会导致当前的很多轮移动都是无用的。所以针对这种资源比较稀缺的宏模块,本发明中采用初始比例大的粗粒度的步长进行优化。
在所述的目标函数的移动步长的计算中,针对标准单元模块(CLB/SLICE)的移动,采用初始比例小的细粒度步长移动策略。在整个FPGA芯片上,标准单元模块的资源相对比较多,除去宏模块,几乎连续分布,一列CLB一般都至少与一列CLB相邻接,或者左右各毗邻一列CLB,所以针对标准单元模块的移动是小范围的移动。如水平方向上,两列CLB分别在第2列和第3列,则CLB每轮的水平移动的步长最好在(3-2)/2=0.5左右,假如太大的话,经过一轮移动,就会跳过很多解空间,不能搜索到更优的结果,必然造成布局质量的下降。所以针对这种资源比较富裕的标准单元模块,本发明中采用初始比例小的细粒度的步长进行优化。
在所述的目标函数的移动步长的计算中,在总体布局优化的前期优化过程中,采用动态搜索的方式寻找当前状态的最优解。动态搜索是基于黄金分割法,在一定的距离(依赖上述两种步长策略)之内进行黄金点的分割,计算黄金点处的目标函数值,每轮都选低的一段继续进行黄金分割,直到分割的距离足够小,选取最小的分割点作为移动的步长。由于在总体布局的前期,线长比较优,但多数电路单元模块都堆积在一起,此时多数电路单元模块都具有相似的移动趋势,为了更容易的分散电路单元模块,应该确保这些电路单元模块的移动趋势有所区别,所以采用更加准确的黄金分割法动态搜索最优的步长,从而确定电路单元模块的相对位置。所以在总体布局的前期,为了尽量挖掘出各个电路单元模块之间的区别,本发明采用基于黄金分割法动态搜索步长进行优化。
在所述的目标函数的移动步长的计算中,在总体布局优化的后期优化过程中,采用固定比例的静态步长调整策略。在总体布局的后期,FPGA芯片上所有电路单元模块的相对位置基本确定,由于黄金分割法计算步长的计算量非常大,其不适合在整个总体布局优化过程中都采用这种方法,为了减少计算量,直接根据当前的梯度,基于本轮总的移动距离计算电路单元模块的移动步长,并且随着总体布局优化的深入,这个总的移动距离在逐渐的减少。经过这种方法,可以很容易的控制总体布局分布的速度。如假设当前所有的电路单元模块都在整个FPGA芯片的中心附近,想让整个网表在5轮优化之后基本达到均匀的程度,就相当于所有电路单元模块5轮移动的水平平均距离总和是FPGA芯片宽度的一半,垂直平均距离的总和是FPGA芯片高度的一半,从而根据芯片的大小,计算出一个理想的移动轮数,可以很好的控制总体布局的运行时间。
本发明提供的基于解析方法的总体FPGA自动化布局方法,具有更合理的布局架构,更方便的总体布局策略,更好的目标函数的平滑策略,基于布局实际问题的更优的步长调整策略,使得布局的效率明显提高。
综上所述,本发明提供的基于解析方法的总体FPGA自动化布局方法,公开了一种快速自动化布局框架,可根据优化目标对芯片版图进行快速的自动化布局,将电路单元模块摆放到版图的合理位置上,使线网的线长和时延满足用户约束或者尽可能的小,为后续的布线打基础;并且通过调整总体布局中步长的优化策略,优化整体布局的质量和速度。
尽管本发明的内容已经通过上述优选实施例作了详细介绍,但应当认识到上述的描述不应被认为是对本发明的限制。在本领域技术人员阅读了上述内容后,对于本发明的多种修改和替代都将是显而易见的。因此,本发明的保护范围应由所附的权利要求来限定。
Claims (9)
1.一种基于解析方法的总体FPGA自动化布局方法,其特征在于,包含:
S1、将FPGA的芯片约束信息以及电路网表信息通过映射打包输入;
S2、将FPGA的用户约束的时延信息通过静态时延分析器输入;
S3、根据输入的芯片约束信息、电路网表信息和用户约束信息,将各个电路单元模块自动布局在整个芯片物理设计中的对应位置;包括依次进行的输入输出布局、全局时钟布局、初始布局、总体布局、合法化布局和详细布局;
其中,总体布局是指根据所有电路单元模块的初始位置和电路的拓扑连接,构建近似于半周长的目标约束,并采用基于混合步长调整策略的共轭梯度法求解,针对不同级别的电路单元模块、布局的状态,动态调整步长的计算方式,总体分布电路单元模块;
S4、输出完成布局之后的电路网表信息,进行后续布线操作。
2.如权利要求1所述的基于解析方法的总体FPGA自动化布局方法,其特征在于,所述的用户约束信息包括:存储在用户设计文件中的物理约束信息,以及存储在时钟约束文件中的时延约束信息。
3.如权利要求1所述的基于解析方法的总体FPGA自动化布局方法,其特征在于,所述的S3中,自动布局电路单元模块的过程,具体包含以下步骤:
S31、输入输出布局:摆放输入输出模块,根据FPGA的物理约束信息,随机将所有的输入输出模块摆放到指定的位置上,构建一个整数规划问题,通过求解获得最优的输入输出布局;如果不能获得最优解,报错并停止布局;
S32、全局时钟布局:当FPGA中用到的时钟线网多于每个时钟区域支持的时钟线网数目时,需把由时钟线网驱动的模块进行位置的预分配,将其分配到指定的时钟区域内,形成时钟区域约束;如果不能完成由钟线线网驱动的模块的位置预分配,报错并停止布局;
S33、初始布局:根据已经摆放好的输入输出模块的位置以及时钟区域约束,构建二次线长的目标约束问题,并采用预优处理的共轭梯度法对其求解,获得所有电路单元模块的初始位置,得到线长最短的布局;
S34、总体布局;
S35、合法化布局:将电路单元模块近距离移动到合法的整数位置上,保证各个电路单元模块之间不存在重叠,且电路单元模块移动到的位置与该电路单元模块的类型兼容;
S36、详细布局:基于低温模拟退火方法,近距离的移动或者交换两个电路单元模块,弥补总体布局和合法化布局对局部布局造成的破坏。
4.如权利要求3所述的基于解析方法的总体FPGA自动化布局方法,其特征在于,所述的S31~S36中,在每个步骤所进行的布局之后,需要衡量当前布局的状态,如果发现不可继续往下执行其他布局,需返回重新进行当前布局,以调整执行整个布局流程。
5.如权利要求3所述的基于解析方法的总体FPGA自动化布局方法,其特征在于,所述的S34中,总体布局的流程,具体包含以下步骤:
S341、构建目标函数:对总体布局进行优化的目标包含线网的总线长、整个FPGA芯片的关键时延、拥挤度、耗电量以及散热量,分别对每个目标构建目标函数;
S342、将每个目标函数均转化成平滑的目标函数;
S343、采用共轭梯度法求解转化后的平滑的目标函数;此时,对于构建的目标函数,需满足连续且一阶可导;
S344、根据求解得到的目标函数的结果,将电路单元模块移动至合理合适的位置;
S345、判断求解得到的目标函数的结果是否达到最优解;如果未达到,则返回S343,重新求解转化后的平滑的目标函数,进行下一轮移动优化;如果达到,则完成总体布局并退出。
6.如权利要求5所述的基于解析方法的总体FPGA自动化布局方法,其特征在于,所述的S345中,判断并衡量总体布局是否达到最优解的方法是计算每条线网的半周长和电路单元模块的密度,并采用分段函数拼接的方式构建得到满足共轭梯度法的目标函数。
7.如权利要求6所述的基于解析方法的总体FPGA自动化布局方法,其特征在于,所述的每条线网的半周长是指每条线网连接的所有电路单元模块的所在位置的最小包络矩形的周长的一半;所述的电路单元模块的密度是指单位面积上电路单元模块的拥挤度。
8.如权利要求5所述的基于解析方法的总体FPGA自动化布局方法,其特征在于,所述的S343中,采用共轭梯度法求解优化目标函数的过程,具体为:
根据构建的目标函数,计算目标函数中所有变量的目标梯度和共轭方向;
根据目标梯度和共轭方向计算目标函数所有变量沿共轭方向移动的步长,将每个电路单元模块沿着其各自的共轭梯度方向向前移动该步长的距离;
判断目标函数的值是否降低;如否,则返回再次计算目标梯度和共轭方向;如是,则表明计算得到的移动步长为最优步长,停止求解,以使得将电路单元模块从密度高的地方推移向密度低的地方。
9.如权利要求8所述的基于解析方法的总体FPGA自动化布局方法,其特征在于,所述的目标函数的移动步长的计算,具体为:
针对电路单元模块中的宏模块采用初始比例大的粗粒度的步长进行优化的移动策略;
针对电路单元模块中的标准模块采用初始比例小的细粒度的步长进行优化的移动策略;
在总体布局的优化初期基于黄金分割法动态搜索步长进行优化;
在总体布局的优化后期基于固定比例静态调整步长进行优化。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710019566.2A CN108287932B (zh) | 2017-01-10 | 2017-01-10 | 一种基于解析方法的总体fpga自动化布局方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710019566.2A CN108287932B (zh) | 2017-01-10 | 2017-01-10 | 一种基于解析方法的总体fpga自动化布局方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108287932A true CN108287932A (zh) | 2018-07-17 |
CN108287932B CN108287932B (zh) | 2021-09-21 |
Family
ID=62831550
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710019566.2A Active CN108287932B (zh) | 2017-01-10 | 2017-01-10 | 一种基于解析方法的总体fpga自动化布局方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108287932B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111027266A (zh) * | 2019-12-06 | 2020-04-17 | 思尔芯(上海)信息科技有限公司 | 一种多个fpga的设计分割的方法、***、存储介质及终端 |
CN111475994A (zh) * | 2020-03-30 | 2020-07-31 | 安徽省东科半导体有限公司 | 芯片设计中填补环的自动布局方法 |
CN111753482A (zh) * | 2020-06-30 | 2020-10-09 | 无锡中微亿芯有限公司 | 一种io自动分配的多裸片结构fpga的布局方法 |
CN112149376A (zh) * | 2020-09-25 | 2020-12-29 | 无锡中微亿芯有限公司 | 一种基于最大流算法的fpga布局合法化方法 |
CN112232017A (zh) * | 2020-12-17 | 2021-01-15 | 上海国微思尔芯技术股份有限公司 | 分割边界优化方法、装置、计算机设备和存储介质 |
CN112307700A (zh) * | 2019-12-17 | 2021-02-02 | 成都华微电子科技有限公司 | 可编程器件的位流并行生成方法及*** |
CN113128151A (zh) * | 2021-04-21 | 2021-07-16 | 无锡中微亿芯有限公司 | 利用多裸片结构fpga布局结果的网表分割方法 |
CN114861591A (zh) * | 2022-07-07 | 2022-08-05 | 北京大学 | 一种可微分时序驱动的芯片布局优化方法 |
CN116629190A (zh) * | 2023-07-21 | 2023-08-22 | 西安智多晶微电子有限公司 | 一种基于元胞自动机和禁忌搜索的fpga布局方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101091366A (zh) * | 2004-11-24 | 2007-12-19 | 诺基亚公司 | 减小的并行和流水线化的高阶mimo lmmse接收器架构 |
CN105069216A (zh) * | 2015-07-31 | 2015-11-18 | 深圳市同创国芯电子有限公司 | 一种fpga布线方法及装置 |
-
2017
- 2017-01-10 CN CN201710019566.2A patent/CN108287932B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101091366A (zh) * | 2004-11-24 | 2007-12-19 | 诺基亚公司 | 减小的并行和流水线化的高阶mimo lmmse接收器架构 |
CN105069216A (zh) * | 2015-07-31 | 2015-11-18 | 深圳市同创国芯电子有限公司 | 一种fpga布线方法及装置 |
Non-Patent Citations (2)
Title |
---|
张红敏等: "双输出FPGA基本逻辑单元结构的布局布线影响研究", 《微电子学与计算机》 * |
朱东亮: "基于 C805 1F340的双界面读写器的设计", 《计算机光盘软件与应用》 * |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111027266A (zh) * | 2019-12-06 | 2020-04-17 | 思尔芯(上海)信息科技有限公司 | 一种多个fpga的设计分割的方法、***、存储介质及终端 |
CN112307700B (zh) * | 2019-12-17 | 2022-07-29 | 成都华微电子科技股份有限公司 | 可编程器件的位流并行生成方法及*** |
CN112307700A (zh) * | 2019-12-17 | 2021-02-02 | 成都华微电子科技有限公司 | 可编程器件的位流并行生成方法及*** |
CN111475994B (zh) * | 2020-03-30 | 2021-04-09 | 安徽省东科半导体有限公司 | 芯片设计中填补环的自动布局方法 |
CN111475994A (zh) * | 2020-03-30 | 2020-07-31 | 安徽省东科半导体有限公司 | 芯片设计中填补环的自动布局方法 |
CN111753482A (zh) * | 2020-06-30 | 2020-10-09 | 无锡中微亿芯有限公司 | 一种io自动分配的多裸片结构fpga的布局方法 |
CN112149376A (zh) * | 2020-09-25 | 2020-12-29 | 无锡中微亿芯有限公司 | 一种基于最大流算法的fpga布局合法化方法 |
CN112232017B (zh) * | 2020-12-17 | 2021-03-05 | 上海国微思尔芯技术股份有限公司 | 分割边界优化方法、装置、计算机设备和存储介质 |
CN112232017A (zh) * | 2020-12-17 | 2021-01-15 | 上海国微思尔芯技术股份有限公司 | 分割边界优化方法、装置、计算机设备和存储介质 |
CN113128151A (zh) * | 2021-04-21 | 2021-07-16 | 无锡中微亿芯有限公司 | 利用多裸片结构fpga布局结果的网表分割方法 |
CN113128151B (zh) * | 2021-04-21 | 2022-02-18 | 无锡中微亿芯有限公司 | 利用多裸片结构fpga布局结果的网表分割方法 |
CN114861591A (zh) * | 2022-07-07 | 2022-08-05 | 北京大学 | 一种可微分时序驱动的芯片布局优化方法 |
CN114861591B (zh) * | 2022-07-07 | 2022-09-27 | 北京大学 | 一种可微分时序驱动的芯片布局优化方法 |
CN116629190A (zh) * | 2023-07-21 | 2023-08-22 | 西安智多晶微电子有限公司 | 一种基于元胞自动机和禁忌搜索的fpga布局方法 |
CN116629190B (zh) * | 2023-07-21 | 2023-11-03 | 西安智多晶微电子有限公司 | 一种基于元胞自动机和禁忌搜索的fpga布局方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108287932B (zh) | 2021-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108287932A (zh) | 一种基于解析方法的总体fpga自动化布局方法 | |
US6629308B1 (en) | Method for managing database models for reduced programmable logic device components | |
US6675309B1 (en) | Method for controlling timing in reduced programmable logic devices | |
CN102768506B (zh) | 带时序约束的fpga时序驱动布局方法 | |
US6385761B1 (en) | Flexible width cell layout architecture | |
US10003553B2 (en) | Optimization of multi-stage hierarchical networks for practical routing applications | |
CN110457849A (zh) | 一种可配置的数字集成电路设计方法 | |
CN105191140A (zh) | 无边界分级互连的网络架构 | |
CN107967372B (zh) | 一种fpga总体布局合法化方法 | |
CN110070182A (zh) | 适合人工智能的平台芯片及其制造和设计方法 | |
CN104182556A (zh) | 芯片的布局方法 | |
CN113761821A (zh) | 一种借由自动工具完成的模块化半定制fpga芯片设计方法 | |
CN106021722A (zh) | 基于fpga布局的优化方法 | |
Kaptanoglu et al. | A new high density and very low cost reprogrammable FPGA architecture | |
Koegst et al. | State assignment for FSM low power design | |
US20130074026A1 (en) | Layout technique for stress management cells | |
CN113111621A (zh) | 半导体装置和半导体装置制造方法 | |
Iman et al. | Two-level logic minimization for low power | |
Tung et al. | Simulation of a QCA-based CLB and a multi-CLB application | |
US20030039262A1 (en) | Hierarchical mux based integrated circuit interconnect architecture for scalability and automatic generation | |
Cao et al. | Multi-objective digital design optimization via improved drive granularity standard cells | |
US20080129336A1 (en) | Via programmable gate array with offset direct connections | |
Nag et al. | Performance-driven simultaneous place and route for island-style FPGAs | |
Lin et al. | Transistor-level layout of high-density regular circuits | |
CN108073740B (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 |