专利名称:一种数字大规模集成电路的资源共享系统及方法
技术领域:
本发明涉及数字大规模集成电路技术领域,尤其涉及一种数字大规模集成电路的资源共享系统及方法。
背景技术:
随着半导体工艺的飞速发展,数字大规模集成电路的应用得到了长足发展,处理器、通讯系统以及消费电子引领着集成电路融入了生活的各个方面。与此同步,随着集成电路的规模的变大,对电子设计自动化(EDA)工具的依赖性也越来越大,数字电路设计者把精力从最初的电路级逐步转移到今天的模块级、系统级,其余的任务主要是依靠EDA工具
来完成。目前的EDA工具虽然在流程上已经非常成熟,但是对于某些电路中的关键模块, 单纯的依赖于EDA工具并不是最优的,需要进行人为优化。尤其是诸如快速傅里叶变换 (FFT)此类运算密集型硬件电路中,运算单元是面积和功耗开销的主要部分之一。如果将运算单元在不同的时钟进行共享,而利用多路复用器根据不同的条件对输入进行选择,这对于降低硬件电路面积与功耗有着非常重要的意义。目前,在用硬件描述语言实现硬件电路时,可以有两种风格。第一,每一个算术逻辑运算都在RTL代码中用具体的运算符来表示,让综合工具自动优化算术逻辑单元的数目;第二,人为设定所需要的算术逻辑单元数目,通过多路开关来选择加法器的输入进行加法器资源共享。对于第二种方法,在固定运算单元数目的前提下,如何把表中每一个时钟周期的加减法映射到指定的硬件电路上,这是一个比较复杂的问题。否则电路很容易出现组合环或者不必要的关键路径,影响电路性能和功能。
发明内容
为了解决上述的技术问题,提供了一种数字大规模集成电路的资源共享系统及方法,其目的在于,针对现有综合技术的不足,给出了一种在综合过程中提高资源共享度,避免组合环和虚假关键路径的方法来降低硬件电路开销。本发明提供了一种数字大规模集成电路的资源共享方法,所述方法包括步骤10,在寄存器传输级设定所需要的加法器数目;步骤20,将每一个时钟周期的运算映射到指定的运算单元电路上,通过多路开关来选择运算单元的输入,所选择的运算单元形成的运算单元电路中不存在组合环或者虚假关键路径。所述步骤20具体包括步骤21 找出每种工作条件下运算单元的连接关系以及关键路径,每个运算单元作为一个节点并形成树状结构;所述关键路径的第一个节点为父节点,其深度等级为0 ;所述关键路径的最后一个节点为终端节点,其深度等级最大;所述父节点与终端节点之间的节点为子节点;所述关键路径为延时最长的路径;
步骤22 确定所有子节点的深度等级;步骤23 通过多路开关来选择运算单元的输入时,根据所述树状结构对不同节点进行数据通路相连,但是同一深度级的节点之间以及子节点到父节点之间不能进行数据通路相连,只允许从父节点到其下层节点之间进行数据通路相连。所述步骤23之后还包括计算所述父节点和所述终端节点之间所形成的每条分支的最大运算单元个数,选择所述父节点和所述终端节点之间所形成的每条分支的运算单元个数最小的树状结构作为最优树状结构。步骤10中,根据各运算条件所需的加法器的数量,最大的加法器的数量即为寄存器传输级所需要的加法器数目。本发明提供了一种数字大规模集成电路的资源共享系统,所述系统包括加法器数目确定模块,用于在寄存器传输级设定所需要的加法器数目;调度模块,用于将每一个时钟周期的运算映射到指定的运算单元电路上,通过多路开关来选择运算单元的输入,所选择的运算单元形成的运算单元电路中不存在出现组合环或者虚假关键路径。所述调度模块,用于找出每种工作条件下运算单元的连接关系以及关键路径,每个运算单元作为一个节点并形成树状结构;确定所有子节点的深度等级;通过多路开关来选择运算单元的输入时,根据树状结构对不同节点进行数据通路相连,但是同一级的节点之间以及子节点到父节点之间不能连线,只允许从父节点到其下层节点之间相连;其中,所述关键路径的第一个节点为父节点,其深度等级为0 ;所述关键路径的最后一个节点为终端节点,深度等级最大;所述父节点与终端节点之间的节点为子节点;所述关键路径为延时最长的路径。所述调度模块,还用于计算所述父节点和所述终端节点之间形成的每条分支的最大运算单元个数,选择所述父节点和所述终端节点之间形成的每条分支的运算单元个数最小的树状结构作为最优树状结构。寄存器传输级所需要的加法器数目为根据各运算条件所需的加法器的数量中的最大的加法器的数量。本发明可以降低EDA工具综合时运行时间,降低综合电路的面积和功耗,能够提高资源共享度并降低硬件电路开销。
图1为本发明实施例提供的数字大规模集成电路的资源共享方法流程图;图2为本发明第一实例的直接硬件映射结果;图3为本发明第一实例的资源共享方法结果一;图4为本发明第一实例的资源共享方法结果二 ;图5为本发明第一实例的资源共享方法结果三;图6为本发明第二实例的两种不同资源共享机制的比较示意图。
具体实施例方式本发明提供的技术数字大规模集成电路的资源共享方法包括在寄存器传输级确定硬件实现复杂度高的运算单元,然后把每一个时钟周期的运算映射到指定的运算单元电路上,通过多路开关来选择运算单元的输入,避免出现组合环或者虚假关键路径,降低硬件电路的开销。参见图1,本发明实施例提供了一种数字大规模集成电路的资源共享方法,具体包括以下步骤步骤1 找出每种工作条件下运算单元的连接关系以及延时最长的路径,也即关键路径,形成树状结构。步骤2 每个运算单元看作一个节点。关键路径的第一个节点称作父节点,其深度为0 ;最后一个节点称作终端节点,深度等级最大;其余为子节点。步骤3 对于子节点把其上一节点作为本节点的父节点,下一节点作为本节点的子节点,按照步骤2继续迭代,并为其父节点和终端节点指点深度等级,直到所有的节点都有确定的深度等级。步骤4 根据步骤1中的树状结构对不同节点进行数据通路相连,但是同一级的节点之间以及子节点到父节点之间不能连线,只允许从父节点到其下层节点之间相连。步骤5 将步骤4映射成的树状结构,计算父节点和终端节点每条分支之间的最大运算单元个数,选择父节点和终端节点每条分支之间的运算单元个数最小的树状结构,即为最优树状结构。通过以下具体实施例,本发明的方法可以得到详细的阐明。第一实例对于下面的RTL代码,把if分支称作条件1,把else分支称作条件2,其中条件1 和条件2下的逻辑可以映射为图2左右两部分所示的硬件架构。即条件1下,al与a2之和用加法器Ul来实现,其和为tmpl ;tmpl与a3之和用加法器U2来实现,其和为tmp2 ;tmpl 与a4之和用加法器U3来实现,其和为tmp3 ; tmp2与tmp3之和用加法器U4来实现,其和为 rel。条件2下,a5与a6之和用加法器U5来实现,其和为tmp4 ;tmp4与a7之和用加法器 U6来实现,其和为re2。if (conditionl == 1) begintmpl = al 与 a2 ;tmp2 = a3+tmpl ;tmp3 = tmpl+a4 ;rel = tmp2+tmp3 ;endelse if (condition2 == 2)begintmp4a5+a6 ;re2 = tmp4+a7 ;end.................可以看出,在条件1下需要4个加法器,而条件2需要2个加法器。但这两个条件不会同时成立,如果在这两种条件下进行硬件资源共享,最多只需要4个加法器就足够了。 图3-图5分别给出了三种不同的资源共享方法。在图3中,al与a2之和以及a5与a6之和均通过加法器Ul来实现,a3与tmp 1之和以及a7与tmp4之和均通过加法器U2来实现, 而a4与tmpl之和通过加法器U3来实现,tmp2与tmp3之和通过加法器U4来实现。在图 4中,al与a2之和通过加法器Ul来实现,a3与tmpl之和以及a5与a6之和均通过加法器 U2来实现,a4与tmpl之和以及a7与tmp4之和均通过加法器U3来实现,而tmp2与tmp3 之和通过加法器U4来实现。在图5中,al与a2之和以及a7与tmp4之和均通过加法器Ul 来实现,a3与tmpl之和通过加法器U2来实现,a4与tmpl之和通过加法器U3来实现,而 a5与a6之和以及tmp2与tmp3之和通过加法器U4来实现。对于方法一,如图3,关键路径是3个加法器的延时,U1-U2-U4或者U1-U3-U4。对于方法二,其关键路径如图4中虚线所示,为4个加法器的延时,在没有利用资源共享的条件下,其关键路径为3个加法器的延时, 很明显,这应该是一条虚假路径,这会恶化电路的性能。最恶劣的情况是图5中所示的路径U1-U2-U4-U1,形成了一个组合环,这会增加综合工具的运行时间且会导致错误的运行结果。对于方法一,代价是增添了多路开关,但是由于加法器实现复杂度远比多路开关大,所以本发明总体优势非常明显。第二实例按照本发明的资源共享方法对表1与表2的运算进进行优化,其中rj,ij (j = 1, 2-18)分别表示复数寄存器Rj内容的实虚部,cj (j = l,2…18)表示复数寄存器j的内容, tj中间变量,不需要储存,elk表示时钟周期。S(C)表示交换复数c的实部与虚部。D(a,b) =(a+b)+j*(a_b),a、b分别是某个复数寄存器的实虚部。A、B、C分别是常数sin ( π/8), sin ( π /4),cos ( π /8)。H表示寄存器保持上一个时钟周期的内容,X表示寄存器可以在随机状态。表1R1-R9流水线调度表
权利要求
1.一种数字大规模集成电路的资源共享方法,其特征在于,所述方法包括步骤10,在寄存器传输级设定所需要的加法器数目;步骤20,将每一个时钟周期的运算映射到指定的运算单元电路上,通过多路开关来选择运算单元的输入,所选择的运算单元形成的运算单元电路中不存在组合环或者虚假关键路径。
2.如权利要求1所述的数字大规模集成电路的资源共享方法,其特征在于,所述步骤 20具体包括步骤21 找出每种工作条件下运算单元的连接关系以及关键路径,每个运算单元作为一个节点并形成树状结构;所述关键路径的第一个节点为父节点,其深度等级为0 ;所述关键路径的最后一个节点为终端节点,其深度等级最大;所述父节点与终端节点之间的节点为子节点;所述关键路径为延时最长的路径;步骤22 确定所有子节点的深度等级;步骤23 通过多路开关来选择运算单元的输入时,根据所述树状结构对不同节点进行数据通路相连,但是同一深度级的节点之间以及子节点到父节点之间不能进行数据通路相连,只允许从父节点到其下层节点之间进行数据通路相连。
3.如权利要求2所述的数字大规模集成电路的资源共享方法,其特征在于,所述步骤 23之后还包括计算所述父节点和所述终端节点之间所形成的每条分支的最大运算单元个数,选择所述父节点和所述终端节点之间所形成的每条分支的运算单元个数最小的树状结构作为最优树状结构。
4.如权利要求1所述的数字大规模集成电路的资源共享方法,其特征在于,步骤10中, 根据各运算条件所需的加法器的数量,最大的加法器的数量即为寄存器传输级所需要的加法器数目。
5.一种数字大规模集成电路的资源共享系统,其特征在于,所述系统包括加法器数目确定模块,用于在寄存器传输级设定所需要的加法器数目;调度模块,用于将每一个时钟周期的运算映射到指定的运算单元电路上,通过多路开关来选择运算单元的输入,所选择的运算单元形成的运算单元电路中不存在出现组合环或者虚假关键路径。
6.如权利要求5所述的数字大规模集成电路的资源共享系统,其特征在于,所述调度模块,用于找出每种工作条件下运算单元的连接关系以及关键路径,每个运算单元作为一个节点并形成树状结构;确定所有子节点的深度等级;通过多路开关来选择运算单元的输入时,根据树状结构对不同节点进行数据通路相连,但是同一级的节点之间以及子节点到父节点之间不能连线,只允许从父节点到其下层节点之间相连;其中,所述关键路径的第一个节点为父节点,其深度等级为0 ;所述关键路径的最后一个节点为终端节点,深度等级最大;所述父节点与终端节点之间的节点为子节点;所述关键路径为延时最长的路径。
7.如权利要求6所述的数字大规模集成电路的资源共享系统,其特征在于,所述调度模块,还用于计算所述父节点和所述终端节点之间形成的每条分支的最大运算单元个数, 选择所述父节点和所述终端节点之间形成的每条分支的运算单元个数最小的树状结构作为最优树状结构。
8.如权利要求5所述的数字大规模集成电路的资源共享系统,其特征在于,寄存器传输级所需要的加法器数目为根据各运算条件所需的加法器的数量中的最大的加法器的数量。
全文摘要
本发明涉及一种数字大规模集成电路的资源共享系统及方法,属于数字大规模集成电路领域。该数字大规模集成电路的资源共享方法,包括步骤10,在寄存器传输级设定所需要的加法器数目;步骤20,将每一个时钟周期的运算映射到指定的运算单元电路上,通过多路开关来选择运算单元的输入,避免出现组合环或者虚假关键路径。本发明可以降低EDA工具综合时运行时间,降低综合电路的面积和功耗。
文档编号G06F17/50GK102314528SQ20101021980
公开日2012年1月11日 申请日期2010年7月7日 优先权日2010年7月7日
发明者乔树山, 黑勇 申请人:中国科学院微电子研究所