模硬件生成器的制作方法

文档序号:11519909阅读:142来源:国知局
模硬件生成器的制造方法与工艺

背景

如本领域中的技术人员已知的,通常被写为amodd的模运算在第一个数字(被除数a)除以第二个数字(除数d)之后返回余数。余数也可被称为模值。

存在可用于实现在硬件逻辑(例如,集成电路)中的模运算的几种方法。这样的硬件逻辑可形成诸如cpu(中央处理单元)或gpu(图形处理单元)的处理器的部分。一个示例方法将模值计算为迭代除法实现(例如,计算a/d的迭代除法)的自然副产物。特别地,在除数d是常数的情况下,除法器可被优化以只除以常数d并输出a的模值作为输出量。

其它示例方法使用不自然地产生模值的其他除法与乘法和减法结合以使用方程式(1)的恒等性来计算模值;

在除数d是2的幂的倍数(即,d=2kd0)的其它例子中,确定模值的问题可简化为通过输出输入量的最低有效k位来确定d0的模值。这意味着只有奇数d0需要被考虑。因此,x[n-1:0]modd可分解成与x[k-1:0]连结的x[n-1:k]modd0。例如,xmod6(k=1)可如在方程式(2)中所示的分解,其中“&”指示位串的连结。

x[n-1:0]mod6=(x[n-1:1]mod3)&x[0](2)

下面所述的实施方式仅作为例子被提供,且不是解决生成用于实现模运算的硬件设计的已知方法的任何或所有缺点的实现的限制。

概述

这个概述被提供来以简化的形式介绍一系列概念,其在下面在详细描述中被进一步描述。这个概述并不打算识别所要求保护的主题的关键特征或必要特征,也不打算用作帮助确定所要求保护的主题的范围。

在本文描述了用于生成硬件设计以使用一个或多个范围减小级关于恒定值d来计算对于在目标输入范围内的任何输入值的模值的方法和引擎。通过迭代过程来生成硬件设计,迭代过程识别用于将增加的输入范围连续映射到目标输出范围的最佳部件,直到将目标输入范围映射到目标输出范围的部件被识别出为止。每个迭代涉及对于多个范围减小方法中的每个生成用于将输入范围映射到目标输出范围的至少一个硬件设计部件,合成所生成的硬件设计部件,以及基于合成的结果来选择所生成的硬件设计部件作为最佳部件。

第一方面提供生成硬件设计以关于恒定值d来计算对于在目标输入范围内的任何整数输入值的模值的方法,硬件设计包括一个或多个范围减小级,该方法包括在处理模块中:(a)使用多个模保持范围减小方法中的每个生成至少一个硬件设计部件以将期望输入范围映射到目标输出范围;(b)合成硬件设计部件中的每个;(c)基于该合成来选择硬件设计部件中的一个作为对期望输入范围的最佳硬件设计部件;以及(d)扩大期望输入范围并重复(a)到(d),直到最佳硬件设计部件的输入范围包括目标输入范围为止。

第二方面提供生成硬件设计以关于恒定值d来计算对于在目标输入范围内的任何整数输入值的模值的模硬件生成引擎,硬件设计包括一个或多个范围减小级,该引擎包括:多个范围减小模块,每个范围减小模块配置成使用多个模保持范围减小方法中的一个生成硬件设计部件以映射输入范围;合成模块,其配置成生成对于硬件设计部件的一个或多个合成度量,一个或多个合成度量提供硬件设计部件的合成版本的质量的指示;决策逻辑,其与多个范围减小模块和合成模块通信,决策逻辑配置成:(a)使用多个范围减小方法中的每个生成至少一个硬件设计部件以将期望输入范围映射到目标输出范围;(b)从合成模块得到对于硬件设计部件中的每个的一个或多个合成度量;(c)基于合成度量来选择硬件设计部件中的一个作为对期望输入范围的最佳硬件设计部件;以及(d)扩大期望输入范围并重复(a)到(d),直到最佳硬件设计部件的输入范围包括目标输入范围为止。

第三方面提供计算机可读代码,其适于在代码在计算机上运行时执行第一方面的方法的步骤。

第四方面提供计算机可读存储介质,其具有在其上编码的第三方面的计算机可读代码。

第五方面提供根据第一方面中的任一个的方法生成的计算模值的硬件设计,该硬件设计在集成电路制造系统中被处理时配置集成电路制造系统以生成集成电路的表现形式来计算模值。

第六方面提供计算机可读存储介质,其具有存储在其上的根据第一方面的方法生成的计算模值的硬件设计,该硬件设计在集成电路制造系统中被处理时配置集成电路制造系统以生成集成电路的表现形式来计算模值。

第七方面提供实现根据第一方面的方法生成的计算模值的硬件设计的集成电路。

优选特征可在适当时被组合,如对技术人员将明显的,并可与本发明的任何方面组合。

附图的简要说明

本发明的实施方式将通过示例的方式参考附图被描述,其中:

图1是用于生成实现模运算的硬件设计的模硬件生成引擎的方框图;

图2是图1的模硬件生成引擎的示例实现的方框图;

图3是生成实现模运算的硬件设计的示例方法的流程图;

图4是用于选择部件以实现硬件设计的最终范围减小级的示例方法的流程图;

图5是用于选择部件以实现硬件设计的上游范围减小级的示例方法的流程图;

图6是示出用于生成对于示例模运算的示例硬件设计的图3的方法的第一迭代的输出的示意图;

图7是示出用于生成对于图6的示例模运算的示例硬件设计的图3的方法的第二迭代的输出的示意图;

图8是示出用于生成对于图6的示例模运算的示例硬件设计的图3的方法的第三迭代的输出的示意图;

图9是在图6-8的例子中生成的示例硬件设计的方框图;

图10是示出与使用图3的方法所生成的实现对于第一输入范围和第一除数的模运算的硬件设计的延迟时间比较的面积的曲线图;

图11是示出与使用图3的方法所生成的实现对于第二输入范围和第二除数的模运算的硬件设计的延迟时间比较的面积的曲线图;

图12是示出与使用图3的方法所生成的实现对于第三输入范围和第三除数的模运算的硬件设计的延迟时间比较的面积的曲线图;

图13是示例性基于计算的设备;以及

图14是示例性集成电路制造系统的方框图。

共同的参考数字在全部附图中用于指示相似的特征。

详细描述

下面仅作为例子描述本发明的实施方式。这些例子代表实施本发明的、申请人当前已知的最佳方式,但是它们并不是这可被实现的唯一方式。该描述阐述例子的功能和用于构造和操作例子的步骤的顺序。然而,相同或等效的功能和顺序可由不同的例子实现。

