一种针对fpga面积优化的优先级资源共享方法

文档序号:6493438阅读:852来源:国知局
一种针对fpga面积优化的优先级资源共享方法
【专利摘要】本发明公开了一种针对FPGA面积优化的优先级资源共享方法,包括:读取RTL综合中间数据结构网表,查找并收集网表中所有时序互斥的分支;分析时序互斥的分支中的具体操作,检测并收集时序互斥的分支中相同的算术操作;以及优先对有相同输出的算术操作进行共享,其次对只有公共输入端口的算术操作进行共享,最后对没有公共端口的算术操作进行共享。利用本发明,通过检测HDL设计文件中时序互斥的相同的算术操作,对这些算术操作按照规定的顺序依次进行共享,就可以减少算术逻辑单元(ALU-Arithmetic?Logic?Unit),达到面积优化的效果。
【专利说明】一种针对FPGA面积优化的优先级资源共享方法
【技术领域】
[0001]本发明涉及现场可编程门阵列(FPGA)和电子设计自动化【技术领域】,特别涉及一种针对FPGA面积优化的优先级资源共享方法。
【背景技术】
[0002]资源共享是指对时序互斥的两个或者多个算术操作用一个算术逻辑单元实现的过程,是FPGA综合优化的关键方法之一。
[0003]FPGA EDA 工具包含:综合(synthesis)、映射(mapping)、布局(placing)、布线(routing)、码流生成(bit gen)及码流下载(download)等几部分,已成为FPGA领域一个十分关键的部分。EDA工具的好坏直接影响设计的实现及效果。
[0004]综合(synthesis)是FPGA EDA工具里的关键部分之一,是将HDL描述的设计文件进行翻译和优化,转换为门级的网表,并进行优化。其优化部分包含针对面积、时序和功耗的优化,优化的结果直接决定设计结果的好坏。
[0005]资源共享是FPGA综合中面积优化的重要方法之一,它能够减少复杂的算术逻辑单元的个数,实现面积优化。
[0006]现有RTL综合(Register Transfer Level Synthesis)技术中,资源共享算法不完善,导致可能出现的优化不彻底,以及数据流冲突错误的问题。

【发明内容】

[0007](一 )要解决的技术问题
[0008]有鉴于此,本发明的主要目的在于提供一种针对FPGA面积优化的优先级资源共享方法,以解决在RTL综合中资源共享可能出现的优化不彻底以及数据流冲突错误的问题。
[0009]( 二 )技术方案
[0010]为达到上述目的,本发明提供了一种针对FPGA面积优化的优先级资源共享方法,包括:读取RTL综合中间数据结构网表,查找并收集网表中所有时序互斥的分支;分析时序互斥的分支中的具体操作,检测并收集时序互斥的分支中相同的算术操作;以及优先对有相同输出的算术操作进行共享,其次对只有公共输入端口的算术操作进行共享,最后对没有公共端口的算术操作进行共享。
[0011]上述方案中,所述读取RTL综合中间数据结构网表,查找并收集网表中所有时序互斥的分支的步骤中,在任意时刻,每组中时序互斥分支最多只有一个分支执行,这些分支包括if、else分支和case的不同分支,以及包括结构级描述中mux的不同输入分支。
[0012]上述方案中,所述分析时序互斥的分支中的具体操作,检测并收集时序互斥的分支中相同的算术操作的步骤中,只针对复杂的算术操作进行共享,不考虑逻辑操作。
[0013]上述方案中,所述优先对有相同输出的算术操作进行共享的步骤中,是优先对连接到同一个mux的算术操作进行共享,共享的具体操作包括:首先将每组互斥分支可以合并的两个或者多个算术操作单元合并为一个算术操作A ;其次检测每组互斥分支的相同算术操作之间有没有公共输入端口,将公共端口连接到该算术操作A的一个输入;将输出端的mux平移到输入端,来选择非公共输入端口的驱动信号。
[0014]上述方案中,所述对只有公共输入端口的算术操作进行共享的步骤,包括:先将每组互斥分支可以合并的两个或者多个算术操作单元合并为一个算术操作,将公共端口连接到该算术操作的一个输入,另外一个输入端添加一个mux来选择非公共输入端口的驱动信号,输出端则驱动多个模块。
[0015]上述方案中,所述对没有公共端口的算术操作进行共享的步骤,包括:先将每组互斥分支可以合并的两个或者多个算术操作单元合并为一个算术操作,两个输入端分别添加一个mux来选择驱动信号,输出端则驱动多个模块。
[0016](三)有益效果
[0017]从上述技术方案可以看出,本发明具有以下有益效果:
[0018]1、本发明提供的针对FPGA面积优化的优先级资源共享方法,是在资源共享的基础上的改进方案,使可共享的资源按照规定的优先级顺序依次进行共享。这样不仅能够避免数据流冲突错误,而且还能够使结果增加的mux数量减少。
[0019]2、本发明提供的针对FPGA面积优化的优先级资源共享方法,首先要收集所有时序互斥的分支,如if、else分支和case分支,每一组的不同分支之间是时序互斥的,即所有时刻最多只有一个分支执行。这样才能保证共享以后不会出现信号冲突。其次,检测每组分支,标记不同分支的相同算术操作,对这些算术操作按照规定的优先级顺序进行共享。
[0020]3、本发明提供的针对FPGA面积优化的优先级资源共享方法,共享操作减少了复杂ALU的个数,实现了面积优化。该方法只对算术操作进行共享,不对逻辑操作进行共享。因为算术逻辑单元占用的面积比较大,尽管可能会引入mux,但总体会减少面积。而对逻辑单元进行共享的过程,减少了逻辑单元,增加了 mux,结果面积不一定减少。
[0021]4、本发明提供的针对FPGA面积优化的优先级资源共享方法,在资源共享的基础上进行改进,结果在减少算术操作个数的同时,也使得增加的mux数量减少,甚至有些情况不会增加mux ;同时还会避免资源共享过程中出现组合回路产生数据流冲突的错误结果。
【专利附图】

【附图说明】
[0022]图1是本发明提供的针对FPGA面积优化的优先级资源共享方法的流程图;
[0023]图2是图1中RLT综合网表中两个互斥分支的示意图;
[0024]图3是图1中RTL综合中互斥分支中标记相同的算术操作的示意图;
[0025]图4是依照本发明第一实施例的HDL文件描述及不采用资源共享的网表示意图;
[0026]图5是依照本发明第一实施例的不采用优先级的资源共享方法的共享结果示意图;
[0027]图6是依照本发明第一实施例的采用优先级资源共享的结果示意图;
[0028]图7是依照本发明第二实施例的HDL文件描述及不采用资源共享的网表示意图;
[0029]图8是依照本发明第二实施例的不采用优先级资源共享的共享结果示意图;
[0030]图9是依照本发明第二实施例的采用优先级资源共享方法的结果示意图;
[0031]图1Oa是两个时序互斥加法器优化前的示意图;[0032]图1Ob是两个时序互斥加法器资源共享步骤分解的示意图;
[0033]图1Oc是两个时序互斥加法器优化后的结果示意图。
【具体实施方式】
[0034]为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
[0035]如图1所示,图1是本发明提供的针对FPGA面积优化的优先级资源共享方法的流程图,该方法包括以下步骤:
[0036]步骤S1、读取RTL综合中间数据结构网表,查找并收集网表中所有时序互斥的分支;
[0037]在任意时刻,每组中时序互斥分支最多只有一个分支执行。这些分支主要包括if、else分支和case的不同分支,也包括结构级描述中mux的不同输入分支,如图2所示,两个加法操作为一组时序互斥分支,在任意时刻最多只有一个加法器执行。
[0038]步骤S2、分析时序互斥的分支中的具体操作,检测并收集时序互斥的分支中相同的算术操作;
[0039]本发明只是针对复杂的算术操作进行共享,不考虑逻辑操作。如图3所示,标记两个互斥分支之间的相同的加法操作。
[0040]步骤S3、优先对有相同输出,即连接到同一个mux的算术操作进行共享。
[0041]如图4所示,该第一实施例中不采用资源共享的结果,包含3个加法器ADD1、ADD2和ADD3,其中ADD2和ADD3的输出连接到同一个mux,优先对ADD2和ADD3进行共享。
[0042]共享的具体操作分为以下几步:(I)首先将每组互斥分支可以合并的两个或者多个算术操作单元合并为一个算术操作A,如图1Oa所示;(2)其次检测每组互斥分支的相同算术操作之间有没有公共输入端口,将公共端口连接到A的一个输入;(3)将输出端的mux平移到输入端,来选择非公共输入端口的驱动信号,如图1Ob所示。优化后的结果如图1Oc所示。
[0043]步骤S4、其次对只有公共输入端口的算术操作进行共享,先将每组互斥分支可以合并的两个或者多个算术操作单元合并为一个算术操作A,将公共端口连接到A的一个输入,另外一个输入端添加一个mux来选择非公共输入端口的驱动信号,输出端则驱动多个模块。
[0044]步骤S5、最后对没有公共端口的算术操作进行共享,先将每组互斥分支可以合并的两个或者多个算术操作单元合并为一个算术操作A,两个输入端分别添加一个mux来选择驱动信号,输出端则驱动多个模块。
[0045]本发明的优点如下:
[0046]—、和普通的资源共享相比,本发明提供的针对FPGA面积优化的优先级资源共享方法可以减少mux数量。如图4所示,该第一实施例中不进行资源共享的结果包含3个加法器,I个mux ;若不采用优先级方法的资源共享,如图5所示,该第一实施例中ADDl和ADD3进行共享,结果:2个加法器和3个mux ;采用优先级的资源共享方法,如图6所示,该第一实施例中ADD2和ADD3进行共享,结果只有两个加法器和两个mux,和图4相比减少了一个加法器,和图5相比减少了一个mux。[0047]二、避免数据流冲突错误。本发明的第二实施例如图7所示,不采用资源共享的综合结果含有4个加法器和I个mux。若不采用优先级的资源共享方法,结果如图8所示,该第二实施例中ADDl和ADD4共享,ADD2和ADD3共享,会产生2个加法器和5个mux,而且会出现组合回路,产生数据流冲突的错误结果。采用优先级的资源共享,结果如图9所示,该第二实施例中ADD2和ADD4共享,ADDl和ADD3共享,结果含有2个加法器和3个mux,和图7相比减少了 2个加法器,而且不会出现组合回路,和图8相比减少了 2个mux。
[0048]本发明提供的针对FPGA面积优化的优先级资源共享方法,其结果和普通的资源共享相比,会减少mux的数量,更好的实现面积优化;在某些情况下,减少mux的同时,也减少了 mux延时的级数,时序结果较好。该方法还会避免数据流冲突,防止共享结果出现组合回路的错误结果。
[0049]以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种针对FPGA面积优化的优先级资源共享方法,其特征在于,包括: 读取RTL综合中间数据结构网表,查找并收集网表中所有时序互斥的分支; 分析时序互斥的分支中的具体操作,检测并收集时序互斥的分支中相同的算术操作;以及 优先对有相同输出的算术操作进行共享,其次对只有公共输入端口的算术操作进行共享,最后对没有公共端口的算术操作进行共享。
2.根据权利要求1所述的针对FPGA面积优化的优先级资源共享方法,其特征在于,所述读取RTL综合中间数据结构网表,查找并收集网表中所有时序互斥的分支的步骤中,在任意时刻,每组中时序互斥分支最多只有一个分支执行,这些分支包括if、else分支和case的不同分支,以及包括结构级描述中mux的不同输入分支。
3.根据权利要求1所述的针对FPGA面积优化的优先级资源共享方法,其特征在于,所述分析时序互斥的分支中的具体操作,检测并收集时序互斥的分支中相同的算术操作的步骤中,只针对复杂的算术操作进行共享,不考虑逻辑操作。
4.根据权利要求1所述的针对FPGA面积优化的优先级资源共享方法,其特征在于,所述优先对有相同输出的算术操作进行共享的步骤中,是优先对连接到同一个mux的算术操作进行共享,共享的具体操作包括: 首先将每组互斥分支可以合并的两个或者多个算术操作单元合并为一个算术操作A ; 其次检测每组互斥分支的相同算术操作之间有没有公共输入端口,将公共端口连接到A的一个输入; 将输出端的mux平移到输入端,来选择非公共输入端口的驱动信号。
5.根据权利要求1所述的针对FPGA面积优化的优先级资源共享方法,其特征在于,所述对只有公共输入端口的算术操作进行共享的步骤,包括: 先将每组互斥分支可以合并的两个或者多个算术操作单元合并为一个算术操作,将公共端口连接到该算术操作的一个输入,另外一个输入端添加一个mux来选择非公共输入端口的驱动信号,输出端则驱动多个模块。
6.根据权利要求1所述的针对FPGA面积优化的优先级资源共享方法,其特征在于,所述对没有公共端口的算术操作进行共享的步骤,包括: 先将每组互斥分支可以合并的两个或者多个算术操作单元合并为一个算术操作,两个输入端分别添加一个mux来选择驱动信号,输出端则驱动多个模块。
【文档编号】G06F9/46GK103885819SQ201210564207
【公开日】2014年6月25日 申请日期:2012年12月21日 优先权日:2012年12月21日
【发明者】刘贵宅, 于芳, 刘忠立, 刁岚松 申请人:中国科学院微电子研究所, 北京飘石科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1