一种基于FPGA芯片的进位链工艺映射方法技术领域
本发明涉及现场可编程门阵列(Field-Programmable Gate Array,
简称FPGA)技术,尤其涉及一种基于FPGA的进位链工艺映射方法。
背景技术
传统FPGA芯片的工艺映射方法通常是将加法、乘法等算数运算宏模块直
接映射到FPGA芯片上的进位链上,但是每款FPGA芯片的进位链资源都是有
限的。因此,对于一些使用进位链较多的算数运算宏模块,传统的工艺映射
方法则存在着由于生产过多的进位链导致超出了FPGA芯片的实际容量,从而
使得FPGA芯片无法满足设计要求的情况。
发明内容
本发明的目的在于,解决传统FPGA芯片的工艺映射方法存在的不足。
为实现上述目的,本发明提供了一种基于FPGA芯片的进位链工艺映射
方法,该方法包括以下步骤:
获取全部算数运算宏模块;针对全部算数运算宏模块分别进行消耗值
估算,以及根据每个算数运算宏模块的消耗值对所述全部算数运算宏模块
进行排序;计算FPGA芯片上可用的进位链余量;估算消耗值最大的算数运
算宏模块的进位链使用量;将FPGA芯片上可用的进位链余量与所述消耗值
最大的算数运算宏模块的进位链使用量进行比较,如果消耗值最大的算数
运算宏模块的进位链使用量小于所述FPGA芯片上可用的进位链余量,则消
耗值最大的算数运算宏模块使用进位链的方式进行映射。
优选地,如果所述消耗值最大的算数运算宏模块的进位链使用量大于
所述FPGA芯片上可用的进位链余量,则消耗值最大的算数运算宏模块采用
普通组合逻辑映射。
优选地,在计算FPGA芯片上可用的进位链余量步骤之后,估算消耗值
最大的算数运算宏模块的进位链使用量步骤之前还包括以下步骤:对全部
算数运算宏模块进行判断,如果全部算数运算宏模块都已经进行映射,则
结束;如果还有未映射的算数运算宏模块,则估算未映射的运算宏模块中
消耗值最大的算数运算宏模块的进位链使用量。
优选地,在计算FPGA芯片上可用的进位链余量步骤包括:计算FPGA
芯片实际的进位链数目,作为进位链余量。
优选地,在计算FPGA芯片上可用的进位链余量步骤包括:计算FPGA
芯片实际的进位链数目,取其一定比例作为进位链余量。
优选地,可以将FPGA芯片实际的进位链数目的一定比例作为进位链余
量为将FPGA芯片实际的进位链数目的80%作为进位链余量。
优选地,在计算FPGA芯片上可用的进位链余量步骤包括:计算FPGA
芯片实际的进位链数目,指定其中的任一值作为进位链余量。
本发明可以动态决定算数运算宏模块是否采用进位链进行工艺映射,
更好的满足了FPGA芯片的设计要求。
附图说明
图1为本发明实施例提供的一种基于FPGA的进位链工艺映射方法示意
图;
图2为本发明实施例提供的另一种基于FPGA的进位链工艺映射方法示
意图。
具体实施方式
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
图1为本发明实施例提供的一种基于FPGA芯片的进位链工艺映射方法
示意图。如图1所示,该方法包括步骤S101-S105:
步骤S101,获取全部算数运算宏模块,算数运算宏模块包括加法运算
宏模块、减法运算宏模块、比较运算宏模块或乘法运算宏模块。
步骤S102针对全部算数运算宏模块分别进行消耗值估算,以及根据每
个算数运算宏模块的消耗值对所述全部算数运算宏模块进行排序。
具体地,针对获取的全部算数运算宏模块先进行消耗值计算、以得到
每个算数运算宏模块的消耗值;再依据每个算数运算宏模块的消耗值的大
小对算数运算宏模块进行排序(如表1所示)。
表1
名称
消耗值
排序
加法运算宏模块
40
1
减法运算宏模块
30
2
比较运算宏模块
20
3
乘法运算宏模块
10
4
步骤S103,计算FPGA芯片上可用的进位链余量
具体地,对FPGA芯片上可用的进位链余量进行计算,在计算FPGA芯
片上可用的进位链余量时,可以将FPGA芯片实际的进位链数目作为进位链
余量;或者计算FPGA芯片实际的进位链数目,再取其一定比例(例如,80%)
作为进位链余量;或者计算FPGA芯片实际的进位链数目,指定其中的任一
值作为进位链余量。
步骤S104,估算消耗值最大的算数运算宏模块的进位链使用量;
步骤S105,将FPGA芯片上可用的进位链余量与消耗值最大的算数运
算宏模块的进位链使用量进行比较,如果消耗值最大的算数运算宏模块的
进位链使用量不大于FPGA芯片上可用的进位链余量,则消耗值最大的算数
运算宏模块使用进位链的方式进行映射;或者,消耗值最大的算数运算宏
模块的进位链使用量大于所述FPGA芯片上可用的进位链余量,则消耗值最
大的算数运算宏模块采用普通组合逻辑映射(例如,显示查找表
(Look-Up-Table,简称为LUT))。
优选地,在上述步骤S103和上述步骤S104之间还包括步骤S106(如
图2所示):
在步骤S106,对全部算数运算宏模块进行判断,如果全部算数运算宏
模块都已经进行映射,则转到步骤S107,执行结束;如果还有未映射的算
数运算宏模块,则估算未映射的运算宏模块中消耗值最大的算数运算宏模
块的进位链使用量。
以下通过一个具体的设计实施进行详细说明:
现假设某设计包含50个20位的加法运算宏模块、50个10位加法运
算宏模块,以及一些组合逻辑(约占用1000个LUT4资源)。芯片采用HR3
型号,其包括3000个LUT4的资源,其中1000个LUT4包含进位链结构。
按照传统的工艺映射方法,全部的100个加法运算宏模块都会映射到
进位链上,则需要1500个进位链资源,其远远超出了芯片HR3的进位链数
量(HR3型号芯片只有1000个LUT4包含进位链结构)。
然而,根据本发明实施例提供的工艺映射方法只需要占用1000个进位
链。过程如下:
假设以进位链占用量作为消耗值的估值,则20位加法运算宏模块的消
耗值为20,10位加法运算宏模块的消耗值为10。那么50个20位的加法
运算宏模块会采用进位链的方式进行映射(占用1000个LUT4及1000个进
位链),此时芯片HR3的进位链都已经使用,那么另外50个10位的加法
运算宏模块则会采用组合逻辑映射(假设使用了700个LUT4),这样最终
使用了2700个LUT4及1000个进位链,满足芯片容量要求。
本发明实施例可以动态决定算数运算宏模块是否采用进位链进行工艺
映射,更好的满足了FPGA芯片的设计要求。
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的
各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来
实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能
一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来
执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每
个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为
超出本发明的范围。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行
了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而
已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做
的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。