其它示例方法经由一个或多个模保持映射来生成模值。映射采用在输入范围[e,f]中的输入值,并将它映射到在输出范围[m,n]中的值。在其中输出范围小于输入范围的映射被称为范围减小。模保持映射是特殊映射,其中输入和输出值将为特定的除数产生相同的模值。例如,如果对于特定的除数d,模保持映射的输入是x而模保持映射的输出是y,则xmodd=ymodd。

在一些例子中,通过一系列的模保持映射来生成模值。例如,第一级可将输入x映射到第一中间输出y1,第二级可将第一中间输出y1映射到第二中间输出y2,依此类推,直到输入被映射到输出范围[0,d-1]为止。在方程式(3)中表示在输入、中间输出和最终输出之间的关系:

xmodd=y1modd=y2modd=…=yfmodd=yf(3)

存在用于实现模保持范围减小的多个不同的方法,其在本文被称为模保持范围减小方法或仅称为范围减小方法。例如在一些情况下,可通过加上或减去除数d的倍数或应用诸如在方程式(4)中所示的变换的变换来将输入值映射到输出值,其中x是输入值,而xi是输入值x的第i位:

x=∑i2ixi→y=∑i(2imodd)xi(4)

虽然有多个不同的范围减小方法,但是用于通过一个或多个范围减小级生成实现模运算的硬件设计的很多工具一般被约束为对于每个范围减小级只使用一个特定的范围减小方法。虽然更复杂的工具可允许对于不同的范围减小级所使用的不同的范围减小方法,但是用于特定的范围减小级的范围减小方法的选择一般基于静态数字度量而不是基于实际硬件度量来作出。

相应地,在本文描述了用于通过迭代地选择最佳硬件设计部件以将越来越大的输入范围映射到目标输出范围直到将目标输入范围映射到目标输出范围的硬件设计部件被选择为止通过一个或多个范围减小级来生成实现模运算(由目标输入范围[minin,maxin]和目标输出范围[minout,maxout]=[0,d-1]来定义,其中d是恒定除数)的硬件设计的方法和引擎。每个迭代涉及:对于多个范围减小方法中的每个生成将特定输入范围映射到目标输出范围的至少一个硬件设计部件,每个硬件设计部件包括使用相应的范围减小方法的第一范围减小级;合成所生成的硬件部件;以及基于该合成来选择所生成的硬件设计部件之一作为将特定输入范围映射到目标输出范围的最佳部件。

实现模运算的硬件设计包括多个连续的模保持范围减小级,每个级使用多个范围减小方法中的一个来实现模保持映射。不同的级可使用不同的范围减小方法。级被串联连接,使得较早的级的输出成为较迟的级的输入。每个后继的级具有比前一级更小的输入范围。如果级a馈送到级b内,则级a被认为是级b的上游,且类似地,级b被认为是级a的下游。

在一些例子中,从后到前生成模运算硬件设计。特别是在第一迭代中,通过使用多个范围减小方法生成潜在部件、合成所生成的部件并基于合成的结果(例如,具有最低面积或最好的速度的合成)选择所生成的部件中的一个作为最佳部件来选择用于将小输入范围映射到目标输出范围的最佳硬件设计部件。在下一迭代中,用于将比前一迭代更大的输入范围映射到目标范围的最佳硬件设计部件接着以类似的方式被识别,即,通过使用多个范围减小方法生成将较大的输入范围映射到目标输出范围的部件、合成所生成的部件并基于合成的结果选择所生成的部件中的一个。该方法继续,直到选择出将整个输入范围映射到目标输出范围的最佳硬件部件为止。

选择连续地映射较大的输入范围的最佳部件而不是选择连续地映射较小的输入范围的最佳部件可增加实现模运算的硬件设计可被产生的速度和/或效率。特别是通过反向工作,待估计的不同可能的部件的数量可明显减小。例如,如果g是范围减小方法的数量而h是范围减小级的数量,则从目标输入范围解决问题导致大小gh的问题,而从目标输出范围解决问题导致大小gh的问题。测试表明,在传统方法可能花费多于一年来使用特定的一组范围减小方法产生对于特定的输入和输出范围组合的硬件设计的情况下,可使用本文所述的方法在一天内产生对于相同的输入和输出范围组合以及一组范围减小方法的硬件设计。

首先参考图1,其示出用于生成实现模运算的硬件设计102(其在本文也被称为模硬件设计)的模硬件生成引擎100的例子。

模硬件生成引擎100接收目标输入范围104和恒定除数(或恒定值)d106作为输入以用于模运算。目标输入范围可由最小输入数字minin和最大输入数字maxin明确地定义;或它可由输入的位的数量n来定义。特别地,对于n个位的无符号输入,目标输入范围可被确定为[0,2n-1]。目标输出范围由除数d定义为[0,d-1]。

模硬件生成引擎100生成硬件设计以对于所接收的输入范围和除数实现包括一个或多个模保持范围减小级的模运算。如上所述,每个范围减小级使用多个范围减小方法中的一个来将输入范围映射到输出范围。通过迭代过程来生成硬件设计,迭代过程选择用于将增加的输入范围连续地映射到目标输出范围的最佳部件,直到将目标输入范围映射到目标输出范围的部件被选择为止。每个迭代包括对于多个范围减小方法中的一个生成至少一个硬件部件以将输入范围映射到目标输出范围,每个部件具有使用相应的范围减小方法来映射输入范围的第一范围减小级;合成所生成的部件;以及基于合成的结果来选择所生成的部件中的一个作为最佳部件。

合成的结果可以是所合成的部件的qor(结果的质量)的指示。例如,合成的结果可以在一个或多个合成度量的形式中,诸如但不限于延迟时间(即,产生结果的时间)、面积和功率使用。模硬件生成引擎100接着使用合成的结果(例如,合成度量)来为特定的输入范围选择最好或最佳部件。

在一些情况下,模硬件生成引擎100接收提供关于如何从合成的结果(例如,合成度量)中选择最好或最佳部件的信息的一个或多个选择标准108作为输入。在一些情况下,选择标准可指示哪个合成度量是最重要的。例如,选择标准可指定延迟时间是最重要的,使具有最短延迟的部件被选择为最佳部件。在其它例子中,选择标准可指定面积是最重要的,使具有最小面积的部件被选择为最佳部件。

在其它情况下,选择标准可指定在用于选择最佳部件的合成度量之间的某个关系。例如,选择标准可向合成度量分配指示它们的相对重要性的权重。在其它例子中,选择标准可指定合成度量的组合以实现某个目标。例如,如果合成度量包括面积a和延迟d,则选择标准可指示具有最低(a+100d)的部件将被选择为以特定的面积与延迟比为目标。

对本领域中的技术人员将明显的是,这些仅仅是例子,且选择标准可基于合成度量来指定或多或少复杂度的选择功能。例如,选择标准可指定面积是最重要的合成度量,但如果面积不确定地指示一个部件比另一部件好(例如,面积度量是嘈杂的),则延迟可用作辅助度量。这样的选择功能可由下面的逻辑来表示,其中a1是部件1的面积,d1是部件1的延迟,a2是部件2的面积,以及d2是部件2的延迟:

术语“硬件设计”在本文用于指对于电子系统(例如,处理器)的全部或部分的集成电路的描述,该描述可用于生成集成电路的硬件表现形式(例如,硬件设计可被合成到硅内或用于对现场可编程门阵列(fpga)编程)。硬件设计可涉及电子系统(例如,处理器)的模块、块、单元、子系统、系统或其任何组合。

硬件设计可以用高级硬件描述语言(hdl)来实现,诸如但不限于寄存器传送语言(rtl)。寄存器传送语言的例子包括但不限于vhdl(vhsic硬件描述语言)和verilog。对本领域中的技术人员将明显的是,可使用其它高级语言,诸如专用高级语言。

现在参考图2,其示出图1的模硬件生成引擎100的示例实现的方框图。模硬件生成引擎100包括用于根据多个范围减小方法中的一个来生成硬件设计部件以将特定输入范围映射到特定输出范围的多个模保持范围减小模块202;用于合成一个或多个部件并生成合成度量的合成模块204;用于生成硬件设计以使用范围减小模块202和合成模块204为所接收的目标输入范围和除数实现包括一个或多个范围减小级的模运算的决策逻辑206;以及识别每个迭代的最佳硬件设计部件208。

每个模保持范围减小模块202是接收输入范围和除数并生成在本文可被简单地称为“部件”的硬件设计部件的软件模块,该硬件设计部件使用多个模保持范围减小方法中的一个来将输入范围映射到较小的输出范围,同时保持输入的模值。每个部件可以用高级硬件描述语言(hdl)来实现,诸如但不限于寄存器传送语言(rtl)。寄存器传送语言的例子包括但不限于vhdl(vhsic硬件描述语言)和verilog。对本领域中的技术人员将明显的是,可使用其它高级语言,诸如专用高级语言。

可由范围减小模块202使用的示例模保持范围减小方法包括但不限于相减方法、贪婪模方法、成对贪婪模方法、无符号倍数法、成对无符号倍数法、贪婪带符号方法和成对贪婪带符号方法。

相减方法通过从输入x中减去除数d的倍数k来将无符号输入范围映射到无符号输出范围。例如,相减方法可根据下式将输入值x映射到输出值:

如果((x-kd)<0){返回x}否则{返回x-kd}

可使用预先确定的启发法来选择倍数k。例如,给定输入范围[0,m],可根据下式来选择倍数k:

这基于相减方法对小输入范围是最有效的前提,所以在这些情况下,值得尝试k的各种值。然而如果输入范围大,则只有试图二等分输入范围的k的单个值被尝试。

贪婪模方法通过将输入转换成2的幂的和并生成作为2的每个幂的模值的和的输出来将带符号和无符号输入范围映射到无符号输出范围。例如,贪婪模方法可根据下式将输入x映射到输出y,其中xi是输入的第i位:

这样的方法可被描述为“贪婪的”,因为xi→2imodd的映射是最多的减小,其在隔离中对于xi是可能的。然而,这样的方法不考虑下面的事实:2imodd可具有大的汉明权重,其在硬件中实现起来可会是昂贵的。

成对贪婪模方法将带符号和无符号输入范围映射到无符号输出范围,并基于与贪婪模方法相同的前提,但也通过对于对(i,j)的(2imodd)的值进行检查,使得(2imodd)+(2jmodd)≥d以如下将输入x映射到输出y:

无符号倍数法将带符号和无符号输入范围映射到无符号输出范围,并基于与贪婪模方法相同的前提,但在无符号倍数法中(2imodd)的值被评估以确定加上除数d的倍数是否将减小汉明权重。基于该评估,尝试几个不同的实现,其可具有下面的形式:

该方法具有在减小范围的成本与范围被减小的量之间的折衷。优选地,除数d的尽可能多的倍数被加上而不使输出范围变得大于目标输出范围。

成对无符号倍数法通过实现上面关于成对贪婪模方法所描述的配对和上面关于贪婪带符号方法所描述的添加d的倍数来将带符号和无符号输入范围映射到无符号输出范围。

贪婪带符号方法通过将输入转换成2的幂的和并生成作为对于2的每个幂取值的模的和的输出来将带符号和无符号输入范围映射到带符号输出范围,这保持到范围的映射。例如,如果xmodsd是到范围的模保持映射,则贪婪带符号方法可根据下式将输入x映射到输出y:

成对贪婪带符号方法通过结合贪婪带符号方法实现上面关于成对贪婪模方法描述的配对来将带符号和无符号输入范围映射到带符号输出范围。

在本文所述的例子中,模硬件生成引擎100包括三个模保持范围减小模块202,但对本领域中的技术人员将明显的是,可只使用两个范围减小模块202,或可使用多于三个范围减小模块202。

合成模块204是配置成生成硬件设计部件的合成版本并为每个合成部件向决策模块206提供合成度量的软件模块。如本领域中的技术人员已知的,合成用硬件描述语言(hdl)(诸如vhdl)实现的硬件设计涉及根据逻辑门将由hdl描述的期望电路行为的抽象形式转换成硬件实现。

合成度量提供合成部件(其可在本文被称为硬件设计部件的合成版本)的质量的指示。例如,合成度量可提供关于产生模值的延迟、合成部件的面积和/或功率使用的信息。对本领域中的技术人员将明显的是,这些仅仅是例子以及合成度量可传达描述或提供合成部件的qor的指示的其它信息。

决策逻辑206是配置成为目标输入范围和除数生成硬件设计以实现包括一个或多个范围减小级的模运算的软件部件,其中用于实现特定级的部件(和因而的范围减小方法)对于用于使用各种范围减小方法来实现级的部件是基于从合成工具204接收的合成度量的。特别地,决策逻辑206被配置成迭代地选择用于将增加的输入范围连续地映射到输出范围的部件,其中每个迭代涉及使用模保持减小模块202中的每个来生成将输入范围映射到目标输出范围的部件,使用合成模块204合成所生成的部件,以及基于由合成模块204和/或选择标准生成的合成度量来选择所生成的部件中的一个作为用于将那个输入范围映射到目标输出范围的最佳部件。

决策逻辑206通过选择将小输入范围映射到目标输出范围的部件来开始。以类似的方式选择将较大输入范围连续地映射到目标输出范围的部件,直到将整个目标输入范围映射到目标输出范围的部件被选择为止。基于在前一迭代中选择的最佳部件的输入范围来选择用于随后迭代的输入范围。

参考图3描述用于生成硬件设计以对于目标输入范围和除数实现模运算的示例方法,其由决策逻辑206实现。

在每个迭代中由决策逻辑206选择的最佳部件可被存储为最佳部件208以用于在以后的迭代中使用。

现在参考图3,其示出用于生成对于可由图2的决策逻辑206执行的模运算的硬件设计的示例方法300。方法300在块302处开始,其中决策逻辑206接收目标输入范围和恒定除数(或恒定值)。如上所述,目标输入范围可例如由最小输入数字和最大输入数字或由输入的位的数量n来指定。一旦目标输入范围和恒定除数被接收到,则方法300就进行到块304。

在块304处,决策逻辑206识别用于将目标输入范围的子范围映射到输出范围(例如,[0,d-1])的最佳部件。通过使用范围减小模块202的每个来生成将小输入范围映射到目标输出范围的至少一个部件、使用合成模块204合成所生成的部件并基于由合成模块204生成的合成度量选择所生成的部件中的一个来识别最佳部件。下面参考图4描述可由决策逻辑206实现的块304的示例方法。一旦决策逻辑206选择了最佳部件,则方法300就进行到块306。

在块306处,决策逻辑206确定对于最佳部件的输入范围是否包括目标输入范围。如下面更详细描述的,在一些情况下,选择的部件的输入范围可匹配最初指定的输入范围(例如,如果最初指定的输入范围是[0,13],则选择的部件的输入范围是[0,13])。然而,在其它情况下,对于特定部件的输入范围可大于最初指定的输入范围(例如,如果最初指定的输入范围是[0,13],则选择的部件的输入范围事实上可以是[0,24])。如果选择的部件的输入范围大于最初指定的输入范围,则选择的部件对于较大输入范围可被识别为最佳部件。

如果最佳部件的输入范围包括目标输入范围,则不需要另外的级,且方法进行到块310。然而,如果当前级的输入范围不包含目标输入范围,则需要至少一个额外/不同的级来将整个目标输入范围映射到目标输出范围,且方法300进行到块308。

在块308处,决策逻辑206识别最佳部件以将比在前一迭代中选择的最佳部件的输入范围更大的输入范围映射到目标输出范围。例如,如果前一选择的部件是对于[0,15]的输入范围的最佳部件,则下一部件的输入范围必须大于[0,15](例如,[0,16])。

通过使用模保持范围减小模块202中的每个生成映射较大输入范围的初级部件(这个初级部件代表将输入范围映射到另一范围的范围减小级,初级部件可单独地或结合在前一迭代中识别的最佳部件来使用,以将输入范围映射到目标输出范围)、对于每个所生成的部件通过组合所生成的部件与一个或没有以前识别的最佳部件来生成将较大输入范围映射到目标输出范围的次级部件、使用合成模块204合成次级部件并基于由合成模块204生成的合成度量选择次级部件中的一个来选择对于较大输入范围的部件。

例如,如果第一范围减小方法生成将[0,31]的输入范围映射到[0,15]的输出范围的初级部件,但目标输出范围是[0,12],则初级部件可与将[0,15]的输入范围映射到[0,12]的输出范围的以前识别的最佳部件组合以生成将[0,31]的输入范围映射到目标输出范围[0,12]的次级部件。

以这种方式联结部件基于下面的假设:用于执行可使用映射到输出范围[minout,maxout]的部件x来完成的全模运算(即,到目标输出范围[0,d-1]的映射)的最好或最佳硬件设计是将部件x的输出馈送到从以前找到的最佳部件的子集中选择的最佳部件y内,最佳部件的输入范围包括[minout,maxout]且输出范围被包括在目标输出范围内。

下面参考图5描述可由决策逻辑206实现的用于实现块308的示例方法。一旦决策逻辑206识别出用于将较大输入范围映射到目标输出范围的最佳部件,则方法300就进行回到块306。

在块310处,一旦对于包括整个目标输入范围的输入范围识别出最佳部件,最佳部件就作为模硬件设计102被输出。

现在参考图4,其示出用于实现图3的方法300的步骤304以选择用于将小输入范围映射到目标输出范围的最佳部件的示例方法400。方法400在块402和404处开始,其中决策逻辑206将期望输出范围设置到目标输出范围[0,d-1],其中d是恒定除数;以及决策逻辑206将期望输入范围设置为包括在目标输出范围上的至少一个额外数字(例如,期望输入范围可被设置为[0,d])。一旦期望输入和输出范围被设置,方法400就进行到块406。

在块406处,决策逻辑206使用每个模保持范围减小模块202生成将期望输入范围映射到在块402和404中指定的期望输出范围的至少一个部件。例如,在存在三个范围减小模块202的情况下,决策逻辑206生成至少三个部件,使用第一范围减小方法来将期望输入范围(例如,[0,d])映射到期望输出范围(例如,[0,d-1])的第一部件;使用第二范围减小方法来将期望输入范围(例如,[0,d])映射到期望输出范围(例如,[0,d-1])的第二部件;以及使用第三范围减小方法来将期望输入范围(例如,[0,d])映射到期望输出范围(例如,[0,d-1])的第三部件。

在块408处,合成模块204合成在块406处生成的部件的每一个,分析所合成的部件,并基于该分析来产生对于每个部件的合成度量。如上所述,合成在诸如vhdl的硬件描述语言(hdl)中实现的硬件设计涉及根据逻辑门将由hdl描述的期望电路行为的抽象形式转换成硬件实现。合成模块204分析每个所合成的部件以评估合成的质量并接着产生代表该分析的合成度量(例如,延迟、面积、功率)。

在例如决策逻辑206在块406处生成三个部件的情况下,则合成模块204分析这三个部件中的每个,然后分析每个所合成的部件以确定例如与部件相关联的延迟、所合成的部件的面积和/或部件的功率使用。

一旦部件被合成且合成度量被生成,方法400就进行到块410。

在块410处,决策逻辑206基于合成度量来选择在块406处生成的部件中的一个作为将期望输入范围映射到期望输出范围(即,目标输出范围)的最好或最佳部件。如上所述,决策逻辑206可接收选择标准,其指示哪些度量/特征和其优先级/组合应在选择最好或最佳部件时被使用。例如,选择标准可指定延迟是最重要的,使决策逻辑206选择具有最小延迟的部件。一旦部件被选择为最佳部件,它就作为最佳部件208被保存,使得它可在随后的迭代中被使用。方法400然后进行到块412。

