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

布局FPGA芯片内时钟线网的方法及设备与流程

2022-07-10 13:14:34 来源:中国专利 TAG:

布局fpga芯片内时钟线网的方法及设备
技术领域
1.本发明涉及集成电路技术领域,尤其涉及布局现场可编程门阵列(field-programmable gate array,fpga)芯片内时钟线网的方法及设备。


背景技术:

2.fpga芯片的设计流程主要包括设计输入、功能仿真、逻辑综合、技术映射、封装、布局、布线、时序仿真、比特流生成等阶段,其中,布局是非常复杂并且最关键的一个阶段,其结果直接影响了电路性能、面积、可靠性、功率和制造产量等。
3.现有的fpga芯片具有一个时钟架构,例如赛灵思(xilinx)公司的7系列fpga芯片的时钟架构(请参见如下网页提供的技术文献https://www.xilinx.com/support/documentation/user_guides/ug472_7series_clocking.pdf)。
4.如图1所示,7系列fpga芯片的时钟架构被分为多个时钟区域(clockregion)(图1中示意了3行2列共6个时钟区域),每个时钟区域包含多种元素,例如,可配置逻辑块(configurable logic block,clb)、计算单元(computing unit,cu)、随机存取存储器(random access memory,ram)、可编程输入输出单元(input output block,iob)、时钟管理块(ccmu或者cmt)、水平时钟缓冲器(hcud)、高速串行收发器(gt)。在一个时钟区域内,每一个clb列包含50个lb,每一个iob列(i/o column)包含50个iob,每一ram列包含10个ram,每一cu列包含20个cu;每个时钟区域内部包含12个hcud,以及一个水平时钟行(hrow),其将时钟区域分为上下二个部分,例如,clb列被分为上部分25个clb和下部分25个clb。
5.该fpga芯片具有全局时钟主干道(clock backbone),其中包括32条全局时钟线,全局时钟缓冲器(cud)可以驱动全局时钟线;水平中心线(horizontal center)将芯片分为二个部分,每个部分包含16个cud。对于一个时钟区域,cud和hcud共享hrow中的12条时钟布线资源而分别提供全局时钟信号和局部时钟信号,其中,cud可以通过rowh驱动每一个时钟区域内部的时钟负载,hcud可以通过rowh驱动一个时钟行(clock row,cr)内左右相邻的时钟区域,这二个相邻的时钟区域可以共享时钟布线资源。每个时钟区域最多支持24条全局时钟线,而水平相邻的二个时钟区域也最多支持24条全局时钟线。
6.但是,现有的fpga芯片在布局过程中未考虑到时钟资源的具体约束,这可能会导致时钟布线的失败。


技术实现要素:

7.本发明解决的技术问题包括现有的fpga芯片在布局过程中未考虑到时钟资源的具体约束等。
8.为解决上述技术问题,本发明实施例提供一种布局fpga芯片内时钟线网的方法,fpga芯片包括多个时钟区域,时钟线网包括多条全局时钟线,方法包括:步骤一,遍历每条全局时钟线各自驱动的所有时钟负载,并且将所有时钟负载各自位于的时钟区域相关的集合确定为该条全局时钟线的划分区域;步骤二,如果一个时钟区域存在时钟冲突,则缩小驱
动该时钟区域的全局时钟线的划分区域以使其不包括该时钟区域;重复步骤二,直到所有的时钟区域都不存在时钟冲突。
9.可选地,该方法包括:基于驱动任一个时钟负载的所有全局时钟线各自对应的划分区域所形成的交集区域确定布局该时钟负载的时钟区域。
10.可选地,交集区域表示为时钟围栏区域代价函数f(x,y),其通过如下公式获得:
11.f(x,y)=αfh(x) βfv(y),
[0012][0013][0014]
其中,x和y分别表示一个时钟负载在fpga芯片上的横坐标和纵坐标,fh(x)和fv(y)分别为在x和y方向上的时钟围栏区域代价函数,x
l
和xr分别为时钟围栏区域在x方向左、右边界的坐标,y
t
和yb分别为时钟围栏区域在y方向上、下边界的坐标,α、β为惩罚代价参数。
[0015]
可选地,该方法包括将缩小划分区域的全局时钟线在存在时钟冲突的时钟区域内所驱动的时钟负载移动到缩小的划分区域内。
[0016]
可选地,该方法包括在步骤一之后扩大全局时钟线的划分区域,从而使得扩大的划分区域具有更多的站点以用于布局与待移动的时钟负载相关的模块。
[0017]
可选地,该方法包括将所有时钟负载各自位于的时钟区域的集合或者各自位于的时钟行的集合确定为该条全局时钟线的划分区域。
[0018]
可选地,时钟冲突包括驱动一个时钟区域或者一个时钟行的全局时钟线的数量超过预定数量而形成的冲突。
[0019]
可选地,该方法包括解决时钟冲突的总体流程,其包括将存在时钟冲突的时钟行依据驱动其的全局时钟线的数量从大到小自队首依次排序而放入第一队列中,自第一队列的队首取出相应的时钟行并且通过行内时钟冲突解决流程解决其时钟冲突。
[0020]
可选地,行内时钟冲突解决流程包括:将驱动某个时钟行的全局时钟线按照时延关键度自队首依次排序而放入第二队列中;自第二队列的队首取出相应全局时钟线的特定时钟线网;基于特定时钟线网确定缩小相应全局时钟线的划分区域;将相应全局时钟线在存在时钟冲突的时钟区域内驱动的相应时钟负载从存在时钟冲突的时钟区域移动到缩小的划分区域内。
[0021]
可选地,行内时钟冲突解决流程包括:基于特定时钟线网确定缩小相应全局时钟线的划分区域的若干选项,若干选项分别具有将相应全局时钟线在存在时钟冲突的时钟区域内驱动的相应时钟负载从存在时钟冲突的时钟区域移动到缩小的划分区域内的移动量;基于具有最小移动量的选项缩小相应全局时钟线的划分区域;将相应全局时钟线在存在时钟冲突的时钟区域内驱动的相应时钟负载从存在时钟冲突的时钟区域移动到缩小的划分区域内。
[0022]
可选地,该方法包括:如果所移动到的、缩小的划分区域内不具有足够的站点数量
以用于布局与相应时钟负载相关的模块,则扩大相应全局时钟线的划分区域,其中,所扩大的划分区域内总的站点数量不小于与相应全局时钟线所驱动的各时钟负载相关的模块的数量。
[0023]
可选地,扩大相应全局时钟线的划分区域包括沿时钟区域的阵列中列的方向向上和/或向下移动从而扩大相应全局时钟线的划分区域。
[0024]
可选地,该方法包括:在解决第一队列中的时钟行的时钟冲突之前确定其目前是否存在时钟冲突。
[0025]
可选地,该方法包括:如果第一队列的队首的时钟行的时钟冲突解决成功,则对该时钟行重新排序或者移出该时钟行、以及更新第一队列,并且重复解决时钟冲突的总体流程的步骤,直至成功解决所有时钟冲突或者解决失败的失败次数超过设定次数而退出时钟冲突的解决流程。
[0026]
可选地,该方法包括:如果第一队列的队首的时钟行的时钟冲突解决失败,则将初始值为0的失败次数加1、移出队首的时钟行以及更新第一队列,并且重复解决时钟冲突的总体流程的步骤,直至成功解决所有时钟冲突或者解决失败的失败次数超过设定次数而退出时钟冲突的解决流程。
[0027]
可选地,该方法包括:设定次数等于第一队列的当前长度。
[0028]
本发明实施例还提供一种布局fpga芯片内时钟线网的设备,包括存储器和处理器,存储器上存储有可在处理器上运行的计算机指令,处理器运行计算机指令时执行上述任一种布局fpga芯片内时钟线网方法的步骤。
[0029]
与现有技术相比,本发明实施例的技术方案具有有益的技术效果。例如,为每个全局时钟线划分出合法的布局区域(即划分区域),并且可以缩小划分区域以使其不包括存在时钟冲突的时钟区域,从而在布局全局时钟线驱动的时钟负载时不违反时钟约束。
附图说明
[0030]
图1为xilinx公司7系列fpga芯片的时钟架构图;
[0031]
图2为本发明实施例中布局fpga芯片内时钟线网的总体流程图;
[0032]
图3为本发明实施例中时钟区域和时钟行的示意图;
[0033]
图4为本发明实施例中解决时钟冲突的具体流程图;
[0034]
图5为本发明实施例中解决行内时钟冲突的具体流程图;
[0035]
图6为本发明实施例中解决时钟冲突具体示例的示意图;
[0036]
图7为本发明实施例中时钟围栏区域的示意图。
具体实施方式
[0037]
现有技术在全局布局的过程中,将线长和时延指标作为优化目标,而没有考虑时钟约束,这可能会导致过多的时钟源驱动一个时钟区域内部的时钟负载,在布线阶段会导致布线轨道的冲突。
[0038]
现有技术在全局布局结束后,当全局布局的结果违反时钟约束时,会考虑在时钟资源被过度使用的时钟区域内部移除部分全局时钟线驱动的时钟负载,直到该时钟区域内部没有违反时钟约束。该方案具有至少三个方面的技术缺陷,一方面,直接破坏了全局布局
的结果,使得布局结果在线长和时延指标上都变差很多;另一方面,在高利用率的电路上,由于器件上的资源已经被充分利用,对于一条全局时钟线驱动的时钟负载非常多的情况下,可能找不到合法的时钟区域范围来放置期望重新放置的时钟负载;又一方面,为了解决一个时钟区域内部的时钟冲突而将部分全局时钟线重新设置于新的时钟区域后可能会导致这些时钟区域出现新的时钟冲突。
[0039]
相比较于现有技术,本发明实施例的技术方案具有有益的技术效果。
[0040]
例如,为每个全局时钟线划分出合法的布局区域(即划分区域),并且可以缩小划分区域以使其不包括存在时钟冲突的时钟区域,从而在布局全局时钟线驱动的时钟负载时不违反时钟约束,其算法复杂度低,可以快速地解决时钟冲突,从而有效地驱动布局以及多轮迭代优化。
[0041]
又例如,本发明实施例将时钟约束作为全局布局过程中的一项指标,而不是在全局布局结束后当全局布局结果违反时钟约束时才考虑在时钟资源被过度使用的时钟区域内部移除部分全局时钟线驱动的时钟负载,从而避免了上述至少三个方面的技术缺陷。
[0042]
又例如,在全局布局的每一次迭代开始时,根据时钟约束的要求或者避免时钟冲突的条件,将为每一个时钟负载设置一个合法的布局区域作为优化目标,并且,将该优化目标作为全局布局的优化目标来指导全局布局的过程,不断地调整时钟负载的合法布局区域,动态地解决时钟负载的时钟约束问题,从而可以及时地保证全局布局的结果不违反时钟约束,避免了最后时钟布线的失败。
[0043]
又例如,可以基于驱动任一个时钟负载的所有全局时钟线各自对应的划分区域所形成的交集区域确定布局该时钟负载的时钟区域,从而可以通过可操作、方便易行以及快速的方式布局时钟负载。
[0044]
又例如,根据时钟负载的合法布局区域(即交集区域),可以构造一个时钟围栏区域代价函数,其确定每一个时钟负载的合法布局区域,从而确保每个时钟负载都在自己的合法布局区域内,避免了全局时钟线或全局时钟资源的过度使用,进而使得全局布局的结果不违反时钟约束。
[0045]
又例如,时钟围栏区域代价函数包含惩罚代价参数α、β,为一次或多次时钟围栏区域代价函数,α、β可以选择,从而可以根据需要设置时钟负载位于时钟围栏区域之外的惩罚代价。
[0046]
又例如,时钟围栏区域代价函数为平滑的函数,其可导、可微,从而可以基于该连续的时延函数计算出电路元素之间的时延,以实现时延的优化。
[0047]
又例如,本发明实施例的技术方案具有良好的扩展性,不仅仅应用于全局布局阶段,其可以用于布局布线等物理实现的各个阶段。
[0048]
为使本发明实施例的上述目的、特征和有益效果能够更为明显易懂,下面结合附图对本发明的具体实施例进行详细说明。
[0049]
如图2所示,布局fpga芯片内时钟线网的方法100包括步骤一和步骤二。
[0050]
fpga芯片包括多个时钟区域,不同的fpga芯片根据设计需求可以具有不同数量的时钟区域。例如,xilinx公司的7系列fpga芯片具有呈阵列布置的多个时钟区域,其最多具有24个时钟区域。
[0051]
多个时钟区域可以呈矩阵排列,其每一行(即时钟行)可以包括2个或多个时钟区
域。
[0052]
在图3所示的实施例中,多个时钟区域分布为多行多列的矩阵形式,每一行具有若干个相邻的时钟区域。尽管图3中示意了7行2列,但该矩阵也可以具有其他的行数和列数。
[0053]
如图3所示,第一行标记为row1,第二行标记为row2,依次类推;每一行有2个相邻的时钟单元。
[0054]
时钟线网包括多条全局时钟线和局部时钟线,前者由全局时钟缓冲器驱动,后者由局部时钟缓冲器驱动。例如,xilinx公司的7系列fpga芯片中,全局时钟主干道包括32条全局时钟线,每个时钟区域最多支持24条全局时钟线。
[0055]
在步骤一的执行中,遍历每条全局时钟线各自驱动的所有时钟负载,并且将所有时钟负载各自位于的时钟区域相关的集合确定为该条全局时钟线的划分区域。
[0056]
fpga芯片的布局是一个不断迭代优化的过程,现有技术仅将线长和时延指标作为优化目标。
[0057]
在本发明的实施例中,在布局的过程中,还将时钟约束或者避免时钟冲突作为优化目标以使每一个时钟负载都设置在一个合法的布局区域内。
[0058]
在本发明的实施例中,时钟负载可以为fpga芯片内需要时钟同步的元件,例如为clb、iob、dsp、ram等。
[0059]
在第一次迭代之前,各时钟负载具有初始布局的时钟区域;在第二次迭代之前或者后续的各次迭代之前,各时钟负载基于上一次迭代而具有相应布局的时钟区域。
[0060]
在每一次迭代时,可以将时钟约束或者避免时钟冲突作为优化目标以使每一个时钟负载设置在一个合法的布局区域内,并且,用该全局布局的优化目标指导全局布局的过程,不断地调整存在时钟冲突的时钟负载的合法布局区域,从而保证全局布局的结果不违反时钟约束。
[0061]
在每一次迭代时,可以遍历每条全局时钟线各自驱动的所有时钟负载,并且将这些时钟负载各自位于的时钟区域相关的集合确定为该条全局时钟线的划分区域。
[0062]
任一条全局时钟线所驱动的所有时钟负载各自位于的时钟区域相关的集合可以为该所有时钟负载各自位于的时钟区域的集合,也可以为该所有时钟负载各自位于的时钟行的集合。可以将该时钟区域的集合或者时钟行的集合确定为该条全局时钟线的划分区域。
[0063]
例如,在初始化一条全局时钟线的划分区域时,可以基于时钟区域确定划分区域,即该划分区域为这条全局时钟线驱动的所有时钟负载各自位于的时钟区域的集合。
[0064]
又例如,在初始化一条全局时钟线的划分区域时,可以基于时钟行确定划分区域,即该划分区域为这条全局时钟线驱动的所有时钟负载各自位于的时钟行的集合,其中,各相关的时钟行包含了这一行内的所有时钟区域。这样在扩大和缩小全局时钟线的划分区域时,只需要在列的方向上扩大或者缩小划分区域,而不需要在行的方向上扩大或者缩小划分区域,从而简化了扩大或者缩小的操作。
[0065]
如图3所示,一条全局时钟线可以驱动二个时钟负载,其中,一个时钟负载在row1中左边的一个时钟区域(可称为“区域1”)内部,另一个时钟负载在row2中右边的一个时钟区域(可称为“区域2”)内部。
[0066]
这条全局时钟线的划分区域可以包括区域1和区域2。
表示驱动该时钟行的全局时钟线的数量超过预定数量m,例如,对于xilinx公司的7系列fpga芯片,该预定数量为24;“拥挤程度”表示,驱动一个时钟行的全局时钟线的数量的多少,例如,驱动该时钟行的全局时钟线的数量越大于预定数量m则越拥挤,而不大于预定数量m则不拥挤。
[0080]
将最拥挤的时钟行(驱动其的全局时钟线的数量最大)排在队首(即队列的最前面或者第一个位置),根据拥挤程度(即根据驱动时钟行的全局时钟线的数量从大到小)自该队首依次排列而放入第一队列中。
[0081]
自第一队列的队首取出相应的时钟行并且通过行内时钟冲突解决流程解决其时钟冲突,其中,行内时钟冲突解决流程将在后文具体描述。
[0082]
在解决时钟冲突的总体流程中,第一队列中一个时钟行的冲突解决涉及将该时钟行移出第一队列,以及由于移动相关时钟负载而使得其他时钟行的拥挤程度发生变化(例如由不拥挤变为拥挤、拥挤程度变大),从而使得第一队列发生动态变化。因此,可以在解决第一队列队首的时钟行的时钟冲突之前确定其目前是否存在时钟冲突,即确定驱动其的全局时钟线的数量是否超过预定数量,如果超过则执行行内时钟冲突解决流程,否则将该时钟行移出第一队列并且重新执行解决时钟冲突的总体流程。
[0083]
判断第一队列队首的时钟行的时钟冲突是否解决成功,即判断驱动其的全局时钟线的数量变小,该变小的数量可能会超过或者不超过上述预定数量m。例如,该预定数量为24,驱动队首的时钟行的全局时钟线的数量初始时为28,通过执行解决时钟冲突的总体流程,该数量可能会下降到26条,则该时钟行仍存在时钟冲突,该数量也可能会下降到22条,则该时钟行已经不存在时钟冲突。
[0084]
如果第一队列队首的时钟行的时钟冲突解决成功,则判断该时钟行是否仍存在时钟冲突。在时钟冲突解决成功后,如果该时钟行仍存在时钟冲突则将该时钟行在第一队列中重新排序,则更新该时钟行信息(因为驱动该时钟行的全局时钟线以及布置于其中的时钟负载发生了变化)、更新第一队列(因为该时钟行需要重新排序)以及更新相关全局时钟线的划分区域(因为原来驱动该时钟行的全局时钟线中的至少一条全局时钟线不再驱动该时钟行),并且重复解决时钟冲突的总体流程的步骤;在时钟冲突解决成功后,如果该时钟行不存在时钟冲突则将该时钟行从第一队列中移出,则更新该时钟行信息(因为驱动该时钟行的全局时钟线以及布置于其中的时钟负载发生了变化)、更新第一队列(因为该时钟行从第一队列移出)以及更新相关全局时钟线的划分区域(因为原来驱动该时钟行的全局时钟线中的至少一条全局时钟线不再驱动该时钟行),并且重复解决时钟冲突的总体流程的步骤。
[0085]
如果第一队列的队首的时钟行的时钟冲突解决失败,则将初始值为0的失败次数加1、移出队首的时钟行而更新第一队列,并且重复解决时钟冲突的总体流程的步骤,直至所有行都不存在时钟冲突或者解决失败的次数超过设定次数而退出该总体流程。
[0086]
在具体实施中,设定次数等于第一队列的当前长度(即当前存在于第一队列中的时钟行的数量)。
[0087]
图4为解决时钟冲突总体流程的具体实施例,包括如下步骤。
[0088]
步骤1,排序存在时钟冲突的时钟行(即拥挤的时钟行)。将最拥挤的时钟行(驱动其的全局时钟线的数量最大)排在队首,根据拥挤程度(即根据驱动时钟行的全局时钟线的
数量从大到小)自该队首依次排列而放入队列q中;并且将失败次数的初始值设置为0(fail=0)。
[0089]
步骤2,判断队列q是否为空,如果为是则结束流程,表示所有时钟行都不存在时钟冲突,否则执行步骤3。
[0090]
步骤3,取出位于队列q的队首位置的时钟行。
[0091]
步骤4,为行内时钟冲突解决流程,将在后文具体描述。
[0092]
步骤5,判断时钟行的时钟冲突是否成功解决,如果为是,表示驱动其的全局时钟线的数量变小,则执行步骤8,否则执行步骤6。
[0093]
步骤6,判断失败次数是否等于第一队列的当前长度,如果为是则结束流程,否则执行步骤7。
[0094]
步骤7,将失败次数加1。
[0095]
步骤8,在第一队列队首的时钟行的时钟冲突解决成功后,因为驱动该时钟行的全局时钟线以及布置于其中的时钟负载发生了变化,因此需要更新该时钟行的信息。
[0096]
步骤9,在第一队列队首的时钟行的时钟冲突解决成功后,因为原来驱动该时钟行的全局时钟线中的至少一条全局时钟线不再驱动该时钟行,因此需要更新这些全局时钟线的划分区域。
[0097]
步骤10,将失败次数置0。
[0098]
步骤11,更新队列q。将新的拥挤或拥塞的队列放入队列q;并且判断驱动已成功解决时钟冲突的时钟行的全局时钟线的数量,如果该数量超过上述预定数量,则将该时钟行在第一队列中重新排序,否则将该时钟行从队列q中移出。
[0099]
以下具体描述行内时钟冲突解决流程。
[0100]
将驱动某个时钟行(cr)的全局时钟线按照时延关键度自队首依次排序而放入第二队列(cn)中。时延关键度表示全局时钟线上的时延值超过时延上界值(表示违反了时延约束),如果超过时延上界值的时延值越大,则其对应的全局时钟线的时延关键度就越大。
[0101]
将时延关键度最大的全局时钟线排在队首(即队列的最前面或者第一个位置),根据时延关键度的大小自该队首依次排列从而放入第二队列中。
[0102]
自第二队列的队首取出相应全局时钟线的特定时钟线网(clock_net),基于特定时钟线网确定缩小相应全局时钟线的划分区域。
[0103]
例如,可以基于特定时钟线网获得缩小相应全局时钟线的划分区域的若干选项,若干选项分别具有将相应时钟负载从存在时钟冲突的时钟区域移动到缩小的划分区域内的移动量(其表示单位移动的数量,单位移动表示将时钟负载从一个时钟行移动到其相邻的时钟行的移动距离),移动量越大,移动的代价越大。可以基于具有最小移动量的选项缩小相应全局时钟线的划分区域,这使得全局布局结果具有较少的破坏。
[0104]
在缩小相应全局时钟线的划分区域之后,可以将相应全局时钟线在存在时钟冲突的时钟区域内驱动的相应时钟负载移动到缩小的划分区域内的其他时钟区域内。
[0105]
将时钟负载移动到缩小的划分区域内时,可能会导致该区域内部的站点资源不足而无法为待移动的时钟负载提供足够的布局空间(即资源冲突)。可以判断缩小的划分区域内是否存在资源冲突,如果不存在资源冲突则将时钟负载移动到缩小的划分区域内,从而完成行内时钟冲突解决流程;否则,可以扩大相应全局时钟线的划分区域(例如沿着列的方
向向上和/或向下扩大划分区域),使得扩大的划分区域内总的站点数量不小于与相应全局时钟线所驱动的各时钟负载相关的模块的数量,接着,再将待移动的时钟负载移动到该扩大的划分区域内时,发生资源冲突的可能性就会降低。
[0106]
图5为解决行内时钟冲突流程的具体实施例,包括如下步骤。
[0107]
步骤1,排序驱动某个时钟行的全局时钟线。将驱动某个时钟行的全局时钟线按照时延关键度从大到小自队首依次排序而放入队列cn中。
[0108]
步骤2,判断队列cn是否为空,如果为是则结束流程,表示没有可用选项(choice)的全局时钟线,否则执行步骤3。
[0109]
步骤3,取出位于队列cn的队首位置的全局时钟线的clock_net。
[0110]
步骤4,基于所取出的clock_net获得缩小该全局时钟线的划分区域的若干选项,并且将其放入选项(choices)队列。
[0111]
步骤5,判断choices队列是否为空,如果为是则执行步骤2,否则执行步骤6。
[0112]
步骤6,基于区域choices队列中代价最小的选项(即时钟负载具有最小移动量的选项),缩小该全局时钟线的划分区域。
[0113]
步骤7,判断待缩小的划分区域(即新的划分)内是否存在资源冲突,如果为是则执行步骤8,否则结束行内时钟冲突解决流程。
[0114]
步骤8,扩大该全局时钟线的划分区域,例如,沿着列的方向向上和/或向下扩大划分区域,使得扩大的划分区域内总的站点数量不小于与相应全局时钟线所驱动的各时钟负载相关的模块的数量。
[0115]
步骤9,判断扩大的划分区域内是否存在资源冲突,如果为是则执行步骤5,否则结束行内时钟冲突解决流程。
[0116]
图6为解决时钟冲突的示例,其中,左子图示意了时钟冲突解决前的多个依次布置的时钟行,右子图示意了时钟冲突解决后的这些时钟行。这些时钟行包括cr1、cr2直至cr7。
[0117]
作为示意,仅描述了多条全局时钟线中的二条全局时钟线cn1、cn2,其中,一条全局时钟线cn1的划分区域包括cr4和cr5,另外一条全局时钟线cn2的划分区域包括cr1,cr2,cr3,cr4。
[0118]
在图6的左子图所示,有25条全局时钟线驱动时钟行cr4内的负载,即时钟行cr4被25个全局时钟线的划分区域覆盖;而在图6的示例中,一个时钟行最多只能被24条的全局时钟线驱动,因此,时钟行cr4存在时钟冲突。
[0119]
为了解决时钟行cr4的时钟冲突,可以缩小全局时钟线cn1的划分区域,使其为仅包括时钟行cr5;并且,将全局时钟线cn1在时钟行cr4内驱动的所有时钟负载在全局布局过程中移动到全局时钟线cn1缩小的划分区域内(即时钟行cr5内)。
[0120]
如图6的右子图所示,只有24条全局时钟线驱动时钟行cr4内的时钟负载,从而不会再存在时钟冲突。
[0121]
在图6的示例中,通过缩小全局时钟线cn1的划分区域以解决时钟行cr4的时钟冲突,应理解,也可以通过缩小全局时钟线cn2的划分区域以解决时钟行cr4的时钟冲突。
[0122]
可以重复前述的步骤二,直到所有的时钟区域都不存在时钟冲突。
[0123]
具体而言,在每一次迭代的过程中,可能有多个时钟区域存在时钟冲突;对于每一个时钟冲突,可以根据步骤二,缩小驱动该时钟区域的相关全局时钟线的划分区域以使其
不包括该时钟区域,该缩小划分区域的全局时钟线在存在时钟冲突的时钟区域内所驱动的时钟负载(即待移动的时钟负载)可以被移动到缩小的划分区域内。
[0124]
可以为每一个时钟负载设置合法的布局区域。每一个时钟负载都可能由多条全局时钟线驱动,可以确定驱动该时钟负载的所有全局时钟线各自对应的划分区域;并且,可以将这些划分区域的交集区域确定为该时钟负载的、合法的布局区域,时钟负载可以在其合法的布局区域内任意放置。经过全局布局优化之后,只要每一个时钟负载都在自己合法的布局区域内,那么全局布局的结果就一定不会违反时钟约束。
[0125]
交集区域可以表示为时钟围栏区域代价函数f(x,y),反映了时钟负载的时钟约束范围,即时钟负载在不违反时钟约束的情况下可移动的最大范围;其通过如下公式获得:
[0126]
f(x,y)=αfh(x) βfv(y)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1)
[0127][0128][0129]
其中,x和y分别表示一个时钟负载在fpga芯片上的横坐标和纵坐标,fh(x)和fv(y)分别为在x和y方向上的时钟围栏区域代价函数,x
l
和xr分别为时钟围栏区域在x方向左、右边界的坐标,y
t
和yb分别为时钟围栏区域在y方向上、下边界的坐标,α、β为惩罚代价参数。
[0130]
根据公式(1)、(2)和(3),在横坐标x
l
和xr、纵坐标y
t
和yb所围成的时钟围栏区域内部,放置时钟负载的代价为0,即时钟负载可以在该区域内部任意放置而没有移动的代价;在时钟围栏区域的外部,放置时钟负载具有代价,其大小由惩罚代价参数α、β、以及放置位置与时钟围栏区域的边界(由横坐标x
l
和xr、纵坐标y
t
和yb确定)的距离决定,α、β可以选择,从而可以根据需要设置时钟负载位于时钟围栏区域之外的惩罚代价。
[0131]
在每一次迭代全局布局之前,可以根据上一次迭代的布局结果来求解时钟围栏区域代价函数f(x,y)。
[0132]
如图7所示,x和y轴分别表示时钟负载在fpga芯片上的横坐标方向和纵坐标方向,f轴表示时钟围栏区域代价函数f(x,y);区域r为横坐标分别为x
l
和xr、纵坐标分别为y
t
和yb所围成的时钟围栏区域。
[0133]
可以为非时钟负载的其他模块设置合法的布局范围。由于非时钟负载的其他模块并不需要位于特定的时钟区域内,因此,可以将这些模块在整个fpga芯片的范围内进行布局。
[0134]
可以在执行步骤一之后扩大全局时钟线的划分区域,以使得扩大后的划分区域具有更多的站点以用于布局与待移动的时钟负载相关的模块,这降低了在后续步骤中为了避免时钟冲突而需要移动相关时钟负载时站点资源不足而无法移动的可能性。
[0135]
具体而言,在一个时钟区域存在时钟冲突时,确定驱动该时钟区域内各时钟负载的多条全局时钟线中的一条全局时钟线,缩小该条全局时钟线的划分区域,并且将该条全局时钟线在存在冲突的时钟区域内所驱动的时钟负载移动到其缩小的划分区域内的其他
时钟区域内;由于在执行步骤一之后扩大了全局时钟线的划分区域,使得这些时钟负载可以移动到具有更多时钟区域进而具有更多站点的划分区域内,从而降低了由于站点资源不足而无法移动时钟负载的可能性。
[0136]
如果基于时钟区域确定划分区域,扩大全局时钟线的划分区域的方向包括在行的方向上向左和/或向右扩展、以及在列的方向上向上和/或向下扩展。
[0137]
如果基于时钟行确定划分区域,扩大全局时钟线的划分区域的方向包括在列的方向上向上和/或向下扩展,而不包括在行的方向上向左和/或向右扩展。
[0138]
相比较于基于时钟区域确定划分区域而扩大全局时钟线的划分区域,基于时钟行确定划分区域而扩大全局时钟线的划分区域,只需要在列的方向上向上和/或向下扩展而不需要在行的方向上向左和/或向右扩展,简化了操作。
[0139]
本发明的实施例还提供一种布局fpga芯片内时钟线网的设备,包括存储器和处理器,存储器上存储有可在所述处理器上运行的计算机指令,处理器运行计算机指令时执行上述结合图1至7所述的布局fpga芯片内时钟线网的方法的步骤。
[0140]
虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。
再多了解一些

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

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

相关文献