可编程逻辑器件布线方法及装置与流程

文档序号:11919523阅读:253来源:国知局
可编程逻辑器件布线方法及装置与流程

本发明涉及电子技术领域,尤其涉及可编程逻辑器件布线方法及装置。



背景技术:

随着电子技术的飞速发展,数字电路的设计脚步也逐渐加快。可编程逻辑器件(Programmable Logic Device,PLD)因其具有可编程特性,有效降低了电路设计成本,缩短了系统设计的周期,提高了设计开发的灵活性。在对可编程逻辑器件进行设计时,通常是由设计人员在EDA终端(例如运行有EDA程序的计算机)上使用硬件描述语言对应用设计进行逻辑描述与逻辑综合,然后进行布局布线,最后成功生成位流下载到芯片上。可编程逻辑器件的电路规模越大,EDA终端的内存开销和运行时间将会越多。所以,评价一个可编程逻辑器件布线方案的关键指标就是布线时间和内存开销。

为了在起始端口与目的端口之间布线,实现起始端口与目的端口的连接,中间可能要经过若干级中间端口,这些中间端口会使得从起始端口到目的端口的连接路径存在多条。图1示出了从起始端口A到目的端口E之间所有的连接路径,由图中可知,要从端口A到端口E,必须经过中间的三组端口,第一组:B1、B2、B3,第二组:C1、C2、C3,第三组:D1、D2、D3。由于不同端口之间的布线代价不同,因此实际布线过程中很重要的一个部分就是从多条连接路径中规划出布线代价较低的实际布线路径。目前,比较通用的布线方案是采用A*算法(A-star algorithm),A*算法是一种由估值函数驱动的图搜索算法。估值函数为:

f(n)=g(n)+h(n);

其中,n为中间端口,g(n)为从起始端口到n端口的实际代价,h(n)为从n端口到目的端口的估计代价。由于A*算法的本质是一种图搜索算法,它的时间复杂度和空间复杂度都与起点到终点之间的节点数量相关,搜索的端口数量越多,搜索所需的时间越多,占用的内存也越大,其时间复杂度几乎呈指数级增长,这极大的影响到了布线的效率。

因此现在亟需提出一种新的布线方案,旨在降低现有布线方案搜索的复杂度,减少布线时间和内存开销。



技术实现要素:

本发明一种可编程逻辑器件布线方法及装置,主要解决的技术问题是:降低现有布线方案搜索的复杂度,减少布线时间和内存开销。

为解决上述技术问题,本发明提供一种可编程逻辑器件布线方法,包括:

确定可编程逻辑器件中参与布线的起始端口与目的端口之间的原始连接关系和原始布线代价;

基于所述原始连接关系筛选出所述可编程逻辑器件中的至少一个等价端口组,所述等价端口组中包括至少两个上级端口相同且下级端口相同的端口;

将所述等价端口组中的端口进行合并后形成替换端口,并确定各所述替换端口以及未参与合并的各原始端口之间的简化连接关系;

基于所述简化连接关系和所述原始布线代价确定所述起始端口与所述目的端口之间的实际布线路径进行布线。

进一步地,基于所述原始连接关系筛选出所述可编程逻辑器件中的至少一个等价端口组包括:

基于所述原始连接关系筛选出所述可编程逻辑器件中全部的等价端口组。

进一步地,各所述等价端口组中包括所述原始连接关系中具有相同上级端口和相同下级端口的全部端口。

进一步地,基于所述简化连接关系和所述原始布线代价确定所述起始端口与所述目的端口之间实际布线路径包括:

根据所述原始布线代价确定所述简化连接关系中具有直接连接关系的各端口之间的简化布线代价;

从所述起始端口开始确定当前布线端口,根据所述简化连接关系遍历与当前布线端口直接连接的下一级各端口到所述布线端口之间的简化布线代价,基于低代价优先原则选择从下一级各端口中选择出新的布线端口并再次遍历选择,直至选择出的布线端口为所述目的端口为止;

基于选择出的各布线端口规划初始布线路径;

将所述初始布线路径中由替换端口形成的布线端口替换为对应等价端口组中的一个端口并确定出实际布线路径。

进一步地,根据所述原始布线代价确定所述简化连接关系中具有直接连接关系的各端口之间的简化布线代价包括:

确定所述简化连接关系中任意两个端口的简化连接对应于所述原始连接关系中的原始连接;

根据原始布线代价计算所述原始连接的平均布线代价;

将所述平均布线代价作为所述简化连接的所述两个端口间的简化布线代价。

进一步地,将所述初始布线路径中由替换端口形成的布线端口替换为对应等价端口组中的一个端口包括:

进一步地,根据所述原始布线代价,基于低代价优先原则选用尚未被占用的端口替换所述替换端口。

进一步地,所述可编程逻辑器件为现场可编程门阵列。

本发明还提供一种可编程逻辑器件布线装置,包括:

原始确定模块,用于确定可编程逻辑器件中参与布线的起始端口与目的端口之间的原始连接关系和原始布线代价;

等价筛选模块,用于基于所述原始连接关系筛选出所述可编程逻辑器件中的至少一个等价端口组,所述等价端口组中包括至少两个上级端口相同且下级端口相同的端口;

关系简化模块,用于将所述等价端口组中的端口进行合并后形成替换端口,并确定各所述替换端口以及未参与合并的各原始端口之间的简化连接关系;

实际布线模块,用于基于所述简化连接关系和所述原始布线代价确定所述起始端口与所述目的端口之间的实际布线路径进行布线。

进一步地,所述实际布线模块用于根据所述原始布线代价确定所述简化连接关系中具有直接连接关系的各端口之间的简化布线代价;从所述起始端口开始确定当前布线端口,根据所述简化连接关系遍历与当前布线端口直接连接的下一级各端口到所述当前布线端口之间的所述简化布线代价,基于低代价优先原则选择从下一级各端口中选择出新的布线端口并再次遍历选择,直至选择出的布线端口为所述目的端口为止;并基于选择出的各布线端口规划初始布线路径;将所述初始布线路径中由替换端口形成的布线端口替换为对应等价端口组中的一个端口并规划出实际布线路径。

进一步地,所述可编程逻辑器件为现场可编程门阵列。

本发明的有益效果是:

本发明提供的可编程逻辑器件布线方法及装置,通过确定可编程逻辑器件中参与布线的起始端口与目的端口之间的原始连接关系和原始布线代价,然后基于原始连接关系筛选出可编程逻辑器件中的至少一个等价端口组,将等价端口组中的端口进行合并形成替换端口,并确定出替换端口和未参加合并的原始端口之间的简化连接关系,进而基于简化连接关系和原始布线代价确定起始端口与目的端口之间的实际布线路径进行布线。在这种布线方案当中,将两个及两个以上的上级端口相同且下级端口相同的端口合并为一个替换端口,并基于替换端口和原始端口形成简化连接关系,从而减少了布线过程中需要搜索的端口数目和搜索次数,从而降低了布线方案的空间复杂度和时间复杂度,降低了EDA终端在布线过程中的内存开销,节约了布线时间,提高了生产效率。

附图说明

图1为本发明各实施例中可编程逻辑器件原始连接关系的一种示意图;

图2为本发明实施例一提供的可编程逻辑器件布线方法的一种流程图;

图3为本发明中一个端口的上级端口与下级端口的一种示意图;

图4为本发明各实施例中可编程逻辑器件简化连接关系的一种示意图;

图5为实施例一中可编程逻辑器件布线装置确定起始端口与目的端口间实际布线路径的一种流程图;

图6为可编程逻辑器件布线装置根据原始布线代价确定简化布线代价的一种流程图;

图7为本发明实施例二提供的可编程逻辑器件布线装置的一种结构示意图;

图8为本发明实施例二提供的用于部署可编程逻辑器件布线装置的一种终端的硬件结构示意图。

具体实施方式

下面通过具体实施方式结合附图对本发明实施例作进一步详细说明。

实施例一:

为了解决现有技术中通过A*搜索算法对可编程逻辑器件进行布线的方案中,在可编程逻辑器件的电路规模大、连接关系复杂的情况下,EDA终端进行搜索计算的空间复杂度和时间复杂度极高,需要极大的内存消耗和极长的运行时间才能支持对可编程逻辑器件的布线设计的问题,本实施例提供一种可编程逻辑器件布线方法,该方法可以有可编程逻辑器件布线装置来执行,请参见图2:

S202、可编程逻辑器件布线装置确定可编程逻辑器件中参与布线的起始端口与目的端口之间的原始连接关系和原始布线代价。

如图1所示,端口A为一次布线的起始端口,而端口E为布线的目的端口,可编程逻辑器件布线装置需要先根据实际情况确定出从起始端口到目的端口之间连接关系,由于在后续的过程中,可编程逻辑器件布线装置还会对这些连接关系进行处理,因此,在本实施例中,将起始端口与目的端口之间实际可以存在的连接关系称为原始连接关系。如图1中各个端口之间的连接关系就是原始连接关系。在图1中,从起始端口A到目的端口E之间,需要经历三组中间端口。由于三组中间端口中每一组都不止一个端口,所以这三组中间端口为从起始端口到目的端口之间提供了多条连接路径。而这多条连接路径的布线代价是不相同,布线代价值的大小会影响到可编程逻辑器件布线装置对可编程逻辑器件的布线时间、布线内存消耗以及可编程逻辑器件最终的布线质量。为了在后续选择出最佳的连接路径作为实际布线路径进行布线,也就是选择出布线代价最合适的连接路径进行布线,可编程逻辑器件布线装置还需要确定出原始连接关系中的原始布线代价。

