CN103886137A - 一种实现现场可编程门阵列快速布局布线的方法 - Google Patents

一种实现现场可编程门阵列快速布局布线的方法 Download PDF

Info

Publication number
CN103886137A
CN103886137A CN201410074915.7A CN201410074915A CN103886137A CN 103886137 A CN103886137 A CN 103886137A CN 201410074915 A CN201410074915 A CN 201410074915A CN 103886137 A CN103886137 A CN 103886137A
Authority
CN
China
Prior art keywords
layout
wiring
cost
node
sink
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
Application number
CN201410074915.7A
Other languages
English (en)
Other versions
CN103886137B (zh
Inventor
段振华
周文豪
黄伯虎
田聪
张南
王小兵
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xidian University
Original Assignee
Xidian University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xidian University filed Critical Xidian University
Priority to CN201410074915.7A priority Critical patent/CN103886137B/zh
Publication of CN103886137A publication Critical patent/CN103886137A/zh
Application granted granted Critical
Publication of CN103886137B publication Critical patent/CN103886137B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

本发明公开了一种实现现场可编程门阵列快速布局布线的方法,将退火函数应用于现场可编程门阵列FPGA布局的温度更新;采用了重复退火过程,得到每一次退火过程所能找到的最好解current_best,然后进行下一次退火过程;采用了考虑负载平衡的初始化布线方法,假设P为处理器个数,则创建P个线程,并将芯片分为P个区域,将信号分区域地划分到每个线程的任务集;采用了多线程并行执行布线迭代,P个线程根据并行化的A*寻址算法并发地为各自任务集中每个信号寻找当前最合适的路径进行布线;采用重布线拥挤信号的方法,完成一次布线迭代。本发明实现了对布线过程的加速,使得最终电路的延时和线长两个重要性能指标基本不变的情况下,布局布线速度有了显著加快。

Description

一种实现现场可编程门阵列快速布局布线的方法
技术领域
本发明属于计算机技术领域,尤其涉及一种实现现场可编程门阵列快速布局布线的方法。
背景技术
近年来,随着集成电路技术的飞速发展,现场可编程门阵列(FPGA),因其有集成度高、逻辑资源丰富、设计灵活以及可重构性等特点,在航天领域和国防领域应用非常广泛,每年我国需要从国外进口大量现场可编程门阵列(FPGA)芯片以及配套软件,而国内现场可编程门阵列(FPGA)产业有待发展,制约国内现场可编程门阵列(FPGA)产业发展的因素,主要是缺乏自主研发的高性能高质量的现场可编程门阵列(FPGA)设计软件。
现场可编程门阵列(FPGA)的设计流程,主要包括设计输入、行为综合、逻辑综合、工艺映射、单元划分和逻辑单元装箱、布局和布线。其中,布局和布线是极为重要的环节,它直接耗费了现场可编程门阵列(FPGA)设计流程中绝大部分CPU时间,并且影响到整个电路的性能。
现场可编程门阵列(FPGA)的布局,就是基于一定的优化条件和约束准则将经过逻辑单元装箱后的电路网表文件描述的可配置逻辑单元CLB、I/O单元、异构模块等单元映射到现场可编程门阵列(FPGA)芯片内部物理位置的过程。现场可编程门阵列(FPGA)的布局问题可以描述为将M个模块放置到N个位置上,设X为当前的布局状态,成本函数Cost(X)表示每一种布局状态X的总成本,总成本越小的布局,其质量越好。现场可编程门阵列(FPGA)的布局问题的解空间非常巨大,用常规的穷举法在有限的时间内难以找到最优解,是一个NP难问题。现场可编程门阵列(FPGA)布局的成本函数Cost(X)的三个主要的优化目标是:平衡现场可编程门阵列(FPGA)中布线密度,确保在任意位置布线都有充足的布线资源;最小化关键路径延时,以提高电路速度;布局尽量紧密,以减少所需的布线资源。这三个目标并不是相互独立的,而是互相制约的,通常不能使每个目标都达到最优化,因此在优化过程中要对三个目标取折中,以取得总体最优的结果。目前学术界和工业界对现场可编程门阵列(FPGA)布局问题通常使用的是基于传统模拟退火算法的布局方法。
现场可编程门阵列(FPGA)的布线,就是为了按照电路的连接情况成功地连接现场可编程门阵列(FPGA)芯片中对应的逻辑单元,使这些连线与电路中的连线相对应,并保证在芯片中的资源没有被重用。现场可编程门阵列(FPGA)的布线问题可以简单地表述为将现场可编程门阵列(FPGA)的布线资源及其连接关系转换为布线资源图来描述,假设其为有向图G=(V,E),其中V就是布线资源图中的节点,E表示连接节点之间的开关;设一个电路由许多条信号组成,其中Ni表示第i条电路信号,Ni是信号源端节点Si和漏端节点Ti,j的集合,所以Ni是V的一个子集;因此布线问题就是要在有向图G中寻找连接所有Ni的轨迹,而且要保证所有轨迹不冲突。解决现场可编程门阵列(FPGA)的布线问题要平衡两个互相竞争的优化目标:消除拥挤与最小化关键路径延。目前学术界和工业界对现场可编程门阵列(FPGA)布线问题通常使用的是基于拥挤协商PathFinder算法的布线方法。
现有的解决现场可编程门阵列(FPGA)的布局问题的方法为,首先把可配置逻辑单元CLB、I/O单元、异构模块等逻辑单元随机地分配到FPGA各个位置上从而得到一个初始布局。随后,随机地选取一个逻辑单元,然后随机在Rlimit限定的范围内给它分配一个新的位置,计算由移动该逻辑单元到新位置所造成的成本函数差值。如果成本函数值减少,则接受逻辑单元的移动。如果成本函数值增大,虽然移动使得布局变更差,但是仍然存在接受的可能,产生随机数r,如果小于由Metropolis准则的接受概率exp(-ΔC/T)则接受逻辑单元的移动,其中ΔC是移动造成的成本函数的变化,否则拒绝。布局时成本函数Cost()关系到布局的优化方向,在现有的布局方法中成本函数的计算包括线长成本和时序成本:线长成本是整个电路中每个信号布线线长估计值的和,最小化线长成本关系到最小化布线资源的消耗并平衡布线密度以保证布线成功;时序成本是布局时所有布线路径的延时之和,最小化时序成本关系到最小化关键路径延时。同时成本函数Cost()还要通过权重参数正确地平衡最小化线长和最小化关键路径延时之间关系。Metropolis准则中的温度参数T,用于控制接受导致布局变差移动的可能性。一开始,T是非常高的,几乎所有的移动都被接受;随着布局优化,它的值逐渐减少,这样接受使布局变差的移动的概率是非常低的。接受一个使布局变差的移动带来的爬坡能力,使得模拟退火避免收敛到成本函数上的局部最优解。温度下降的速度、在每个温度下试图移动的次数和产生可能移动的方法、终止退火的退出标准是由退火表所决定。这种方法由于在每个温度T下必须做足够多的移动才能达到热力学平衡,同时为了取得接近最优的布局结果,温度T下降非常缓慢,所以会花费非常多的CPU时间。
现有的解决现场可编程门阵列(FPGA)的布线问题的方法为,一种基于拥挤协商PathFinder算法的迭代式布线方法,该方法使用了一种尝试平衡竞争目标:消除拥挤与最小化关键路径延时的迭代方法,该迭代方法采用多次布线迭代来完成,允许信号初步占用布线资源,但随后必须与其他信号协商并决定哪个信号最需要该布线资源。在每次迭代中都要进行一次时序分析以维持对那些可能十分关键的信号持续施加影响。在协商中通过让越是关键的信号越具有更优先的次序,最终将关键路径延时最小化。在每次迭代过程中,每条信号被拆线并按照预定的顺序布线。在布线资源图中的每一布线资源节点i的成本,表示节点i被信号占用次数,用以反映每个信号布线后以及一次完整布线迭代之后的拥挤状况。成本的更新迫使信号布线从器件的拥挤区域迁移至较离散分布的区域,为当前正处于拥挤区域的其他需求更大的信号腾出空间。由于该方法在每次布线迭代中,既要考虑最小化成本,即关键路径延时,又要排除布线资源重用导致的拥挤,使迭代过程必须持续进行直到没有布线资源重用为止,因而这会耗费大量的CPU时间。
发明内容
本发明实施例的目的在于提供一种实现现场可编程门阵列快速布局布线的方法,旨在解决现有的现场可编程门阵列布局、布线过程中CPU消耗时间长、效率低的问题。
本发明实施例是这样实现的,一种实现现场可编程门阵列快速布局布线的方法,该实现现场可编程门阵列快速布局布线的方法包括以下步骤:
第一步,初始布局,将经过逻辑单元装箱后的电路表示成一个有向图,该有向图的节点表示一个可配置逻辑单元CLB、I/O单元、异构模块等单元,有向图的边表示可配置逻辑单元CLB、I/O单元、异构模块等单元之间的连接;将电路中每一个可配置逻辑单元CLB、I/O单元、异构模块等单元随机地放置到现场可编程门阵列(FPGA)芯片内部物理位置,得到一个初始布局,设初始布局为当前布局;
第二步,计算初始温度T0,具体方法为:
步骤一,在当前布局上,通过随机地选择一对可配置逻辑单元CLB、I/O单元、异构模块等单元交换位置,或者选择一个可配置逻辑单元CLB、I/O单元、异构模块等单元与一个空白位置进行交换,得到一个新的布局;
步骤二,计算新布局的花费Cost:
Cost = Cost ′ + λ × tc - t c ′ t c ′ + ( 1 - λ ) × bc - b c ′ b c ′ ;
其中Cost'表示当前布局花费,初始布局时Cost'=1.0,tc、tc'、bc、bc'均为实数,tc和bc分别表示新布局的时序量和拥挤量,tc'和bc'分别表示当前布局的时序量和拥挤量,λ表示时序量的权重,1-λ表示拥挤量的权重,λ=0.5;
步骤三,用Metropolis准则判断是否接受新布局:设ΔC为新布局的花费Cost减去当前布局的花费Cost',如果ΔC<0,则接受新布局为当前布局,否则,设u为区间[0,1]内的一个随机数,如果u<exp(-ΔC/1030),则接受新布局为当前布局;
步骤四,对步骤一至三过程进行N次迭代,N是电路中可配置逻辑单元CLB、I/O单元、异构模块等单元的个数,设N次迭代中接受了K次新布局,该K次新布局的花费分别为Cost1,Cost2,……,CostK
步骤五,计算K次新布局的花费Cost1,Cost2,……,CostK的均方差D:
D = ( &Sigma; i = 1 K Cost i 2 - K &times; avg 2 ) / ( K - 1 ) ;
其中i取值从1到K,avg为K次新布局的花费Cost1,Cost2,……,CostK的平均值:
Figure BDA0000472230430000052
第三步,布局迭代,具体步骤为:
步骤一,执行第二步的步骤一至二过程,得到一个新布局,并得到新布局的花费Cost;
步骤二,根据当前温度T,用新布局的花费Cost与当前布局的花费Cost'之差ΔC判断是否接受新布局:若ΔC<0,则接受新布局为当前布局,否则,设u为区间[0,1]内的一个随机数,如果u<exp(-ΔC/T),则接受新布局为当前布局;
步骤三,用VFSR退火函数更新当前温度T:
T=T0exp(-ck),
k为接受新布局的总次数,c为实数常量,c=-log(TRS)×exp(-log(TAS));TRS为退火尺度系数,TRS=10-9,TAS为最大退火迭代次数,TAS计算方法为:
TAS=log0.8(0.05×H/T0)×M,
其中H为电路中的信号个数,M为马可夫链长度,M=10·N1.33
步骤四,对步骤一至三过程进行M次迭代;
步骤五,如果T<0.05×Cost/H,则执行步骤四,否则转步骤一继续执行;
第四步,局部优化布局,具体方法为:
步骤一,令当前温度T=0,对第三步的步骤一至步骤二过程进行M次迭代,由于当前温度T为0的情况下,只接受结果比当前布局好的新布局,所以进行M次迭代之后会找到局部最优布局;
步骤二,如果步骤一获得的局部最优布局的结果好于当前最优布局,则替换当前最优布局为该局部最优布局,当前最优布局为到目前为止找到的结果最好的布局;
第五步,如果累计第三步中对步骤一至步骤三过程迭代总次数超过TAS,则输出当前最优布局并转第六步进行布线;否则令当前温度T为前一次执行第三步过程中新布局的接受率第一次低于44%时的温度,转第三步开始重复退火;
第六步,布线初始化,具体方法为:
步骤一,将经过布局的电路中H个信号表示成H个有向图,每个有向图包含一个源节点src和多个目标节点sink,由于布局之后电路中所有可配置逻辑单元CLB、I/O单元、异构模块等单元都被放置并固定在物理单元上,所以源节点src和目标节点sink表示连接到物理单元的引脚,有向图的边表示待布线的线路;
步骤二,将现场可编程门阵列芯片逻辑结构和内部布线资源抽象成一个布线资源图RG,RG是一个无向图,该无向图的节点表示现场可编程门阵列芯片上的布线轨道,该无向图的边表示现场可编程门阵列芯片上的开关和引脚;
第七步,为每个线程划分任务集,假设处理器个数为P,则创建P个线程,并且为每个线程Thd[i]创建任务集SigSet[i],i∈{1,2,…,P};将布线资源图RG划分为P个大小相等的不交叉区域,对于每个信号,如果其落入区域i的目标节点sink个数越多,就将其分给区域i对应的任务集SigSet[i],i∈{1,2,…,P},并尽量保证每个任务集内的sink总数一样多;
第八步,对每个线程任务集SigSet[i]中所有信号按照sink个数从多到少排列;
第九步,启动P个线程,P个线程并行执行第十步;
第十步,并行布线迭代,具体方法为:
步骤一,线程Thd[i]按序从任务集SigSet[i]中取一个信号j进行拆线,即如果信号j已布线,则清空信号j在布线资源图RG上的布线路径,并对信号j的布线路径经历的布线资源节点的占有度减1,P个线程互斥执行此步骤,i∈{1,2,…,P};
步骤二,将信号j的源节点src加入到布线树RT[j],布线树RT[j]用来以树形结构保存信号j的源节点src到多个目标节点sink的布线路径;
步骤三,对信号j的每一个目标节点sink用A*寻路算法在布线资源图RG上寻找一条从布线树RT[j]中节点到该目标节点sink的花费最低的路径进行布线,并保存布线路径:
清空优先队列PQ,并将布线树RT[j]中每个布线资源节点x的路径成本PathCost(x)置为0,加入到优先队列PQ中,优先队列PQ用来按总成本TotalCost(x)从小到大排序来存储当前搜索到的布线资源节点,TotalCost(x)定义为:
TotalCost(x)=PathCost(x)+α·ExpectedCost(x,sink),
其中ExpectedCost(x,sink)代表从当前布线资源节点x到目标端点sink的期望成本估计值,α为启发式参数,α取值范围为1.0至1.4,路径成本PathCost(x)表示从源节点src到当前搜索到的节点x的路径上的每一个布线资源节点n的布线成本Cost(n)之和,Cost(n)表示布线资源节点n的布线成本:
Cost(n)=Crit(src,sink)×delay(n)+[1-Crit(src,sink)]×b(n)×p(n)×h(n),
其中Crit(src,sink)表示时序分析后信号j从源节点src到目标节点sink的边的关键度,delay(n)表示节点n的时序项,b(n)表示节点n的基本花费,p(n)表示节点n当前占有度,h(n)表示节点n的历史占有度;
取信号j尚未布线的目标节点中关键度Crit(src,sink)最大的目标节点sink,如果目标节点sink是优先队列PQ中第一个节点,则表示源节点src到目标节点sink的最佳路径已找到,否则转从优先级队列PQ中取出队首布线资源节点y,对与y相连的布线资源节点z计算总成本TotalCost(z),并将z按TotalCost(z)加入到优先级队列PQ中,重复执行直到找到目标节点sink的路径;
步骤四,对该路径经历的布线资源节点的占有度加1,P个线程互斥执行此步骤;
步骤五,将该路径加入到布线树RT[j],如果信号j还有目标节点sink,则转步骤步骤三,对信号j下一个目标节点sink寻路,否则,执行步骤六;
步骤六,如果任务集SigSet[i]中所有信号都完成了步骤一至步骤五过程,则转第十一步,否则,继续布线下一个信号;
第十一步,同步P个线程,即等待每个线程都执行完第十步;由主线程检查整个电路的布线是否合法,如果布线合法,即没有重复被占用的布线资源节点,则转第十四步;否则,对所有重复被占用的布线资源节点的历史占用度加1,并且加大拥挤惩罚度,进行时序分析,转第十二步;
第十二步,主线程重新布线拥挤的信号:
步骤一,统计拥挤布线资源节点个数占所有布线资源节点个数的比例,如果这个比例低于一定值,则执行步骤二;否则如果布线迭代次数不超过指定值Max,则进行时序分析并转第十步执行下一次布线迭代,否则转第十四步;
步骤二,统计所有拥挤的信号,拥挤的信号即为布线后包含了拥挤布线资源节点的信号,保存原来的拥挤惩罚,并将拥挤惩罚度设成一个很大的数,主线程串行布线这些拥挤的信号;
步骤三,恢复拥挤惩罚度为原来的值;
第十三步,检查整个电路的布线是否合法,如果布线合法,则转第十四步;否则如果布线迭代次数不超过指定值Max,则进行时序分析并转第十步执行下一次布线迭代,否则转第十四步;
第十四步,将其余P-1个线程合并到主线程,输出布线结果并退出布线。
本发明提供的实现现场可编程门阵列快速布局布线的方法,将应用于传统集成电路布局的超快速模拟重复退火VFSR算法的退火函数应用于现场可编程门阵列FPGA布局的温度更新,采用了重复退火过程以反复寻找更好的解,实现了对布局过程的加速;采用多线程方法对现有的基于拥挤协商PathFinder算法的布线方法进行并行化改进,并采用了重布线拥挤信号的方法缩短了布线的收敛过程,实现了对布线过程的加速。本发明提供的实现现场可编程门阵列快速布局布线的方法使得最终电路的时延和线长两个重要性能指标基本不变的情况下,布局布线速度有了显著加快。本发明方法简单,操作方便,较好的解决了现有的现场可编程门阵列布局、布线过程中CPU消耗时间长,效率低的问题。
附图说明
图1是本发明实施例提供的实现现场可编程门阵列快速布局布线的方法流程图;
图2是本发明实施例提供的将超快速模拟重复退火算法VFSR应用到现场可编程门阵列布局上的实现流程图;
图3是本发明实施例提供的采用多线程的PathFinder算法应用到现场可编程门阵列布线上的实现流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
下面结合附图及具体实施例对本发明的应用原理作进一步描述。
如图1所示,本发明实施例的实现现场可编程门阵列快速布局布线的方法包括以下步骤:
S101:布局初始化,得到初始布局并确定退火初始温度;
S102:布局迭代,每次迭代对当前布局做一个随机扰动,用Metropolis准则判断是否接受新布局,将应用于传统集成电路布局的超快速模拟重复退火VFSR算法的退火函数应用于现场可编程门阵列FPGA布局的温度更新;如果到达退出条件,则结束退火并进行局部优化布局,否则转入下一次布局迭代;采用了重复退火过程,得到每一次退火过程所能找到的最好解,然后将温度从冰点温度恢复到接受率为44%时的温度,进行下一次退火过程,如果碰到了比更好的解,便用该解替换;
S103:初始化布线,采用了考虑负载平衡的初始化布线方法,假设P为处理器个数,则创建P个线程,并将芯片分为P个区域,将信号分区域地划分到每个线程的任务集;
S104:布线迭代,采用了多线程并行执行布线迭代,P个线程根据并行化的A*寻址算法并发地为各自任务集中每个信号寻找当前最合适的路径进行布线;采用了重布线拥挤信号的方法,完成一次布线迭代后,如果存在拥挤并且拥挤布线资源节点比例少,则主线程重布线拥挤的信号;如果不存在拥挤,则布线成功,否则转入下一次布线迭代。
本发明的具体步骤为:
(1)初始布局:
(1a)将经过逻辑单元装箱后的电路表示成一个有向图,该有向图的节点表示一个可配置逻辑单元CLB、I/O单元、异构模块等单元,有向图的边表示可配置逻辑单元CLB、I/O单元、异构模块等单元之间的连接;
(1b)用现场可编程门阵列(FPGA)芯片表示成平面坐标系,该平面坐标系上每一个坐标位置(x,y)代表现场可编程门阵列(FPGA)芯片对应位置上的一个物理单元,将电路中每一个可配置逻辑单元CLB、I/O单元、异构模块等单元随机地放置到现场可编程门阵列(FPGA)芯片内部物理位置,得到一个初始布局,设初始布局为当前布局;
(2)计算初始温度T0
(2a)在当前布局上,通过随机地选择一对可配置逻辑单元CLB、I/O单元、异构模块等单元交换位置,或者选择一个可配置逻辑单元CLB、I/O单元、异构模块等单元与一个空白位置进行交换,得到一个新的布局;
(2b)计算新布局的花费Cost:
Figure BDA0000472230430000121
实数,tc和bc分别表示新布局的时序量和拥挤量,tc'和bc'分别表示当前布局的时序量和拥挤量,λ表示时序量的权重,1-λ表示拥挤量的权重,λ=0.5;
(2c)用Metropolis准则判断是否接受新布局:设ΔC为新布局的花费Cost减去当前布局的花费Cost',如果ΔC<0,则接受新布局为当前布局,否则,设u为区间[0,1]内的一个随机数,如果u<exp(-ΔC/1030),则接受新布局为当前布局;
(2d)对步骤(2a)至(2c)过程进行N次迭代,N是电路中可配置逻辑单元CLB、I/O单元、异构模块等单元的个数,设N次迭代中接受了K次新布局,该K次新布局的花费分别为Cost1,Cost2,……,CostK
(2e)计算K次新布局的花费Cost1,Cost2,……,CostK的均方差D:
D = ( &Sigma; i = 1 K Cost i 2 - K &times; avg 2 ) / ( K - 1 ) ;
其中i取值从1到K,avg为K次新布局的花费Cost1,Cost2,……,CostK的平均值:
Figure BDA0000472230430000131
(3)布局迭代:
(3a)执行步骤(2a)至(2b)过程,得到一个新布局,并得到新布局的花费Cost;
(3b)根据当前温度T,用新布局的花费Cost与当前布局的花费Cost'之差ΔC判断是否接受新布局:若ΔC<0,则接受新布局为当前布局,否则,设u为区间[0,1]内的一个随机数,如果u<exp(-ΔC/T),则接受新布局为当前布局;
(3c)用VFSR退火函数更新当前温度T:
T=T0exp(-ck),
k为接受新布局的总次数,c为实数常量,c=-log(TRS)×exp(-log(TAS));TRS为退火尺度系数,TRS=10-9,TAS为最大退火迭代次数,TAS计算方法为:
TAS=log0.8(0.05×H/T0)×M,
其中H为电路中的信号个数,M为马可夫链长度,M=10·N1.33
(3d)对步骤(3a)至(3c)过程进行M次迭代;
(3e)如果T<0.05×Cost/H,则执行步骤(4),否则转步骤(3a)继续执行;
(4)局部优化布局:
(4a)令当前温度T=0,对步骤(3a)至(3b)过程进行M次迭代,由于当前温度T为0的情况下,只接受结果比当前布局好的新布局,所以进行M次迭代之后会找到局部最优布局;
(4b)如果(4a)获得的局部最优布局的结果好于当前最优布局,则替换当前最优布局为该局部最优布局,当前最优布局为到目前为止找到的结果最好的布局;
(5)如果累计步骤(3)中对(3a)至(3c)过程迭代总次数超过TAS,则输出当前最优布局并转步骤(6)进行布线;否则令当前温度T为前一次执行步骤(3)过程中新布局的接受率第一次低于44%时的温度,转步骤(3)开始重复退火;
(6)布线初始化:
(6a)将经过布局的电路中H个信号表示成H个有向图,每个有向图包含一个源节点src和多个目标节点sink,由于布局之后电路中所有可配置逻辑单元CLB、I/O单元、异构模块等单元都被放置并固定在物理单元上,所以源节点src和目标节点sink表示连接到物理单元的引脚,有向图的边表示待布线的线路;
(6b)将现场可编程门阵列(FPGA)芯片逻辑结构和内部布线资源抽象成一个布线资源图RG,RG是一个无向图,该无向图的节点表示现场可编程门阵列(FPGA)芯片上的布线轨道,该无向图的边表示现场可编程门阵列(FPGA)芯片上的开关和引脚;
(7)为每个线程划分任务集:
(7a)假设处理器个数为P,则创建P个线程,并且为每个线程Thd[i]创建任务集SigSet[i],i∈{1,2,…,P};
(7b)将布线资源图RG划分为P个大小相等的不交叉区域,对于每个信号,如果其落入区域i的目标节点sink个数越多,就将其分给区域i对应的任务集SigSet[i],i∈{1,2,…,P},并尽量保证每个任务集内的sink总数一样多;
(8)对每个线程任务集SigSet[i]中所有信号按照sink个数从多到少排列;
(9)启动P个线程,P个线程并行执行步骤(10);
(10)并行布线迭代:
(10a)线程Thd[i]按序从任务集SigSet[i]中取一个信号j进行拆线,即如果信号j已布线,则清空信号j在布线资源图RG上的布线路径,并对信号j的布线路径经历的布线资源节点的占有度减1,P个线程互斥执行此步骤,i∈{1,2,…,P};
(10b)将信号j的源节点src加入到布线树RT[j],布线树RT[j]用来以树形结构保存信号j的源节点src到其多个目标节点sink的布线路径;
(10c)对信号j的每一个目标节点sink用A*寻路算法在布线资源图RG上寻找一条从布线树RT[j]中节点到该目标节点sink的花费最低的路径进行布线,并保存布线路径:
(10c1)清空优先队列PQ,并将布线树RT[j]中每个布线资源节点x的路径成本PathCost(x)置为0,加入到优先队列PQ中,优先队列PQ用来按总成本TotalCost(x)从小到大排序来存储当前搜索到的布线资源节点,TotalCost(x)定义为:
TotalCost(x)=PathCost(x)+α·ExpectedCost(x,sink)
其中ExpectedCost(x,sink)代表从当前布线资源节点x到目标端点sink的期望成本估计值,α为启发式参数,α取值范围为1.0至1.4,路径成本PathCost(x)表示从源节点src到当前搜索到的节点x的路径上的每一个布线资源节点n的布线成本Cost(n)之和,Cost(n)表示布线资源节点n的布线成本:
Cost(n)=Crit(src,sink)×delay(n)+[1-Crit(src,sink)]×b(n)×p(n)×h(n),
其中Crit(src,sink)表示时序分析后信号j从源节点src到目标节点sink的边的关键度,delay(n)表示节点n的时序项,b(n)表示节点n的基本花费,p(n)表示节点n当前占有度,h(n)表示节点n的历史占有度;
(10c2)取信号j尚未布线的目标节点中关键度Crit(src,sink)最大的目标节点sink,如果目标节点sink是优先队列PQ中第一个节点,则表示源节点src到目标节点sink的最佳路径已找到,否则转步骤(10c3);
(10c3)从优先级队列PQ中取出队首布线资源节点y,对与y相连的布线资源节点z计算总成本TotalCost(z),并将z按TotalCost(z)加入到优先级队列PQ中,重复执行步骤(10c3)直到找到目标节点sink的路径;
(10d)对该路径经历的布线资源节点的占有度加1,P个线程互斥执行此步骤;
(10e)将该路径加入到布线树RT[j],如果信号j还有目标节点sink,则转步骤(10c),对信号j下一个目标节点sink寻路,否则,执行步骤(10f);
(10f)如果任务集SigSet[i]中所有信号都完成了步骤(10a)至(10e)过程,则转步骤(11),否则,转步骤(10a)继续布线下一个信号;
(11)同步P个线程,即等待每个线程都执行完第(10)步;由主线程检查整个电路的布线是否合法,如果布线合法,即没有重复被占用的布线资源节点,则转第(14)步;否则,对所有重复被占用的布线资源节点的历史占用度加1,并且将拥挤惩罚度乘以一个惩罚因子ρ,ρ取值范围为1.0至1.5,进行时序分析,转第(12)步;
(12)主线程重新布线拥挤的信号:
(12a)统计拥挤布线资源节点个数占所有布线资源节点个数的比例,如果这个比例低于一定值,则执行步骤(12b);否则如果布线迭代次数不超过指定值Max,则进行时序分析并转第(10)步执行下一次布线迭代,否则转第(14)步;
(12b)统计所有拥挤的信号,拥挤的信号即为布线后包含了拥挤布线资源节点的信号,保存原来的拥挤惩罚,并将拥挤惩罚度设成10000.0,主线程串行布线这些拥挤的信号;
(12c)恢复拥挤惩罚度为原来的值;
(13)检查整个电路的布线是否合法,如果布线合法,则转第(14)步;否则如果布线迭代次数不超过指定值Max,则进行时序分析并转第(10)步执行下一次布线迭代,否则转第(14)步;
(14)将其余P-1个线程合并到主线程,输出布线结果并退出布线。
结合图2和图3和仿真实验对本发明做进一步的说明:
如图2所示,本发明的实现快速布局方法如下:
第一步,初始布局:随机地将经过装箱后的电路中每个可配置逻辑单元CLB、I/O单元、异构模块等单元随机地分配到现场可编程门阵列(FPGA)芯片的一个坐标位置,每个坐标最多放一个可配置逻辑单元CLB、I/O单元、异构模块等单元;
第二步,初始化温度,具体操作如下:
步骤一,在当前布局上,在现场可编程门阵列(FPGA)芯片全局范围内随机地选择一对可配置逻辑单元CLB、I/O单元、异构模块等单元交换位置,或者选择一个可配置逻辑单元CLB、I/O单元、异构模块等单元与一个空白位置进行交换,得到一个新的布局,计算新布局的花费Cost:
Figure BDA0000472230430000181
实数,tc和bc分别表示新布局的时序量和拥挤量,tc'和bc'分别表示当前布局的时序量和拥挤量,λ表示时序量的权重,1-λ表示拥挤量的权重,λ=0.5;
步骤二,用Metropolis准则判断是否接受新布局:设ΔC为新布局的花费Cost减去当前布局的花费Cost',如果ΔC<0,则接受新布局为当前布局,否则,设u为区间[0,1]内的一个随机数,如果u<exp(-ΔC/1030),则接受新布局为当前布局;
步骤三,对步骤二至三过程进行N次迭代,N是电路中可配置逻辑单元CLB、I/O单元、异构模块等单元的个数,设N次迭代中接受了K次新布局,计算K次新布局的布局成本Cost值的均方差D,初始化温度为T0=20×D,T=T0
第三步,在当前布局上,随机选择可配置逻辑单元A,在以A为中心、边长为2×Rlim的正方形范围内随机选择可配置逻辑单元B或者空余位置,然后交换位置产生一个新布局,计算新的布局花费相对于当前布局花费的改变量ΔC;
第四步,根据当前温度T,用Metropolis准则判断是否接受新布局:如果ΔC<0,那么可以接受这个改变,并且k加1,k为到目前为止接受新布局的总次数,否则,说明新布局是恶化解,并且k加1,设u为区间[0,1]内的一个随机数,如果u<exp(-ΔC/T),则接受新布局为当前布局,刚开始温度很高,大部分新布局都可以接受,等温度逐渐降低,最后很难接受,随着温度不断降低达到算法退出条件;
第五步,用VFSR退火函数对温度进行更新,这里采用了随迭代次数呈指数下降的方式:
T=T0exp(-ck);
其中k为到目前为止接受新布局的总次数,常量c的计算方法:
c=-log(TRS)×exp(-log(TAS));
其中TRS设定为10-9,TAS为最大退火迭代次数,TAS=log0.8(0.05×H/T0)×M,M=10·N1.33,H为电路中的信号个数;
第六步,对第三步到第五步过程执行M次迭代,设执行M次迭代,新布局的接受率为α,更新Rlim为Rlim×(1-0.44+α),Rlim初始值为整个FPGA芯片的跨度;
第七步,判断退火的退出条件:如果当T<0.05·Cost/H时,表示当前状态下质量难以再提高,达到退出条件;
第八步,令当前温度T=0,对第三步到第四步过程进行M次迭代,由于当前温度T为0的情况下,只接受结果比当前布局好的新布局,所以进行M次迭代之后会找到局部最优布局,如果局部最优布局的结果好于当前最优布局,则替换当前最优布局为该局部最优布局,当前最优布局为到目前为止找到的结果最好的布局;
第九步,如果累计第三步到第五步过程迭代总次数超过TAS,则输出当前最优布局并成功退出布局,否则,令当前温度T为前一次执行第三步到第五步过程中新布局的接受率α第一次低于44%时的温度,转第三步开始重复退火;
如图3所示,本发明实现现场可编程门阵列(FPGA)快速布线步骤如下:
第一步,创建布线资源图RG,将现场可编程门阵列(FPGA)芯片上的可编程单元抽象成线,将布线通道中轨道抽象成点;
第二步,将经过布局的电路中H个信号表示成H个有向图,该有向图拓扑有序,每个有向图包含一个源节点src和多个目标节点sink,对于每个信号,将源端src到每个目标节点sink的关键度Crit(src,sink)初始化为1.0,表示每个信号每条边都是关键的;
第三步,假设处理器个数为P,则创建P个线程,将所有信号均匀分配给P个线程:为每个线程Thd[i]创建任务集SigSet[i],i∈{1,2,…,P},将芯片化分为P个大小相等的不交叉区域,对于每个信号,如果其落入区域i的目标节点sink个数越多,就将其分给区域i对应的任务集SigSet[i],并尽量保证每个任务集内的sink总数一样多;
第四步,并发启动P个线程执行第五步至低十三步;
第五步,布线迭代循环,判断如果超过Max=50次迭代还没找到合法布线,则布线失败并退出,否则执行第六步;
第六步,每个线程Thd[i]对任务集SigSet[i]中每个信号j进行一次拆线布线的迭代,迭代第七步到第十四步,任务集SigSet[i]中所有信号布线完毕之后执行第十五步;
第七步,如果不是第一次布线迭代,则拆除前次迭代对j的布线RT[j],RT[j]为信号j对应的布线树,该变量以树形结构保存了信号每条布线所经过的布线资源节点,拆除布线的同时,将所占用的每个布线资源节点n的当前占有度p[n]减1,p[0...num_nodes]是个全局共享变量,记录了所有布线资源节点当前的占有次数,所有线程互斥方式更新p[0...num_nodes],num_nodes为布线资源图RG上的布线资源节点个数;
第九步,获取信号j的源节点src,将src加入到布线树RT[j]当中作为布线的起始节点;
第十步,如果信号j的所有目标节点布线完毕,则执行第六步,否则,按关键度Crit(src,sink)从大到小,取信号j的下一个目标节点sink进行布线,布线目标节点sink的过程采用A*寻路算法,具体过程为第十一步至第十二步;
第十一步,在寻找布线路径时,A*寻路算法维持了一个优先级队列PQ,该队列中存储了按照总成本TotalCost排序的布线资源节点,TotalCost包含PathCost和ExpectedCost两部分:
TotalCost(n)=PathCost(n)+α·ExpectedCost(n,sink);
PathCost(n)代表从信号源节点src到当前布线资源节点n的路径成本,而ExpectedCost(n,sink)代表从当前布线资源节点n到目标端点sink的期望成本估计值,PathCost和ExpectedCost这两部分经由一个α参数加权获得有方向性的启发式搜索,加快搜索目标节点sink的过程,α取值范围为1.0至1.4,初始化并清空PQ,将布线树RT[j]中所有布线资源节点加入到优先队列当中,每个节点的PathCost(n)设为Crit(src,sink)×delay(n);
第十二步,如果到目标节点sink的路径还没有找到,则算法挑选出优先级队列中总成本TotalCost(n)最小的布线资源节点n,对与n有边相连的资源点m计算其TotalCost(m),并将其插入到优先级队列PQ中,循环第十一步,TotalCost(m)计算过程:
Cost(m)=Crit(src,sink)×delay(m)+[1-Crit(src,sink)]×b(m)×p(m)×h(m);
PathCost(m)=Cost(n)+PathCost(n);
TotalCost(m)=PathCost(m)+α×ExpectedCost(m,sink);
其中Crit(src,sink)表示时序分析后信号j从源节点src到目标节点sink的边的关键度,delay(m)表示节点m的时序项,b(m)表示节点m的基本花费,p(m)表示节点n当前占有度,h(m)表示节点m的历史占有度;
第十三步,将找到的到sink的路径加入到布线树RT[j]中,并将路径上的每一个线资源节点n的当前占有度p[n]加1,p[0...num_nodes]是个全局共享变量,记录了所有布线资源节点当前的占有次数,所有线程互斥方式更新p[0...num_nodes],执行第十步布线下一个目标节点;
第十四步,同步P个线程,即等待每个线程都开始执行第十四步,由主线程单独对所有布线节点的历史占有度h(n)进行更新,如果本次布线占用了布线资源节点n,则对h(n)加1,执行时序分析,更新所有信号到目标节点sink的关键度Crit(src,sink),布局后的电路是由H个信号组成的拓扑图,时序分析就是进行拓扑排序从而确定关键路径,然后再根据关键路径确定每个信号每条边的关键度,Crit(src,sink)计算方法如下:
Figure BDA0000472230430000221
标节点sink之间连接的延时裕量,η是控制连接裕量对拥挤度和延时折中关系的参数;
第十五步,由主线程检查整个电路的布线是否合法,如果布线合法,即没有重复被占用的布线资源节点,则转第十八步;否则,对所有重复被占用的布线资源节点的历史占用度加1,并且将拥挤惩罚度乘以一个惩罚因子ρ,ρ取值范围为1.0至1.5,转第十六步;
第十六步,主线程重新布线拥挤的信号:统计拥挤布线资源节点个数占所有布线资源节点个数的比例,如果这个比例低于一定值,则统计所有拥挤的信号,拥挤的信号即为布线后包含了拥挤布线资源节点的信号,保存原来的拥挤惩罚,并将拥挤惩罚度设成10000.0,主线程串行布线这些拥挤的信号,恢复拥挤惩罚度为原来的值;否则如果布线迭代次数不超过指定值Max,则进行时序分析并转第十步执行下一次布线迭代,否则转第十八步;
第十七步,检查整个电路的布线是否合法,如果布线合法,则转第十八步;否则如果布线迭代次数不超过指定值Max,则进行时序分析并转第十步执行下一次布线迭代,否则转第十八步;
第十八步,将其余P-1个线程合并到主线程,输出布线结果并退出布线。
本发明的效果可以通过以下的仿真进一步的说明:
1、仿真条件,基于在多伦多大学的VPR(Versatile Placement and Routing)6.0版实现,VPR6.0是当前学术界在现场可编程门阵列(FPGA)布局布线问题上最好的工具之一,将FPGA快速布局布线算法(VFSR+ParRoute)与VPR6.0进行比较,仿真采用现场可编程门阵列(FPGA)结构文件为k4n4.xml,即为4输入的lut,每个可配置逻辑单元CLB中封装4个lut的FPGA结构,选用10个最大的并经过装箱工具T-VPack处理后的大规模国际标准电路,在HP Z800四核机器上并发使用四个线程进行布线仿真;
2、仿真内容,将上述经过装箱处理后的大模规电路,分别采用本发明的布局布线方法和国际上常用的VPR6.0布局布线方法进行仿真实验,对布局布线过程的CPU耗时进行对比,并统计和对比两种方法布线后电路的延时和线长结果,其中延时表示最终电路关键路径延时,它决定了这个电路最终的运行时间,线长表示最终电路所要用到的布线轨道单元个数,延时和线长结果决定了布局布线后电路的质量;
每次仿真重复10次,对仿真实验结果求平均值,得到本发明的布局布线方法(VFSR+ParRoute)与现有VPR6.0布局布线方法速度和质量仿真对比;
3、仿真结果,如表1所示:
表1本发明的布局布线方法与现有VPR6.0布局布线方法的速度结果对比
电路名称 VPR6.0(s) VFSR+ParRoute(s) 加速比
apex2 27.03 14.39 1.88
apex4 16.08 8.15 1.97
clma 368.87 132.77 2.78
disp 29.53 11.92 2.48
elliptic 85.14 31.12 2.74
ex5p 12.77 8.23 1.55
ex1010 134.24 64.14 2.09
frisc 88.97 39.97 2.26
pdc 128.44 51.93 2.47
s38417 190.51 126.03 1.51
总计 1081.58 488.65 2.173(平均)
表2本发明的布局布线方法与现有VPR6.0布局布线方法的质量结果对比
Figure BDA0000472230430000241
从表1可以看出,在耗时方面本发明的布局布线方法优于现有VPR6.0布局布线方法,平均加速比达到了2.173,从表2可以看出,在延时和线长方面本发明的布局布线方法和现有VPR6.0布局布线方法基本相当,最终总的延时降低了1.4%,延时方面的质量有所提高,总的线长增加了1%,线长方面的质量有所下降,实际应用中延时质量比线长质量优先级更高。
根据以上仿真实验和数据结果表明,本发明采取现有的超快速模拟重复退火算法VFSR加速布局过程,并采用多线程方法对现有PathFinder算法进行改进,实现对布线过程的加速,使得最终电路的延时和线长两个重要性能指标基本不变的情况下,布局布线速度有了显著加快。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (5)

1.一种实现现场可编程门阵列快速布局布线的方法,其特征在于,该实现现场可编程门阵列快速布局布线的方法具体步骤为:
第一步,将电路中每一个可配置逻辑单元CLB、I/O单元、异构模块等单元随机地放置到现场可编程门阵列芯片内部物理位置,得到一个初始布局;
第二步,计算初始温度T0
第三步,布局迭代;
第四步,局部优化布局;
第五步,如果累计第三步中对步骤一至步骤三过程迭代总次数超过TAS,则输出当前最优布局并转第六步进行布线;否则令当前温度T为前一次执行第三步过程中新布局的接受率第一次低于44%时的温度,转第三步开始重复退火;
第六步,布线初始化;
第七步,为每个线程划分任务集,假设处理器个数为P,则创建P个线程,并且为每个线程Thd[i]创建任务集SigSet[i],i∈{1,2,…,P};将布线资源图RG划分为P个大小相等的不交叉区域,对于每个信号,如果落入区域i的目标节点sink个数越多,就将分给区域i对应的任务集SigSet[i],i∈{1,2,…,P},并保证每个任务集内的sink总数一样多;
第八步,对每个线程任务集SigSet[i]中所有信号按照sink个数从多到少排列;
第九步,启动P个线程,P个线程并行执行第十步;
第十步,并行布线迭代;
第十一步,同步P个线程,即等待每个线程都执行完第十步;由主线程检查整个电路的布线是否合法,如果布线合法,即没有重复被占用的布线资源节点,则转第十四步;否则,对所有重复被占用的布线资源节点的历史占用度加1,并且加大拥挤惩罚度,进行时序分析,转第十二步;
第十二步,主线程重新布线拥挤的信号;
第十三步,检查整个电路的布线是否合法,如果布线合法,则转第十四步;否则如果布线迭代次数不超过指定值Max,则进行时序分析并转第十步执行下一次布线迭代,否则转第十四步;
第十四步,将其余P-1个线程合并到主线程,输出布线结果并退出布线。
2.如权利要求1所述的实现现场可编程门阵列快速布局布线的方法,其特征在于,在第三步中,布局迭代具体步骤为:
步骤一,在当前布局上,通过随机地选择一对可配置逻辑单元CLB、I/O单元、异构模块等单元交换位置,或者选择一个可配置逻辑单元CLB、I/O单元、异构模块等单元与一个空白位置进行交换,得到一个新的布局,得到一个新布局,并计算新布局的花费Cost:
Cost = Cost &prime; + &lambda; &times; tc - t c &prime; t c &prime; + ( 1 - &lambda; ) &times; bc - b c &prime; b c &prime; ;
其中Cost'表示当前布局花费,初始布局时Cost'=1.0,tc、tc'、bc、bc'均为实数,tc和bc分别表示新布局的时序量和拥挤量,tc'和bc'分别表示当前布局的时序量和拥挤量,λ表示时序量的权重,1-λ表示拥挤量的权重,λ=0.5;
步骤二,根据当前温度T,用新布局的花费Cost与当前布局的花费Cost'之差ΔC判断是否接受新布局:若ΔC<0,则接受新布局为当前布局,否则,设u为区间[0,1]内的一个随机数,如果u<exp(-ΔC/T),则接受新布局为当前布局;
步骤三,用VFSR退火函数更新当前温度T:
T=T0exp(-ck),
k为接受新布局的总次数,c为实数常量,c=-log(TRS)×exp(-log(TAS));TRS为退火尺度系数,TRS=10-9,TAS为最大退火迭代次数,TAS计算方法为:
TAS=log0.8(0.05×H/T0)×M,
其中H为电路中的信号个数,M为马可夫链长度,M=10·N1.33
步骤四,对步骤一至三过程进行M次迭代;
步骤五,如果T<0.05×Cost/H,则执行步骤四,否则转步骤一继续执行。
3.如权利要求1和2所述的实现现场可编程门阵列快速布局布线的方法,其特征在于,在第四步中,局部优化布局的具体方法为:
步骤一,令当前温度T=0,对第三步的步骤一至步骤二过程进行M次迭代,由于当前温度T为0的情况下,只接受结果比当前布局好的新布局,所以进行M次迭代之后会找到局部最优布局;
步骤二,如果步骤一获得的局部最优布局的结果好于当前最优布局,则替换当前最优布局为该局部最优布局,当前最优布局为到目前为止找到的结果最好的布局。
4.如权利要求1所述的实现现场可编程门阵列快速布局布线的方法,其特征在于,在第十步中,并行布线迭代的具体方法为:
步骤一,每个线程Thd[i]按序从任务集SigSet[i]中取一个信号j进行拆线,即如果信号j已布线,则清空信号j在布线资源图RG上的布线路径,并对信号j的布线路径经历的布线资源节点的占有度减1,P个线程互斥执行此步骤,i∈{1,2,…,P};
步骤二,将信号j的源节点src加入到布线树RT[j],布线树RT[j]用来以树形结构保存信号j的源节点src到多个目标节点sink的布线路径;
步骤三,对信号j的每一个目标节点sink用A*寻路算法在布线资源图RG上寻找一条从布线树RT[j]中节点到该目标节点sink的花费最低的路径进行布线,并保存布线路径:
清空优先队列PQ,并将布线树RT[j]中每个布线资源节点x的路径成本PathCost(x)置为Crit(src,sink)×delay(x),加入到优先队列PQ中,优先队列PQ用来按总成本TotalCost(x)从小到大排序来存储当前搜索到的布线资源节点,TotalCost(x)定义为:
TotalCost(x)=PathCost(x)+α·ExpectedCost(x,sink),
其中ExpectedCost(x,sink)代表从当前布线资源节点x到目标端点sink的期望成本估计值,α为启发式参数,α取值范围为1.0至1.4,路径成本PathCost(x)表示从源节点src到当前搜索到的节点x的路径上的每一个布线资源节点n的布线成本Cost(n)之和,Cost(n)表示布线资源节点n的布线成本:
Cost(n)=Crit(src,sink)×delay(n)+[1-Crit(src,sink)]×b(n)×p(n)×h(n),
其中Crit(src,sink)表示时序分析后信号j从源节点src到目标节点sink的边的关键度,delay(n)表示节点n的时序项,b(n)表示节点n的基本花费,p(n)表示节点n当前占有度,h(n)表示节点n的历史占有度;
取信号j尚未布线的目标节点中关键度Crit(src,sink)最大的目标节点sink,如果目标节点sink是优先队列PQ中第一个节点,则表示源节点src到目标节点sink的最佳路径已找到,否则转从优先级队列PQ中取出队首布线资源节点y,对与y相连的布线资源节点z计算总成本TotalCost(z),并将z按TotalCost(z)加入到优先级队列PQ中,重复执行直到找到目标节点sink的路径;
步骤四,对该路径经历的布线资源节点的占有度加1,P个线程互斥执行此步骤;
步骤五,将该路径加入到布线树RT[j],如果信号j还有目标节点sink,则转步骤步骤三,对信号j下一个目标节点sink寻路,否则,执行步骤六;
步骤六,如果任务集SigSet[i]中所有信号都完成了步骤一至步骤五过程,则转第十一步,否则,继续布线下一个信号。
5.如权利要求1所述的实现现场可编程门阵列快速布局布线的方法,其特征在于,在第十二步中,主线程重新布线拥挤的信号的具体方法为:
步骤一,统计拥挤布线资源节点个数占所有布线资源节点个数的比例,如果这个比例低于一定值,则执行步骤二;否则如果布线迭代次数不超过指定值Max,则进行时序分析并转第十步执行下一次布线迭代,否则转第十四步;
步骤二,统计所有拥挤的信号,拥挤的信号即为布线后包含了拥挤布线资源节点的信号,保存原来的拥挤惩罚,并将拥挤惩罚度设成一个很大的数,主线程串行布线这些拥挤的信号;
步骤三,恢复拥挤惩罚度为原来的值。
CN201410074915.7A 2014-03-03 2014-03-03 一种实现现场可编程门阵列快速布局布线的方法 Active CN103886137B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410074915.7A CN103886137B (zh) 2014-03-03 2014-03-03 一种实现现场可编程门阵列快速布局布线的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410074915.7A CN103886137B (zh) 2014-03-03 2014-03-03 一种实现现场可编程门阵列快速布局布线的方法

Publications (2)

Publication Number Publication Date
CN103886137A true CN103886137A (zh) 2014-06-25
CN103886137B CN103886137B (zh) 2017-02-08

Family

ID=50955028

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410074915.7A Active CN103886137B (zh) 2014-03-03 2014-03-03 一种实现现场可编程门阵列快速布局布线的方法

Country Status (1)

Country Link
CN (1) CN103886137B (zh)

Cited By (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105205205A (zh) * 2015-08-18 2015-12-30 北京大学 基于网表位置信息最优划分的fpga粗粒度并行布线方法
CN106168995A (zh) * 2016-07-04 2016-11-30 北京空间飞行器总体设计部 应用于航天器的图、表转换方法及转换系统
CN106407023A (zh) * 2016-09-06 2017-02-15 北京深维科技有限公司 基于多核处理器的现场可编程门阵列芯片的并行布线方法
CN106503291A (zh) * 2016-09-18 2017-03-15 北京深维科技有限公司 高扇出线网的物理综合方法
CN106528919A (zh) * 2016-09-27 2017-03-22 北京深维科技有限公司 一种基于集合划分的并行布线方法
CN106682306A (zh) * 2016-12-26 2017-05-17 西安电子科技大学 一种快速fpga布线方法
CN106846238A (zh) * 2017-03-01 2017-06-13 北京趣酷科技有限公司 一种Elf3D跨平台引擎系统
CN107944195A (zh) * 2017-07-05 2018-04-20 大连民族大学 一种复杂推移式活动隔断系统轨道布局优化方法
CN107977477A (zh) * 2016-10-21 2018-05-01 上海复旦微电子集团股份有限公司 Fpga芯片的版图生成方法及装置
CN108228537A (zh) * 2017-09-26 2018-06-29 武汉工程大学 一种智能室内设计用水平测量仪
CN109344541A (zh) * 2018-10-31 2019-02-15 京微齐力(北京)科技有限公司 一种根据区域布线拥挤度判定布线方向的方法
CN109543217A (zh) * 2018-10-16 2019-03-29 成都华微电子科技有限公司 串行等效的fpga并行布局方法
CN110414036A (zh) * 2019-06-06 2019-11-05 南京联英隆通智能科技有限公司 一种5g网络布线系统接插即用设备及控制方法
CN110704364A (zh) * 2019-06-18 2020-01-17 中国科学院电子学研究所 基于现场可编程门阵列的自动化动态重构方法及系统
CN110956012A (zh) * 2019-11-28 2020-04-03 福州大学 一种新型的流动型生物芯片流动层架构合成设计方法
CN111709205A (zh) * 2020-05-29 2020-09-25 成都华微电子科技有限公司 Fpga布线方法
CN111753484A (zh) * 2020-06-30 2020-10-09 无锡中微亿芯有限公司 一种基于电路性能的多裸片结构fpga的布局方法
CN112149376A (zh) * 2020-09-25 2020-12-29 无锡中微亿芯有限公司 一种基于最大流算法的fpga布局合法化方法
CN112527505A (zh) * 2020-12-18 2021-03-19 广东高云半导体科技股份有限公司 多线程综合的控制方法及装置
CN113642280A (zh) * 2020-04-27 2021-11-12 中国科学院上海微系统与信息技术研究所 超导集成电路的布局方法
CN115577664A (zh) * 2022-12-13 2023-01-06 中科亿海微电子科技(苏州)有限公司 一种可编程逻辑器件时钟信号布线的方法及装置
CN116738928A (zh) * 2023-07-07 2023-09-12 成都电科星拓科技有限公司 一种印刷电路板并行拆线重布方法、介质及装置
CN117521586A (zh) * 2023-12-29 2024-02-06 芯行纪科技有限公司 芯片设计的布局规划方法及相关设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102622468A (zh) * 2012-02-20 2012-08-01 苏州领佰思自动化科技有限公司 基于并行计算的大规模集成电路通道布线的方法及其系统

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102622468A (zh) * 2012-02-20 2012-08-01 苏州领佰思自动化科技有限公司 基于并行计算的大规模集成电路通道布线的方法及其系统

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
MARCEL GORT等: "Deterministic Multi-Core Parallel Routing for FPGAs", 《FIELD-PROGRAMMABLE TECHNOLOGY(FPT),2010 INTERNATIONAL CONFERENCE ON》 *
谢志宏: "FPGA布局布线算法的研究与优化", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *
赵刚: "FPGA结构和布局布线算法研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *
陈亮等: "针对一种岛式FPGA布局布线方法的研究与改进", 《微电子学与计算机》 *

Cited By (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105205205A (zh) * 2015-08-18 2015-12-30 北京大学 基于网表位置信息最优划分的fpga粗粒度并行布线方法
CN105205205B (zh) * 2015-08-18 2018-08-28 北京大学 基于网表位置信息最优划分的fpga粗粒度并行布线方法
CN106168995A (zh) * 2016-07-04 2016-11-30 北京空间飞行器总体设计部 应用于航天器的图、表转换方法及转换系统
CN106407023A (zh) * 2016-09-06 2017-02-15 北京深维科技有限公司 基于多核处理器的现场可编程门阵列芯片的并行布线方法
CN106503291A (zh) * 2016-09-18 2017-03-15 北京深维科技有限公司 高扇出线网的物理综合方法
CN106528919A (zh) * 2016-09-27 2017-03-22 北京深维科技有限公司 一种基于集合划分的并行布线方法
CN107977477A (zh) * 2016-10-21 2018-05-01 上海复旦微电子集团股份有限公司 Fpga芯片的版图生成方法及装置
CN106682306B (zh) * 2016-12-26 2020-07-07 西安电子科技大学 一种快速fpga布线方法
CN106682306A (zh) * 2016-12-26 2017-05-17 西安电子科技大学 一种快速fpga布线方法
CN106846238A (zh) * 2017-03-01 2017-06-13 北京趣酷科技有限公司 一种Elf3D跨平台引擎系统
CN107944195A (zh) * 2017-07-05 2018-04-20 大连民族大学 一种复杂推移式活动隔断系统轨道布局优化方法
CN107944195B (zh) * 2017-07-05 2021-07-09 大连民族大学 一种复杂推移式活动隔断系统轨道布局优化方法
CN108228537A (zh) * 2017-09-26 2018-06-29 武汉工程大学 一种智能室内设计用水平测量仪
CN109543217A (zh) * 2018-10-16 2019-03-29 成都华微电子科技有限公司 串行等效的fpga并行布局方法
CN109543217B (zh) * 2018-10-16 2023-05-02 成都华微电子科技股份有限公司 串行等效的fpga并行布局方法
CN109344541B (zh) * 2018-10-31 2023-01-31 京微齐力(北京)科技有限公司 一种根据区域布线拥挤度判定布线方向的方法
CN109344541A (zh) * 2018-10-31 2019-02-15 京微齐力(北京)科技有限公司 一种根据区域布线拥挤度判定布线方向的方法
CN110414036A (zh) * 2019-06-06 2019-11-05 南京联英隆通智能科技有限公司 一种5g网络布线系统接插即用设备及控制方法
CN110704364A (zh) * 2019-06-18 2020-01-17 中国科学院电子学研究所 基于现场可编程门阵列的自动化动态重构方法及系统
CN110956012A (zh) * 2019-11-28 2020-04-03 福州大学 一种新型的流动型生物芯片流动层架构合成设计方法
CN110956012B (zh) * 2019-11-28 2022-05-17 福州大学 一种流动型生物芯片流动层架构合成设计方法
CN113642280A (zh) * 2020-04-27 2021-11-12 中国科学院上海微系统与信息技术研究所 超导集成电路的布局方法
CN111709205A (zh) * 2020-05-29 2020-09-25 成都华微电子科技有限公司 Fpga布线方法
CN111753484A (zh) * 2020-06-30 2020-10-09 无锡中微亿芯有限公司 一种基于电路性能的多裸片结构fpga的布局方法
CN111753484B (zh) * 2020-06-30 2021-12-24 无锡中微亿芯有限公司 一种基于电路性能的多裸片结构fpga的布局方法
CN112149376A (zh) * 2020-09-25 2020-12-29 无锡中微亿芯有限公司 一种基于最大流算法的fpga布局合法化方法
CN112527505A (zh) * 2020-12-18 2021-03-19 广东高云半导体科技股份有限公司 多线程综合的控制方法及装置
CN112527505B (zh) * 2020-12-18 2021-11-26 广东高云半导体科技股份有限公司 多线程综合的控制方法及装置
CN115577664A (zh) * 2022-12-13 2023-01-06 中科亿海微电子科技(苏州)有限公司 一种可编程逻辑器件时钟信号布线的方法及装置
CN116738928A (zh) * 2023-07-07 2023-09-12 成都电科星拓科技有限公司 一种印刷电路板并行拆线重布方法、介质及装置
CN116738928B (zh) * 2023-07-07 2024-03-29 成都电科星拓科技有限公司 一种印刷电路板并行拆线重布方法、介质及装置
CN117521586A (zh) * 2023-12-29 2024-02-06 芯行纪科技有限公司 芯片设计的布局规划方法及相关设备
CN117521586B (zh) * 2023-12-29 2024-03-12 芯行纪科技有限公司 芯片设计的布局规划方法及相关设备

Also Published As

Publication number Publication date
CN103886137B (zh) 2017-02-08

Similar Documents

Publication Publication Date Title
CN103886137A (zh) 一种实现现场可编程门阵列快速布局布线的方法
CN110968543A (zh) 存储器中计算系统和方法
CN108052347B (zh) 一种执行指令选择的装置、方法及指令映射方法
Rashidi et al. Astra-sim: Enabling sw/hw co-design exploration for distributed dl training platforms
CN105205205B (zh) 基于网表位置信息最优划分的fpga粗粒度并行布线方法
Chen et al. A NoC-based simulator for design and evaluation of deep neural networks
Janakiraman et al. Multi-objective module partitioning design for dynamic and partial reconfigurable system-on-chip using genetic algorithm
Gong et al. Improving hw/sw adaptability for accelerating cnns on fpgas through a dynamic/static co-reconfiguration approach
Guerre et al. Hierarchical network-on-chip for embedded many-core architectures
Shi et al. FTDL: a tailored FPGA-overlay for deep learning with high scalability
CN113407479A (zh) 一种内嵌fpga的众核架构及其数据处理方法
CN113158599B (zh) 基于量子信息学的芯片和芯片化eda装置
Kreutz et al. Energy and latency evaluation of noc topologies
Prabhakar et al. SambaNova SN10 RDU: A 7nm dataflow architecture to accelerate software 2.0
JP7282980B2 (ja) オンチップ動作の初期化
Tan et al. Dynpac: Coarse-grained, dynamic, and partially reconfigurable array for streaming applications
Saravana Ram et al. An area efficient and low power consumption of run time digital system based on dynamic partial reconfiguration
CN113407238A (zh) 一种具有异构处理器的众核架构及其数据处理方法
CN105608046A (zh) 基于MapReduce编程模型的多核处理器架构
Himpe et al. High performance computing applied to dynamic traffic assignment
Liang et al. Design of 16-bit fixed-point CNN coprocessor based on FPGA
Asgari et al. MAHASIM: Machine-learning hardware acceleration using a software-defined intelligent memory system
CN111143208A (zh) 基于处理器技术辅助fpga实现ai算法的验证方法
Kapre Packet-switched on-chip FPGA overlay networks
CN111652552B (zh) 一种用于物流订单运输规划方法、系统及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant