一种高层次综合工具中的多操作数加法优化方法及系统与流程

文档序号:11919414阅读:498来源:国知局
一种高层次综合工具中的多操作数加法优化方法及系统与流程

本发明涉及计算机与电路设计领域,尤其涉及一种高层次综合工具中的多操作数加法优化方法及系统。



背景技术:

在数字电路设计中,多操作数加法在数字信号处理、图片视频处理、高性能计算等多个方面具有广泛应用,其运算速度与资源开销往往会对电路设计质量产生重要影响。

高层次综合技术通过编译、调度、资源分配等过程,将高级语言直接转换为硬件描述语言,能够有效提高设计效率节省设计时间。高效的算法和硬件电路设计方法均有利于提升高层次综合工具的性能。对于多操作数加法,其硬件电路实现可以具有多种结构。然而在常规高层次综合系统中,通常采用全加器、半加器、或传统的加法器树来实现多操作数加法,而并未深入考虑多操作加法的设计空间探索和相关优化。这样一方面会造成较大的进位传播时延;另一方面往往不能很好地适应目标平台的逻辑结构,特别是对于目标平台为现场可编程门阵列(FPGA)的情况。因此,通过常规高层次综合系统,自动生成的硬件电路设计中,若具有较大规模的多操作数加法操作,则这部分设计往往会具有较大的时延并占用较多的硬件资源,从而影响硬件设计的整体质量。



技术实现要素:

为了解决上述技术问题,本发明的目的是:提供一种高层次综合工具中基于广义并行计数器实现的高性能多操作数加法优化方法。

为了解决上述技术问题,本发明的另一目的是:提供一种高层次综合工具中基于广义并行计数器实现的高性能多操作数加法优化系统。

本发明所采用的技术方案是:一种高层次综合工具中的多操作数加法优化方法,包括有以下步骤:

A、获取电路设计的高层次功能描述,进而得到该电路设计所包含的运算操作以及操作数;

B、判断步骤A中得到的运算操作是否出现3个或3个以上的操作数连续相加,若是,则载入加法优化处理单元,并进入步骤C执行此处理单元,反之则结束;

C、读取用户配置文件中的优化目标数据,根据优化目标数据建立压缩树,并保存压缩树信息;

D、根据步骤C中保存的压缩树信息生成可综合压缩树HDL代码。

进一步,所述步骤C具体包括:

C1、读取用户配置文件并得到优化目标数据,并根据优化目标对广义并行计数器进行优先级排序;

C2、使用经过优先级排序的广义并行计数器对多个操作数进行处理,生成压缩树并保存压缩树信息。

进一步,所述步骤B中,将操作数用二维点阵图表示。

进一步,所述步骤C2中,所述压缩树用于将多个数进行求和并以其和作为输出,保存的压缩树信息包括压缩树的级数、每一级使用的广义并行计数器类型和使用数目、以及最后加法器的输入输出信息。

进一步,所述步骤C中,所述压缩树的输入为多操作数加法的操作数,所述压缩树的输出为多操作数加法的操作数的和,所述压缩树的功能与多操作数加法的加法功能相同。

本发明所采用的另一技术方案是:一种高层次综合工具中的多操作数加法优化系统,该系统包括:

获取单元,用于获取电路设计的高层次功能描述,进而得到该电路设计所包含的运算操作以及操作数;

判断单元,用于判断获取单元中得到的运算操作是否出现3个或3个以上的操作数连续相加,若是,则载入加法优化处理单元,并进入执行此处理单元,反之则结束;

加法优化处理单元,用于读取用户配置文件中的优化目标数据,根据优化目标数据建立压缩树,并保存压缩树信息;

代码生成单元,用于根据加法优化处理单元保存的压缩树信息生成可综合的压缩树HDL代码。

进一步,所述加法优化处理单元包括:

排序模块,用于读取用户配置文件并得到设计优化目标数据,根据优化目标数据对广义并行计数器进行优先级排序;

生成模块,用于使用排序模块中进行过优先级排序的广义并行计数器对多个操作数进行处理,生成压缩树并保存压缩树信息。

进一步,所述判断单元中,将操作数用二维点阵图表示。

进一步,所述生成模块中,所述压缩树用于将多个数进行求和并以其和作为输出,保存的压缩树信息包括压缩树的级数、每一级使用的广义并行计数器类型和使用数目、以及最后加法器的输入输出信息。

进一步,所述加法优化处理单元中,所述压缩树的输入为多操作数加法的操作数,所述压缩树的输出为多操作数加法的操作数的和,所述压缩树的功能与多操作数加法的加法功能相同。

本发明的有益效果是:通过使用本发明方法,可以在高层次综合阶段,根据用户配置文件中的优化目标进行多操数加法的设计空间优化,有助于生成性能更优的多操作数加法电路,同时有利于提升高层次综合工具的性能。

本发明另一有益效果是:通过使用本发明系统,可以在高层次综合中,根据用户配置文件中的优化目标进行多操数加法的设计空间优化,有助于生成性能更优的多操作数加法电路,同时有利于提升高层次综合工具的性能。

附图说明

下面结合附图对本发明的具体实施方式作进一步说明:

图1是本发明方法的步骤流程图;

图2是本发明方法具体实施例的步骤流程图;

图3是本发明方法具体实施例中的加法示意图;

图4是本发明方法具体实施例中的二维点阵图;

图5是本发明方法的部分GPC点阵图示意图;

图6是本发明方法具体实施例中压缩树生成流程图;

图7是本发明系统的结构框图;

图8是本发明系统具体实施例中的结构框图。

具体实施方式

下面结合附图对本发明的具体实施方式作进一步说明:

参照图1,一种高层次综合工具中的多操作数加法优化方法,包括有以下步骤:

A、获取电路设计的高层次功能描述,进而得到该电路设计所包含的运算操作以及操作数;

本实施例为5个4比特的无符号数加法,获取结果为4个加法及5个操作数。

B、判断步骤A中得到的运算操作是否出现3个或3个以上的操作数连续相加,若是,则载入加法优化处理单元,并进入步骤C执行此处理单元,反之则结束;

本实施例将检测到5个操作数连续相加,判断结果为是,执行步骤C。本实施例中5个4比特无符号数相加过程如图3所示,其中aij表示第i个操作数的第j位,sk表示加法结果的第k位。

C、读取用户配置文件中的优化目标数据,根据优化目标数据建立压缩树,并保存压缩树信息;

D、根据步骤C中保存的压缩树信息生成可综合压缩树HDL代码。

参照图2,进一步作为优选的实施方式,所述步骤C具体包括:

C1、读取用户配置文件并得到优化目标数据,并根据优化目标对广义并行计数器(Generalized Parallel Counter,简称GPC)进行优先级排序;

其中一个具体的GPC输入输出关系用GPC(1,4,1,5;5)举例,此GPC具有5个权重为0的输入,1个权重为1的输入,4个权重为2的输入,1个权重为3的输入,它的输出为5比特的无符号数R,当所有输入都为1时:

R=5×20+1×21+4×22+1×23=(11111)2=(31)10

C2、使用经过优先级排序的广义并行计数器对多个操作数进行处理,生成压缩树并保存压缩树信息。

进一步作为优选的实施方式,所述设计优化目标包括面积优化、时序优化或时序面积积优化。

FPGA中不同GPC占用的硬件资源以及其输入到输出的时延是不同的,根据优化目标的不同使用不同的比较准则对其进行优先级排序。

例如在Xilinx的FPGA中,GPC(2,6;4)使用了3个LUT,其输入到输出的最大延时为0.316ns,输入与输出的个数差为2+6-4=4。而GPC(6;3)使用了2个LUT,其输入到输出的最大延时为0.293ns,输入与输出个数的差值为6-3=3。

若优化目标为时序优化,那么以GPC输入与输出的差和GPC输入到输出的最大延时的比值(记为PD)为排序基准。GPC(6;3)其PD值为3/0.293=10.239,GPC(2,6;4)其PD值为4/0.316=12.658,由于12.658>10.239,因此GPC(2,6;4)的优先级比GPC(6;3)高。

若优化目标为面积优化,那么以GPC输入与输出的差和GPC使用资源(通常为LUT)的比值(记为AD)为排序基准。GPC(6;3)其AD值为3/2=1.5,GPC(2,6;4)其AD值为4/3=1.333,由于1.5>1.333,因此GPC(6;3)优先级比GPC(2,6;4)高。

若优化目标为时序面积积优化,PD与AD的乘积(记为APD)为排序基准。如GPC(6;3)的APD为10.239*1.5=15.3585,GPC(2,6;4)的APD值为12.658*1.333=16.8731,由于18.8731>15.3585,因此GPC(2,6;4)的优先级比GPC(6;3)高。

在本发明具体实施例中设计优化目标为面积优化,在进行排序时使用GPC输入输出个数的差与使用资源的比值E作为排序标准,此比值越大表明对应GPC越能使用较少的资源压缩较多的输入。本实施例中使用的GPC为GPC(1,4,1,5;5)、GPC(4;3)和GPC(3;2),它们占用的硬件资源分别为4个2个和1个LUT,而它们输入与输出的差值分别为6、1和1,三个GPC对应的E值分别为6/4=1.5,1/2=0.5,1/1=1,而1.5>1>0.5,因此这三个GPC按照优先级从高到低排序依次为GPC(1,4,1,5;5)、GPC(3;2)和GPC(4;3)。

进一步作为优选的实施方式,所述步骤B中,将操作数用二维点阵图表示,如图4所示。