S204、可编程逻辑器件布线装置基于原始连接关系筛选出可编程逻辑器件中的至少一个等价端口组。

本实施例中的等价端口组是指两个或两个以上的端口具有相同的上级端口与相同的下级端口,则这些端口的集合可被称之为等价端口组。下面对本实施例中上级端口与下级端口的概念进行说明:假定从起始端口向目的端口传输数据,则针对某一个端口来说,先于该端口接收到数据,并将接收到的数据传输给该端口的就是其上级端口;对应的,该端口传输数据的对象就是其下级端口。当然,本领域技术人员应当明白的是,上述解释是基于从起始端口向目的端口传输数据而言,若是从目的端口向起始端口传输数据,则情况相反。如图3所示,起始端口30与第三端口33之间间隔有第一端口31和第二端口32。而第三端口33与目的端口35之间间隔有第四端口34。根据上述定义,我们可以确定第二端口32为第三端口33的上级端口,而第四端口34为第三端口33的下级端口。而对于第二端口32而言,第三端口33则是它的下级端口,第一端口31是其上级端口。值得注意的是,两个端口等价必须同时满足上级端口相同与下级端口相同这两个条件,而且“上级端口相同”不是指两个或多个端口之间存在相同的上级端口,而是指两个或多个端口之间拥有相同数目的上级端口,而且任意一个端口所拥有的所有上级端口都能在另外端口的上级端口中找到。相应的,“下级端口相同”指的是两个或多个端口之间拥有下级端口的数目相同,而且任意一个端口的所有拥有的下级端口都能在其他端口的下级端口中找到。在图1给出的原始连接关系中,B1,B2,B3这三个端口,上级端口都是起始端口A,而下级端口都包括且仅限于C1,C2,C3这三个端口。所以B1,B2,B3这三个端口互为等价端口,端口B1,B2,B3的集合也可以称为一个等价端口组。

S206、可编程逻辑器件布线装置等价端口组中的端口进行合并后形成替换端口,并确定各替换端口以及未参与合并的各原始端口之间的简化连接关系。

可编程逻辑器件布线装置确定出等价端口组之后,可以将一个等价端口组采用一个替换端口来代替,也就是将一个等价端口组中的两个或两个以上的端口合并压缩为一个替换端口。例如,在图1当中存在三个等价端口组,分别是{B1,B2,B3}、{C2,C3}以及{D2,D3},对于{B1,B2,B3}这个等价端口组,可编程逻辑器件布线装置可以采用端口B*来代替;对于{C2,C3}和{D2,D3}则采用C*与端口D*来替代。B*、C*与D*分别是三个等价端口组的替代端口。

经过合并压缩之后,原始连接关系中的端口数目将会在一定程度上减少,例如,在图1当中,经过合并之后,原本11个端口已经被简化为7个端口。合并后端口的数目等于参与合并的等价端口组的数目与未参加合并的端口数目之和。在图1当中,参与合并的等价端口组的数目为3,而未参与合并的端口包括端口A、C1、D1、E四个端口,所以,合并后的端口数目为3+4=7。端口数目减少了,因此原始连接关系也会发生相应的变化,例如图4示出的是对图1中的原始连接关系进行压缩简化后的简化连接关系。相对于图1的原始连接关系,图4中的简化连接关系已经得到了很大程度的简化,这种简化不仅体现在主观视觉上,而且在客观上也可以得到验证:

EDA终端在布线的时候,搜索原始连接关系中的端口,并计算每一连接路径所需的布线代价。基于图1的原始连接关系,EDA终端要搜索10个端口(搜索的时候不包括起始端口),需要计算布线代价的次数为3+3*3+(1+2*2)+1,即18次(从目的端口的上级端口到目的端口之间只需要计算一次)。而根据图4给出的简化连接关系,可编程逻辑器件布线装置只需要搜索7个端口,计算布线代价的次数已减少到6次。所以本实施例中的可编程逻辑器件布线装置可以通过合并等价端口组简化布线过程,降低搜索复杂度,节约了搜索时间与运行内存占用。

