掌桥专利:专业的专利平台
掌桥专利
首页

用于执行除法的截断数组

文献发布时间:2024-04-18 19:52:40



技术领域

本发明涉及用于导出使用截断求和数组来实现除法的固定逻辑电路的方法和装置。

背景技术

当设计集成电路时,通常需要逻辑来执行加法、减法、乘法和除法。虽然加法、减法和乘法运算都可以在硬件中便宜地实现,但是除法被认为是在硬件中实现的昂贵运算。

在除数在设计时已知为常数的情况下,除法运算可以表示为乘以常数有理数(即两个整数的分数),并且可以使用加法和常数乘法逻辑的组合来构造除法运算的有效实现方式。这可以显著简化逻辑,并因此减少实现除法运算所需的集成电路面积。例如,如果除法运算y=px/q(其中p和q是整数常数,而x是整数或定点变量)可以以(ax+b)/2

通过与常数有理数相乘来执行除法的另一种方法是对

为了在固定逻辑电路中通过一组不同的除数执行除法运算,通常需要提供多个不同的固定逻辑电路,每个固定逻辑电路被配置为通过该组的除数来执行除法。或者,可以提供可编程逻辑,但是在电路面积、复杂性和速度方面成本很高。

发明内容

提供本发明内容是为了以简化形式介绍下文在具体实施方式中进一步描述的一系列概念。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。

一种用于导出固定逻辑电路的硬件表示的计算机实现的方法,所述固定逻辑电路用于执行将输入x除以能够从多个除数中选择的除数,其中x是m位整数,所述方法包括:

将所述多个除数中的每一个除数归一化以形成多个乘数;

形成求和数组,所述求和数组被布置成将所述输入x乘以所述多个乘数中的任一个乘数;

通过丢弃比所述求和数组的在二进制小数点的位置之下的第k列更低有效的所有列来截断所述求和数组,其中

根据从所述求和数组中丢弃的部分乘积的最大和来为所述乘数中的至少一个乘数确定校正常数;以及

生成实现包括所述校正常数的截断求和数组的固定逻辑电路的硬件表示。

所述方法可以还包括通过丢弃在所述第k列处所述截断所述求和数组之后剩余的有限求和数组的τ个最低有效行来进一步截断所述求和数组,其中τ=2

可以执行所述归一化以使得当以十进制格式表示时,所述多个乘数中的每一个乘数都在范围[1,2)内。

所述归一化可以包括将所述多个乘数中的每一个乘数形成为2

所述方法可以还包括通过存储i和每个乘数的紧接在所述乘数的二进制小数点之后的预定位数来编码所述乘数。

所述预定位数可以是

所述截断求和数组可以包括少于

所述确定所述校正常数可以包括使用为所述多个乘数中的所述至少一个乘数计算出的从所述求和数组中丢弃的所述部分乘积的最大最大和作为所述校正常数。

所述计算从所述求和数组中丢弃的所述部分乘积的所述最大和可以包括:对于对应于所述多个乘数中的至少一个乘数的每个除数q

舍入模式可以是RTZ、RTNI、RTPI、RAZ、RTU、RTD、RNTZ、RNAZ、RTE和RTO中的一者。

所述确定所述校正常数可以包括为所述多个乘数中的每一个乘数计算从所述求和数组中丢弃的所述部分乘积的所述最大和。

所述方法可以还包括存储为每个乘数确定的所述校正常数以用于所述固定逻辑电路的所述硬件表示,其中所述生成所述固定逻辑电路的所述硬件表示包括定义用于在运行时根据从所述多个除数中选择的所述除数来选择适当校正常数的逻辑。

所述方法可以还包括:为多个舍入模式执行从所述求和数组中丢弃的位的最大值的计算,以及存储为所述多个舍入模式中的每一个舍入模式确定的所述校正常数以用于所述固定逻辑电路的所述硬件表示,其中所述生成所述固定逻辑电路的所述硬件表示包括定义用于在运行时根据所述舍入模式来选择所述适当校正常数的逻辑,将根据所述舍入模式执行所述除法运算。

所述方法可以还包括通过丢弃比所述求和数组的在二进制小数点的所述位置之下的第k列更低有效的所有位值来截断所述校正常数。

