Fpga布线方法

文档序号:1098983 发布日期:2020-09-25 浏览:24次 >En<

阅读说明:本技术 Fpga布线方法 (FPGA wiring method ) 是由 鞠瑜华 白利琼 刘乙力 于 2020-05-29 设计创作,主要内容包括:FPGA布线方法,涉及集成电路技术。本发明包括下述步骤:1)检测是否存在目标器件布线模型,若不存在则报告错误,反之则进入下一步;2)解析模型并构造布线资源图;3)初始布线;4)检查布线次数是否已满,如果已满则直接输出布线结果,反之则进入下一步;5)检查是否存在未处理的布线拥挤,若存在则拆线重布,更新拥挤度信息,再次检测是否存在拥挤;若不存在则将布线次数加1并转到步骤4);其特征在于,所述步骤3)包括:(3.1)根据时序分析和布线资源对每条网线进行优先级计算;(3.2)按照优先级顺序对线网进行布线。本发明使得布线工具的效率得到明显提高。(An FPGA wiring method relates to the integrated circuit technology. The invention comprises the following steps: 1) detecting whether a target device wiring model exists or not, if not, reporting an error, otherwise, entering the next step; 2) analyzing the model and constructing a wiring resource diagram; 3) initial wiring; 4) checking whether the wiring times are full, if so, directly outputting a wiring result, and if not, entering the next step; 5) checking whether unprocessed wiring congestion exists, if yes, removing the wiring and re-arranging, updating congestion degree information, and detecting whether the congestion exists again; if not, adding 1 to the wiring times and going to step 4); characterized in that the step 3) comprises: (3.1) calculating the priority of each network cable according to the time sequence analysis and the wiring resources; and (3.2) wiring the line network according to the priority order. The invention enables the efficiency of the wiring tool to be improved significantly.)

FPGA布线方法

技术领域

本发明涉及集成电路技术。

背景技术

随着FPGA器件逻辑规模的增加和性能需求的增长,布线算法逐渐成为FPGA编译流程中运算时间的瓶颈。在设计配套的支持软件过程中,布线确定了逻辑单元之间的连线,是最为关键的步骤之一,它不仅影响到延时、功耗等方面的性能,也是FPGA支持软件流程中最耗时的步骤。

目前工业界及学术界的布线引擎大多都是基于路径搜索器(pathfinder)算法,主要是在减少布线资源冲突和时序优化两个目标之间寻找一个平衡点。时序关键路径设置较高的权重以便在资源发生冲突的时候优先使用时序关键资源达到时序最优,而时序不关键路径逐渐被推开,以解决拥塞问题。其流程如图1所示,在布线资源结点的基本成本下,对所有线网进行第一次布线,每条连线均以最小延时为目标进行布线,第一次布线结束后若存在布线重用冲突,这时不是只针对有布线冲突的线网进行布线,而是先提升布线资源结点的成本,然后对所有线网再次逐一布线。在迭代过程中,提升布线资源结点的成本就是通过协商机制决定某一布线资源结点分配给哪一个线网最为合适。这样反复地拆线重布电路中的各条线网,直到所有的拥挤度问题得到解决。

现有的pathfinder布线算法虽然能较好地兼顾拥挤度和延时,但是在布线过程中拆线重布次数过多,在多次拆线重布迭代过程中需要消耗大量的内存空间来存储所有的结点信息以及较长的执行时间来生成布线结果,导致布线时间过长,布线工具效率降低。

发明内容

本发明所要解决的技术问题是,针对上述pathfinder布线方法中拆线重布次数过多的问题提出了一种基于网线(源端到漏端)优先级分级的FPGA布线算法,通过计算网线的延时裕量和可用布线资源数确定每条网线的布线优先级顺序,减少布线过程中布线迭代的次数,提高布线工具运行效率。

本发明解决所述技术问题采用的技术方案是,FPGA布线方法,包括下述步骤:

1)检测是否存在目标器件布线模型,若不存在则报告错误,反之则进入下一步;

2)解析模型并构造布线资源图;

3)初始布线;