在本实施例中,为了便于后续搜索,因此,可编程逻辑器件布线装置在筛选等价端口组时,将原始连接关系中与满足上级端口相同且下级端口相同的端口归纳进一个等价端口组。这样的做法是为了保证在后续过程对端口数目达到最好的压缩效果。而实际上,当一份原始连接关系中包括多个等价端口时,可编程逻辑器件布线装置可以仅将部分等价端口归纳为一个等价端口组。例如针对图1中的B1,B2,B3,可编程逻辑器件布线装置可以只将其中的两个等价端口规划到一个等价端口组中,对于另外一个则不加入等价端口组,也不参与后续合并。或者,当一份原始关系中包括三个以上的等价端口时,可编程逻辑器件布线装置可以将这些等价端口划分为两个及以上的等价端口组。例如,当一份原始关系中有6个端口属于等价端口,按照上述示例,可编程逻辑器件布线装置可以将这6个等价端口划分为一个等价端口组,但事实上,可编程逻辑器件布线装置也还可以将这些等价端口划分为两个或三个等价端口组,各个等价端口组中端口的数目可以相同,也可以不同。这种情况下,虽然后续过程中可编程逻辑器件布线装置只能将6个等价端口压缩合并成两个或三个替换端口,压缩率没有将一个6个等价端口归为一个等价端口组的情况大,但是这相对于直接根据原始连接关系进行搜索的情况,还是减少了搜索节点降低了搜索复杂度。

可编程逻辑器件布线装置可以从原始连接关系中筛选出至少一个等价端口组。例如,针对图1的原始连接关系,可编程逻辑器件布线装置可以仅筛选出等价端口组{B1,B2,B3}和{C2,C3},对于D2和D3这两个等价端口,则不规划为一个等价端口组,也不进行合并。在这种情况下,合并后的简化连接关系中将还存在8个端口。这也在一定程度上减少了可编程逻辑器件布线装置的搜索量和搜索复杂度。可以理解的是,在实际过程中,可编程逻辑器件布线装置可以从原始连接关系中筛选出全部的等价端口组,以便对全部等价端口组进行合并处理,最大程度的减少可编程逻辑器件布线装置布线搜索时需要搜索的端口数目。

S208、可编程逻辑器件布线装置简化连接关系和原始布线代价确定起始端口与目的端口之间的实际布线路径进行布线。

可编程逻辑器件布线装置根据简化出来的压缩关系和原始布线代价确定实际布线路径可以大致分为两个阶段:第一阶段是确定初始布线路径;第二阶段是根据确定出来的初始布线路径确定出实际布线路径。第一阶段中确定出来的初始布线路径中可能包括替换端口,基于前面的介绍,可以理解的是,替换端口实质上是由两个或两个以上的端口构成的,而在实际布线过程中,只能选择这两个或两个以上端口中的一个进行布线,因此还必须有第二阶段,通过第二阶段将原本的替换端口再替换为一个实际端口。下面结合图5对确定起始端口与目的端口之间实际布线路径的过程进行介绍:

S502、可编程逻辑器件布线装置根据原始布线代价确定简化连接关系中具有直接连接关系的各端口之间的简化布线代价。

在图1中已经示出了具有直接连接关系的任意两个端口之间原始布线代价,根据原始布线代价就能够计算出简化连接关系中任意具有直接连接关系的两个端口之间的简化布线代价,因此简化连接关系与原始连接关系的对应关系已经是确定。下面结合附图对可编程逻辑器件布线装置根据原始布线代价确定简化布线代价的过程进行简单阐述,请参见图6:

S602、可编程逻辑器件布线装置确定简化连接关系中任意两个端口的简化连接对应于原始连接关系中的原始连接。

例如,图4当中端口A和替换端口B*之间的简化连接实际对应着图1当中端口A与端口B1,A与B2以及A与B3之间的原始连接。

S604、可编程逻辑器件布线装置根据原始布线代价计算原始连接的平均布线代价。

在原始布线代价中,端口A与端口B1之间的布线代价为1.5,端口A与端口B2之间的布线代价为1.4,而端口A与端口B3之间的布线代价为1.6。由此可以计算获得端口A与端口B1、B2以及B3之间的平均布线代价为(1.5+1.4+1.6)/3=1.5。

S606、可编程逻辑器件布线装置将平均布线代价作为简化连接的两个端口间的简化布线代价。

得到平均布线代价之后,可编程逻辑器件布线装置就可以将平均布线代价作为简化连接关系中端口A与端口B*之间的简化布线代价了。根据上述方案,可以计算出图4中其他端口之间的简化布线代价,如图4所示。