在块412处,决策逻辑206确定对于选择的部件的最大输入范围。特别地,虽然选择的部件可已经被生成以将期望输入范围[0,d]映射到期望输出范围[0,d-1],但是该部件也许能够将较大输入范围映射到同一输出范围而不需要对部件的任何改变。最大输入范围被定义为[0,maxin]。

在一些情况下,决策逻辑206可通过仿真来确定选择的部件的最大输入范围。例如,仿真可被运行,其将增加的数字连续输入到部件内,直到部件不产生正确的输出(例如,不在目标输出范围内的或不保持模映射的输出)为止。

在其它情况下,决策逻辑206可基于用于生成部件的特定的范围减小方法在数学上确定选择的部件的最大输入范围。例如,如果无符号倍数法被用于生成部件,则最大输入值至多是基于预期的输入位的数量的值。二进制搜索方法可接着用于找到实际最大输入范围。

一旦选择的部件的最大输入范围被确定,则方法400就进行到块414。在一些情况下,不是确定对于仅仅选择的部件的最大输入范围,决策逻辑206可被配置成识别对于所生成的部件的每一个的最大输入范围,且这个信息及其合成度量可连同所生成的部件一起被存储,用于以后使用来防止在以后的上游级中不必要地重复计算。

在块414处,决策逻辑206将选择的部件识别为用于将在块412中识别的最大输入范围(例如,[0,maxin])映射到目标输出范围的最佳部件。通过这样做,决策逻辑206假设被确定为用于将输入范围[minin,maxin]映射到输出范围[minout,maxout]是最佳的但能够将较大输入范围[minapplicable,maxapplicable]映射到同一输出范围[minout,maxout]而没有对设计进行任何改变的部件是对于较大输入范围的最佳部件。虽然这个假设并不总是证明是正确的,但是它在相当大比例的时间中是正确的。此外通过做出这个假设,需要被生成和分析的最佳或最好部件的数量明显减小,从而允许用于模运算的硬件设计部件更快地生成。一旦选择的最佳部件的输入范围被设置为最大输入范围,方法400就结束。

现在参考图5,其示出用于实现图3的步骤308的示例方法500以识别用于将较大输入范围映射到目标输出范围的最佳部件。

方法500在块502处开始,其中决策逻辑206将期望输入范围设置为在前一迭代中识别的最佳部件的最大输入范围加上至少一个额外的数字。例如,在前面选择的最佳部件的最大输入范围是[0,s]的情况下,则期望输入范围可被设置为[0,s+1]。一旦期望输入范围被设置,方法500就进行到块504。

在块504处,决策逻辑206使用每个模保持范围减小模块202来生成映射在块502中指定的输入范围的至少一个初级部件。换句话说,决策逻辑206使用每个范围减小方法来生成映射期望输入范围的至少一个初级部件。例如,在存在三个范围减小模块202的情况下,决策逻辑206使用范围减小模块202来生成至少三个初级部件,使用第一范围减小方法来映射期望输入范围(例如,[0,s+1])的第一初级部件;使用第二范围减小方法来映射输入范围(例如,[0,s+1])的第二初级部件;以及映射期望输入范围(例如,[0,s+1])的第三初级部件。

如上所述,每个初级部件代表将输入范围映射到另一范围的范围减小级,初级部件可单独地使用或结合在以前识别的最佳部件来使用,以将输入范围映射到目标输出范围。

一旦初级部件被生成,方法500就进行到块506。

在块506处,决策逻辑206通过组合初级部件与一个或没有以前识别的最佳部件来生成对于将期望输入范围映射到目标输出范围的每个初级部件的次级部件。

特别地,决策逻辑206确定每个初级部件的输出范围。决策逻辑206可以用与决策逻辑206确定部件的最大输入范围相同的方式确定每个初级部件的输出范围。例如,决策逻辑206可运行仿真来确定输出范围,或决策逻辑206可在数学上确定输出范围。

一旦每个部件的输出范围被确定,决策逻辑206就为每个初级部件确定输出范围是否匹配目标输出范围。如果用于初级部件的输出范围匹配目标输出范围,则不需要另外的部件/级来将期望输入范围映射到目标输出范围,且对于那个初级部件的次级部件恰好是初级部件。

然而,如果用于特定的初级部件的输出范围大于目标输出范围,则决策逻辑206识别可与初级部件组合的以前识别的最佳部件以将期望输入范围映射到目标输出范围。特别地,决策逻辑206对于具有大于目标输出范围的输出范围的每个初级部件识别以前识别的最佳部件,其具有部件的识别出的输出范围落入的输入范围。例如,如果用于初级部件的识别出的输出范围是[0,16]且存在将[0,18]的输入范围映射到目标输出范围[0,12]的以前识别的最佳部件k;那么由于初级部件的输出范围[0,16]落在目标输出范围[0,18]内,因此初级部件可与以前识别的最佳部件k组合以将期望输入范围映射到目标输出范围。然后通过将初级部件馈送到以前识别的最佳部件内来生成次级部件。

如果识别出的输出范围落在多于一个的以前识别的最佳部件的输入范围内,则在一些情况下,决策逻辑206可配置成生成多个次级部件(与每个可能的最佳部件组合的初级部件);且在其它情况下,决策逻辑206可配置成选择最佳部件中的一个以生成次级部件。例如,决策逻辑206可配置成选择具有较小输入范围的最佳部件。

一旦对于在块504中生成的每个初级部件生成至少一个次级部件,方法500就进行到块508。

在块508处,合成模块204合成在块506处生成的次级部件中的每一个,分析所合成的次级部件,并基于该分析产生对于每个次级部件的合成度量。如上所述,合成在诸如vhdl的硬件描述语言(hdl)中实现的硬件设计涉及根据逻辑门将由hdl描述的期望电路行为的抽象形式转换成硬件实现。合成模块204分析每个所合成的部件以评估合成的质量并接着产生代表该分析的合成度量(例如,延迟、面积、功率)。

在例如决策逻辑206在块506处生成三个次级部件的情况下,则合成模块204合成这三个次级部件中的每个,然后分析每个所合成的部件以生成合成度量,诸如但不限于与部件相关联的延迟、所合成的部件的面积和/或部件的功率使用。

合成将期望输入范围映射到目标输出范围的整个部件允许其中一个范围减小级特别好地馈送到另一范围减小级内的硬件设计以优于其中范围减小级不特别好地馈送到另一范围内的其他硬件设计而被选择。此外,合成整个部件防止当完整的硬件设备被合成时在qor中的任何意外的下降。特别地,通过合成并分析完整的硬件设计,合成度量将包括在将多个范围减小级连接在一起时的任何开销。

