一种FPGA的资源布局方法及装置与流程

文档序号:13672228阅读:101来源:国知局
技术领域本发明涉及现场可编程门阵列(FPGA)技术领域,尤其涉及一种FPGA的资源布局方法及装置。

背景技术:
EDA(ElectronicDesignAutomation,电子设计自动化)软件的核心是布局布线,而布局的结果直接影响后序的布线的可行性及性能。布局的过程一般来说依此进行全局布局、合法化布局和详细布局。全局布局是初步将设计网表中的各单元放置在通过计算得到的位置,该计算过程通常以线长,时序以及密度为代价因素,使用特定的算法,而全局布局并不考虑各单元是否有重叠的区域或者偏离整个合法的布局区域;合法化布局正是对全局布局结果的调整,将重复的单元放置到不同的物理位置,将处于布局区域之外的单元调整到合法的位置,合法化布局的结果往往是可布线,但性能往往不是最优的,布局结果需要详细布局来做进一步的微调和优化。现阶段主流的合法化布局通常是对全局布局后所有可布局单元进行排序,占用面积大的单元对合法化布局的影响越大,所以需要优先进行合法化操作;全局布局的结果是根据算法得出的代价值非常小的一种理想布局情况,为此每个单元合法化需要围绕初步布局结果的物理位置寻找其它空闲的合适的位置。常用的一种合法化布局过程如图1a至图1d所示,假设一个单元的全局布局的布局结果在图1a所示位置,则合法化布局遵循着全局布局的结果,在最近的4个位置逐步搜索,如图1b所示,寻找可放置的位置,如果不可布局则继续向外层扩展到如图1c所示的位置,如果还是不可布局则继续向外层扩展到如图1d所示的位置,直至扩散到整个布局区域。该方法的优势在于对于每一个单元,其合法化的结果遵循全局布局算法的基础上线长是最小的,然而,缺点也显而易见,对于每个单元都需要遍历整个布局区域的所有可布局位置。如果布局位置有m个,设计网表有n个待布局单元,那么算法的时间复杂度是O(m*n)。随着物理电路规模的扩大以及设计网表的复杂化,合法化的过程会大大增加。因此,需要寻找一种新的布局方法来满足用户体验,尤其是大规模集成电路和复杂的用户设计网表对应的布局算法中的合法化布局。