S504、可编程逻辑器件布线装置从当前布线端口的下一级各端口中选择新的布线端口。

可编程逻辑器件布线装置从起始端口开始确定当前布线端口,根据简化连接关系遍历与当前布线端口直接连接的下一级各端口到布线端口之间的简化布线代价,基于低代价优先原则选择从下一级各端口中选择出新的布线端口。

S506、判断选择出的布线端口是否为目的端口。

若是则执行S508,若否,则继续执行S504,再次遍历选择,直至选择出的布线端口为目的端口为止。

可以理解的是,S504是一个需要循环的过程,例如针对图4中的简化连接关系以及对应的简化布线代价,可编程逻辑器件布线装置从端口A出发,可以依次确定出B*端口、C1端口以及D1端口和E端口。

S508、可编程逻辑器件布线装置基于选择出的各布线端口规划初始布线路径。

根据确定出来的端口,可编程逻辑器件布线装置可以规划出初始布线路径为:从起始端口A出发,依次经过端口B*,端口C1以及端口D1后到达目的端口E。

S510、可编程逻辑器件布线装置将初始布线路径中由替换端口形成的布线端口替换为对应等价端口组中的一个端口并确定出实际布线路径。

由于初始布线路径中还包含替换端口,而替换端口并不是真实的端口,所以,为了得到实际布线路径,可编程逻辑器件布线装置还应当将替换端口替换为与替换端口对应的实际端口中的一个。在实际替换过程了,可编程逻辑器件布线装置应当考虑选择哪一个实际端口代替替换端口能够得到更小的布线代价,因此,在本实施例中,可编程逻辑器件布线装置基于低代价优先原则选用端口,如果与替换端口对应的端口中布线代价最低的端口已经被占用了,则可编程逻辑器件布线装置选择代价次低的端口代替替换端口。

可以理解的是,在S504中选择端口的步骤中,当需要在两条或两条简化连接中选择其中一条,而这两条或两条以上的简化连接中存在不止一条简化连接的简化布线代价为最低值,例如,当需要选择从端口b1、b2以及端口b*之间选择一个作为初始布线路径中端口a的下级端口,端口a与端口b1之间的简化布线代价等于端口a与端口b*之间的简化布线代价2.0,且小于端口a与端口b2之间的简化布线代价2.3。这时候,可以优先选择替换端口,因为替换端口b*与端口a之间的布线代价是通过计算至少两个原始布线代价的平均值得到的,例如,是计算端口a与端口b3以及端口a与端口b4之间原始布线代价的平均值得到的,因此,在替换端口对应的原始端口中极有可能存在一个或多个端口与端口a之间的原始布线代价小于2.0,例如,端口b3与端口b4同端口a之间的原始布线代价分别为1.9和2.1,则如果选择了替换端口b*,可以通过将替换端口替换为小于原始布线代价小于简化布线代价的实际端口,从而减少实际布线路径的布线代价。

最后,本实施例中提供的可编程逻辑器件布线方法可以针对各种类型的可编程逻辑器件,包括PROM(Programmable Read-Only Memory,可编程只读存储器)、EPROM(Erasable Programmable Read Only Memory,可擦除可编程存储器)、PLA(Programmable logic arrays,可编程逻辑阵列)、PAL(Programmable Array Logic,可编阵列逻辑)和GAL(generic array logic,通用阵列逻辑)等类型。其中,在PAL和GAL的基础上又发展出了应用更为广泛的CPLD(Complex Programmable Logic Device,复杂可编程逻辑器件)以及FPGA(Field-Programmable Gate Array,现场可编程门阵列)等。

本发明实施例提供的可编程逻辑器件布线方法,通过确定可编程逻辑器件中参与布线的起始端口与目的端口之间的原始连接关系和原始布线代价,确定出原始连接关系中的等价端口组,将等价端口组中的端口合并成一个替换端口,并确定出合并后的简化连接关系,从而基于简化连接关系和原始布线代价确定起始端口与目的端口之间的实际布线路径进行布线。在这种布线方案当中,将两个及两个以上的上级端口相同且下级端口相同的端口合并为一个替换端口,并基于替换端口和原始端口形成简化连接关系,从而减少了布线过程中需要搜索的端口数目和搜索次数,从而降低了布线方案的空间复杂度和时间复杂度,降低了EDA终端在布线过程中的内存开销,节约了布线时间,提高了生产效率。

实施例二:

本实施例提供一种可编程逻辑器件布线装置,用于执行实施例一提供的可编程逻辑器件布线方法,请参见图7中给出的可编程逻辑器件布线装置的结构示意图:

可编程逻辑器件布线装置70包括原始确定模块702、等价筛选模块704、关系简化模块706以及实际布线模块708,原始确定模块702用于确定可编程逻辑器件中参与布线的起始端口与目的端口之间的原始连接关系和原始布线代价;等价筛选模块704用于基于原始连接关系筛选出可编程逻辑器件中的至少一个等价端口组;关系简化模块706用于将等价端口组中的端口进行合并后形成替换端口,并确定各替换端口以及未参与合并的各原始端口之间的简化连接关系;实际布线模块708用于基于简化连接关系和原始布线代价确定起始端口与目的端口之间的实际布线路径进行布线。

如图1所示,端口A为一次布线的起始端口,而端口E为布线的目的端口,原始确定模块702需要先根据实际情况确定出从起始端口到目的端口之间连接关系,由于在后续的过程中,可编程逻辑器件布线装置70还会对这些连接关系进行处理,因此,在本实施例中,将起始端口与目的端口之间实际可以存在的连接关系称为原始连接关系。如图1中各个端口之间的连接关系就是原始连接关系。在图1中,从起始端口A到目的端口E之间,需要经历三组中间端口。由于三组中间端口中每一组都不止一个端口,所以这三组中间端口为从起始端口到目的端口之间提供了多条连接路径。而这多条连接路径的布线代价是不相同,布线代价值的大小会影响到可编程逻辑器件布线装置70对可编程逻辑器件的布线时间、布线内存消耗以及可编程逻辑器件最终的布线质量。为了在后续选择出最佳的连接路径作为实际布线路径进行布线,也就是选择出布线代价最合适的连接路径进行布线,原始确定模块702还需要确定出原始连接关系中的原始布线代价。

本实施例中等价筛选模块704所筛选的等价端口组是指两个或两个以上的端口具有相同的上级端口与相同的下级端口,则这些端口的集合可被称之为等价端口组。下面对本实施例中上级端口与下级端口的概念进行说明:假定从起始端口向目的端口传输数据,则针对某一个端口来说,先于该端口接收到数据,并将接收到的数据传输给该端口的就是其上级端口;对应的,该端口传输数据的对象就是其下级端口。当然,本领域技术人员应当明白的是,上述解释是基于从起始端口向目的端口传输数据而言,若是从目的端口向起始端口传输数据,则情况相反。如图3所示,起始端口30与第三端口33之间间隔有第一端口31和第二端口32。而第三端口33与目的端口35之间间隔有第四端口34。根据上述定义,我们可以确定第二端口32为第三端口33的上级端口,而第四端口34为第三端口33的下级端口。而对于第二端口32而言,第三端口33则是它的下级端口,第一端口31是其上级端口。值得注意的是,两个端口等价必须同时满足上级端口相同与下级端口相同这两个条件,而且“上级端口相同”不是指两个或多个端口之间存在相同的上级端口,而是指两个或多个端口之间拥有相同数目的上级端口,而且任意一个端口所拥有的所有上级端口都能在另外端口的上级端口中找到。相应的,“下级端口相同”指的是两个或多个端口之间拥有下级端口的数目相同,而且任意一个端口的所有拥有的下级端口都能在其他端口的下级端口中找到。在图1给出的原始连接关系中,B1,B2,B3这三个端口,上级端口都是起始端口A,而下级端口都包括且仅限于C1,C2,C3这三个端口。所以等价筛选模块704可以确定B1,B2,B3这三个端口互为等价端口,端口B1,B2,B3的集合也可以称为一个等价端口组。

等价筛选模块704确定出等价端口组之后,可以将一个等价端口组采用一个替换端口来代替,也就是将一个等价端口组中的两个或两个以上的端口合并压缩为一个替换端口。例如,在图1当中存在三个等价端口组,分别是{B1,B2,B3}、{C2,C3}以及{D2,D3},对于{B1,B2,B3}这个等价端口组,关系简化模块706可以采用端口B*来代替;对于{C2,C3}和{D2,D3}则采用C*与端口D*来替代。B*、C*与D*分别是三个等价端口组的替代端口。

经过合并压缩之后,原始连接关系中的端口数目将会在一定程度上减少,例如,在图1当中,经过合并之后,原本11个端口已经被简化为7个端口。合并后端口的数目等于参与合并的等价端口组的数目与未参加合并的端口数目之和。在图1当中,参与合并的等价端口组的数目为3,而未参与合并的端口包括端口A、C1、D1、E四个端口,所以,合并后的端口数目为3+4=7。端口数目减少了,因此原始连接关系也会发生相应的变化,例如图4示出的是对图1中的原始连接关系进行压缩简化后的简化连接关系。相对于图1的原始连接关系,图4中的简化连接关系已经得到了很大程度的简化,这种简化不仅体现在主观视觉上,而且在客观上也可以得到验证:

EDA终端在布线的时候,搜索原始连接关系中的端口,并计算每一连接路径所需的布线代价。基于图1的原始连接关系,EDA终端要搜索10个端口(搜索的时候不包括起始端口),需要计算布线代价的次数为3+3*3+(1+2*2)+1,即18次(从目的端口的上级端口到目的端口之间只需要计算一次)。而根据图4给出的简化连接关系,关系简化模块706只需要搜索7个端口,计算布线代价的次数已减少到6次。所以本实施例中的关系简化模块706可以通过合并等价端口组简化布线过程,降低搜索复杂度,节约了搜索时间与运行内存占用。

在本实施例中,为了便于后续搜索,因此,等价筛选模块704在筛选等价端口组时,将原始连接关系中与满足上级端口相同且下级端口相同的端口归纳进一个等价端口组。这样的做法是为了保证后续过程对端口数目达到最好的压缩效果。而实际上,当一份原始连接关系中包括多个等价端口时,等价筛选模块704可以仅将部分等价端口归纳为一个等价端口组。例如针对图1中的B1,B2,B3,等价筛选模块704可以只将其中的而两个等价端口规划到一个等价端口组中,对于另外一个则不加入等价端口组,也不参与后续合并。或者,当一份原始关系中包括三个以上的等价端口时,等价筛选模块704可以将这些等价端口划分为两个及以上的等价端口组。例如,当一份原始关系中有6个端口属于等价端口,按照上述示例,等价筛选模块704可以将这6个等价端口划分为一个等价端口组,但事实上,等价筛选模块704也还可以将这些等价端口划分为两个或三个等价端口组,各个等价端口组中端口的数目可以相同,也可以不同。这种情况下,虽然后续过程中关系简化模块706只能将6个等价端口压缩合并成两个或三个替换端口,压缩率没有将一个6个等价端口归为一个等价端口组的情况大,但是这相对于直接根据原始连接关系进行搜索的情况,还是减少了搜索节点降低了搜索复杂度。

等价筛选模块704可以从原始连接关系中筛选出至少一个等价端口组。例如,针对图1的原始连接关系,等价筛选模块704可以仅筛选出等价端口组{B1,B2,B3}和{C2,C3},对于D2和D3这两个等价端口,则不规划为一个等价端口组,也不进行合并。在这种情况下,合并后的简化连接关系中将还存在8个端口。这也在一定程度上减少了实际布线模块708的搜索量和搜索复杂度。可以理解的是,在实际过程中,等价筛选模块704可以从原始连接关系中筛选出全部的等价端口组,以便对全部等价端口组进行合并处理,最大程度的减少实际布线模块708布线搜索时需要搜索的端口数目。

实际布线模块708根据简化出来的压缩关系和原始布线代价确定实际布线路径可以大致分为两个阶段:第一阶段是确定初始布线路径;第二阶段是根据确定出来的初始布线路径确定出实际布线路径。第一阶段中确定出来的初始布线路径中可能包括替换端口,基于前面的介绍,可以理解的是,替换端口实质上是由两个或两个以上的端口构成的,而在实际布线过程中,只能选择这两个或两个以上端口中的一个进行布线,因此还必须有第二阶段,通过第二阶段将原本的替换端口再替换为一个实际端口。

在图1中已经示出了具有直接连接关系的任意两个端口之间原始布线代价,根据原始布线代价就能够计算出简化连接关系中任意具有直接连接关系的两个端口之间的简化布线代价,因此简化连接关系与原始连接关系的对应关系已经是确定。例如,图4当中端口A和替换端口B*之间的简化连接实际对应着图1当中端口A与端口B1,A与B2以及A与B3之间的原始连接。实际布线模块708可以根据原始布线代价计算原始连接的平均布线代价。

在原始布线代价中,端口A与端口B1之间的布线代价为1.5,端口A与端口B2之间的布线代价为1.4,而端口A与端口B3之间的布线代价为1.6。由此可以计算获得端口A与端口B1、B2以及B3之间的平均布线代价为(1.5+1.4+1.6)/3=1.5。

得到平均布线代价之后,实际布线模块708就可以将平均布线代价作为简化连接关系中端口A与端口B*之间的简化布线代价了。根据上述方案,可以计算出图4中其他端口之间的简化布线代价,如图4所示。