所述生成所述固定逻辑电路的所述硬件表示可以包括使用与门来实现所述截断求和数组,所述与门被布置成在运行时将一行中x的每个位值与所述乘数的对应于所选择的除数的对应位值组合。

提供了一种用于执行将输入x除以能够从多个除数中选择的除数的固定逻辑电路,其中x是m位整数,所述电路包括:

输入端,所述输入端被配置为接收x和来自所述多个除数的所选择的除数的指示;

所存储的多个乘数,所述所存储的多个乘数对应于所述多个除数的归一化版本;

截断求和数组,所述截断求和数组被布置成将所述输入x乘以所述多个乘数中的任一个乘数,其中所述截断数组的行数少于

逻辑,所述逻辑被配置为基于所述所选择的除数的所述指示从所述所存储的多个乘数中检索乘数,并且使所述截断求和数组将所述输入x乘以所检索的乘数以便形成第一结果;

至少一个所存储的校正常数;

加法器,所述加法器被布置成将所述校正常数加到所述第一结果上以便形成第二结果;以及

输出端,所述输出端被配置为输出所述第二结果。

所述至少一个所存储的校正常数可以包括用于所述多个乘数中的每一个乘数的校正常数,并且所述逻辑被进一步配置为选择对应于所检索的乘数的校正常数以用于在所述加法器处相加。

所述输入端可以被进一步配置为接收关于所述固定逻辑电路将在多个舍入模式中的哪一个舍入模式下运算的指示,并且所述至少一个所存储的校正常数包括用于所述舍入模式中的每一个舍入模式的校正常数,所述逻辑被进一步配置为选择对应于所述舍入模式的所述指示的校正常数。

提供了一种被配置为生成固定逻辑电路的硬件表示的装置,所述固定逻辑电路用于执行将输入x除以能够从多个除数中选择的除数,其中x是m位整数,所述装置包括:

处理器;

存储器,所述存储器包括计算机可执行指令,所述计算机可执行指令在被执行时使所述处理器:

将所述多个除数中的每一个除数归一化以形成多个乘数;

形成求和数组,所述求和数组被布置成将所述输入x乘以所述多个乘数中的任一个乘数;

通过丢弃比所述求和数组的在二进制小数点的位置之下的第k列更低有效的所有列来截断所述求和数组,其中

根据从所述求和数组中丢弃的部分乘积的最大和来为所述乘数中的至少一个乘数确定校正常数;并且

生成实现包括所述校正常数的截断求和数组的固定逻辑电路的硬件表示。

固定逻辑电路可以用集成电路上的硬件来体现。可以提供一种在集成电路制造系统处制造固定逻辑电路的方法。可以提供一种集成电路定义数据集,该集成电路定义数据集当在集成电路制造系统中被处理时将该系统配置为制造固定逻辑电路。可以提供一种非暂时性计算机可读存储介质,该非暂时性计算机可读存储介质上存储有固定逻辑电路的计算机可读描述,该计算机可读描述当在集成电路制造系统中处理时使该集成电路制造系统制造包括固定逻辑电路的集成电路。

可以提供一种集成电路制造系统,该集成电路制造系统包括:非暂时性计算机可读存储介质,该非暂时性计算机可读存储介质上存储有固定逻辑电路的计算机可读描述;布局处理系统,该布局处理系统被配置为处理该计算机可读描述以便生成包括该固定逻辑电路的集成电路的电路布局描述;以及集成电路生成系统,该集成电路生成系统被配置为根据该电路布局描述来制造该固定逻辑电路。

可以提供用于执行本文所述的方法中的任一种方法的计算机程序代码。可提供非暂时性计算机可读存储介质,该非暂时性计算机可读存储介质上存储有计算机可读指令,该计算机可读指令当在计算机系统处执行时使该计算机系统执行本文所述的方法中的任一种方法。

如对本领域的技术人员将显而易见,上述特征可以适当地组合,并且可与本文所述的示例的各方面中的任一个方面进行组合。

附图说明

图1是用于执行将变量x除以常数除数q作为乘加移位运算的加法运算的二进制数组的示意图。