一旦次级部件被合成且合成度量被生成,方法500就进行到块510到514,其中基于合成度量将次级部件中的一个选择为将期望输入范围映射到目标输出范围的最佳部件,对于选择的次级部件的最大输入范围被确定,且选择的次级部件被识别为最佳部件以将最大输入范围映射到目标输出范围。块510到514通常相应于上面参考图4所述的方法400的块410到414。

在随后的迭代中生成的初级部件可能将较大输入范围直接映射到与对于较小输入范围的以前选择的最佳部件相同的输出范围。在随后迭代的初级部件根据合成度量是“更好”的情况下,则以前识别的部件可以不以形成最终硬件设计的部分结束。

例如,决策逻辑206可以把将输入范围[0,20]映射到输出范围[0,12]的最好部件识别为部件z,并把将输入范围[0,30]映射到输出范围[0,12]的最好部件识别为部件y。如果合成度量指示部件y相对于部件z是优选的,则部件z可以不被包括在最终硬件设计中。然而,这可能只作为合成度量是嘈杂的结果而很少发生。

现在参考图6-9,其示出使用图3到图5的方法生成用于示例模运算的示例硬件设计。特别地,图6示出该方法的第一迭代的结果;图7示出该方法的第二迭代的结果;图8示出该方法的第三迭代的结果;以及图9示出所产生的硬件设计。

在图6到9的例子中,在硬件中实现的示例模运算由[0,31]的输入范围(例如,n=5)和13的恒定除数来定义。相应地,所需要的是生成xmod13的硬件电路,其中x是5位无符号整数。

在如图6所示的第一迭代中,识别用于将[0,d]=[0,13]的期望输入范围映射到[0,d-1]=[0,12]的目标输出范围的最佳部件。第一步骤是使用三种不同的减小方法(被标记为1、2和3)来生成将期望输入范围映射到目标输出范围的部件。特别地,使用范围减小方法1生成部件a,使用范围减小方法2生成部件b,以及使用范围减小方法3生成部件c。

接着合成所生成的部件(a、b和c),并基于合成度量来选择最好或最佳部件。在这个例子中,部件c基于合成度量被选择为用于将[0,13]映射到[0,12]的最佳部件。

确定部件c能够实际上将[0,18]的输入范围映射到[0,12]的相同输出范围,而不改变部件c,从而部件c被识别为用于将输入范围[0,18]映射到输出范围[0,12]的最佳部件。由于部件c的输入范围不覆盖[0,31]的整个目标输入范围,因此至少一个额外/不同的范围减小级需要被使用以将目标输入范围映射到目标输出范围。

在如图7所示的第二迭代中,识别用于将扩大的输入范围映射到目标输出范围的最佳部件。扩大的输入范围被设置为[0,19]以包括超出在第一迭代中识别的最佳部件c的输入范围的一个额外数字。

第一步骤是使用三种不同的减小方法来生成映射期望输入范围的初级部件。特别地,使用范围减小方法1生成新的初级部件d;以及使用范围减小方法3生成新的初级部件f。然而,由于使用范围减小方法2生成的部件b能够将[0,24]的输入范围映射到[0,12],因此这是用于范围减小方法2的初级部件。

初级部件d、b和f的输出范围分别被识别为[0,18]、[0,12]和[0,18]。由于部件b直接映射到目标输出范围[0,12],因此初级部件b变成次级部件h。然而,由于初级部件d和f具有大于目标输出范围的输出范围,因此它们与以前识别的最佳部件组合。在这种情况下,唯一识别的最佳部件是部件c。部件c的输入范围包括部件d和f的输出范围,因此次级部件g和i通过分别组合部件d和f与最佳部件c来生成。

接着合成次级部件(g、h和i),并基于合成度量来选择最好或最佳次级部件。在这个例子中,基于合成度量来将次级部件g选择为用于将[0,19]映射到[0,12]的最佳部件。

确定次级部件g能够实际上将[0,24]的输入范围映射到[0,12]的相同输出范围,而不改变部件g,因此部件g被选择为用于将输入范围[0,24]映射到输出范围[0,12]的最佳部件。

在如图8所示的第三迭代中,识别用于将扩大的输入范围映射到目标输出范围的最佳部件。扩大的输入范围被设置为[0,25]以包括超出在第二迭代中识别的最佳部件g的输入范围的一个额外数字。

第一步骤是使用三种不同的减小方法来生成映射期望输入范围的初级部件。特别地,使用范围减小方法1生成新的初级部件j;以及使用范围减小方法2生成新的初级部件k。然而,由于使用范围减小方法3生成的部件f能够将[0,24]的输入范围映射到[0,12],因此这是用于范围减小方法3的初级部件。

初级部件j、k和f的输出范围分别被识别为[0,24]、[0,24]和[0,18]。由于初级部件j、k和f中的每个具有大于目标输出范围的输出范围,因此它们与以前识别的最佳部件组合以生成次级部件。在这种情况中,存在两个识别的最佳部件---c和g。最佳部件g的输入范围包括初级部件j和k的输出范围,因此通过分别组合部件j和k与最佳部件g来生成次级部件l和m。部件c的输入范围包括部件f的输出范围,因此通过组合部件f与最佳部件c来生成次级部件i。

接着合成次级部件(l、m和i),并基于合成度量来选择最好或最佳次级部件。在这个例子中,基于合成度量来将次级部件m选择为用于将[0,25]映射到[0,12]的最佳部件。

确定次级部件m能够实际上将[0,63]的输入范围映射到[0,12]的相同输出范围,而不改变部件m,因此部件m被选择为用于将输入范围[0,63]映射到目标输出范围[0,12]的最佳部件。由于部件m的输入范围包括[0,31]的目标输入范围,因此不需要另外的/不同的范围减小级,从而该方法结束。

图9示出包括三个范围减小级的所产生的硬件设计。在第一级中,部件k使用范围减小方法2将[0,63]的输入范围映射到[0,24]的输出范围。在第二级中,部件d使用范围减小方法1将[0,24]的输入范围映射到[0,18]的输出范围。在第三且最后的级中,部件c使用范围减小方法3将[0,18]的输入范围映射到目标输出范围[0,12]。

现在参考示出曲线图的图10到图12,曲线图示出与使用其它方法生成的模运算电路比较的根据本文所述的方法生成的模运算电路的qor提高。