技术实现要素:
本发明提供一种FPGA的资源布局方法及装置,解决现有FPGA的资源布局方案不够完善的问题。为解决上述技术问题,本发明采用以下技术方案:一种FPGA的资源布局方法,包括:按照资源类型将FPGA中的资源布局区域进行划分,划分成多个子区域,并建立资源类型和子区域的对应关系;确定待布局单元所属的资源类型,并根据待布局单元所属的资源类型,以及所述对应关系查找出与其对应的子区域;在查找出的子区域中布局所述待布局单元。一种FPGA的资源布局装置,包括:子区域划分模块,用于按照资源类型将FPGA中的资源布局区域进行划分,划分成多个子区域;关系建立模块,用于建立资源类型和子区域的对应关系;资源类型确定模块,用于确定待布局单元所属的资源类型;查找模块,用于根据待布局单元所属的资源类型,以及所述对应关系查找出与其对应的子区域;子区域布局模块,用于在所述查找模块查找出的子区域中布局所述待布局单元。本发明针对现有技术的中布局方法的局限性,设计了一种全新的布局方法,将FPGA中的资源布局区域按照资源的类型进行划分,划分成多个子区域,对于每一待布局单元,只在对应的子区域内寻找空闲的位置并放置其中,缩小了每个待布局单元查询的范围,从而大大节省了无谓的查找时间。尤其适用于进行全局布局后基于全局布局的布局结果,即资源布局区域,来进行合法化布局,来消除每个单元的重叠区域。附图说明图1a为现有的全局布局的布局结果中待合法化布局的单元的位置示意图;图1b为图1a所示单元的一种合法化布局方式的示意图;图1c为图1a所示单元的另一种合法化布局方式的示意图;图1d为图1a所示单元的另一种合法化布局方式的示意图;图2为本发明一实施例提供的FPGA的资源布局方法的流程图;图3a为本发明一实施例全局布局后得到的资源布局区域的示意图;图3b为图3a所示资源布局区域中划分出的第一子区域的示意图;图3c为图3a所示资源布局区域中划分出的第二子区域的示意图;图3d为图3a所示资源布局区域中划分出的第三子区域的示意图;图4为本发明一实施例提供的FPGA的资源布局装置的示意图。具体实施方式下面通过具体实施例对本发明的构思进一步详细说明。如图2所示,为本发明一实施例提供的FPGA的资源布局方法的流程图,主要包括以下步骤:S101、按照资源类型将FPGA中的资源布局区域进行划分,划分成多个子区域,并建立资源类型和子区域的对应关系。资源布局区域包括但不局限于:全局布局的布局结果。在一些实施例中,在步骤S101之前,还包括:根据设计网表和预设算法对FPGA的资源进行全局布局,得到全局布局的布局结果,即资源布局区域。全局布局的具体方式可参照现有技术。资源布局区域中的资源包括但不局限于:IOB(Input/OutputBuffer)、CLB(ConfigurableLogicBlock)、DCM(DigitalClockManagement),RAM(RandomAccessMemory),其它的底层内嵌功能单元比如PLL(PhaseLockedLoop)、DLL(DelayLockedLoop)、DSP(DigitalSignalProcessing)、CPU(CentralProcessUnit)等。目前资源布局区域内的各资源的分布一般来说是比较有规律的,对资源布局区域的划分可遵循以下原则:将资源布局区域中同一类资源集中分布在的区域,作为子区域;例如将分布在同一行或同一列的同一类资源保留在原区域内的相对位置关系分别作为子区域,比如IOB,常看到的分布在水平一行或者纵向一列,对于每一行、每一列均可以作为子区域;对于资源布局区域中分散分布的同一类资源,可以进行重新布局,集中布局在一个或多个区域,将重新布局后的各区域分别作为子区域;例如有的类型的资源有规律分布且分散比较均匀,可以采用重新构建的方式,即直接将这些资源集中在一个区域,将该区域作为子区域,不同之处在于资源间的物理距离不再是单位1;对于资源布局区域中分散分布的同一类资源,还可以将各个分散区域分别作为子区域;对于占比特别大(比如超过预设值)的资源,如CLB可以不进行划分,因为其数量过大,且基本遍布在整个资源布局区域,多余的无用查找可以忽略不计;如果单独构造一个对应的子区域也可,可以考虑将简单分布于整个资源布局区域边缘的IO部分去除。对于有空白区域的部分可以考虑直接忽略该差异,因为资源布局区域往往是参照实际电路的原型抽象出的仅含有布局资源的集合,各单元之间相互的物理相对关系无法做到十分准确的描述。或者选择将空白区左右两侧或者上下两侧分别作为子区域。S102、确定待布局单元所属的资源类型,并根据待布局单元所属的资源类型,以及所述对应关系查找出与其对应的子区域。待布局单元可以是任意的单元,也可以是特定的单元,优选的,步骤S102只对标准化的待布局单元进行查找,对于其他的复合型及宏单元可以采用传统方案来布局。在一些实施例中,根据待布局单元所属的资源类型,以及所述对应关系查找出与其对应的子区域之前,还包括:判断待布局单元是否满足预设条件;例如:判断待布局单元是否为标准化的待布局单元,如果是,则满足预设条件,如果否,则不满足预设条件,对于复合型及宏模块视为不满足预设条件;若满足预设条件,则进入根据待布局单元所属的资源类型,以及所述对应关系查找出与其对应的子区域的步骤。S103、在查找出的子区域中布局所述待布局单元。对于各待布局单元,只在对应的子区域内寻找空闲的位置并放置其中,缩小了每个待布局单元查询的范围,从而大大节省了无谓的查找时间。尤其适用于合法化布局,来消除各单元的重叠区域。下面以图3a所示的全局布局结果为例,采用本发明构思在此全局布局结果的基础上实现合法化布局。图3a所示的全局布局结果,即是所有布局资源的集合,该布局资源有IO,CLB,PLL三种资源,而IO分布在顶行和底行两个水平区域,PLL分布在图3a中长方形格子区域,由于CLB数量众多,图中没有标出。首先,将全局布局结果作为资源布局区域,按照资源类型进行划分,具体的:可以按照资源类型进行划分,PLL对应一个子区域,如图3b,称第一子区域;由于IO有最顶行和最底行之分,考虑同一资源类型内的二次分区,可以将最顶行的IO、最底行的IO分别作为一个子区域,如图3c和图3d,分别称第二子区域、第三子区域;由于CLB数量众多,分布分散,可以不必单独划分CLB的子区域。其次,建立资源类型和子区域的对应关系,如PLL对应第一子区域;IO对应第二子区域和第三子区域。再次,在资源布局区域中找出重叠放置的待布局单元,判断是否为标准化的单元,如果是,确定待布局单元所属的资源类型,并根据待布局单元所属的资源类型,以及上对应关系查找出与其对应的子区域;如果不是标准化的单元,比如是复合型及宏单元,则可以采用传统方案来布局。最后,在查找出的子区域中布局所述待布局单元。只在对应的子区域内寻找空闲的位置并放置其中,来消除各单元的重叠区域。在某一些实施例,该步骤之后,还可以根据子区域的各位置与资源布局区域中的位置间的对应关系,将子区域复原到资源布局区域中。现有的合法化布局方案,无论是标准化单元,还是复杂类型或者宏单元,均在整个布局区域内进行合法化操作。而本发明以上实施例对于从全局布局后的网表获取的待布局单元,如果为复杂类型或者宏单元则依然使用整个布局区域进行合法化;如果为标准化单元则根据之前建立的对应关系查找到对应的子区域,在该子区域进行合法化操作。图4为本发明一实施例提供的FPGA的资源布局装置的示意图,FPGA的资源布局装置包括:子区域划分模块41,用于按照资源类型将FPGA中的资源布局区域进行划分,划分成多个子区域;关系建立模块42,用于建立资源类型和子区域的对应关系;资源类型确定模块43,用于确定待布局单元所属的资源类型;查找模块44,用于根据待布局单元所属的资源类型,以及所述对应关系查找出与其对应的子区域;子区域布局模块45,用于在查找模块44查找出的子区域中布局所述待布局单元。在一些实施例中,该FPGA的资源布局装置,还包括全局布局模块46,用于根据设计网表和预设算法对FPGA的资源进行全局布局,得到所述资源布局区域。在一些实施例中,子区域划分模块41具体用于将所述资源布局区域中同一类资源集中分布在的区域,作为子区域;对于所述资源布局区域中分散分布的同一类资源,进行重新布局,集中布局在一个或多个区域,将重新布局后的各区域分别作为子区域,或者,将各个分散区域分别作为子区域。在一些实施例中,该FPGA的资源布局装置,还包括判断模块47,用于判断所述待布局单元是否满足预设条件;所述查找模块44具体用于所述判断模块47的判断结果为满足预设条件时,根据待布局单元所属的资源类型,以及所述对应关系查找出与其对应的子区域。本发明针对现有技术的中布局方法的局限性,设计了一种全新的布局方法,将FPGA中的资源布局区域按照资源的类型进行划分,划分成多个子区域,对于每一待布局单元,只在对应的子区域内寻找空闲的位置并放置其中,缩小了每个待布局单元查询的范围,从而大大节省了无谓的查找时间。尤其适用于进行全局布局后基于全局布局的布局结果,即资源布局区域,来进行合法化布局,来消除每个单元的重叠区域。以上内容是结合具体的实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1