图2示出了用于将变量x除以常数除数q的无限求和数组。图3是示出用于执行将输入x乘以1/q的二进制展开的通用有限求和数组的示意图。

图4是被配置为执行将输入x乘以1/q的二进制展开的可配置求和数组。

图5是示出了用于导出固定逻辑电路的硬件表示的方法的流程图,该固定逻辑电路用于将输入x除以可从多个除数中选择的除数。

图6是被配置为生成定义截断求和数组的RTL的示例性硬件设计系统的示意图。

图7示出了用于生成集成电路的集成电路制造系统。

图8示出了用于使用截断加法数组来执行除以可选择的除数的固定逻辑电路。

附图示出了各种示例。技术人员将了解,附图所示出的元件边界(例如框、框组或其他形状)表示边界的一个示例。在一些示例中,情况可能是一个元件可以被设计为多个元件,或者多个元件可以被设计为一个元件。在适当的情况下,贯穿各附图使用共同的附图标记来指示类似的特征。

具体实施方式

借助于示例呈现以下描述,以使得本领域的技术人员能够制造和使用本发明。本发明不限于本文所述的实施方案,并且对所公开实施方案的各种修改对于本领域的技术人员将显而易见。

现在将仅借助于示例来描述实施方案。

当生产现代集成电路(IC)设计时,这些设计通常始于使用高级编程语言定义所需功能性的高级设计规范,该高级编程语言能够对设计进行逻辑验证。然后,可以合成寄存器传输级(RTL)模型(例如,使用商业上可获得的工具),以便产生用于在硅中实现的门的网表。RTL模型可以被优化以确定该设计在硅中的优选实现方式。

将变量x除以常数除数q可以表示为乘加移位运算。例如,使用向负无穷大舍入(RTNI)或向零舍入(RTZ)方案,除法运算可以表示为乘加移位运算的下限:

最右边的符号指示除法运算简化为将变量x乘以常数a,然后加上常数b,将结果右移k个数位。换句话说,x被求和a次,并且将常数b加到结果上,然后将其移位k。此求和在图1中被示为加法运算100的二进制数组,其中每个实心圆102表示变量x的一位,并且每个阴影圆104表示常数b的一位。将输出106右移k个位110,每个方块108表示输出y的一位。x的位数组的形状是由相对于彼此偏移的x的重复行形成的平行四边形,其中最大行数对应于a中的位数。每行中x的位与a的对应位进行“与”运算(例如,顶行与a的MSB进行“与”运算,依此类推,直到底行与a的LSB进行“与”运算)。这样,在a的对应位中有0的行被跳过(或被视为全零),而在a的对应位中有1的行被包括。因此,数组可能不是平滑的平行四边形形状(如此示例所示),而是更加不规则,因为一些偏移量由于a中的0个位而跳过了(如后面的图中所示)。

在图1所示的示意图中,变量和常数的位被布置在列112中,每个列对应于输出y中的一个位位置。最高有效位(MSB)位于图的左侧,并且最低有效位(LSB)位于图的右侧。通过对数组100的所有位求和并将结果移位来计算乘法。

使用上文概述的乘加移位运算的替代方案是从1/q的完全二进制展开形成数组,使得对于1/q的二进制展开中的每个位值1,存在具有一行x的数组(根据1在1/q中的位置以平行四边形形式偏移)。然而,1/q的二进制展开可以是任意大或无穷大的,这使得在硬件中形成这样的数组不切实际。

然而,在所需的加数的和的精度低于完全求和所提供的精度的情况下,可以对数组进行截断,从而产生精度较低的结果,但是可以用较小的二进制逻辑电路来实现(或者在无限二进制展开的情况下,可以在实践中实现)。举例来说,乘法数组的最低有效列中的一个或多个最低有效列可被截断(即,丢弃)。为了补偿此截断,可以将常数加到乘法结果上,以便达到所需的准确度水平。因此,截断可以包括丢弃输入位的列中的一些列,以及将常数加到剩余列中的一个或多个列上,以提供对真实乘法结果的近似。RTL中的这种布置的综合将产生较小网表,并且因此将使得能够使用更少的门从而使用更少的硅来制造乘法器。这将降低成本并消耗更少的功率。