特别地,图10示出与以纳秒为单位的延迟时间(即,用于将产生的模值的时间)比较的对于具有11位的输入x和6的除数的模运算电路的面积。曲线1002示出根据本文所述的方法生成的这样的模运算电路的面积和延迟时间;曲线1004示出使用designwaretm工具生成的这样的模运算电路的面积和延迟时间,designwaretm工具通过从x/d的标准相除部件取余数来生成模值;以及曲线1006示出使用优化的恒定相除部件以找到division=floor(x/d)并接着返回结果=x-(division*d)来生成的这样的模运算电路的面积和延迟时间。可看到,根据本文所述的方法生成的模运算电路可产生比由其它两种方法产生的模运算电路明显更好的qor。

图11示出与以纳秒为单位的延迟时间(即,对于将产生的模值的时间)比较的对于具有16位的输入x和13的除数的模运算电路的面积。曲线1102示出根据本文所述的方法生成的这样的模运算电路的面积和延迟时间;曲线1104示出使用designwaretm工具生成的这样的模运算电路的面积和延迟时间,designwaretm工具通过从x/d的标准相除部件取余数来生成模值;以及曲线1106示出使用优化的恒定相除部件以找到division=floor(x/d)并接着返回结果=x-(division*d)来生成的这样的模运算电路的面积和延迟时间。可看到,根据本文所述的方法生成的模运算电路可产生比由其它两种方法产生的模运算电路明显更好的qor。

图12示出与以纳秒为单位的延迟时间(即,对于将产生的模值的时间)比较的对于具有32位的输入x和3139的除数的模运算电路的面积。曲线1202示出根据本文所述的方法生成的这样的模运算电路的面积和延迟时间;曲线1204示出使用designwaretm工具生成的这样的模运算电路的面积和延迟时间,designwaretm工具通过从x/d的标准相除部件取余数来生成模值;以及曲线1206示出使用优化的恒定相除部件以找到division=floor(x/d)并接着返回结果=x-(division*d)来生成的这样的模运算电路的面积和延迟时间。可看到,根据本文所述的方法生成的模运算电路可产生比由其它两种方法产生的模运算电路明显更好的qor。

图13示出可被实现为计算和/或电子设备的任何形式的示例性基于计算的设备1300的各种部件,且其中本文所述的方法和引擎的实施方式可被实现。

基于计算的设备1300包括一个或多个处理器1302,其可以是微处理器、控制器或用于处理计算机可执行指令以控制设备的操作的任何其它适当类型的处理器,以便生成实现模运算的硬件设计。在例如其中使用片上系统架构的一些例子中,处理器1302可包括在硬件(而不是软件或固件)中实现图3的方法的一部分的一个或多个固定功能块(也被称为加速器)。可在基于计算的设备处提供包括操作系统1304的平台软件或任何其它适当的平台软件以实现应用软件,诸如将在设备上执行的模硬件生成引擎1306。

可使用由基于计算的设备1300可访问的任何计算机可读介质提供计算机可执行指令。计算机可读介质可包括例如计算机存储介质(诸如存储器1308)和通信介质。诸如存储器1308的计算机存储介质(即,非临时机器可读介质)包括在任何方法或技术中实现的用于存储信息(诸如计算机可读指令、数据结构、程序模块或其它数据)的易失性和非易失性的、可移动和不可移动的介质。计算机存储介质包括但不限于ram、rom、eprom、eeprom、闪存或其它存储技术、cd-rom、数字通用盘(dvd)或其它光学存储器、盒式磁带、磁带、磁盘存储器或其它磁性存储设备或可用于存储由计算设备访问的信息的任何其它非传输介质。相反,通信介质可体现计算机可读指令、数据结构、程序模块或在已调制数据信号(诸如载波)或其它传输机构中的其它数据。如在本文定义的,计算机存储介质不包括通信介质。虽然计算机存储介质(即,非临时机器可读介质,例如存储器1308)被显示在基于计算的设备1300内,但是将认识到,存储器可远程地分布或定位并经由网络或其它通信链路(例如,使用通信接口1310)来访问。

基于计算的设备1300还可包括布置成向可与基于计算的设备1300分离或构成整体的显示设备1314显示信息的输入/输出控制器。显示信息可提供图形用户界面。输入/输出控制器1312也可布置成接收并处理来自诸如用户输入设备1316(例如,鼠标或键盘)的一个或多个设备的输入。这个用户输入设备1316可用于提供输入范围、除数和/或选择标准。在实施方式中,如果显示设备1314是触敏显示设备,其也可充当用户输入设备1316。输入/输出控制器1312也可将数据输出至除了显示设备以外的设备,例如本地连接的打印设备(未在图13中示出)。

现在将参考图14描述在集成电路制造系统处处理集成电路定义数据集以便配置该系统来制造电子设备的例子。

图14示出包括布局处理系统1404和集成电路生成系统1406的集成电路(ic)制造系统1402的例子。ic制造系统1402配置成接收ic定义数据集(例如,硬件设计,诸如在本文所述的模硬件设计102),处理ic集成数据集,并根据ic定义数据集生成ic。对ic定义数据集的处理配置ic制造系统1402以根据ic定义数据集制造集成电路。更具体地,布局处理系统1404配置成接收并处理ic定义数据集以确定电路布局。从ic定义数据集确定电路布局的方法在本领域中是已知的,且例如可涉及合成rtl代码以例如根据逻辑部件(例如,nand、nor、and、or、mux和filp-flop部件)确定待生成的电路的门水平表示。可通过确定用于逻辑部件的位置信息从电路的门水平表示来确定电路布局。这可自动地完成或使用用户参与来完成,以便优化电路布局。当布局处理系统1404已确定电路布局时,它可向ic生成系统1406输出电路布局定义。ic生成系统1406根据电路布局定义生成ic,如在本领域中已知的。例如,ic生成系统1406可实现半导体器件制造过程以生成ic,这可涉及光刻和化学处理步骤的多步骤序列,在其期间电子电路在由半导体材料制成的晶片上被逐渐创建。电路布局定义可以是可在光刻过程中使用的掩膜的形式以用于根据电路定义来生成ic。可选地,被提供到ic生成系统1406的电路布局定义可以是计算机可读代码的形式,ic生成系统1406可使用计算机可读代码来形成适当的掩膜以用于在生成ic时使用。由ic制造系统1402执行的不同过程可都在一个位置上例如由一方实现。可选地,ic制造系统1402可以是分布式系统,使得一些过程可在不同的位置处被执行,并可由不同的方执行。例如,可在不同的位置上和/或由不同的方执行以下的级中的一些:(i)合成表示ic定义数据集的rtl代码以形成待生成的电路的门级表示,(ii)基于门级表示来生成电路布局,(iii)根据电路布局来形成掩模,以及(iv)使用掩模来制造集成电路。