4)检查布线次数是否已满,如果已满则直接输出布线结果,反之则进入下一步;

5)检查是否存在未处理的布线拥挤,若存在则拆线重布,更新拥挤度信息,

再次检测是否存在拥挤;若不存在则将布线次数加一并转到步骤4);

其特征在于,

所述步骤3)包括:

(3.1)根据时序分析和布线资源对每条网线进行优先级计算;

(3.2)按照优先级顺序对线网进行布线。

所述步骤(3.1)包括:

(a)对于n条网线的集合S={s0,s1,…,si,…,sn-1},通过时序分析获得每条网线的延时裕量T={t0,t1,…,ti,…,tn-1},ti为网线si的延时裕量;

通过布线资源分析获得每条网线的资源数R={r0,r1,…,ri,…,rn-1},其中ri=rin+rout表示网线si的资源数;rin为输入资源数,表示其它模块到该漏端的路径数;rout为输出资源数,表示源端通过配对的布线资源模块的可到其它模块的路径数;

根据T和R计算网线延时余量因子T′={t0′,t1′,…,ti′,…,t′n-1}和布线资源因子R′={r0′,r1′,…,ri′,…,r′n-1};

Figure BDA0002516161230000021

(b)计算网线优先级G={g0,g1,…,gi,…,gn-1},gi为网线si的优先级权重数,gi值越小,优先级越高;G与延时余量因子T′和布线资源因子R′相关,其计算公式如下:

Figure BDA0002516161230000031

其中,Wt和Wr为预设的权重常数。

本发明对每条网线进行了优先级计算,按照优先级顺序依次布线,使得优先级越高的网线越先布线(优先级越高优先选择的资源的权利越大),大大减少了布线过程中拆线重布的次数,减少了布线迭代次数,最终使得布线工具的效率得到明显提高。

附图说明

图1是现有技术的流程图。

图2是本发明的流程图。

图3是实施例的示意图。

图4是实施例的开关盒内部结构示意图。

具体实施方式

本发明的发明点如下:

·采用优先级计算方式,结合时序分析和布线资源分析结果;

·按照优先级顺序对每条网线进行布线,以保证优先级最高的网线采用延时最短的路径最先开始布线,低优先级网线不占用高优先级线网资源,从而减少布线过程中的布线迭代次数。

·布线成本与网线优先级挂钩。

本发明的布线系统模块按功能可以分为四个模块,时序分析模块、布线资源分析模块、布线资源解析器和布线器。时序分析模块负责时序分析获得每条网线的延时裕量;布线资源分析模块负责布线资源分析获得每条网线的资源数;布线资源解析器负责解析布线资源模型,生成布线资源图;布线器利用布线资源图,结合合时序分析模块和布线资源分析模块得到的网线延时裕量和资源数级计算网线优先级顺序并依次布线,负责布线过程中的拥塞处理、成本更新和布线迭代。

本发明的布线算法的总体流程图如图2所示,其步骤如下:

1、检测是否存在目标器件布线模型,若不存在则报告错误,反之则进入下一步;

2、解析模型并构造布线资源图;

3、根据时序分析和布线资源对每条网线进行优先级计算;

4、按照优先级顺序对线网进行布线;

5、检查布线次数是否已满,如果已满则直接输出布线结果,反之则进入下一步;

6、检查是否存在未处理的布线拥挤,若存在则拆线重布,更新拥挤度信息,再次检测是否存在拥挤;若不存在转到5)。

其中,步骤3需要根据静态时序分析结果和布线资源分析,计算每个网线的优先级,具体实施:

设n条网线集合为S={s0,s1,…,si,…,sn-1},通过时序分析获得每条网线的延时裕量T={t0,t1,…,ti,…,tn-1},ti为网线si的延时裕量。通过布线资源分析获得每条网线的资源数R={r0,r1,…,ri,…,rn-1},ri=rin+rout为网线si的资源数。其中,rin输入资源数,表示其它模块到该漏端的路径数。rout为输出资源数,表示源端通过配对的布线资源模块的可到其它模块的路径数。