然而,截断求和数组的局限性在于它们能够执行将x除以单个常数q。希望能够在硬件中执行一组不同的除法运算,而不损失使用固定功能逻辑的大小和速度优势。

本文描述了用于在硬件逻辑中将一组除法运算实现到足以根据所选择的舍入方案来表示针对所有m位输入x的该组除法运算的结果的准确度水平的方法。

考虑一个m位整数(即整数或定点数)输入x[m-1:0],根据运算

其中

在本文给出的示例中,使用了下限舍入,但是对于本领域的技术人员来说显而易见的是,本文描述的原理可以扩展到其他舍入模式。舍入模式类型的示例包括“定向舍入”(诸如向零或远离零或向正或负无穷大舍入)或“就近舍入”(诸如舍入到最接近的整数,朝向偶数、奇数、上或下)——此类舍入方案的准确度至少为1/2ULP(“最后数位的单位”或“最小精度的单位”)。这可以与通常通过使用截断数组的其他方法实现的如实舍入形成对比,并且提供至少1ULP的准确度。下面的表1给出了定向舍入和就近舍入方案/模式的一些示例,但应该理解这不是穷尽的,并且其他的方案对于本领域的技术人员来说是已知的。类似地,显而易见的是,本文描述的原理可以应用于无符号输入(和输出)。此外,虽然本文提供的示例使用常规形式的二进制数,但是它们也可以容易地适用于以其规范符号数字(CSD)形式对二进制数进行运算。

表1

将看出,

B A A A A …

其中

为了导出二进制展开,我们注意到将存在i,使得

其中

由于

因此/>

请注意,

图2示出了被布置成执行运算x/q的无限求和数组200。数组的每一行202包括二进制形式的x。对于非平凡情况,1/q的展开长度是无限的,并且因此数组200的大小是无限的。这是因为除法运算x/q可以被认为是乘法

图2的数组200示出了特定常数除数q的求和数组。由于该数组包括1/q的完整无限展开,并且因此包括x的无限数量的行,所以该数组的输出y

一般截断数组