图4是图3对应的二维点阵图,二维点阵图将参与运算的操作数抽象为一个二维点阵,其中每一行代表一个操作数,每一个点代表操作数的某一位(取值为0或1),最左侧的点为所在行操作数的最高位,最右侧的点为所在行操作数的最低位,任意一列上的所有点所代表的权重相同。

图5列出了几种不同GPC的点阵图表示方法。在本实施例中,GPC网络的输出点阵图每列最多有2个点,即GPC网络的输出可组成两个新的操作数输入到后续的加法器中。

进一步作为优选的实施方式,所述步骤C1中,GPC是一种具有M比特输入n比特输出的电路结构,其功能是计算所有输入所代表的1的个数的总和,并表示为n比特的无符号数作为输出结果。其中每一个输入都具有一定的权重,此权重表示对应输入实际代表的1的个数,若某一个输入端的实际输入为A(只能为0或1),其权重为W,则此输入实际代表的1的个数为A*2W。GPC用符号可记为:(mk-1,mk-2,…,m1,m0;n),其中mk-1>0,mi中i代表输入的权重,mi代表权重为i的输入的个数,k代表输入位数,n代表输出位数,并且有:

GPC可将由多个操作数抽象成的二维点阵图不断压缩,最终得到所需个数的操作数。由于不同种GPC所能减少的输入个数、使用的硬件资源、输入到输出的延时都各不相同,因此可根据不同设计优化目标对GPC进行优先级排序,并尽量使用最高优先级GPC进行压缩。

进一步作为优选的实施方式,所述步骤C2中,所述压缩树用于将多个数进行求和并以其和作为输出,保存的压缩树信息包括压缩树的级数、每一级使用的广义并行计数器类型和使用数目、以及最后加法器的输入输出信息。

所述步骤C2中所述压缩树是一种可将多个数进行求和并以其和作为输出的结构,包括GPC网络和加法器两部分。GPC网络分为多个级(假设为N级),每一级可依据算法策略挑选不同的GPC对本级的输入进行压缩。第1级的输入是由多个操作数组成的原始输入;对其它级来说,由当前级之前所有级的剩余输出和原始输入的剩余输入组成了当前级的输入。最终,N级GPC网络将最初的点阵图压缩为每列最多不超过所需个数点的点阵图。最后将GPC网络的输出点阵图作为加法器的输入进行求和,并最终得到多个操作数的和。

参照图6,以本实施例生成的GPC网络为例:图中边框为实线的矩形代表GPC(1,4,1,5;5),实线连接线两端的点代表GPC(1,4,1,5;5)的输出;边框为虚线的矩形代表GPC(4;3),虚线连接线两段的点代表GPC(4;3)的输出;边框为有中心点虚线的矩形代表GPC(3;2),有中心点虚线的连接线两段的点代表GPC(3;2)的输出。本实施例中GPC网络共有3级,第一级使用了1个GPC(1,4,1,5;5)和2个GPC(4;3),第二级使用了2个GPC(3;2),第三级使用了1个GPC(3;2),如图6所示。第三级的输出作为之后加法器的输入,经运算后得到多操作数加法的结果。

进一步作为优选的实施方式,所述步骤C中,所述压缩树的输入为多操作数加法的操作数,所述压缩树的输出为多操作数加法的操作数的和,所述压缩树的功能与多操作数加法的加法功能相同。

参照图7,一种高层次综合工具中的多操作数加法优化系统,该系统包括:

获取单元,用于获取电路设计的高层次功能描述,进而得到该电路设计所包含的运算操作以及操作数;

判断单元,用于判断获取单元中得到的运算操作是否出现3个或3个以上的操作数连续相加,若是,则载入加法优化处理单元,并进入执行此处理单元,反之则结束;

加法优化处理单元,用于读取用户配置文件中的优化目标数据,根据优化目标数据建立压缩树,并保存压缩树信息;

代码生成单元,用于根据加法优化处理单元保存的压缩树信息生成可综合的压缩树HDL代码。

参照图8,进一步作为优选的实施方式,所述加法优化处理单元包括:

排序模块,用于读取用户配置文件并得到设计优化目标数据,根据优化目标数据对广义并行计数器进行优先级排序;

生成模块,用于使用排序模块中进行过优先级排序的广义并行计数器对多个操作数进行处理,生成压缩树并保存压缩树信息。

进一步作为优选的实施方式,所述判断单元中,将操作数用二维点阵图表示。

进一步作为优选的实施方式,所述生成模块中,所述压缩树用于将多个数进行求和并以其和作为输出,保存的压缩树信息包括压缩树的级数、每一级使用的广义并行计数器类型和使用数目、以及最后加法器的输入输出信息。

进一步作为优选的实施方式,所述加法优化处理单元中,所述压缩树的输入为多操作数加法的操作数,所述压缩树的输出为多操作数加法的操作数的和,所述压缩树的功能与多操作数加法的加法功能相同。

以上对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。

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