两个确定端点(起点到终点)之间的路线,即为需要布设的网线。例如图3,逻辑块L0的O0点到逻辑块L5的I1点,之间的路径即为一条网线。上述参数S、T的确定系现有技术,故不赘述。

图3为逻辑块通过开关盒互联示意图。其中L0-L5是功能逻辑块,M0-M5是开关盒。编号相同的是同一组。

图4为开关盒的内部结构。由于开关盒M的I0和I2端口连接对应逻辑块L的输出接口,因此计算通过开关盒输出端口的资源数时不应包含I0和I2。同理,M的O1端口连接到对应L的输入端口,因此计算源端通过开关盒M的输入端口的资源数时,不应包含O1。需要统计的M的端口都应该与L有之间关联,即I0,I2和O1,其资源数如下:

I0:2(I0-O0、I0-O2)

I2:1(I2-O2)

O1:2(I1-O1、I3-O1)

举例:线网L2的O0端口需要连接到L4的I1端口。

L2的O0连接M2的I0,故其资源数rout为2;L4的I1端口由M4的O1端口输入,因此资源数rin为2;总资源数为4(2+2)。

根据T和R计算网线延时余量因子T′={t0′,t1′,…,t′i,…,t′n-1}和布线资源因子R′={r0′,r1′,…,r′i,…,r′n-1}。

Figure BDA0002516161230000051

Figure BDA0002516161230000052

计算网线优先级G={g0,g1,…,gi,…,gn-1},gi为网线si的优先级权重数,G与延时余量因子T′和布线资源因子R′相关,其计算公式如下

其中,Wt和Wr为权重常数,可根据具体情况进行设定;G为优先级判断标准,G值越小,优先级越高。当ti′=0时,线网的延时裕量为0,将线网优先级标准置零。

其中,步骤4根据网线优先级进行布线,与现行布线策略的不同在于优先级越高越先进行布线(优先级越高优先选择的资源的权利越大)。按照gi值从小到大进行布线。

网线si使用布线资源结点m的布线成本可定义为

cost(m,i)=gi*delayElmore+ti′*b(m)*p(m)*h(m)

其中,delayElmore为延时项,b(m)、p(m)、h(m)分别代表了结点的基本成本、当前拥挤度成本和历史拥挤度成本(按照常规方法进行计算,具体解释如下)。

为了节省CPU运行时间,让逻辑单元块输入引脚和漏端的基本成本值b(m)都小于1。不管长度如何,将互连线段的成本设为1所得到的电路速度最快,这是因为它倾向于尽可能使用最少的布线资源。p(m)为当前拥挤度,只要一根网线被拆线重布时,就要更新当前拥挤度惩罚因子,可表示为

p(m)=1+max(0,[occupancy(m)+1-capacity(m)]pfac)

其中,occupancy(m)是当前使用布线资源m的线网数目,capacity(m)是有效使用结点m的最大线网数。只有在完成一次完整的布线迭代后,才会更新历史拥挤度惩罚因子。第i次布线迭代时其值为

每一次布线迭代时hfac和pfac就定义了所谓的布线策略,hfac可保持为一个常数,通常在0.2-1之间的任意取值所得到的效果都差不多。pfac初始值应当较小,这样对拥挤度的惩罚就小,然后在迭代过程中慢慢增大惩罚力度。

针对布线资源分析模块可进一步优化,在计算网线的资源数时,端口的资源数与具体器件和端口所在位置相关,故可以针对一个具体器件计算出其每个端口的资源数并进行存储。无论用户设计如何变化,只有其端口位置与器件具***置相对应即可查表寻值,提高优先级计算速度。存储表设计应包括:端口名,作为输入端口时可用资源数/资源因子,作为输出端口时可用资源数/资源因子,作为输入输出端口时可用资源数/资源因子。此外,端口的可用资源数不仅可以简单的计算成通往其它资源的路径数,也可对路径进行分类处理,增加分类计算因子,从而减少计算网线可用布线资源数的时间。

9页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种用于三维地质勘查的高频雷达探测电路及其探测方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类