现在将描述导出包括求和数组的固定逻辑硬件的方法,该求和数组被配置为执行将输入x[m-1:0]除以在运行时从除数集{q

如已经证明的,在其一般形式中,用于通过有理数1/q的二进制展开来执行乘法的加法数组的大小将是无限的,因为对于非平凡情况,有理数1/q的二进制展开在长度上是无限的。为了使这种数组可在硬件中实现,有必要形成一个大小有限的数组,即,布置成对有限数量的部分乘积位求和的数组。一般来说,有限数组会计算乘法运算的真实结果的近似值。然而,如本领域中众所周知的,可以根据定义的舍入方案,通过以满足所需准确度的方式加上常数来截断无限数组并校正近似。

图3是示出了通用有限求和数组300的示意图,该通用有限求和数组用于执行将输入x乘以具有下限舍入的1/q

数组300是通用的,因为乘数1/q

数组的每一行的位202包括输入x。这是因为执行乘法

对于非平凡的情况,1/q

数组300还包括加上校正常数c 310,该常数对于t位输出y的精度被选择来补偿位302和可选的306的截断,使得对于具有下限舍入(或另一舍入模式,诸如表1中列出的那些)的所有位x,j,输出y准确到t个位。常数c可以以任何合适的方式计算,其中各种算法是本领域已知的,诸如常数校正截断(CCT)、变量校正截断(VCT)和混合校正截断(HCT)。在其全精度下,根据计算校正常数的技术,校正常数可以是无限长的,但是为了确保数组的大小是有限的,包括在数组300中的校正常数c在部分乘积数组被截断的同一列304处被截断。

现在将描述以编程方式导出有限大小数组的方法,用于将等式(10)执行到允许对于所有输入x和除数集q

考虑运算

除数集中的每一个除数都被归一化,以便定义范围[1,2)内的乘数

其中i是正整数。这使得除法运算x/q

并且选择i使得

通用截断

图3中的求和数组300是没有定义乘数1/q的通用数组。由于不知道乘数的哪些位是零,因此不可能丢弃数组的行,并且每一行都从相邻行偏移1位位置。这对于确保根据本文阐述的原理导出的数组能够对一组不同的除数执行除法运算是很重要的。

由于

符号

通过移除在移除比第k列更低有效的列中的位的集合之后剩余的有限数组的τ个最低有效行,可以进一步减小数组的大小,而不影响所有m位x的输出,其中:

τ=2

并且0≤τ

可以看出,以这种方式截断的数组将具有有限数量的行,该数量大约小于:

数组的最低有效行是那些在数组的最低有效列中包括部分乘积位但在数组的更高有效列中没有位的行。如图所指示,对于图3中第k列左侧的列,最高有效列是离第k列最远的部分乘积位的最左侧列,并且最低有效列是最接近第k列的部分乘积位的最右侧列。在图3所示的示例中,移除τ最低有效行308引起位306的移除,从而产生包括由实心圆表示的部分乘积位的有限数组。在图3的示例中,其中m=12并且k=4,这给出了τ=4的值,即,可以丢弃最低有效的四行。

可以在设计时使用其他方法来建立数组的合适截断,包括通过在数组的最高有效列或接近最高有效列处开始搜索合适的列,并且在最低有效列的方向上穷尽地测试每一列,直到识别出所有x,q

校正常数

通过截断比第k列更低有效的列,并可选地进一步移除τ个最低有效的行,可以确定校正常数c的(可能被截断的)值,该值对所有x和所有

作为说明,现在将针对x无符号的情况来描述用于确定校正常数c的值(在列304处被截断)的示例性方法。显而易见的是,此示例可以扩展到x带符号的情况。从无限数组中移除的位的无限集合(图3所示示例中的位302+306的集合)表示一组部分乘积位,其总和将被称为Δ(x,q

回想一下,虽然集合{q

注意,在同一列中不可能有x的两个位具有同一索引(由于该数组由不同位置的x的副本组成),并且x中在同一位位置的每个位在整个数组中必须是同一值,可以通过识别每个位值为1的x的值x

一旦x

一般x的

因此,一旦为集合中的每个q

校正常数c不可能完美地补偿在所有可能的输入x和所有除数q

截断位的最大值集合{Δ

在一些实现方式中,校正常数可包括校正对用于计算

在某些情况下,校正常数c的长度可能会使c的位超出执行截断的列,例如,在图3中,超出第k列进入更低有效列。在某些情况下,c的长度可以是无限的。常数c可以在对x的部分乘积执行截断的同一列被截断,即通过移除比第k列更低有效的列中的c的所有位。

在另外示例中,等式(16)到(18)可以被改变以使用不同于下限的舍入模式(诸如表1中的舍入模式中的一种舍入模式)。例如,上限运算符可用于等式中,而不是导出用于RTPI舍入模式的校正常数。这使得能够为替代性舍入模式确定一个或多个校正常数。

在一些示例中,硬件可被实现为使得常数c的值在运行时可在数组中从多个值中选择,例如,以便使数组能够根据多种不同舍入模式中的任一种舍入模式执行将输入x乘以常数有理数,或者提高数组在值q

除数编码

将除数q

定义完整除数q

在二进制中,可以选择多个位N来存储i,这使得期望的除数集{q

可配置数组

为了使上述有限求和数组能够对

的每个位404可以是1或0。因此,当值/>

生成硬件表示

本文描述的用于执行与常数分数相乘的截断加法数组和相关逻辑可以由合适的软件确定。通常,集成电路最初使用软件(例如,

用于执行乘以常数有理数/分数的逻辑可以在设计时容易地引入到集成电路中。然而,用于设计集成电路的设计软件几乎总是使用用于执行一般除法的逻辑,即用于执行除以由运行时间指定的除数的除法的逻辑,来提供功能性。这种逻辑是复杂的并且消耗集成电路的相当大的面积。

如果用于设计集成电路的工具被配置为在乘以由设计者指定的常数有理数/分数运算时,根据本文描述的设计原理将运算实现为截断数组,这是有利的。图6示出了示例性硬件设计系统600,该硬件设计系统被配置为根据本文阐述的原理生成定义截断数组的RTL,用于在RTL合成器608处进行合成,例如以便生成门级网表或其他硬件描述。

硬件设计系统600包括归一化逻辑602,该归一化逻辑接收定义一组除法运算x/q的除数集作为输入,其中x是硬件在运行时接收的输入。归一化逻辑被配置为形成归一化乘数集

图5的流程图中示出了根据本文阐述的原理的导出二进制逻辑电路的硬件表示的方法。在502,接收除数集{q},其将用于实现用于执行将输入x除以除数集的固定逻辑电路。在504,除数被归一化以形成归一化乘数集。这可以以任何合适的方式执行,例如,根据上面的等式(11)。在506,形成求和数组,以执行将输入x乘以乘数中的任一个乘数。

求和数组被截断508,以便丢弃数组的在二进制小数点下方的第k列下方的所有列,其中

在一些示例中,在512,可以计算多个校正常数以用于固定逻辑电路。如本文已经描述的,在第一示例中,可以在512计算关于乘数集中的每一个乘数的校正常数,在步骤514,选择逻辑被定义为在运行时根据接收到的乘数来选择校正常数中的适当的一个校正常数。并且,在第二示例中,可以在512关于固定逻辑电路将在其中运算的多个舍入模式中的每一个舍入模式计算校正常数,在步骤514,选择逻辑被定义为在运行时根据舍入模式选择校正常数中的适当一个校正常数(例如,可以通过适当地设置固定逻辑电路的寄存器来将其识别到固定逻辑电路)。

将会理解,不必为了从无限数组中丢弃列而形成该无限数组,即,不必为了丢弃被丢弃的列而将它们作为任何种类的表示存在。通过“丢弃”列来形成截断的数组可以指形成不(并且从未)包括被丢弃的列的截断数组。

可以提供二进制逻辑电路的硬件表示(通常作为大规模芯片设计的一部分)来用于制造成集成电路。例如,IC的低级表示可以直接提供给制造指定集成电路的加工厂,或者RTL可以提供给中间芯片设计者,该中间芯片设计者自己将从RTL设计IC的低级表示以提供给加工厂。

要注意的是,虽然本公开涉及关于步骤504到518对数组和其值执行运算,但是在生成数组的硬件表示之前,数组或数组的任何中间形式都不存在。

图8示出了用于使用截断加法数组来执行除以可选择的除数的示例性固定逻辑电路800。固定逻辑电路包括根据本文阐述的原理生成的截断求和数组802,以及被配置为存储对应于多个除数的归一化版本的多个乘数的一组寄存器(或其他数据存储区)804。选择逻辑810被配置为基于在固定逻辑电路处接收的所选择的除数q810的指示从寄存器中检索乘数,并使截断求和数组802将输入x808乘以所检索的乘数。例如,截断求和数组可以是如上参考图4所述的可配置数组,选择逻辑810被布置成根据检索到的乘数的位值来配置截断加法数组的行(例如,通过提供检索到的乘数的每个位值作为与门的输入,使得行中x的每个位值与对应位值进行“与”运算)。然后,在校正逻辑808处(例如,在加法器处),将根据本文阐述的原理生成的校正常数与截断求和数组的输出相加,以便提供所选择的除法运算的输出y812。

一般陈述

图6至图8被示为包括多个功能块。这仅仅是示意性的,并且不旨在限定不同逻辑元件之间的严格划分。每个功能块可以任何合适的方式来提供。应当理解,本文描述为作为本文描述的方法的一部分而形成的中间值或数组不需要在任何点物理地生成。

本文描述的方法用于生成适合包括在集成电路中的逻辑。一般来说,上文描述的功能、方法、技术或部件中的任一者可在软件、固件、硬件(例如,固定逻辑电路系统)或它们的任何组合中实施。本文可以使用术语“模块”、“功能性”、“部件”、“元件”、“单元”、“块”和“逻辑”来概括地表示软件、固件、硬件或它们的任何组合。在软件实现方式的情况下,模块、功能性、部件、元件、单元、块或逻辑表示程序代码,该程序代码当在处理器上执行时执行指定任务。本文所述的算法和方法可由执行代码的一个或多个处理器执行,该代码使处理器执行算法/方法。计算机可读存储介质的示例包括随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪存存储器、硬盘存储器,以及可使用磁性、光学和其他技术来存储指令或其他数据并且可由机器访问的其他存储器设备。

如本文所用的术语计算机程序代码和计算机可读指令是指用于处理器的任何种类的可执行代码,包括以机器语言、解译语言或脚本语言表达的代码。可执行代码包括二进制代码、机器代码、字节代码、定义集成电路的代码(诸如硬件描述语言或网表),以及用诸如C、Java或OpenCL的编程语言代码表达的代码。可执行代码可以是例如任何种类的软件、固件、脚本、模块或库,当在虚拟机或其他软件环境中被适当地执行、处理、解译、编译、运行时,这些软件、固件、脚本、模块或库使得支持可执行代码的计算机系统的处理器执行由该代码指定的任务。

处理器、计算机或计算机系统可以是任何种类的设备、机器或专用电路,或其集合或一部分,它具有处理能力使得可以执行指令。处理器可以是或包括任何种类的通用或专用处理器,诸如CPU、GPU、NNA、片上系统、状态机、媒体处理器、专用集成电路(ASIC)、可编程逻辑数组、现场可编程门阵列(FPGA)等。计算机或计算机系统可包括一个或多个处理器。

本发明还意图涵盖限定如本文所述的硬件的配置的软件,诸如硬件描述语言(HDL)软件,用于设计集成电路或用于配置可编程芯片以执行所要功能。本文描述的方法和硬件设计系统的输出可以在计算机可读存储介质上提供,该计算机可读存储介质上编码有集成电路定义数据集形式的计算机可读程序代码,该计算机可读程序代码当在集成电路制造系统中处理(即运行)时将该系统配置为制造如本文描述的用于执行与常数有理数相乘的固定逻辑电路。集成电路定义数据集可以是例如集成电路描述。

因此,可以提供一种在集成电路制造系统处制造如本文所述的固定逻辑电路的方法。此外,可以提供一种集成电路定义数据集,该集成电路定义数据集在集成电路制造系统中处理时使制造固定逻辑电路的方法被执行。

集成电路定义数据集可以是计算机代码的形式,例如作为网表,用于配置可编程芯片的代码,作为定义适合于在集成电路中以任何级别制造的硬件描述语言,包括作为寄存器传输级(RTL)代码,作为高级电路表示法(诸如Verilog或VHDL),以及作为低级电路表示法(诸如OASIS(RTM)和GDSII)。在逻辑上定义适合于在集成电路中制造的硬件的更高级表示法(诸如RTL)可在计算机系统处进行处理,该计算机系统被配置为用于在软件环境的上下文中生成集成电路的制造定义,该软件环境包括电路元件的定义以及用于组合这些元件以便生成由该表示法如此定义的集成电路的制造定义的规则。如通常软件在计算机系统处执行以便定义机器的情况一样,可能需要一个或多个中间用户步骤(例如,提供命令、变量等),以便将计算机系统配置为生成集成电路的制造定义,以执行定义集成电路以便生成该集成电路的制造定义的代码。

现将参考图7来描述在集成电路制造系统处处理集成电路定义数据集以便将系统配置为制造固定逻辑电路的示例。

图7示出了配置为制造如本文示例中的任一个示例中所述的固定逻辑电路的集成电路(IC)制造系统1002的示例。特别地,IC制造系统1002包括布局处理系统1004和集成电路生成系统1006。IC制造系统1002被配置为接收IC定义数据集(例如,定义如本文示例中的任一个示例中所述的固定逻辑电路),处理IC定义数据集,并根据IC定义数据集生成IC(例如,其体现如本文示例中的任一个示例中所述的固定逻辑电路)。对IC定义数据集的处理将IC制造系统1002配置为制造体现如本文示例中的任一个示例中所述的固定逻辑电路的集成电路。

布局处理系统1004被配置为接收和处理IC定义数据集以确定电路布局。根据IC定义数据集确定电路布局的方法在本领域中是已知的,并且例如可涉及合成RTL代码以确定待生成电路的门级表示,例如就逻辑部件(例如NAND、NOR、AND、OR、MUX和FLIP-FLOP部件)而言。通过确定逻辑部件的位置信息,可以根据电路的门级表示来确定电路布局。这可以自动完成或者在用户参与下完成,以便优化电路布局。当布局处理系统1004已经确定电路布局时,其可将电路布局定义输出到IC生成系统1006。电路布局定义可以是例如电路布局描述。

如本领域中所已知,IC生成系统1006根据电路布局定义来生成IC。例如,IC生成系统1006可实施用以生成IC的半导体设备制造工艺,该半导体设备制造工艺可涉及光刻和化学处理步骤的多步骤序列,在此期间,在由半导体材料制成的晶片上逐渐形成电子电路。电路布局定义可呈掩模的形式,掩模可在光刻工艺中用于根据电路定义来生成IC。或者,提供给IC生成系统1006的电路布局定义可呈计算机可读代码的形式,IC生成系统1006可使用该计算机可读代码来形成用于生成IC的合适的掩模。

由IC制造系统1002执行的不同过程可全部在一个位置例如由一方来实施。或者,IC制造系统1002可以是分布式系统,使得一些过程可以在不同位置执行,并且可以由不同方来执行。例如,以下阶段中的一些阶段可以在不同位置并且/或者由不同方来执行:(i)合成表示IC定义数据集的RTL代码,以形成待生成的电路的门级表示;(ii)基于门级表示来生成电路布局;(iii)根据电路布局来形成掩模;以及(iv)使用掩模来制造集成电路。

在其他示例中,通过在集成电路制造系统处对集成电路定义数据集的处理,可将系统配置为制造固定逻辑电路,无需对IC定义数据集进行处理以便确定电路布局。举例来说,集成电路定义数据集可以定义例如FPGA的可重新配置的处理器的配置,并且对该数据集进行的处理可以将IC制造系统配置成(例如,通过将配置数据加载到FPGA)生成具有该定义的配置的可重新配置的处理器。

在一些实施方案中,当在集成电路制造系统中处理时,集成电路制造定义数据集可以使集成电路制造系统生成如本文所述的设备。例如,通过集成电路制造定义数据集以上文参考图7描述的方式对集成电路制造系统进行配置,可以制造出如本文描述的设备。

在一些示例中,集成电路定义数据集可以包括在数据集处定义的硬件上运行的软件,或者与在数据集处定义的硬件组合运行的软件。在图7所示的示例中,IC生成系统可以由集成电路定义数据集进一步配置为在制造集成电路时根据在集成电路定义数据集处限定的程序代码将固件加载到该集成电路上,或者以其他方式向集成电路提供与集成电路一起使用的程序代码。

与已知的实现方式相比,在本申请中阐述的概念在设备、装置、模块和/或系统中(以及在本文实现的方法中)的实现方式可以引起性能改进。性能改进可包括计算性能提高、等待时间减少、吞吐量增大和/或功耗减小中的一者或多者。在制造这种设备、装置、模块和系统(例如在集成电路中)期间,可在性能改进与物理实现方式之间进行权衡,从而改进制造方法。例如,可在性能改进与布局面积之间进行权衡,从而匹配已知实现方式的性能,但使用更少的硅。例如,这可以通过以串行方式重复使用功能块或在设备、装置、模块和/或系统的元件之间共享功能块来完成。相反,本申请中所阐述的引起设备、装置、模块和系统的物理实现方式的改进(诸如硅面积减小)的概念可与性能提高进行权衡。这可以例如通过在预定义面积预算内制造模块的多个示例来完成。

申请人据此独立地公开了本文所述的每个单独的特征以及两个或更多个此类特征的任意组合,到达的程度使得此类特征或组合能够根据本领域的技术人员的普通常识基于本说明书整体来实行,而不管此类特征或特征的组合是否解决本文所公开的任何问题。鉴于前文描述,本领域的技术人员将清楚,可以在本发明的范围内进行各种修改。

相关技术
  • 通过在设计编制期间替换用于执行除法的部件来改进系统操作的方法和设备
  • 用于执行浮点除法的方法和装置
技术分类

06120116334552