CN106650047B - 可编程逻辑器件布局方法及装置 - Google Patents
可编程逻辑器件布局方法及装置 Download PDFInfo
- Publication number
- CN106650047B CN106650047B CN201611103547.XA CN201611103547A CN106650047B CN 106650047 B CN106650047 B CN 106650047B CN 201611103547 A CN201611103547 A CN 201611103547A CN 106650047 B CN106650047 B CN 106650047B
- Authority
- CN
- China
- Prior art keywords
- logic unit
- deployment
- logic
- reasonable
- area
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
Abstract
本发明提供一种可编程逻辑器件布局方法及装置,通过筛选出合理部署区域小于预设面积阈值的第一逻辑单元,并在对其他逻辑单元进行部署以前,先根据预先创建的部署指示对第一逻辑单元进行部署设置。基于部署指示的指示,保证尽量将第一逻辑单元设置到其自身的合理部署区域内,然后才对其他逻辑单元进行部署。在确保第一逻辑相对其他逻辑单元的有限合理部署区域不被其他逻辑单元占用的基础上,保障第一逻辑单元被设置到自身的合理部署区域,提升对第一逻辑单元布局的合理性和整体布局的正确性。降低了布局后对可编程逻辑器件上逻辑单元进行大范围挪动修改的风险,提升了可编程逻辑器件布局的效率和性能。
Description
技术领域
本发明涉及电子技术领域,尤其涉及可编程逻辑器件布局方法及装置。
背景技术
随着电子技术的飞速发展,数字电路的设计脚步也逐渐加快。可编程逻辑器件(Programmable Logic Device,PLD)因其具有可编程特性,有效降低了电路设计成本,缩短了系统设计的周期,提高了设计开发的灵活性。在对可编程逻辑器件进行设计时,通常是由设计人员在EDA终端(例如运行有EDA程序的计算机)上使用硬件描述语言对应用设计进行逻辑描述与逻辑综合,然后进行布局布线,最后成功生成位流下载到芯片上。
布局布线是可编程逻辑器件中举足轻重的过程,因为布局布线的处理效果可能直接影响到可编程逻辑器件的性能:例如,在可编程逻辑器件中,有些特殊的逻辑单元,如APM(乘法单元)或DRM(存储单元),只能被部署在预先被规划出的、面积较小的合理部署区域中。一旦预先规划出的合理部署区域被占用,或者是因为其他原因使得这些逻辑单元被部署到了合理部署区域以外的地方,则可能会导致可编程逻辑器件布局不合理,需要大肆调整的问题。
目前,现有技术中通常基于全局密度模型对需要部署到可编程逻辑器件上的所有逻辑单元进行部署。全局密度模型是根据可编程逻辑器件上实际部署完成的各逻辑单元以及各逻辑单元设置位置而抽象建立的一种软件模型,其能够体现可编程逻辑器件上各个区域当前逻辑单元部署的密集程度。现有技术中在需要部署一个逻辑单元时,会直接根据全局密度模型,并基于密度最小原则选择可编程逻辑器件上当前密度最小的区域作为当前待部署逻辑单元的设置位置,以满足可编程逻辑器件拥塞度小的要求。在这种情况下,APM与DRM的合理部署区域很有可能被其他逻辑单元占用从而导致APM或DRM只能设置到其他区域中;或者也有可能存在这种情况:在部署APM或DRM时,虽然APM或DRM的合理部署区域上还有足够的空间,但是根据全局密度模型的指示,其他区域的密度更低,更适合设置APM或DRM,从而使得APM或DRM被设置到合理部署区域以外。也就是说,全局密度模型给出了错误的指示,从而导致可编程逻辑器件的布局不合理。
综上,现在亟需提出一种新的可编程逻辑器件布局方案,用以解决现有技术中单纯基于全局密度模型对可编程逻辑器件进行布局而导致合理部署区域较小的逻辑单元无法被合理部署的问题。
发明内容
本发明提供的可编程逻辑器件布局方法及装置,主要解决的技术问题是:解决现有技术中基于全局密度模型对可编程逻辑器件进行布局,导致合理部署区域小的逻辑单元无法被合理部署的问题。
为解决上述技术问题,本发明实施例提供一种可编程逻辑器件布局方法,包括:
从需要部署到可编程逻辑器件上的各逻辑单元中筛选出满足预设条件的第一逻辑单元,所述预设条件包括自身合理部署区域小于预设面积阈值;
根据预先创建的部署指示对所述第一逻辑单元进行部署设置,所述部署指示基于所述第一逻辑单元的合理部署区域创建,用于指示将所述第一逻辑单元部署到其合理部署区域;
对除第一逻辑单元以外的需要部署到可编程逻辑器件上的其他逻辑单元进行部署。
进一步地,所述预设条件还包括:要求与自身相连的第二逻辑单元的时延小于预设时延阈值。
进一步地,对除第一逻辑单元以外的需要部署到可编程逻辑器件上的其他逻辑单元进行部署包括:
对第二逻辑单元进行部署,所述第二逻辑单元为与所述第一逻辑单元相连的逻辑单元;
在所述第二逻辑单元部署完成后部署第三逻辑单元,所述第三逻辑单元为除第一逻辑单元与第二逻辑单元以外需要部署到所述可编程逻辑器件上的逻辑单元。
进一步地,对第二逻辑单元进行部署包括:
以所述第一逻辑单元的第一部署位置为中心,根据各所述第二逻辑单元与所述第一逻辑单元之间的距离要求确定所述第二逻辑单元的第二部署位置;
根据确定出的所述第二部署位置设置所述第二逻辑单元。
进一步地,在所述第二逻辑单元部署完成后部署第三逻辑单元包括:
建立所述可编程逻辑器件上已部署逻辑单元的全局密度模型;
根据所述全局密度模型选择密度小于预设密度阈值的区域设置所述第三逻辑单元。
进一步地,所述可编程逻辑器件包括现场可编程门阵列。
进一步地,所述第一逻辑单元包括乘法单元和/或存储单元。
进一步地,根据预先创建的部署指示对所述第一逻辑单元进行部署设置之前还包括:
确定所述第一逻辑单元的合理部署区域;
为所述可编程逻辑器件上的各区域设置合理梯度,所述合理梯度用于表征对应区域部署所述第一逻辑单元合理性的高低,所述合理梯度值越小则表征越适合部署所述第一逻辑单元,距离所述合理部署区域越近,则合理梯度值越小;
将所述合理梯度作为所述部署指示;
根据预先创建的部署指示对所述第一逻辑单元进行部署设置包括:
根据所述可编程逻辑器件上的各区域的合理梯度,选择合理梯度值变化最大的区域设置所述第一逻辑单元。
进一步地,根据预先创建的部署指示对所述第一逻辑单元进行部署设置之前还包括:
确定所述第一逻辑单元的合理部署区域,为所述合理部署区域设置合理标识,并将所述部署合理梯度作为所述部署指示;
根据预先创建的部署指示对所述第一逻辑单元进行部署设置包括:
选择所述可编程逻辑器件上具有合理标识的区域部署所述第一逻辑单元。
本发明实施例还提供一种可编程逻辑器件布局装置,包括:
筛选模块,用于从需要部署到可编程逻辑器件上的各逻辑单元中筛选出第一逻辑单元,所述第一逻辑单元为合理部署区域小于预设面积阈值且对要求之相连的第二逻辑单元的时延小于预设时延阈值的逻辑单元;
第一部署模块,用于根据预先创建的部署指示对所述第一逻辑单元进行部署设置,所述部署指示基于所述第一逻辑单元的合理部署区域创建,用于指示将所述第一逻辑单元部署到其合理部署区域;
其他部署模块,用于对除第一逻辑单元以外的需要部署到可编程逻辑器件上的其他逻辑单元进行部署。
本发明的有益效果是:
本发明提供的可编程逻辑器件布局方法及装置,通过从需要部署到可编程逻辑器件上的各逻辑单元中筛选出合理部署区域小于预设面积阈值的第一逻辑单元,并在对其他逻辑单元进行部署以前,先根据预先创建的部署指示对第一逻辑单元进行部署设置。基于部署指示的指示作用,保证尽量将第一逻辑单元设置到其自身的合理部署区域内。然后才对除第一逻辑单元以外的其他逻辑单元进行部署。在确保第一逻辑相对其他逻辑单元的有限合理部署区域不被其他逻辑单元占用的基础上,保障第一逻辑单元被设置到自身的合理部署区域,提升对第一逻辑单元布局的合理性,进而提升可编程逻辑器件整体布局的正确性。降低了在布局完成后再对可编程逻辑器件上逻辑单元进行大范围挪动修改的风险,提升了可编程逻辑器件布局的效率和性能。
附图说明
图1为本发明实施例一提供的可编程逻辑器件布局方法的一种流程图;
图2为本发明实施例一中创建基于合理梯度的部署指示的一种流程图;
图3为本发明各实施例中为可编程逻辑器件上各区域设置合理梯度值的一种示意图;
图4为本发明各实施例中为可编程逻辑器件上各区域设置合理梯度值的另一种示意图;
图5为本发明各实施例中为可编程逻辑器件上各区域设置合理梯度值的又一种示意图;
图6为本发明实施例二提供的可编程逻辑器件布局装置的一种结构示意图;
图7为本发明实施例二提供的可编程逻辑器件布局装置的另一种结构示意图;
图8为本发明实施例二提供的用于部署可编程逻辑器件布局装置的一种终端的硬件结构示意图。
具体实施方式
下面通过具体实施方式结合附图对本发明实施例作进一步详细说明。
实施例一:
为了提升可编程逻辑器件布局的合理性,保障那些在可编程逻辑器件上并不是全局都可部署的逻辑单元,即那些自身合理部署区域较小的逻辑单元能够被合理部署,本实施例提供一种可编程逻辑器件布局方法,请参见图1:
S102、可编程逻辑器件布局装置从需要部署到可编程逻辑器件上的各逻辑单元中筛选出满足预设条件的第一逻辑单元。
在本实施例中,第一逻辑单元是需要部署到可编程逻辑器件上的逻辑单元中满足预设条件的逻辑单元,预设条件中包括自身的合理部署区域小于预设面积阈值。也就是说,作为第一逻辑单元的必要条件是一个逻辑单元自身的合理部署区域小于预设面积阈值。
可编程逻辑器件布局装置根据预设面积阈值筛选出合理部署区域较小的逻辑单元作为第一逻辑单元,便于后续部署过程能够根据各逻辑单元合理部署区域的大小来分时序部署。预设面积阈值可以由布局设计人员根据当前布局的需要自定义设置。当然可以理解的是,在对一个可编程逻辑器件进行布局规划的时候,可能会给不同的逻辑单元规划出大小不同的合理部署区域。针对不同的逻辑单元,应当要设置不同的预设面积阈值。因此,布局设计人员在自定义设置预设面积阈值时,应当考虑当前待部署逻辑单元本身的合理部署区域。
另外,在本实施例的一个示例当中,满足作为第一逻辑单元的预设条件还可以包括要求与自身相连的第二逻辑单元的时延小于预设时延阈值。在该示例当中,第一逻辑单元是指那些自身合理部署区域较小,并且还要求与自身相连的第二逻辑单元的时延小于预设时延阈值。在选择第一逻辑单元时之所以要考虑一个逻辑单元对与自身连接的其他逻辑单元时延的要求,这主要是由于APM或者DRM这些逻辑单元不仅合理部署区域比较小,而且这些逻辑单元因为涉及到数据计算处理与数据的读取与写入,因此,要求与自身连接的第二逻辑单元的时延与自身保持一致。这些逻辑单元一旦部署不合理,则在后续从初次部署位置上移动到合理部署区域时,会使得与自身相连的第二逻辑单元距离自身较远。应当理解的是,距离将会影响到第二逻辑单元与第一逻辑单元之间输入输出时延的大小,一旦距离较远,则很难保证这些第二逻辑单元的时延与第一逻辑单元一致。
毫无疑义的是,本实施例的逻辑单元包括却不限于APM与DRM,其可以是APM与DRM中的至少一种,也可以是其他任何合理部署区域小于预设面积阈值,且要求与自身相连的第二逻辑单元的时延小于预设时延阈值的逻辑单元。
在本实施例中,预设时延阈值也是可以由布局设计人员根据当前实际的布局需求进行灵活设置的。
S104、可编程逻辑器件布局装置根据预先创建的部署指示对第一逻辑单元进行部署设置。
可编程逻辑器件布局装置在筛选出第一逻辑单元后,先对第一逻辑单元进行部署,由于预先为第一逻辑单元规划的合理部署区域较小,并不能在可编程逻辑器件的整体区域上进行全面部署。现有技术中建立全局密度模型来进行逻辑单元部署的方案在本实施例中已经几乎无效,因为第一逻辑单元是在其他合理部署区域面积较大、或者是可全局部署的那些逻辑单元之前部署的,甚至第一逻辑单元是最先在可编程逻辑器件上进行部署的,所以此时无法针对可编程逻辑器件建立起具有参考价值的全局密度模型。如果继续按照现有技术的方案对第一逻辑单元进行部署,这就相当于随手将一把种子撒到空地上,谁也无法保证这些种子都落到空地中的一个特定区域内。因此,为了保障将第一逻辑单元设置到其对应的合理部署区域中,在本实施例里,可编程逻辑器件布局装置可以采用部署指示来对第一逻辑单元的设置进行辅助。
由于部署指示的作用是指示可编程逻辑器件布局装置将第一逻辑单元部署到其合理部署区域内,因此部署指示是预先基于第一逻辑单元的合理部署区域创建的。在本实施例的一种示例当中,部署指示由可编程逻辑器件布局装置创建,可编程逻辑器件布局装置在根据部署指示对第一逻辑单元进行部署之前还会创建部署指示,下面提供两种创建部署指示的示例:
第一种,基于合理梯度的部署指示,图2示出了创建基于合理梯度的部署指示的一种流程图:
S202、可编程逻辑器件布局装置确定第一逻辑单元的合理部署区域。
由于第一逻辑单元的部署指示是基于其合理部署区域设置的,因此,可以理解的是,可编程逻辑器件布局装置为第一逻辑单元创建部署指示时,应当了解第一逻辑单元合理部署区域的相关信息,确定合理部署区域的范围。
S204、可编程逻辑器件布局装置为可编程逻辑器件上的各区域设置合理梯度。
合理梯度用于表征对应区域部署第一逻辑单元合理性的高低,合理梯度值越小则表征越适合部署第一逻辑单元,距离合理部署区域越近的区域,则合理梯度值越小,距离合理部署区域越远的区域,其合理梯度值则越大。例如,在图3当中示出了一种可编程逻辑器件布局装置为可编程逻辑器件上各区域设置合理梯度值的示意图,在图3当中,第一逻辑单元的合理部署区域31呈长条状,合理部署区域31的长与第一可编程逻辑器件30的宽度相同。可编程逻辑器件布局装置可以将合理部署区域31的合理梯度值设置为0,而距离合理部署区域较近的第一区域32的合理梯度值则被设置为1;距离合理部署区域稍远一点的第二区域33的合理梯度值被设置为2;更远的第三区域34的合理梯度值则变成了3。
在图3当中,由于第一逻辑单元的合理部署区域31的长度恰好等于第一可编程逻辑器件30的宽度,因此,可编程逻辑器件布局装置设置合理梯度值时,只需要考虑合理部署区域31的两侧。但如图4所示,另一个可编程逻辑器件40上,第一逻辑单元的合理部署区域41的边界与第二可编程逻辑器件40的边界并没有任何重叠的部分,这时候,可编程逻辑器件布局装置应当要同时为合理部署区域41四周的区域设置,可编程逻辑器件布局装置为第二可编程逻辑器件40上各区域设置的合理梯度如图所示。
另外,在可编程逻辑器件上,第一逻辑单元的合理部署区域可能包括两个及以上的区域,也就是说,第一逻辑单元的合理部署区域并不是一个完整的整体,如图5给出的是为可编程逻辑器件上个区域设置合理梯度值的又一种示意图。在图5当中,第三可编程逻辑器件50上包括两个第一合理部署区域51和第二合理部署区域51’,在为第三可编程逻辑器件50上的各个区域设置合理梯度值时,针对两个合理部署区域之间的合理梯度值设置可以参照图5所示,靠近第一合理部署区域51或靠近第二合理部署区域51’的区域,同样具有较低的合理梯度值,距离两个区域距离相等的区域的合理梯度值达到最大值。
S206、可编程逻辑器件布局装置将部署合理梯度作为部署指示。
图3-图5给出了几种设置合理梯度值的方式,可编程逻辑器件布局装置可以将设置的合理梯度作为部署指示。在根据合理梯度对第一逻辑单元进行部署时,可编程逻辑器件布局装置可以选择合理梯度值变化最大的区域设置第一逻辑单元。针对图5中的情况,在设置第一合理部署区域51与第二合理部署区域51’之间合理梯度值时,应当保证合理梯度值的变化小于第一合理部署区域51或第二合理部署区域51’的合理梯度值变化。
下面介绍另外一种创建部署指示的过程:和第一种方式一样,可编程逻辑器件布局装置也应当先确定第一逻辑单元的合理部署区域。在确定第一逻辑单元的合理部署区域之后,可编程逻辑器件布局装置为合理部署区域设置合理标识,并将部署合理梯度作为所述部署指示。在后续过程当中,可编程逻辑器件布局装置选择可编程逻辑器件上具有合理标识的区域来部署第一逻辑单元。
S106、可编程逻辑器件布局装置对除第一逻辑单元以外的需要部署到可编程逻辑器件上的其他逻辑单元进行部署。
当可编程逻辑器件布局装置对第一逻辑单元的部署完成之后,其可以开始对需要部署到可编程逻辑器件上除第一逻辑单元以外的其他逻辑单元进行部署设置。针对其他逻辑单元的设置,本实施例提供这样几种设置示例:
第一种,可编程逻辑器件布局装置对除第一逻辑单元以外的其他逻辑单元一视同仁,均根据创建的全局密度模型的指示进行设置。这种设置方式的过程比较简单,而且算法成熟,较容易实现。
第二种,可编程逻辑器件布局装置对除第一逻辑单元以外的其他逻辑单元一视同仁,但在对包括第二逻辑单元在内的其他单元进行部署设置时,是以第一逻辑单元的设置位置为中心,结合其他逻辑单元与第一逻辑单元之间距离的要求确定其他逻辑单元的位置,从而完成对除第一逻辑单元以外其他逻辑单元的设置部署。
第三种,可编程逻辑器件布局装置对其他逻辑单元也进行分类部署。具体的,考虑到第一逻辑单元对要求与之相连的第二逻辑单元的时延要求较为严格,需要第二逻辑单元尽可能紧凑的设置在第一逻辑单元周围,可编程逻辑器件布局装置可以先设置第二逻辑单元,避免第一逻辑单元周围的位置被除第一逻辑单元和第二逻辑单元以外的第三逻辑单元占用,从而导致第二逻辑单元不得不被设置在距离第一逻辑单元较远的位置。
在第三种情况下,对第二逻辑单元进行设置的时候,可以以第一逻辑单元的第一部署位置为中心,根据各第二逻辑单元与第一逻辑单元之间的距离要求确定第二逻辑单元的第二部署位置,并根据确定出来的位置设置第二逻辑单元。对于第三逻辑单元的设置,可编程逻辑器件布局装置可以在第二逻辑单元部署完成之后,针对可编程逻辑器件上已部署逻辑单元创建全局密度模型,全局密度模型可以体现出可编程逻辑器件上当前逻辑单元的分布情况。可编程逻辑器件布局装置根据创建出的全局密度模型选择密度小于预设密度阈值的区域设置第三逻辑单元,也即选择比较当前逻辑单元分布比较稀疏的区域设置第三逻辑单元。可以理解的是,在设置第三逻辑单元的时候,全局密度模型应当随着可编程逻辑器件上逻辑单元的增加而不断更新,以便为可编程逻辑器件布局装置提供有效的参考依据。
另外,在理想情况下,可编程逻辑器件布局装置可以将第一逻辑单元部署到其合理部署区域中,但可以理解的是,实际部署过程中不可避免的会存在一些误差,因此,第一逻辑单元也有可能因为误差的关系设置到了其合理部署区域之外、第一逻辑单元合理部署区域附近的地方。对于这种情况,可以在初始部署后对第一逻辑单元进行一些轻微的调整,顺带调整的还包括与被调整的第一逻辑单元相连的第二逻辑单元。
最后,本实施例中提供的可编程逻辑器件布局方法可以针对各种类型的可编程逻辑器件,包括PROM(Programmable Read-Only Memory,可编程只读存储器)、EPROM(Erasable Programmable Read Only Memory,可擦除可编程存储器)、PLA(Programmablelogic arrays,可编程逻辑阵列)、PAL(Programmable Array Logic,可编阵列逻辑)和GAL(generic array logic,通用阵列逻辑)等类型。其中,在PAL和GAL的基础上又发展出了应用更为广泛的CPLD(Complex Programmable Logic Device,复杂可编程逻辑器件)以及FPGA(Field-Programmable Gate Array,现场可编程门阵列)等。
本实施例提供了一种可编程逻辑器件布局方法,由可编程逻辑器件布局装置将需要部署到可编程逻辑器件上的第一逻辑单元筛选出来,然后先根据部署指示对第一逻辑单元进行部署后再对其他逻辑单元进行设置,保证其他逻辑单元不会占用第一逻辑单元本来就比较小的面积部署区域,在部署指示的辅助下,尽可能准确地将第一逻辑单元设置到其合理部署区域内。另外,在本实施例的一些实例中,还会根据其他逻辑单元与第一逻辑单元之间的距离要求来设置其他逻辑单元。当第一逻辑单元的设置位置合理的情况下,其他逻辑单元的部署位置也会是基本合理的,因此,本实施例中不仅提升了对第一逻辑单元布局的合理性,还提升可编程逻辑器件整体布局的正确性。降低了在布局完成后再对可编程逻辑器件上逻辑单元进行大范围挪动修改的风险,提升了可编程逻辑器件布局的效率和性能。
实施例二:
本实施例提供一种可编程逻辑器件布局装置,该装置可以执行实施例一提供的可编程逻辑器件布局方法,下面结合图6对可编程逻辑器件布局装置60进行介绍:
可编程逻辑器件布局装置60包括筛选模块602、第一部署模块604、其他部署模块606。筛选模块602用于从需要部署到可编程逻辑器件上的各逻辑单元中筛选出第一逻辑单元;第一部署模块604用于根据预先创建的部署指示对第一逻辑单元进行部署设置;其他部署模块606用于对除第一逻辑单元以外的需要部署到可编程逻辑器件上的其他逻辑单元进行部署。
在本实施例中,第一逻辑单元是需要部署到可编程逻辑器件上的逻辑单元中满足预设条件的逻辑单元,预设条件中包括自身的合理部署区域小于预设面积阈值。也就是说,作为第一逻辑单元的必要条件是一个逻辑单元自身的合理部署区域小于预设面积阈值。
筛选模块602根据预设面积阈值筛选出合理部署区域较小的逻辑单元作为第一逻辑单元,便于后续部署过程能够根据各逻辑单元合理部署区域的大小来分时序部署。预设面积阈值可以由布局设计人员根据当前布局的需要自定义设置。当然可以理解的是,在对一个可编程逻辑器件进行布局规划的时候,可能会给不同的逻辑单元规划出大小不同的合理部署区域。针对不同的逻辑单元,应当要设置不同的预设面积阈值。因此,布局设计人员在自定义设置预设面积阈值时,应当考虑当前待部署逻辑单元本身的合理部署区域。
另外,在本实施例的一个示例当中,满足作为第一逻辑单元的预设条件还可以包括要求与自身相连的第二逻辑单元的时延小于预设时延阈值。在该示例当中,筛选模块602筛选出的第一逻辑单元是指那些自身合理部署区域较小,并且还要求与自身相连的第二逻辑单元的时延小于预设时延阈值。筛选模块602在选择第一逻辑单元时之所以要考虑一个逻辑单元对与自身连接的其他逻辑单元时延的要求,这主要是由于APM或者DRM这些逻辑单元不仅合理部署区域比较小,而且这些逻辑单元因为涉及到数据计算处理与数据的读取与写入,因此,要求与自身连接的第二逻辑单元的时延与自身保持一致。这些逻辑单元一旦部署不合理,则在后续从初次部署位置上移动到合理部署区域时,会使得与自身相连的第二逻辑单元距离自身较远。应当理解的是,距离将会影响到第二逻辑单元与第一逻辑单元之间输入输出时延的大小,一旦距离较远,则很难保证这些第二逻辑单元的时延与第一逻辑单元一致。
毫无疑义的是,本实施例的逻辑单元包括却不限于APM与DRM,其可以是APM与DRM中的至少一种,也可以是其他任何合理部署区域小于预设面积阈值,且要求与自身相连的第二逻辑单元的时延小于预设时延阈值的逻辑单元。
在本实施例中,预设时延阈值也是可以由布局设计人员根据当前实际的布局需求进行灵活设置的。
筛选模块602在筛选出第一逻辑单元后,第一部署模块604先对第一逻辑单元进行部署,由于预先为第一逻辑单元规划的合理部署区域较小,并不能在可编程逻辑器件的整体区域上进行全面部署。现有技术中建立全局密度模型来进行逻辑单元部署的方案在本实施例中已经几乎无效,因为第一逻辑单元是在其他合理部署区域面积较大、或者是可全局部署的那些逻辑单元之前部署的,甚至第一逻辑单元是最先在可编程逻辑器件上进行部署的,所以此时无法针对可编程逻辑器件建立起具有参考价值的全局密度模型。如果继续按照现有技术的方案对第一逻辑单元进行部署,这就相当于随手将一把种子撒到空地上,谁也无法保证这些种子都落到空地中的一个特定区域内。因此,为了保障将第一逻辑单元设置到其对应的合理部署区域中,在本实施例里,第一部署模块604可以采用部署指示来对第一逻辑单元的设置进行辅助。
由于部署指示的作用是指示第一部署模块604将第一逻辑单元部署到其合理部署区域内,因此部署指示是可编程逻辑器件布局装置60预先基于第一逻辑单元的合理部署区域创建的。在本实施例的一种示例当中,如图7所示,可编程逻辑器件布局装置60还包括指示创建模块608,部署指示由指示创建模块608在第一部署模块604对第一逻辑单元进行部署之前创建部署指示,下面提供两种指示创建模块608创建部署指示的示例:
第一种,基于合理梯度的部署指示。由于第一逻辑单元的部署指示是基于其合理部署区域设置的,因此,可以理解的是,指示创建模块608为第一逻辑单元创建部署指示时,应当了解第一逻辑单元合理部署区域的相关信息,确定合理部署区域的范围。然后,指示创建模块608为可编程逻辑器件上的各区域设置合理梯度。
合理梯度用于表征对应区域部署第一逻辑单元合理性的高低,合理梯度值越小则表征越适合部署第一逻辑单元,距离合理部署区域越近的区域,则合理梯度值越小,距离合理部署区域越远的区域,其合理梯度值则越大。例如,在图3当中示出了指示创建模块608为可编程逻辑器件上各区域设置合理梯度值的一种示意图,在图3当中,第一逻辑单元的合理部署区域31呈长条状,合理部署区域31的长与第一可编程逻辑器件30的宽度相同。指示创建模块608可以将合理部署区域31的合理梯度值设置为0,而距离合理部署区域较近的第一区域32的合理梯度值则被设置为1;距离合理部署区域稍远一点的第二区域33的合理梯度值被设置为2;更远的第三区域34的合理梯度值则变成了3。
在图3当中,由于第一逻辑单元的合理部署区域31的长度恰好等于第一可编程逻辑器件30的宽度,因此,指示创建模块608设置合理梯度值时,只需要考虑合理部署区域31的两侧。但如图4所示,另一个可编程逻辑器件40上,第一逻辑单元的合理部署区域41的边界与第二可编程逻辑器件40的边界并没有任何重叠的部分,这时候,指示创建模块608应当要同时为合理部署区域41四周的区域设置,指示创建模块608为第二可编程逻辑器件40上各区域设置的合理梯度如图所示。
另外,在可编程逻辑器件上,第一逻辑单元的合理部署区域可能包括两个及以上的区域,也就是说,第一逻辑单元的合理部署区域并不是一个完整的整体,如图5给出的是为可编程逻辑器件上个区域设置合理梯度值的又一种示意图。在图5当中,第三可编程逻辑器件50上包括两个第一合理部署区域51和第二合理部署区域51’,指示创建模块608在为第三可编程逻辑器件50上的各个区域设置合理梯度值时,针对两个合理部署区域之间的合理梯度值设置可以参照图5所示,靠近第一合理部署区域51或靠近第二合理部署区域51’的区域,同样具有较低的合理梯度值,距离两个区域距离相等的区域的合理梯度值达到最大值。
最后,指示创建模块608将部署合理梯度作为部署指示。在根据合理梯度对第一逻辑单元进行部署时,第一部署模块604可以选择合理梯度值变化最大的区域设置第一逻辑单元。针对图5中的情况,指示创建模块608在设置第一合理部署区域51与第二合理部署区域51’之间合理梯度值时,应当保证合理梯度值的变化小于第一合理部署区域51或第二合理部署区域51’的合理梯度值变化。
下面介绍另外一种创建部署指示的过程:和第一种方式一样,指示创建模块608也应当先确定第一逻辑单元的合理部署区域。在确定第一逻辑单元的合理部署区域之后,指示创建模块608为合理部署区域设置合理标识,并将部署合理梯度作为所述部署指示。在后续过程当中,第一部署模块604选择可编程逻辑器件上具有合理标识的区域来部署第一逻辑单元。
当第一部署模块604对第一逻辑单元的部署完成之后,其他部署模块606可以开始对需要部署到可编程逻辑器件上除第一逻辑单元以外的其他逻辑单元进行部署设置。针对其他逻辑单元的设置,本实施例提供这样几种设置示例:
第一种,其他部署模块606对除第一逻辑单元以外的其他逻辑单元一视同仁,均根据创建的全局密度模型的指示进行设置。这种设置方式的过程比较简单,而且算法成熟,较容易实现。
第二种,其他部署模块606对除第一逻辑单元以外的其他逻辑单元一视同仁,但在对包括第二逻辑单元在内的其他单元进行部署设置时,是以第一逻辑单元的设置位置为中心,结合其他逻辑单元与第一逻辑单元之间距离的要求确定其他逻辑单元的位置,从而完成对除第一逻辑单元以外其他逻辑单元的设置部署。
第三种,其他部署模块606对其他逻辑单元也进行分类部署。具体的,考虑到第一逻辑单元对要求与之相连的第二逻辑单元的时延要求较为严格,需要第二逻辑单元尽可能紧凑的设置在第一逻辑单元周围,其他部署模块606可以先设置第二逻辑单元,避免第一逻辑单元周围的位置被除第一逻辑单元和第二逻辑单元以外的第三逻辑单元占用,从而导致第二逻辑单元不得不被设置在距离第一逻辑单元较远的位置。
在第三种情况下,对第二逻辑单元进行设置的时候,其他部署模块606可以以第一逻辑单元的第一部署位置为中心,根据各第二逻辑单元与第一逻辑单元之间的距离要求确定第二逻辑单元的第二部署位置,并根据确定出来的位置设置第二逻辑单元。对于第三逻辑单元的设置,其他部署模块606可以在第二逻辑单元部署完成之后,针对可编程逻辑器件上已部署逻辑单元创建全局密度模型,全局密度模型可以体现出可编程逻辑器件上当前逻辑单元的分布情况。其他部署模块606根据创建出的全局密度模型选择密度小于预设密度阈值的区域设置第三逻辑单元,也即选择比较当前逻辑单元分布比较稀疏的区域设置第三逻辑单元。可以理解的是,在设置第三逻辑单元的时候,全局密度模型应当随着可编程逻辑器件上逻辑单元的增加而不断更新,以便为其他部署模块606提供有效的参考依据。
另外,在理想情况下,第一部署模块604可以将第一逻辑单元部署到其合理部署区域中,但可以理解的是,实际部署过程中不可避免的会存在一些误差,因此,第一逻辑单元也有可能因为误差的关系设置到了其合理部署区域之外、第一逻辑单元合理部署区域附近的地方。对于这种情况,可编程逻辑器件布局装置60可以在初始部署后对第一逻辑单元进行一些轻微的调整,顺带调整的还包括与被调整的第一逻辑单元相连的第二逻辑单元。
最后,本实施例中提供的可编程逻辑器件布局装置60可用于对各种类型的可编程逻辑器件进行部署设置,包括PROM、EPROM、PLA、PAL和GAL等类型。其中,在PAL和GAL的基础上又发展出了应用更为广泛的CPLD以及FPGA等。
可编程逻辑器件布局装置可以部署在终端上,例如处理能力较为强大的台式电脑与笔记本电脑等。下面结合图8提供的终端对实现可编程逻辑器件布局装置的硬件结构进行介绍:
终端8包括处理器81、存储单元82以及交互单元83等,其中可编程逻辑器件布局装置的筛选模块、第一部署模块、其他部署模块均可以由处理器81来实现;指示创建模块的功能可以通过交互单元83与处理器81共同实现,因为指示创建模块在创建部署指示时,可以在布局设计人员的指示下进行,布局设计人员通过交互单元83向终端8发出指令,终端8的处理器81基于用户的指令为第一逻辑单元设置部署指示。存储单元82中则可以存储供处理器81运行以实现可编程逻辑器件布线方法的一系列指令。
本实施例提供了一种可编程逻辑器件布局装置,由可编程逻辑器件布局装置将需要部署到可编程逻辑器件上的第一逻辑单元筛选出来,然后先根据部署指示对第一逻辑单元进行部署后再对其他逻辑单元进行设置,保证其他逻辑单元不会占用第一逻辑单元本来就比较小的面积部署区域,在部署指示的辅助下,尽可能准确地将第一逻辑单元设置到其合理部署区域内。另外,在本实施例的一些实例中,还会根据其他逻辑单元与第一逻辑单元之间的距离要求来设置其他逻辑单元。当第一逻辑单元的设置位置合理的情况下,其他逻辑单元的部署位置也会是基本合理的,因此,本实施例中不仅提升了对第一逻辑单元布局的合理性,还提升可编程逻辑器件整体布局的正确性。降低了在布局完成后再对可编程逻辑器件上逻辑单元进行大范围挪动修改的风险,提升了可编程逻辑器件布局的效率和性能。
显然,本领域的技术人员应该明白,上述本发明实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在计算机存储介质(ROM/RAM、磁碟、光盘)中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。所以,本发明不限制于任何特定的硬件和软件结合。
以上内容是结合具体的实施方式对本发明实施例所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
Claims (10)
1.一种可编程逻辑器件布局方法,其特征在于,包括:
从需要部署到可编程逻辑器件上的各逻辑单元中筛选出满足预设条件的第一逻辑单元,所述预设条件包括自身合理部署区域小于预设面积阈值;
确定所述第一逻辑单元的合理部署区域;
为所述可编程逻辑器件上的各区域设置合理梯度,所述合理梯度用于表征对应区域部署所述第一逻辑单元合理性的高低,合理梯度值越小则表征越适合部署所述第一逻辑单元,距离所述合理部署区域越近,则合理梯度值越小;
将所述合理梯度作为部署指示;
根据预先创建的所述部署指示对所述第一逻辑单元进行部署设置,所述部署指示基于所述第一逻辑单元的合理部署区域创建,用于指示将所述第一逻辑单元部署到其合理部署区域;
对除第一逻辑单元以外的需要部署到可编程逻辑器件上的其他逻辑单元进行部署。
2.如权利要求1所述的可编程逻辑器件布局方法,其特征在于,所述预设条件还包括:要求与自身相连的第二逻辑单元的时延小于预设时延阈值。
3.如权利要求2所述的可编程逻辑器件布局方法,其特征在于,对除第一逻辑单元以外的需要部署到可编程逻辑器件上的其他逻辑单元进行部署包括:
对第二逻辑单元进行部署,所述第二逻辑单元为与所述第一逻辑单元相连的逻辑单元;
在所述第二逻辑单元部署完成后部署第三逻辑单元,所述第三逻辑单元为除第一逻辑单元与第二逻辑单元以外需要部署到所述可编程逻辑器件上的逻辑单元。
4.如权利要求3所述的可编程逻辑器件布局方法,其特征在于,对第二逻辑单元进行部署包括:
以所述第一逻辑单元的第一部署位置为中心,根据各所述第二逻辑单元与所述第一逻辑单元之间的距离要求确定所述第二逻辑单元的第二部署位置;
根据确定出的所述第二部署位置设置所述第二逻辑单元。
5.如权利要求3所述的可编程逻辑器件布局方法,其特征在于,在所述第二逻辑单元部署完成后部署第三逻辑单元包括:
建立所述可编程逻辑器件上已部署逻辑单元的全局密度模型;
根据所述全局密度模型选择密度小于预设密度阈值的区域设置所述第三逻辑单元。
6.如权利要求1所述的可编程逻辑器件布局方法,其特征在于,所述可编程逻辑器件包括现场可编程门阵列。
7.如权利要求1所述的可编程逻辑器件布局方法,其特征在于,所述第一逻辑单元包括乘法单元和/或存储单元。
8.如权利要求1-7任一项所述的可编程逻辑器件布局方法,其特征在于,根据预先创建的部署指示对所述第一逻辑单元进行部署设置包括:
根据所述可编程逻辑器件上的各区域的合理梯度,选择合理梯度值变化最大的区域设置所述第一逻辑单元。
9.如权利要求1-7任一项所述的可编程逻辑器件布局方法,其特征在于,根据预先创建的部署指示对所述第一逻辑单元进行部署设置之前还包括:
为所述合理部署区域设置合理标识;
根据预先创建的部署指示对所述第一逻辑单元进行部署设置包括:
选择所述可编程逻辑器件上具有合理标识的区域部署所述第一逻辑单元。
10.一种可编程逻辑器件布局装置,其特征在于,包括:
筛选模块,用于从需要部署到可编程逻辑器件上的各逻辑单元中筛选出第一逻辑单元,所述第一逻辑单元为合理部署区域小于预设面积阈值且对要求之相连的第二逻辑单元的时延小于预设时延阈值的逻辑单元;
指示创建模块,用于确定所述第一逻辑单元的合理部署区域;为所述可编程逻辑器件上的各区域设置合理梯度,所述合理梯度用于表征对应区域部署所述第一逻辑单元合理性的高低,合理梯度值越小则表征越适合部署所述第一逻辑单元,距离所述合理部署区域越近,则合理梯度值越小,将所述合理梯度作为部署指示;
第一部署模块,用于根据预先创建的部署指示对所述第一逻辑单元进行部署设置,所述部署指示基于所述第一逻辑单元的合理部署区域创建,用于指示将所述第一逻辑单元部署到其合理部署区域;
其他部署模块,用于对除第一逻辑单元以外的需要部署到可编程逻辑器件上的其他逻辑单元进行部署。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611103547.XA CN106650047B (zh) | 2016-12-05 | 2016-12-05 | 可编程逻辑器件布局方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611103547.XA CN106650047B (zh) | 2016-12-05 | 2016-12-05 | 可编程逻辑器件布局方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106650047A CN106650047A (zh) | 2017-05-10 |
CN106650047B true CN106650047B (zh) | 2020-06-30 |
Family
ID=58818406
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611103547.XA Active CN106650047B (zh) | 2016-12-05 | 2016-12-05 | 可编程逻辑器件布局方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106650047B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112466872B (zh) * | 2020-12-01 | 2021-08-03 | 江苏博沃汽车电子系统有限公司 | 一种集成电路布线方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200931806A (en) * | 2007-11-19 | 2009-07-16 | Tier Logic Inc | Three dimensional programmable devices |
CN101739477A (zh) * | 2008-11-27 | 2010-06-16 | 英业达股份有限公司 | 印刷电路板的标示文字的设置方法 |
CN102033987A (zh) * | 2010-11-30 | 2011-04-27 | 中国人民解放军信息工程大学 | 一种fpga元构件布局区域分配方法 |
CN102831255A (zh) * | 2011-06-15 | 2012-12-19 | 扬智科技股份有限公司 | 芯片布局方法 |
CN105069216A (zh) * | 2015-07-31 | 2015-11-18 | 深圳市同创国芯电子有限公司 | 一种fpga布线方法及装置 |
CN105718679A (zh) * | 2016-01-22 | 2016-06-29 | 深圳市同创国芯电子有限公司 | 一种fpga的资源布局方法及装置 |
-
2016
- 2016-12-05 CN CN201611103547.XA patent/CN106650047B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200931806A (en) * | 2007-11-19 | 2009-07-16 | Tier Logic Inc | Three dimensional programmable devices |
CN101739477A (zh) * | 2008-11-27 | 2010-06-16 | 英业达股份有限公司 | 印刷电路板的标示文字的设置方法 |
CN102033987A (zh) * | 2010-11-30 | 2011-04-27 | 中国人民解放军信息工程大学 | 一种fpga元构件布局区域分配方法 |
CN102831255A (zh) * | 2011-06-15 | 2012-12-19 | 扬智科技股份有限公司 | 芯片布局方法 |
CN105069216A (zh) * | 2015-07-31 | 2015-11-18 | 深圳市同创国芯电子有限公司 | 一种fpga布线方法及装置 |
CN105718679A (zh) * | 2016-01-22 | 2016-06-29 | 深圳市同创国芯电子有限公司 | 一种fpga的资源布局方法及装置 |
Non-Patent Citations (2)
Title |
---|
周锋.一种带时延约束的FPGA布局算法.《计算机辅助设计与图形学学报》.1999,第11卷(第4期),第304-308页. * |
宋凡.智能小区裸眼3D门禁系统设计研究.《中国优秀硕士学位论文全文数据库 工程科技Ⅱ辑》.2016,(第02期),C038-835. * |
Also Published As
Publication number | Publication date |
---|---|
CN106650047A (zh) | 2017-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6971320B2 (ja) | ニューラルネットワークに基づいた回路設計の物理合成 | |
CN108140067B (zh) | 用于电路设计优化的方法和系统 | |
US8984462B1 (en) | Physical optimization for timing closure for an integrated circuit | |
US10318686B2 (en) | Methods for reducing delay on integrated circuits by identifying candidate placement locations in a leveled graph | |
JP2006338659A (ja) | フィールドプログラマブルゲートアレイと等価な構造化特定用途向け集積回路を製造する方法 | |
US8719752B1 (en) | Hierarchical crosstalk noise analysis model generation | |
US9298872B2 (en) | Apportioning synthesis effort for better timing closure | |
JP2018531457A6 (ja) | 対話型マルチステップ物理合成 | |
US20050183054A1 (en) | Modifying a design to reveal the data flow of the design in order to create a more favorable input for block placement | |
US7930668B1 (en) | Placement and routing using inhibited overlap of expanded areas | |
US8522185B1 (en) | Method for placement and routing of a circuit design | |
US8977998B1 (en) | Timing analysis with end-of-life pessimism removal | |
US8473881B1 (en) | Multi-resource aware partitioning for integrated circuits | |
US8196081B1 (en) | Incremental placement and routing | |
CN112100971A (zh) | 构建用于集成电路的分层时钟树的方法 | |
US8196083B1 (en) | Incremental placement and routing | |
US9646126B1 (en) | Post-routing structural netlist optimization for circuit designs | |
CN106650047B (zh) | 可编程逻辑器件布局方法及装置 | |
US10755009B1 (en) | Optimization after allocating potential slacks to clock arrival times | |
US10664561B1 (en) | Automatic pipelining of memory circuits | |
US9501604B1 (en) | Testing critical paths of a circuit design | |
US9965581B1 (en) | Fanout optimization to facilitate timing improvement in circuit designs | |
US7886256B1 (en) | Timing analysis of a mapped logic design using physical delays | |
CN107315863B (zh) | 布局优化方法及装置、终端及存储介质 | |
US8386983B1 (en) | Parallel signal routing |
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 |