在其它例子中,在集成电路制造系统处的集成电路定义数据集的处理可配置系统以制造电子设备(例如,计算模值的硬件)而ic定义数据集不被处理以便确定电路布局。例如,集成电路定义数据集可定义可配置处理器(诸如fpga)的配置,且那个数据集的处理可配置ic制造系统以生成具有那个所定义的配置的可配置处理器(例如,通过将配置数据加载到fpga)。

在一些例子中,集成电路定义数据集可包括在由数据集定义的硬件上或结合由数据集定义的硬件运行的软件。在图14所示的例子中,ic生成系统还可由集成电路定义数据集配置成在制造集成电路时根据在集成电路定义数据集处定义的程序代码将固件加载到那个集成电路上或以其他方式使用集成电路提供程序代码以与集成电路一起使用。

术语“处理器”和“计算机”在本文用于指具有处理能力的任何设备或其部分,使得它可执行指令。术语“处理器”可例如包括中央处理单元(cpu)、图形处理单元(gpu或vpu)、物理处理单元(ppu)、无线电处理单元(rpu)、数字信号处理器(dsp)、通用处理器(例如,通用gpu)、微处理器、设计成在cpu外部加速任务的任何处理单元等。本领域中的技术人员将认识到,这样的处理能力被结合到很多不同的设备内,且因此术语“计算机”包括机顶盒、媒体播放器、数字无线电装置、pc、服务器、移动电话、个人数字助理和很多其它设备。

本领域中的技术人员将认识到,用于存储程序指令的存储设备可分布在网络中。例如,远程计算机可存储被描述为软件的过程的例子。本地或终端计算机可访问远程计算机并下载软件的一部分或全部以运行程序。可选地,本地计算机可按需要下载软件的片段或在本地终端处执行一些软件指令和在远程计算机(或计算机网络)处执行一些指令。本领域中的技术人员也将认识到,通过利用本领域中的技术人员已知的常规技术,软件指令的全部或一部分可由专用电路实现,诸如dsp、可编程逻辑阵列等。

本文所述的方法可由配置有软件的计算机执行,软件是存储在有形存储介质上的机器可读形式、例如包括用于配置计算机来执行所述方法的组成部分的计算机可读程序代码的计算机程序的形式或包括适合于当程序在计算机上运行时执行本文所述的任何方法的所有步骤的计算机程序代码装置的计算机程序的形式,且其中计算机程序可体现在计算机可读存储介质上。有形(或非临时)存储介质的例子包括磁盘、拇指驱动器、存储卡等,且并不包括传播信号。软件可适合于在并行处理器或串行处理器上执行,使得方法步骤可以按任何适当的顺序或同时被执行。

本文所述的硬件部件可由非临时计算机可读存储介质生成,非临时计算机可读存储介质具有在其上编码的计算机可读程序代码。

其还意图包含“描述”或定义实现如上所述的模块、功能、部件或逻辑的硬件的配置的软件,诸如hdl(硬件描述语言)软件,如用于设计集成电路或用于配置可编程芯片使用的,以实现期望功能。也就是说,可提供计算机可读存储介质,其具有在其上编码的用于生成配置成执行本文所述的任何方法的处理单元或用于生成包括本文所述的任何装置的处理单元的计算机可读程序代码。也就是说,计算机系统可配置成从定义用于组合那些电路元件的规则的数据和电路元件的定义中示出数字电路的表示,其中非临时计算机可读存储介质可具有存储在其上的处理器可执行指令,其当在这样的计算机系统处被执行时使计算机系统生成如本文所述的处理单元。例如,非临时计算机可读存储介质可具有存储在其上的计算机可读指令,其当在用于生成集成电路的表现形式的计算机系统处被执行时使计算机系统生成如在本文的例子中所述的处理器的表现形式或生成配置成执行如在本文的例子中所述的方法的处理器的表现形式。处理器的表现形式可以是处理器本身或处理器(例如,掩模)的表示,其可用于生成处理器。

存储机器可执行数据以在实现所公开的方面时使用的存储器可以是非临时介质。非临时介质可以是易失性的或非易失性的。易失性非临时介质的例子包括基于半导体的存储器,诸如sram或dram。可用于实现非易失性存储器的技术的例子包括光学和磁性存储器技术、闪存、相变存储器、电阻式ram。

对“逻辑”的特定引用指执行一种或多种功能的结构。逻辑的例子包括布置成执行那些功能的电路。例如,这样的电路可包括晶体管和/或在制造过程中可用的其它硬件元件。作为例子,这样的晶体管和/或其它元件可用于形成实现和/或包含存储器(诸如寄存器、触发器或锁存器)、逻辑运算符(诸如布尔运算)、数学运算符(诸如加法器、乘法器或移位器)和互连的电路或结构。这样的元件可被提供作为定制电路或标准单元库、宏或在其它抽象级处被提供。可在特定的布置中使这样的元件互连。逻辑可包括固定功能的电路,且电路可被编程以执行一种或多种功能;这样的编程可从固件或软件更新或控制机制提供。被识别为执行一种功能的逻辑也可包括实现子过程或组成功能的逻辑。在例子中,硬件逻辑具有实现固定功能操作或多个操作、状态机或过程的电路。

本文给出的任何范围或设备值可扩展或改变而不失去所寻求的效果,如对技术人员将明显的。

将理解,上面描述的益处和优点可涉及一个实施方式或可涉及几个实施方式。实施方式不限于解决任何或所有所陈述的问题的那些实施方式或具有任何或全部所陈述的益处和优点的那些实施方式。

对“一个”项目的任何引用指那些项目中的一个或多个。术语“包括”在本文用于意指包括所识别的方法块或元件,但这样的块或元件并不包括排他列表,且装置可包含额外的块或元件,以及方法可包含额外的操作或元件。此外,块、元件和操作本身并不隐含地是封闭的。

本文描述的方法的步骤可在适当的时候以任何适当的顺序或同时被执行。在附图中的方框之间的箭头示出方法步骤的一个示例顺序,但并不意欲排除其它顺序或多个步骤并行的执行。此外,单独的块可从任何方法中删除而不偏离本文描述的主题的精神和范围。上面描述的任何例子的方面可与所描述的其它例子中的任一个的方面组合以形成另外的例子,而不失去所寻求的效果。在附图的元件被示为由箭头连接的情况下,将认识到,这些箭头示出在元件之间的通信(包括数据和控制消息)的仅仅一个示例流。在元件之间的流可以在任一方向上或在两个方向上。

将理解,优选实施方式的上述描述仅作为例子被给出,以及各种修改可由本领域中的技术人员做出。虽然上面以某个详细程度或参考一个或多个单独的实施方式描述了各种实施方式,但是本领域中的技术人员可对所公开的实施方式进行很多变更而不偏离本发明的精神或范围。

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