实际布线模块708从起始端口开始确定当前布线端口,根据简化连接关系遍历与当前布线端口直接连接的下一级各端口到布线端口之间的简化布线代价,基于低代价优先原则选择从下一级各端口中选择出新的布线端口并再次遍历选择,直至选择出的布线端口为目的端口为止。可以理解的是,该过程是一个需要循环的过程,例如针对图4中的简化连接关系以及对应的简化布线代价,实际布线模块708从端口A出发,可以依次确定出B*端口、C1端口以及D1端口和E端口。根据确定出来的端口,实际布线模块708可以规划出初始布线路径为:从起始端口A出发,依次经过端口B*,端口C1以及端口D1后到达目的端口E。

由于初始布线路径中还包含替换端口,而替换端口并不是真实的端口,所以,为了得到实际布线路径,实际布线模块708还应当将替换端口替换为与替换端口对应的实际端口中的一个。在实际替换过程了,实际布线模块708应当考虑选择哪一个实际端口代替替换端口能够得到更小的布线代价,因此,在本实施例中,实际布线模块708基于低代价优先原则选用端口,如果与替换端口对应的端口中布线代价最低的端口已经被占用了,则实际布线模块708选择代价次低的端口代替替换端口。

可以理解的是,在实际布线模块708选择端口的步骤中,当需要在两条或两条简化连接中选择其中一条,而这两条或两条以上的简化连接中存在不止一条简化连接的简化布线代价为最低值,例如,当需要选择从端口b1、b2以及端口b*之间选择一个作为初始布线路径中端口a的下级端口,端口a与端口b1之间的简化布线代价等于端口a与端口b*之间的简化布线代价2.0,且小于端口a与端口b2之间的简化布线代价2.3。这时候,可以优先选择替换端口,因为替换端口b*与端口a之间的布线代价是通过计算至少两个原始布线代价的平均值得到的,例如,是计算端口a与端口b3以及端口a与端口b4之间原始布线代价的平均值得到的,因此,在替换端口对应的原始端口中极有可能存在一个或多个端口与端口a之间的原始布线代价小于2.0,例如,端口b3与端口b4同端口a之间的原始布线代价分别为1.9和2.1,则如果选择了替换端口b*,可以通过将替换端口替换为小于原始布线代价小于简化布线代价的实际端口,从而减少实际布线路径的布线代价。

最后,本实施例中提供的可编程逻辑器件布线装置70可以针对各种类型的可编程逻辑器件,包括PROM(Programmable Read-Only Memory,可编程只读存储器)、EPROM(Erasable Programmable Read Only Memory,可擦除可编程存储器)、PLA(Programmable logic arrays,可编程逻辑阵列)、PAL(Programmable Array Logic,可编阵列逻辑)和GAL(generic array logic,通用阵列逻辑)等类型。其中,在PAL和GAL的基础上又发展出了应用更为广泛的CPLD(Complex Programmable Logic Device,复杂可编程逻辑器件)以及FPGA(Field-Programmable Gate Array,现场可编程门阵列)等。

可编程逻辑器件布线装置70可以部署在终端上,例如处理能力较为强大的台式电脑与笔记本电脑等。下面结合图8提供的终端对实现可编程逻辑器件布线装置的硬件结构进行介绍:

终端8包括处理器81、存储单元82以及交互单元83等,其中可编程逻辑器件布线装置的原始确定模块、等价筛选模块、关系简化模块以及实际布线模块均可以由处理器81来实现。而存储单元82中则可以存储供处理器81运行以实现可编程逻辑器件布线方法的一系列指令,交互单元83上可以向设计人员显示布线过程中的信息,并接收设计人员的指令并交由处理器81执行。

本发明实施例提供的可编程逻辑器件布线装置,通过确定可编程逻辑器件中参与布线的起始端口与目的端口之间的原始连接关系和原始布线代价,确定出原始连接关系中的等价端口组,将等价端口组中的端口合并成一个替换端口,并确定出合并后的简化连接关系,从而基于简化连接关系和原始布线代价确定起始端口与目的端口之间的实际布线路径进行布线。在这种布线方案当中,将两个及两个以上的上级端口相同且下级端口相同的端口合并为一个替换端口,并基于替换端口和原始端口形成简化连接关系,从而减少了布线过程中需要搜索的端口数目和搜索次数,从而降低了布线方案的空间复杂度和时间复杂度,降低了EDA终端在布线过程中的内存开销,节约了布线时间,提高了生产效率。

显然,本领域的技术人员应该明白,上述本发明实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在计算机存储介质(ROM/RAM、磁碟、光盘)中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。所以,本发明不限制于任何特定的硬件和软件结合。

以上内容是结合具体的实施方式对本发明实施例所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1