对用于实现整数除法的集成电路硬件设计的形式验证的制作方法

文档序号:15046937发布日期:2018-07-27 22:52阅读:308来源:国知局

本公开涉及对用于实现整数除法的集成电路硬件设计的形式验证。



背景技术:

参照图1,用于实现整数除法的集成电路100(在此可以被称为整数除法器)接收分子n和分母d作为输入,(经由硬件逻辑)执行n除以d(即,)的运算,并输出该运算的商q和余数r,其中,n=d*q+r、|r|<|d|,并且n、d、q以及r是整数。如本领域技术人员所知的,当分子n和分母d都为正时,商q是在减法结果为负数之前分母d可以从分子n中减去的次数;而余数r是在从分子n中减去分母d的商数q倍之后剩余的量。例如,如果分子n是26,并且分母d是11,那么运算的商q是2,并且余数r是4。

为了生成用于实现整数除法的集成电路100,生成了描述用于实现整数除法的集成电路的结构和功能的集成电路硬件设计。然后对该集成电路硬件设计进行测试或验证,以确保按照该集成电路硬件设计制造的集成电路将按预期运转。一旦该集成电路硬件设计被验证,就将该集成电路硬件设计在集成电路制造系统处加以处理,以生成根据该集成电路硬件设计的集成电路。

集成电路硬件设计例如可以通过形式验证或基于模拟的验证来进行验证。形式验证是一个系统性处理,其使用集成电路设计和数学推理的数学模型来验证集成电路硬件设计。与此相反,基于模拟的验证是通过对集成电路硬件设计的实例化(instantiation)应用激励(stimuli)并且响应于该激励监测该集成电路硬件设计的实例化的输出来测试集成电路硬件设计的处理。

与基于模拟的验证相比,形式验证可以改进可控性。当彻底模拟硬件设计所需的模拟测试信号或矢量的数量变得难以管理时,发生低可控性。例如,32位比较器需要264个测试矢量(例如,激励)。这将需要数百万年来通过基于模拟的验证进行详尽验证。通过执行形式验证,32位比较器可以在不到一分钟的时间内被验证。

虽然形式验证可以提供超过基于模拟的验证的优势,但用于实现整数除法的集成电路硬件设计已经很难利用形式验证来验证。

下面描述的实施方式仅通过示例的方式来提供,并非限制解决验证用于实现整数除法的集成电路硬件设计的已知方法和系统的任何或全部缺点的实现。



技术实现要素:

提供该发明内容,以按简化形式介绍选择的概念,其在下面详细描述中进一步描述。本发明内容不是旨在标识所要求保护的主旨的关键特征或基本特征,也不是旨在被用于限制所要求保护的主旨的范围。

在此描述了验证用于实现整数除法器的集成电路硬件设计的方法,其中,该整数除法器被配置成接收分子n和分母d并输出商q和余数r。该方法包括以下步骤:(a)验证基本特性对于所述集成电路硬件设计为真;并且(b)在形式上验证一个或更多个范围缩减特性对于所述集成电路硬件设计为真。所述基本特性被配置成,验证用于实现整数除法器的所述集成电路硬件设计的实例化将响应于非负输入对的子集中的任何输入对n、d生成正确输出对q、r。所述一个或更多个范围缩减特性被配置成验证:如果用于实现整数除法器的所述集成电路硬件设计的实例化将响应于非负输入对n、d生成输出对q、r,则用于实现整数除法器的所述硬件设计的实例化将响应于输入对n′、d生成与q和r具有预定关系的输出对q′、r′,其中,n和n′具有一个或更多个预定关系中的一个。

所述基本特性和所述一个或更多个范围缩减特性被配置成,使得验证基本特性和一个或更多个范围缩减特性的步骤在所述非负输入(即,n≥0、d>0)上彻底地验证用于实现整数除法的所述集成电路硬件设计的操作。在所述集成电路硬件设计被配置成处理负输入(即,n<0和/或d<0)的情况下,所述方法还可以包括以下步骤:在形式上验证一个或更多个符号关系特性,以验证所述集成电路硬件设计在所述负输入(即,n<0和/或d<0)上正确地实现整数除法。

第一方面提供了验证用于实现整数除法器的集成电路硬件设计的计算机实现方法,该整数除法器被配置成接收分子n和分母d并输出商q和余数r,该方法包括以下步骤:在一个或更多个处理器中:验证基本特性对于所述集成电路硬件设计为真,所述基本特性被配置成,验证所述集成电路硬件设计的实例化将响应于非负输入对的子集中的任何输入对n、d而生成正确输出对q、r;通过形式验证工具在形式上验证一个或更多个范围缩减特性针对所述集成电路硬件设计为真,所述一个或更多个范围缩减特性被配置成验证:如果所述集成电路硬件设计的实例化将响应于非负输入对n、d生成输出对q、r,则所述集成电路硬件设计的实例化将响应于另一非负输入n′、d对生成与q和r具有预定关系的输出对q′、r′,其中,n和n′具有一个或更多个预定关系中的一个;以及输出指示所述特性是否已被成功验证的一个或更多个信号。

第二方面提供了一种验证用于实现整数除法器的集成电路硬件设计的系统,该整数除法器被配置成接收分子n和分母d并输出商q和余数r,所述系统包括:一个或更多个处理器;和存储器,该存储器包括:形式验证工具;计算机可读指令,其当通过所述一个或更多个处理器执行时,使所述一个或更多个处理器:验证基本特性对于所述集成电路硬件设计为真,所述基本特性被配置成,验证所述集成电路硬件设计的实例化将响应于非负输入对的子集中的任何输入对n、d而生成正确输出对q、r;通过所述形式验证工具在形式上验证一个或更多个范围缩减特性针对所述集成电路硬件设计为真,所述一个或更多个范围缩减特性被配置成验证:如果所述集成电路硬件设计的实例化将响应于非负输入对n、d生成输出对q、r,则所述集成电路硬件设计的实例化将响应于另一非负输入对n′、d生成与q和r具有预定关系的输出对q′、r′,其中,n和n′具有一个或更多个预定关系中的一个;以及输出指示所述特性是否已被成功验证的一个或更多个信号。

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

上面的特征可以如技术人员所明白地进行恰当组合,并且可以与本文所述示例的任何方面相结合。

附图说明

下面,参照附图,对示例进行详细描述,其中:

图1是实现整数除法的示例集成电路的示意图;

图2是验证用于实现整数除法的集成电路硬件设计的示例系统的框图;

图3是验证用于实现整数除法的集成电路硬件设计的示例方法的流程图;

图4是示出二进制补码格式的示意图;

图5是示出整数除法器的输入域的示意图;

图6是示出二进制数n、2n和2n+1之间的关系的示意图;

图7是示例基于计算的系统的框图;以及

图8是生成用于实现整数除法的集成电路的示例集成电路制造系统的框图。

附图示出了各种示例。技术人员应当清楚,图中所示的部件边界(例如,框、框组或其它形状)表示边界的一个示例。在一些示例中,可以将一个部件设计为多个部件,或者可以将多个部件设计为一个部件。贯穿这些图,在恰当地方使用共同的标号来表示相似的特征。

具体实施方式

下面的描述通过示例的方式呈现以使本领域技术人员能够制造和使用本发明。本发明不限于本文所述实施方式,并且本领域技术人员将明白针对所公开实施方式各种修改例。

下面,仅通过示例的方式来对实施方式进行描述。

如上所述,实现整数除法的集成电路100(例如,整数除法器)接收分子n和分母d作为输入,(经由硬件逻辑)执行n除以d(即,)的运算,并输出该运算的商q和余数r,其中,n=d*q+r,n、d、q以及r是整数,并且r满足一个或更多个条件。例如,在一些情况下,该集成电路可以被配置成,生成r和q,使得|r|<|d|并且(sign(n)=sign(r))或(r=0)。然而,对于本领域的技术人员而言显见的是,该集成电路可以被配置成生成r和q,以使r满足其它条件。

生成实现整数除法的集成电路100通常包括以下步骤:开发描述用于实现整数除法的集成电路的结构和功能的集成电路硬件设计;验证或测试该集成电路硬件设计,以确保根据设计制造的集成电路将按预期运转;以及一旦被验证,就在集成电路制造系统处根据该集成电路硬件设计制造集成电路。

验证用于实现整数除法的集成电路硬件设计的操作或行为包括以下步骤:验证集成电路硬件设计的实例化将响应于每个可能输入对n、d,而生成正确的(或预期的)输出对q、r。在一些示例中,验证用于实现整数除法的集成电路硬件设计的操作可以包括以下步骤:验证针对所有可能输入对(即,分子n和分母d的所有可能组合),该输出对q、r满足n=d*q+r,并且r满足一个或更多个条件(例如,|r|<|d|并且(sign(n)=sign(r))或(r=0))。

集成电路硬件设计例如可以通过形式验证或基于模拟的验证来进行验证。形式验证是一个系统性处理,其使用集成电路设计和数学推理的数学模型来验证集成电路硬件设计。与此相反,基于模拟的验证是通过对集成电路硬件设计的实例化应用激励并且响应于该激励的输出监测该集成电路硬件设计的实例化来测试集成电路硬件设计的处理。

集成电路硬件设计的详尽验证包括以下步骤:经由集成电路硬件设计的实例化来验证根据该设计制造的集成电路将针对所有接受输入而按预期运转。由于需要对集成电路硬件设计的实例化应用大量的激励以测试所有可能的输入对,所以经由模拟来详尽验证用于实现整数除法的集成电路硬件设计通常是不可行的,特别是当整数除法的输入(n、d)较大(例如,32位或更大)时。

虽然形式验证可能是详尽验证集成电路硬件设计特性的有效方法,但只有当要验证的特性以形式验证工具可以解决由此呈现的数学问题的这种方式呈现时,才是真实的。具体而言,在集成电路硬件设计的形式验证期间,该集成电路硬件设计被表示为数学模型,要证明的特性也以数学方式表示,并且使用数学推理来确定该特性对于基于该数学模型的集成电路硬件设计是否真实。换句话说,在形式验证中,验证作为要解决的数学问题来呈现。一些数学问题可在合理量的时间内通过形式验证工具来解决,而另一些则不能。如果形式验证工具能够解决由集成电路硬件设计和要验证的特性所呈现的数学问题,那么该形式验证被认为是收敛的。然而,如果形式验证工具不能够解决由集成电路硬件设计和要验证的特性所呈现的数学问题,那么该形式验证不收敛,并且不输出结果且验证是不确定的。

已经尝试了各种方法在形式上验证用于实现整数除法的集成电路硬件设计,如(a)在形式上验证集成电路硬件设计在功能上等效于集成电路的高级模型(该模型可以从头开发或者可以基于自然运算符,如“/”和“%”);(b)基于在计算中的中间点产生的部分商和余数结果(其可以或不明确地输出导致存取易出错的内部信号),在形式上验证集成电路硬件设计的功能;以及(c)针对所有可能输入对(即,分子n和分母d的所有可能组合),在形式上验证对应输出对q、r满足n=d*q+r和r满足一个或更多个条件(例如,|r|<|d|和(sign(n)=sign(r))或(r=0))。然而,针对具有大输入位宽度(例如,具有32位或更大的输入)的用于实现整数除法的形式验证方法(a)和(c)未能够收敛(例如,它们未能够产生结果(例如,该特性/多个特性是否已被成功验证)),并且形式验证方法(b)易出错并且依赖于与实现相关的白盒(whitebox)特性。

已经验明,形式验证工具(特别是形式等价性检查器(下面将对其进行更详细地描述)可以有效地验证类似的硬件设计的特性。因此,本文描述了用于详尽地验证用于实现整数除法的集成电路硬件设计的方法和系统,其采取了该集成电路硬件设计针对多组输入对的实现相似性的优点。具体来说,这些方法采取了针对多组输入对的实现相似性的优点,以:(i)验证集成电路硬件设计针对可能输入对的子集会生成正确的输出对;并且(ii)使用范围缩减来证明集成电路硬件设计将针对其余输入对生成正确的输出对。

本文所述方法包括以下步骤:

(1)验证基本特性以验证硬件设计的实例化响应于非负输入对的子集中的任何输入对n、d,将生成正确的输出对q、r(例如,该输出对满足n=d*q+r,并且|r|<|d|),并且

(2)利用形式验证工具在形式上验证一个或更多个范围缩减特性,以验证:如果硬件设计的实例化将响应于非负输入对n、d而生成输出对q、r,则该硬件设计的实例化将响应于另一输入对n′、d而生成与q和r具有预定关系的输出对q′、r′,其中,n和n′具有一个或更多个预定关系中的一个。

验证基本特性和一个或更多个范围缩减特性的步骤在给非负输入对n、d(即,n≥0和d>0)上,详尽地验证用于实现整数除法的集成电路硬件设计。在该集成电路硬件设计被配置成处理负输入(即,n<0和/或d<0)的情况下,该方法还包括以下步骤:验证一个或更多个符号关系特性,以验证该集成电路硬件设计在负输入对n、d(即,n<0和/或d<0)上实现整数除法。

本文所述的方法和系统采取或利用集成电路硬件设计在处理相关输入方面的实现相似性。具体而言,本文所述的方法和系统利用这样的事实,即,用于实现整数除法的集成电路硬件设计将以类似的方式处理具有某些预定关系的输入对n、d。因为形式验证工具可以有效地验证类似的集成电路硬件设计的方面,所以通过本文所述的方法和系统执行的形式验证将很可能收敛,从而允许对用于实现整数除法的集成电路硬件设计进行详尽验证。

现在参照图2,其示出了用于验证实现整数除法的集成电路硬件设计的示例系统200。系统200可以通过一个或更多个基于计算的装置来实现,如下面参照图7描述的基于计算的装置700。例如,图2的系统200的一个或更多个组件2可以被实现为计算机实现指令,其在通过处理器执行时,使该处理器执行下述功能。

系统200包括:用于实现整数除法的集成电路硬件设计的一个或更多个实例202、204;形式验证工具206;以及形式条件和特性208。一般来说,形式验证工具206利用数学推理在形式上验证:形式条件和特性208的形式特性对于集成电路硬件设计202来说在形式条件和特性208中所指定的条件下是真实的。

“集成电路硬件设计”(其在本文中也可以被简称为“硬件设计”)是对集成电路的结构和功能的描述,其当在集成电路制造系统中处理时,使集成电路制造系统生成由硬件设计描述的集成电路。举例来说,如下面参照图8更详细描述的那样,当在集成电路制造系统中处理集成电路硬件设计时,集成电路制造系统可以通过将硬件设计综合到硅中,或者通过将配置数据加载到现场可编程门阵列(fpga)中来生成集成电路。

集成电路硬件设计可以用高级硬件描述语言(hdl)来实现,如但不限于,寄存器传递级(rtl)语言。寄存器传递级语言的示例包括但不限于,vhdl(vhsic硬件描述语言)和verilog。对于本领域技术人员来说显见的是,可以使用其它高级硬件描述语言,如专有的高级硬件描述语言。

“集成电路硬件设计的实例化”(其在本文中也可以被称为“硬件设计的实例化”)是根据硬件设计定义的硬件和/或硬件的功能的表述。硬件设计的实例化包括但不限于,集成电路硬件设计的仿真模型,其模拟由硬件设计定义的硬件的行为、硬件设计的综合版本(例如,网表(netlist))、硬件设计的硬件实现(例如,集成电路或现场可编程门阵列(fpga)),以及由形式验证工具生成的硬件设计的数学模型。硬件设计的实例化具体实施了采用可以进行测试来验证硬件设计的形式的硬件设计。

因此,用于实现整数除法的集成电路硬件设计202、204是对用于实现整数除法的集成电路的结构和功能的描述,其当在集成电路制造系统处加以处理时,使集成电路制造系统生成实现整数除法器的集成电路。

形式验证工具206是能够执行集成电路硬件设计的形式验证的软件工具。形式验证工具206包括但不限于,形式模型检查器(其也可以被称为形式特性检查器),其被配置成在形式上验证集成电路硬件设计的特性;和形式等价性检查器,其被配置成在形式上验证两个设计(例如,两个集成电路硬件设计,或集成电路硬件设计和网表等)的等价性。形式模型检查器的示例包括但不限于,onespin360dvtm、mentorgraphicsformalverification、vcformal、enterpriseverifier和形式等价性检查器的示例包括但不限于,hector、sequentialequivalencechecking(sec)app、以及其它逻辑等价性检查(lec)和顺序逻辑等价性检查(slec)。

形式验证是一个系统性处理,其使用数学推理来验证集成电路硬件设计中的特性。形式验证可以与基于模拟的验证形成对比,其中,通过对集成电路硬件设计的实例化应用激励并且响应于该激励监测该集成电路硬件设计的实例化的输出来测试集成电路硬件设计。

在形式验证中,将集成电路硬件设计(例如,用于实现整数除法的集成电路硬件设计202、204)变换成数学模型(例如,状态转变系统,或流程图),从而提供可以进行测试以验证集成电路硬件设计的硬件设计的实例化,并且利用使用精确的语法或具有精确的数学语法和语义的语言的数学逻辑来表达要验证的形式特性(例如,在形式条件和特性208中指定的特性)。

在不需要明确地遍历所有状态的情况下,通过搜索该硬件设计的实例化(例如,状态转变系统,或流程图)的全部可到达状态空间来验证形式特性。例如,通过使用利用使用二元决策图(bdds)的高效boolean编码、或者使用基于高级sat(基于可满足性的有界模型检查)的技术对状态进行编码来完成该搜索。在一些情况下,可以使用工具来实现技术,如但不限于,抽象、对称、符号索引和不变量,以改进性能和实现可缩放性。因为对特性的形式验证在算法上并且详尽地探索随时间变化的所有有效输入值,所以以这种方式验证特性允许针对所有有效状态进行详尽证明或反证。

当使用形式验证工具206来验证特性时,形式验证工具206可以输出特性是否有效的指示(即,针对所有有效状态或状态序列均为真),其在本文中也可以被称为该特性被成功验证。输出可以为“是”,该特性有效或已被成功验证;输出可以为“否”,该特性无效(即,其不为真或者针对至少一个有效状态或状态序列失败)或没有被成功验证;或者形式验证是不确定的。例如,因为运行形式验证工具206的基于计算的装置已经用完了存储器,或者因为形式验证工具206已经确定在预定时间段之后还没有取得一定量的进展,所以形式验证可能是不确定的。

在特性无效或未被成功验证的情况下,形式验证工具206还可以输出指示用于实现整数除法的集成电路硬件设计202、204的、造成该特性失败的状态或状态序列的信息。例如,形式验证工具206可以输出指示在什么点状态或状态序列发生故障的验证轨迹。

形式条件和特性208指定用于实现整数除法的集成电路硬件设计202、204的、要通过形式验证工具206验证的特性,以及在要验证该特性的情况下的条件。

如本领域技术人员所知的,集成电路硬件设计的特性是捕获设计行为的语句或表达。例如,简单的特性可以是a=b。在hdl设计内,特性是可执行语句,其检查hdl设计内的特定行为。例如,如果设计包含fifo(先入先出)缓冲器,那么形式特性可能是fifo的上溢和下溢均不会发生。特性被用于以形式上的和明确的方式来捕获硬件设计的所需或期望时间行为。然后,可以验证该硬件设计来确定其符合如由一个或更多个特性捕获的所需或期望行为。

在这里描述的实施方式中,形式条件和特性208使形式验证工具206在形式上验证至少一个基本特性和一个或更多个范围缩减特性,以针对所有非负输入对n、d

(即,n≥0并且d>0),详尽地验证用于实现整数除法的集成电路硬件设计的实例化的操作。

基本特性被配置成,针对非负输入对的子集,验证集成电路硬件设计的实例化的操作。具体来说,基本特性被配置成验证:响应于非负输入对的子集中的任何输入对n、d,集成电路硬件设计的实例化将生成正确的输出对q、r(例如,输出对q、r满足n=d*q+r和|r|<|d|)。理想情况下,基本特性涉及非负输入对的相对较小的子集,并且易于验证。在一些示例(下面将对其进行更详细描述)中,基本特性被配置成针对非负输入对n、d来加以验证,其中,n<d,q=0并且r=n。在其它示例(下面将对其进行更详细描述)中,基本特性被配置成针对非负输入对n、d来加以验证,其中,n=0,q=0并且r=0。

一个或更多个范围缩减特性被配置成,使用归纳范围缩减来证明集成电路硬件设计的实例化针对其余的非负输入对会生成正确的输出对。具体来说,一个或更多个范围缩减特性被配置成验证:如果集成电路硬件设计的实例化正确地处理第一非负输入对n、d,则集成电路硬件设计的实例化通过验证与第一和第二输入对相对应的输出对q、r和q′、r′具有预定关系来正确地处理第二非负输入对n′、d,其中,n和n′具有一个或更多个预定关系中的一个。

换句话说,一个或更多个范围缩减特性被配置成验证:如果集成电路硬件设计的实例化针对非负输入对n、d会生成一输出对q、r,则集成电路硬件设计的实例化将响应于另一输入对n′、d而生成与q和r具有预定关系的输出对q′、r′,其中,n和n′具有一个或更多个预定关系中的一个。

在一些情况下,可能有一个范围减少特性,在其它情况下,可能有一个以上的范围缩减特性。范围缩减特性被配置以利用集成电路硬件设计的实现相似性的优点。换句话说,范围缩减特性被选择以利用将按类似方式通过集成电路硬件设计的实例化来处理的多组输入对(例如,具有预定关系的输入对)的优点。

在一些情况(如下面将更详细描述的)下,n与n′之间的预定关系包括n′=2n和n′=2n+1。在这些情况下,范围缩减特性被配置成验证:如果集成电路硬件设计的实例化正确地处理第一输入对n、d(例如,输出对q、r满足n=d*q+r和|r|<|d|),则该集成电路硬件设计的实例化通过验证与第一和第二输入对相对应的输出对q、r和q′、r′具有预定关系,也正确地处理第二输入对n′、d,其中,n′=2n并且n'=2n+1。在这些情况下,范围缩减特性可以包括以下:

n′=2n

·如果n′=2n并且2r<d,则:

·r′=2r

·q′=2q

·如果n′=2n并且2r≥d,则:

·r′=2r-d

·q′=2q+1

n′=2n+1

·如果n′=2n+1并且2r+1<d,则:

or′=2r+1

oq′=2q

·如果n'=2n+1并且2r+1≥d,则:

·r′=2r+1-d

·q′=2q+1

基于归纳原理,验证基本特性、一个或更多个范围缩减特性的步骤验证用于实现整数除法的集成电路硬件设计202的实例化将正确地处理(例如,输出对q、r满足n=d*q+r并且|r|<|d|)所有非负输入对n、d(即,n≥0并且d>0)。具体来说,如上所述,验证针对用于实现整数除法的集成电路硬件设计202的基本特性的步骤验证集成电路硬件设计的实例化将针对非负输入对的子集正确工作(即,集成电路硬件设计的实例化将响应于非负输入对的子集中的任何输入对,生成正确输出对)。换句话说,基本特性验证针对用于实现整数除法的集成电路硬件设计的非负输入对的子集。

验证针对用于实现整数除法的集成电路硬件设计202的一个或更多个范围缩减特性的步骤验证集成电路硬件设计的实例化202在所有非负输入对上,针对具有一个或更多个预定关系(称为范围缩减关系)的两个输入对将生成相关输出对。换句话说,验证一个或更多个范围缩减特性的步骤验证对于具有范围缩减关系的两个输入对,对应输出对将具有预定关系。因此,如果集成电路硬件设计的实例化针对输入对之一生成正确的输出,则该集成电路硬件设计的实例化必须针对另一输入对生成正确的输出对。

当基本特性和范围缩减特性被定义,以使得没有通过基本特性被验证的所有非负输入对(即,不在非负输入对的子集中的输入对)可以通过重复应用范围缩减关系而达到时,验证基本特性和范围缩减特性的步骤在所有非负输入对上验证集成电路硬件设计。具体而言,如果基本特性和范围缩小特性被配置成,使得没有通过基本特性被验证的所有输入对与通过基本特性被验证的至少一个输入对相关(经由范围缩减关系),那么如果基本特性为真(即,集成电路硬件设计的实例化工作针对非负输入对的子集生成正确的结果),并且范围缩减特性为真(即,针对相关输入对的输出对具有预定的关系),则所有其余输入对与经验证的输入对相关,并由此它们的相关输出也必须是正确的,因为它们与经明确验证的输出对具有预期关系。

验证针对相关输入对的输出对之间的关系(经由一个或更多个范围缩减特性)而不是明确地验证所有输出对,对于所有输入对都是正确的,这增加了形式验证将会收敛的机会。

在用于实现整数除法的集成电路硬件设计202被配置成接受和处理非负输入对n、d(即,n<0和/或d<0)的情况下,形式条件和特性208可以被配置成,进一步使形式验证工具206在形式上验证一个或更多个符号关系特性,以验证用于实现整数除法的集成电路硬件设计202也正确地处理所有负输入对n、d,即,n<0和/或d<0)。符号关系特性基于这样的事实:如果两对输入(n、d和n′、d′)仅仅因所述输入中的一个或更多个的符号而不同(例如,n′=-n和/或d′=-d),则对应输出对(q、r和q′、r′)将具有预定关系。换句话说,符号关系特性基于这样的事实:集成电路硬件设计关于正输入和负输入将是对称的。因此,将符号关系特性被用于验证:如果集成电路硬件设计的实例化响应于输入对n、d生成输出对q、r,则集成电路硬件设计的实例化将响应于另一输入对n′、d′生成与q、r具有预定关系的输出对q′、r′,其中,n′=-n和/或d′=-d。

集成电路硬件设计将被配置成,实现正输入与负输入之间的特定符号关系,并且该特定符号关系特性将基于所实现的特定符号关系。例如,如果n=d*q+r,则集成电路硬件设计可以被配置成使得n=(-d)*(-q)-r、-n=d*(-q)-r,以及n=(-d)*(-q)+r。在这个示例中,如果输入对(n、d)生成输出对(q、r),那么输入对(n、-d)将生成输出对(-q、r);输入对(-n、-d)将生成输出对(q、-r);以及输入对(-n、d)将生成输出对(-q、-r)。显而易见,这只是一个示例,正输入与负输入之间可能存在其它符号关系。

因此,在n和d是非负输入的情况下:

·如果n=d*q+r并且n′=n和d′=-d,则n′=-(d'*q)+r,因而一个或更多个符号关系特性可以被配置成,验证:

oq′=-q

or′=r

·如果n=d*q+r并且n′=-n和d′=d,则n′=-(d′*q)-r,因而一个或更多个符号关系特性可以被配置成,验证:

oq′=-q

or′=-r

·如果n=d*q+r并且n′=-n和d′=-d,则n'=d'*q-r,因而一个或更多个符号关系特性可以被配置成,验证:

oq'=q

or′=-r

在一些情况下,验证基本特性、一个或更多个范围缩减特性以及一个或更多个符号关系特性不能在整个输入空间上详尽地验证集成电路硬件设计的实例化的操作。例如,在用于实现整数除法的集成电路硬件设计被配置成使用二进制补码格式来表示有符号的二进制输入(n、d)和输出(q、r)的情况下,上述符号关系特性不会针对最大可能负分子n和最大可能负分母d来验证集成电路硬件设计的操作。这是因为与正数相比,有一个以上负数可以用二进制补码格式来表示。

这可以参照图4来说明,其示出了针对由从位n0到位nk+1的k+2个位表示的二进制数的示例二进制补码格式,其中,位n0是最低有效位,而位nk+1是最高有效位和符号位。以这种格式表示的数字的值可以通过以下公式来计算:-nk+1*2k+1+nk*2k+nk-1*2k-1…+n0*20。因此,最大可能正数由0后面全是1来表示,最大可能负数由1后面全是0来表示。与可表示的正数相比,这导致附加的可表示的负数。例如,用8位二进制补码格式表示的最大正数是等于127的“01111111”,而用8位二进制补码格式表示的最大负数是等于-128的“10000000”。

因此,验证了:针对对应负值将被正确处理的任何正值n或d,将不验证最大可能负值n和最大可能负值d,因为不会有对应正值。

并非所有用于实现整数除法的集成电路硬件设计都被配置成接受和处理其中分子是最大可能负分子n(例如,图4的示例中的-2k+1)的输入对。然而,在测试中的用于实现整数除法的集成电路硬件设计202被配置成接受和处理这种输入对的情况下,形式条件和特性208还可以被配置成,使形式验证工具验证一个或更多个最大负分子特性,以验证集成电路硬件设计正确地处理其中分子是最大可能负分子n的输入对。下面将对示例最大负分子特性进行描述。

类似地,并非所有用于实现整数除法的集成电路硬件设计都被配置成接受和处理其中分母是最大可能负分母d(例如,图4的示例中的-2k+1)的输入对。然而,在测试中的用于实现整数除法的集成电路硬件设计202被配置成接受和处理这种输入对的情况下,形式条件和特性208还可以被配置成,使形式验证工具206验证一个或更多个最大负分母特性,以验证集成电路硬件设计正确地处理其中分母是最大可能负分母d的输入对。下面将对示例最大负分母特性进行描述。

对于本领域技术人员来说显见的是,这仅仅是示例,并且可以使用其它格式(例如但不限于符号-模数)来表示负数,其可以使得一个或更多个输入对在验证了基本特性、范围缩减特性以及符号关系特性之后保持不验证,并且形式条件和特性可以被修改成包括这样的一个或更多个特性,即,其被配置成验证集成电路硬件设计的实例化响应于这些未验证的输入对而如预期地操作。

涉及至少两个输入对(例如,n、d和n′、d′)和对应输出对(q、r和q′、r′)的特性(如上述的范围缩减和符号关系特性)可以与两个集成电路硬件设计的实例化或单个集成电路硬件设计的实例化有关地进行表达。例如,在一些情况下,n、d和q、r可以被描述为对应于第一集成电路硬件设计的实例化的输入和输出,而n′、d′和q′、r′可以被描述为对应于第二集成电路硬件设计的实例化的输入和输出。在这些情况下,形式验证包括执行对集成电路硬件设计的两个实例化的比较(例如,在同一时钟周期内)。因此,其在形式验证工具是形式等价性检查器的这些情况下可能是有益的,因为形式等价性检查器被设计并优化用于比较两个设计。虽然在这些情况下利用形式等价性检查器可能会提供某些优点(例如,就效率而言),然而本领域的技术人员应当明白,这并不排除在这种情况下使用形式模型检查器。

在其它情况下,n、d和q、r可以被描述为对应于集成电路硬件设计的实例化的一特定时钟周期(例如,第一时钟周期)的输入和输出,而n′、d′和q′、r′可以被描述为对应于同一集成电路硬件设计的实例化的另一时钟周期(例如,第二时钟周期)的输入和输出。在这些情况下,形式验证包括评估单个集成电路硬件设计的实例化的状态。因此,在形式验证工具是形式模型检查器(或者形式特性检查器)的这些情况下可能是有益的,因为形式模型检查器被优化以在几个时钟周期内验证单个设计的特性。虽然在这些情况下利用形式模型检查器可能会提供特定优点(例如,就效率而言),然而本领域的技术人员应当明白,这并不排除在这种情况下使用形式等价性检查器。

尽管图2的形式条件和特性已经被描述为使形式验证工具206在形式上验证这里描述的形式特性,但是对于本领域技术人员显见的是,在其它示例中,一个或更多个特性可以在合适的情况下利用其它验证技术来加以验证(例如,在可以使用另一种技术在合理时间量内详尽地验证该特性的情况下)。例如,基本特性、一个或更多个最大负分子特性、以及一个或更多个最大负分母特性中的一个或更多个可以利用其它技术(如基于模拟的验证技术)来验证,而不是通过形式验证工具在形式上加以验证。在这些示例中,系统200可以包括一个或更多个其它验证工具(如模拟工具(未示出)),其用于利用另一验证技术来验证特性。

现在参照图3,其示出了用于验证实现整数除法的集成电路硬件设计的示例方法300。方法300在框302开始,其中,针对用于实现整数除法的集成电路硬件设计来验证基本特性。如上所述,该基本特性设计成,验证针对非负输入对n、d(即,n≥0、d>0)的子集中的任何输入对n、d,集成电路硬件设计的实例化将生成正确的输出对q、r(例如,输出对满足n=d*q+r和|r|<|d|)。下面对示例基本特性进行描述。可以利用形式验证工具(如图2的形式验证工具206)对基本特性在形式上进行验证,或者可以利用诸如基于模拟的验证的另一验证技术对该基本特性进行验证。一旦基础特性已经被验证,方法300就前进至框304。

在框304处,针对用于实现整数除法的集成电路硬件设计,利用形式验证工具(如图2的形式验证工具206),对一个或更多个范围缩减特性在形式上加以验证。如上所述,一个或更多个范围缩减特性被设计成验证:如果集成电路硬件设计的实例化响应于非负输入对n、d而生成输出对q、r,则集成电路硬件设计的实例化将响应于另一输入对n′、d而生成与q和r具有预定关系的输出对q′、r′,其中,n和n′具有一个或更多个预定关系中的一个。下面对示例范围缩减特性进行描述。

基本特性和范围缩减特性被选择成,使得一旦基本特性和所述一个或更多个范围缩减特性被验证,集成电路硬件设计就在非负输入对上被详尽验证。因此,如果集成电路硬件设计未被配置成接受并处理负输入,则验证完成,并且方法300可以直接进行至框312。然而,如果集成电路硬件设计被配置成接受并处理负输入,则方法300可以进行至框306。

在框306处,针对用于实现整数除法的集成电路硬件设计,利用形式验证工具(如图2的形式验证工具206),对一个或更多个符号关系特性加以验证。如上所述,将符号关系特性设计成验证:如果集成电路硬件设计的实例化响应于非负输入对n、d而生成输出对q、r,则集成电路硬件设计的实例化将响应于另一输入对n′、d′而生成与q和r具有预定关系的输出对q′、r′,其中,n′=-n和/或d′=-d。上面关于图2对示例符号关系特性进行了描述。

在一些情况下,除了其中分子是最大负分子的输入对和其中分母是最大负分母的输入对之外,一旦符号关系特性在形式上被验证,集成电路硬件设计就在其它所有输入对上被详尽验证。如上所述,这是因为当使用二进制补码格式来表示分子和分母时,与正数相比,会有一个额外的可表示负数。如果集成电路硬件设计未被配置成接受并处理其中分子是最大负分子的输入对,则方法300可以直接进行至框310或312。然而,如果集成电路硬件设计被配置成接受并处理其中分子是最大负分子的输入对,则方法300可以进行至框308。

在框308处,验证一个或更多个最大负分子特性,以验证硬件设计的实例化正确地处理其中分子n是最大可能负分子的输入对n、d。下面将对示例最大负分子特性进行描述。所述一个或更多个最大负分子特性可以利用形式验证工具(如图2的形式验证工具206)在形式上进行验证,或者所述一个或更多个最大负分子特性可以利用其它验证技术(如基于模拟的验证)在形式上进行验证。

如果集成电路硬件设计未被配置成接受并处理其中分母是最大负分母的输入对,则方法300可以直接进行至框312。然而,如果集成电路硬件设计被配置成接受并处理其中分母是最大负分母的输入对,则方法300可以进行至框310。

在框310处,验证一个或更多个最大负分母特性,以验证硬件设计的实例化正确地处理其中分母d是最大可能负分母的输入对n、d。下面将对示例最大负分母特性进行描述。所述一个或更多个最大负分母特性可以利用形式验证工具(如图2的形式验证工具206)在形式上进行验证,或者所述一个或更多个最大负分母特性可以利用其它验证技术(如基于模拟的验证)在形式上进行验证。一旦最大负分母特性被验证,方法300就前进至框312。

在框312处,该验证系统输出指示该特性是否被成功验证的一个或更多个输出信号。一旦验证系统输出了所述一个或更多个信号,方法300就可以结束。尽管图3示出了方法300包括在方法300结束时的单个框,其中输出指示特性是否被成功验证的所述一个或更多个信号,但在其它示例方法中,该验证系统可以被配置成在验证每个特性之后输出信号以指示该特定特性是否被成功验证。

如果所述一个或更多个输出信号指示一个或更多个特性未被成功验证,那么用于实现整数除法的集成电路硬件设计中很可能存在错误。因此,在一些情况下,响应于指示一个或更多个特性未被成功验证的所述一个或更多个输出信号,修改集成电路硬件设计,以纠正集成电路硬件设计中的错误或故障(bug)。然后,可以重复方法300来验证修改的集成电路硬件设计。

如果所述一个或更多个输出信号指示所有特性都被成功验证,那么集成电路硬件设计就被成功验证。在一些情况下,响应于指示所有特性被成功验证的所述一个或更多个输出信号,可以将集成电路硬件设计提供给集成电路制造系统,以生成根据经验证的集成电路硬件设计的集成电路,如下面参照图8所述。

参照图5(方形图),其示出了用于实现整数除法的集成电路硬件设计的可能输入域。集成电路硬件设计针对非负输入对n、d(n≥0、d>0),通过在形式上验证基本特性和所述一个或更多个范围缩减特性来加以验证;除了其中分子是最大负分子和/或分母是最大负分母的输入对之外,集成电路硬件设计针对其余负输入对n、d

(n<0和/或d<0),通过在形式上验证所述一个或更多个符号关系特性来加以验证;以及集成电路硬件设计针对其中分子是最大负分子的输入对和其中分母是最大负分母的输入对,通过分别在形式上验证所述一个或更多个最大负分子特性和所述一个或更多个最大负分母特性来加以验证。

基本特性和范围缩减特性的第一示例集合

下面,对基本特性和范围缩减特性的第一示例集合进行描述。

如上所述,基本特性被用于验证对于非负输入对n、d的子集,对应输出对q、r是正确的(例如,输出对q、r满足n=d*q+r和|r|<|d|)。理想情况下,基本特性涉及非负输入对的相对较小的子集,并且易于验证。在基本特性和范围缩减特性的第一示例集合中,基本特性被用于验证:对于最大非负输入对,其中,n<d,对应输出对q、r满足n=d*q+r并且|r|<|d|。当n<d、q=0并且r=n时,由此在这个示例中,基本特性可以规定为:针对非负输入对n、d的子集,其中,n<d,对应输出对q、r满足q=0并且r=n。该基本特性对于形式验证工具(例如,形式验证工具206)解决起来是简单的,因为其避免了负数的复杂性,并且可以有效地完成r与n的比较。

如上所述,该范围缩减特性或多个范围缩减特性被用于验证:如果响应于第一非负输入对n、d而生成第一输出对q、r,则将响应于第二非负输入对n′、d′生成与q、r具有预定关系的第二输出对q′、r′,其中,d′=d并且n′与n具有一个或更多个预定关系之一。因此,使用该范围缩减特性或多个范围缩减特性来验证:如果集成电路硬件设计的实例化正确地处理第一输入对n、d,则该集成电路硬件设计的实例化正确地处理第二输入对n′、d,其中,n和n′具有一个或更多个预定关系之一。

在基本特性和范围缩减特性的第一示例集合中,n与n′之间的预定关系包括n′=2n和n′=2n+1,因为当n是一个二进制数时,2n和2n+1表示比n长一位的二进制数字。例如,如图4所示,如果n是由位n0至nk形成的k+1位二进制数,其中是n0最低有效位,而nk是最高有效位,那么2n是通过将位n0至nk向左移位一位并且将最低有效位设置成零而形成的二进制数,而2n+1是通过将位n0至nk向左移位一位并且将最低有效位设置成一而形成的二进制数。因此,在这个示例中,范围缩减是沿着位长度。如果集成电路硬件设计被配置成模仿长除法,那么n/d、2n/d以及(2n+1)/d的商q和余数r的计算将非常相似。这意味着形式验证工具会发现相比这些计算是相对简单的。

如果n=d*q+r,则当n'=2n时,n′应当等于2d*q+2r,其意味着当2r<d时,q′=2q并且r′=2r;或者当2r≥d时,q′=2r+1并且r′=2r-d。具体而言,如果余数很小(即,2r<d),那么余数r加倍不会导致针对n′的商q′大于2q。例如,如果n是10,并且d是3,则商q为3,而余数r为1;2n是20,其生成商q′为6(2q=2*3)并且余数r′为2(2r=2*1)。因此,在这种情况下,q′=2q和r′=2r。与此相反,如果余数r很大(即,2r≥d),那么余数r加倍会导致针对n′的商q′比2q大1。例如,如果n是11,并且d是3,则商q为3,而余数r为2;2n是22,其生成商q′为7(2q+1=2*3+1)和余数r′为2(2r-d=2*2-3)。因此,在这种情况下,q′=2q+1和r′=2r-d。

类似的是,如果在n′=2n+1时,n=d*q+r,则n′应当等于2d*q+2r+1,其意味着当2r+1<d时,q′=2q并且r′=2r+1;和当时2r+1≥d,q′=2q+1并且r′=2r+1-d。

因此,基本特性和范围缩减特性的第一示例集合可以包括以下范围缩减特性,以验证:假定集成电路硬件设计的实例化正确地处理第一输入对(n、d),则该集成电路硬件设计的实例化正确地处理第二输入对(n′、d),其中,n′等于2n或2n+1:

·n′=2n

o如果n′=2n并且2r<d,则:

■q′=2q

■r′=2r

o如果n′=2n并且2r≥d,则:

■q′=2q+1

■r′=2r-d

·n′=2n+1

o如果n′=2n+1并且2r+1<d,则:

■q′=2q

■r′=2r+1

o如果n′=2n+1并且2r+1≥d,则:

■q′=2q+1

■r′=2r+1-d

因此,该基本特性和范围缩减特性的第一示例集合包括如下所述的基本特性和范围缩减特性,所述基本特性被配置成验证集成电路硬件设计的实例化正确地处理其中n<d的非负输入对n、d(例如,对应输出对q、r满足n=d*q+r并且|r|<|d|),所述范围缩减特性被配置成验证:如果集成电路硬件设计的实例化正确处理非负输入对n、d,则该硬件设计正确地处理n′、d,其中,n′=2n、2n+1。

该示例可以被一般化成基本特性和范围缩减特性的集合,其包括如下所述的基本特性和范围缩减特性,所述基本特性被配置成验证集成电路硬件设计的实例化正确地处理其中n<d的非负输入对n、d(例如,对应输出对q、r满足n=d*q+r和|r|<|d|),所述范围缩减特性被配置成验证:如果集成电路硬件设计的实例化正确处理非负输入对n、d,则该硬件设计正确地处理n′、d,其中,n′=2zn、2zn+1、2zn+2、…,2zn+(2z-1)其中,z为整数。例如,如果z=1,则n′=2n,2n+1(如在第一示例中),和如果z=2,则n'=4n,4n+1,4n+2,4n+3。特定z可以基于集成电路硬件设计的配置来选择以利用实现相似性的优点。

虽然二进制电路倾向于具有利用二的幂的优点的实现,从而可以有效地处理二的幂,但该示例还可以被一般化成基本特性和范围缩减特性的集合,该集合包括如下所述的基本特性和范围缩减特性,所述基本特性被配置成验证集成电路硬件设计的实例化正确地处理其中n<d的非负输入对n、d(例如,对应输出对q、r满足n=d*q+r并且|r|<|d|),所述范围缩减特性被配置成验证:如果集成电路硬件设计的实例化正确处理非负输入对n、d,则该硬件设计正确地处理n′、d,其中,n′=αn、αn+1、αn+2、…、αn+(α-1)。例如,如果α=3,则n′=3n,3n+1,3n+2。特定α可以基于集成电路硬件设计的配置来选择以利用实现相似性的优点。

基本特性和范围缩减特性的第二示例集合

现在对基本特性和范围缩减特性的第二示例集合进行描述。

除了被配置成验证集成电路硬件设计的实例化正确地处理所有非负输入对n、d(其中,n<d)的基本特性被替换成被配置成验证集成电路硬件设计的实例化正确地处理所有非负输入对n、d(其中,n=0)的基本归纳特性以外,基本特性和范围缩减特性的第二示例集合和上述基本特性和范围缩减特性的第一一般化示例集合相同。当n=0、q=0并且r=0时,由此在这个示例中,基本特性可以规定为:针对非负输入对(n、d)的子集,其中,n=0,对应输出对(q、r)满足q=0并且r=0。这简化了基本特性,但仍允许通过基本特性和范围缩减特性验证整个非负输入空间。

因此,该基本特性和范围缩减特性的第二集合包括如下所述的基本特性和范围缩减特性,所述基本特性被配置成验证集成电路硬件设计的实例化会正确地处理其中n=0的所有非负输入对n、d(例如,对应输出对q、r满足n=d*q+r并且|r|<|d|)),所述范围缩减特性被配置成验证:如果集成电路硬件设计的实例化正确处理非负输入对n、d,则该硬件设计正确地处理输入对n′、d,其中,n′=2zn、2zn+1、2zn+2、…、2zn+(2z-1)。

基本特性和范围缩减特性的第三示例集合

现在对基本特性和范围缩减特性的第三示例集合进行描述。

该基本特性和范围缩减特性的第三集合包括如下所述的基本特性和范围缩减特性,所述基本特性被配置成验证集成电路硬件设计的实例化正确地处理其中n<d的所有非负输入对n、d(例如,输出对q、r满足n=d*q+r并且|r|<|d|),所述范围缩减特性被配置成验证:如果集成电路硬件设计的实例化正确处理非负输入对n、d(例如,n=d*q+r并且|r|<|d|),则该硬件设计正确地处理输入对n′、d,其中,n′=n+d。

如上所述,当n<d时,q=0并且r=n。因此,在这个示例中,基本特性可以规定为:针对非负输入对n、d的子集,其中,n<d,对应输出对q、r满足q=0和r=n。

关于范围缩减特性,如果n=d*q+r,则当n′=n+d时,n′应当等于d*(q+1)+r,其意味着q′=q+1和r′=r。因此,范围缩减特性可以被配置成,通过验证q′=q+1和r′=r来验证:如果集成电路硬件设计的实例化正确处理n、d,则该集成电路硬件设计的实例化正确地处理n′、d,其中,n′=n+d。

基本特性和范围缩减特性的第三示例集合已经被证明对于用于实现整数除法的集成电路硬件设计来说很好地工作,其被配置成通过从分子中减去分母并计数来计算商q和余数r。然而,除非集成电路硬件设计被配置成利用该技术来生成商和余数,否则与这里描述的基本特性和范围缩减特性的其它示例集合相比,基本特性和范围缩减特性的第三示例集合的形式验证不太可能收敛。

基本特性和范围缩减特性的第四示例集合

现在对基本特性和范围缩减特性的第四示例集合进行描述。

该基本特性和范围缩减特性的第四示例集合包括如下所示的基本特性和范围缩减特性,所述基本特性被配置成验证集成电路硬件设计的实例化正确地处理其中n<d的所有非负输入对n、d(例如,输出对q、r满足n=d*q+r并且|r|<|d|),所述范围缩减特性被配置成验证:如果集成电路硬件设计的实例化正确处理非负输入对n、d(例如,n=d*q+r并且|r|<|d|),则该硬件设计正确地处理输入对n′、d,其中,n′=n+1。

如上所述,当n<d时,q=0和r=n。因此,在这个示例中,基本特性可以规定为:针对非负输入对n、d的子集,其中,n<d,对应输出对q、r满足q=0并且r=n。

关于范围缩减特性,如果n=d*q+r,则在n′=n+1时,那么n′应当等于d*(q+1)+r+1,其意味着当r<d-1时,q′=q并且r′=r+1;和当r=d-1时,q'=q+1并且r'=0。因此,范围缩减特性可以被配置成,通过验证在r<d-1时,q'=q并且r′=r+1;和在r=d-1时,q′=q+1并且r′=0来验证:如果集成电路硬件设计的实例化正确处理n、d,则该集成电路硬件设计的实例化正确地处理n′、d,其中,n′=n+1。

基本特性和范围缩减特性的第五示例集合

现在对基本特性和范围缩减特性的第五示例集合进行描述。

该基本特性和范围缩减特性的第五示例集合包括如下所述的基本特性和范围缩减特性,即,所述基本特性被配置成验证集成电路硬件设计的实例化正确地处理其中n=0的所有非负输入对n、d(例如,输出对q、r满足n=d*q+r并且|r|<|d|),所述范围缩减特性被配置成验证:如果集成电路硬件设计的实例化正确处理任何非负输入对n、d(例如,输出对q、r满足n=d*q+rand|r|<|d|),则该硬件设计正确地处理输入对n′、d,其中,n′=n+1。

如上所述,当n=0、q=0并且r=0时,由此在这个示例中,基本特性可以规定为:针对非负输入对(n、d)的子集,其中,n=0,对应输出对(q、r)满足q=0和r=0。

如上所述,如果在n′=n+1时,n=d*q+r,则n′应当等于d*(q+1)+r+1,其意味着当r<d-1时,q′=q并且r′=r+1;和当r=d-1时,q′=q+1并且r′=0。因此,范围缩减特性可以被配置成,通过验证在r<d-1时,q′=q并且r′=r+1;和在r=d-1时,q′=q+1并且r′=0来验证:如果集成电路硬件设计的实例化正确处理n、d,则该集成电路硬件设计的实例化正确地处理n′、d,其中,n′=n+1。

基本特性和范围缩减特性的第四和第五示例集合对于用于实现整数除法的集成电路硬件设计来说很好地工作,其被配置成通过对分子n计数并且记录出现了分母d多少倍来计算商q和余数r。虽然由于基本特性和范围缩减特性的第四和第五示例集合简单,导致这不是计算商q和余数r的传统方法,但基本特性和范围缩减特性的第四和第五示例集合也被证明对于经由其它方法实现整数除法的许多集成电路硬件设计来说工作良好。基本特性和范围缩减特性的第四和第五示例集合将提供基本特性和范围缩减特性的良好起始集合,以在实现细节未知时验证用于实现整数除法的集成电路硬件设计。

一般来说,基本特性和范围缩减特性被配置成,使得可以根据通过基本特性被验证的输入对,通过重复应用范围缩减关系(n与n′之间的预定关系),来验证整个非负输入空间(例如,所有接受的非负输入对n、d)。例如,在基本特性和范围缩减特性的第一和第二示例集合(其中,范围缩减关系为n′=2n和n′=2n+1)中,每个正分子n可以通过连续加倍或者加倍加1来达到,(a)n<d或(b)n=0,由此,基本特性可以被配置成验证输入对n、d的子集(其中,n<d),或者输入对n、d的子集(其中,n=0)。类似地,在基本特性和范围缩减特性的第四和第五示例集合(其中,范围缩减关系为n′=n+1)中,每个正分子可以通过从(a)任何n<d或者(b)n=0起连续加1来达到,由此,可以将基本特性配置成验证输入对n、d的子集(其中,n<d),或者输入对n、d的子集(其中,n=0)。相反的是,在基本特性和范围缩减特性的第三示例集合(其中,范围缩减关系为n′=n+d)中,每个正分子不能通过从n=0起连续加d来达到,由此,不能将基本特性配置成验证输入对n、d的子集,其中,n=0。然而,每个正分子都可以通过连续加d至n<d来达到,因此,可以将基本特性配置成验证输入对n、d的子集,其中,n<d。

最大负分子特性的示例集合

如上所述,将最大负分子特性设计成,验证用于实现整数除法的集成电路硬件设计正确处理输入对n、d,其中,分子n具有最大可能表示负值(例如,图4的示例中的n=-2k+1)。

最大负分子特性可以包括基于在一个或更多个范围缩减特性(例如,n′=2n或2n+1;n′=n+d;n′=n+1)中使用的同一范围缩减关系的特性,以将其中分子是最大可能负数的输入对与其中分子是满足范围缩减关系的下一最大可能负数的输入对相关联。

例如,在所述一个或更多个范围缩减特性基于范围缩减关系n′=2n和n′=2n+1的情况下,所述一个或更多个最大负分子特性可以包括:

·如果n=-2k并且n′=2n=-2(k+1)和2r<d,则:

oq′=2q

or′=2r

·如果n=-2k并且n′=2n=-2(k+1)和2r≥d,则:

oq′=2q+1

or′=2r-d

在所述一个或更多个范围缩减特性基于范围缩减关系n′=n+d的情况下,所述一个或更多个最大负分子特性可以包括:

·如果n=-2k+d并且n′=2n=-2(k+1),则:

oq'=q+1

or′=r。

在所述一个或更多个范围缩减特性基于范围缩减关系n′=n+1的情况下,所述一个或更多个最大负分子特性可以包括:

·如果n=-2k+1并且n′=2n=-2(k+1),则:

oq′=q+1

or′=r。

对于本领域技术人员来说显见的是,这些仅仅是示例,并且可以使用最大负分子特性的其它集合来验证集成电路硬件设计的实例化将正确地处理输入对,其中,分子是最大可能负分子。

最大负分母特性的示例集合

如上所述,将最大负分母特性设计成,验证用于实现整数除法的集成电路硬件设计正确处理输入对n、d,其中,分母d具有最大可能表示负值(例如,图4的示例中的d=-2k+1)。

当分母d是最大负数时,q=0并且r=n,除非n=d,其将生成q=1并且r=0。因此,最大负分母特性可以被配置成,通过验证在n=-2k+1和n<d时,q=0并且r=n;和在n=d=-2k+1时,q=0并且r=n,来验证集成电路硬件设计的实例化正确处理其中d是最大负分母的输入对n、d,其中,k是针对分母d的位数。

图7示出了示例性的基于计算的装置700的各种组件,其可以被实现为计算和/或电子装置的任何形式,并且其中可以实现在此描述的方法和系统的实施方式。

基于计算的装置700包括一个或更多个处理器702,其可以是用于处理用于控制该装置的操作的计算机可执行指令的微处理器、控制器或任何其它合适类型的处理器,以便验证用于实现整数除法的集成电路硬件设计。在一些示例中,例如在使用芯片上系统架构的情况下,处理器702可以包括一个或更多个固定功能模块(也称为加速器),其按硬件(而非软件或固件)实现验证用于实现整数除法的集成电路硬件设计的方法的一部分。可以在基于计算的装置处提供包括操作系统704的平台软件或任何其它合适平台软件,以使应用软件(如形式验证工具206)能够在该装置上执行。

该计算机可执行指令可以利用可由基于计算的装置700访问的任何计算机可读介质来提供。计算机可读介质例如可以包括诸如存储器706的计算机存储介质和通信介质。诸如存储器706的计算机存储介质(即,非暂时性机器可读介质)可以包括按任何方法或技术实现的、用于存储信息(如计算机可读指令、数据结构、程序模块或其它数据)的易失性和非易失性、可去除和非可去除介质。计算机存储介质包括但不限于,ram、rom、eprom、eeprom、闪存或其它存储器技术、cdrom、数字通用盘(dvd)或其它光学存储部、磁带盒、磁带、磁盘存储部或其它磁存储装置,或者可以被用于存储供计算装置存取的信息的任何其它非传送介质。与此相反,通信介质可以具体实施计算机可读指令、数据结构、程序模块,或调制数据信号(如载波)或其它传输机制中的其它数据。如在此限定的,计算机存储介质不包括通信介质。尽管计算机存储介质(即,非暂时性机器可读介质,例如,存储器706)被示出在基于计算的装置700内,但应当清楚,存储部可以被远程分布或定位并经由网络或其它通信链路(例如,利用通信接口708)来访问。

基于计算的装置700还包括输入/输出控制器710,其被设置成,将显示信息输出至可以与基于计算的装置700分离或集成的显示装置712。该显示信息可以提供图形用户接口。输入/输出控制器710还被设置成接收和处理来自诸如用户输入设备714(例如,鼠标器或键盘)的一个或更多个装置的输入。该用户输入可以被用于启动对用于实现整数除法的集成电路硬件设计的验证。在一实施方式中,如果显示装置712是触敏显示装置,则该显示装置712还可以充当用户输入装置714。输入/输出控制器710还可以将数据输出至除了显示装置之外的其它装置,例如,本地连接的打印装置(图7中未示出)。

一般来说,上述任何功能、方法、技术或组件中的任一者都可以按软件、固件、硬件(例如,固定逻辑电路),或其任何组合来实现。在此可以使用术语“模块”、“功能”、“组件”、“部件”、“单元”、“模块”和“逻辑”来总体上表示软件、固件、硬件,或其任何组合。对于软件实现的情况来说,模块、功能、组件、部件、单元、模块或逻辑表示在处理器上执行时执行指定任务的程序代码。本文所述算法和方法可以由一个或更多个处理器来执行,其执行使处理器执行该算法/方法的代码。计算机可读存储介质的示例包括:随机存取存储器(ram)、只读存储器(rom)、光盘、闪速存储器、硬盘存储器,以及可以使用磁、光学,以及其它技术来存储指令或其它数据并且可以通过机器访问的其它存储器装置。

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

处理器、计算机,或计算机系统可以是具有处理能力以使其可以执行指令的任何类型的装置、机器或专用电路,或其集合或一部分。处理器可以是任何种类的通用或专用处理器,如cpu、gpu、芯片上系统、状态机、媒体处理器、专用集成电路(asic)、可编程逻辑阵列、现场可编程门阵列(fpga)、物理处理单元(ppu)、无线电处理单元(rpu)、数字信号处理器(dsp)、通用处理器(例如,通用gpu)、微处理器、被设计成加速cpu之外的任务的任何处理单元等。计算机或计算机系统可以包括一个或更多个处理器。本领域技术人员应当认识到,这样的处理能力被并入许多不同装置中,并由此术语“计算机”包括置顶盒、媒体播放器、数字无线电装置、pc、服务器、移动电话、个人数字助理以及许多其它装置。

可以提供一种在集成电路制造系统处制造如本文所述用于实现整数除法的集成电路的方法。而且,可以提供一种集成电路定义数据集,其当在集成电路制造系统中处理时,使执行制造用于实现整数除法的集成电路的方法。

集成电路定义数据集(例如,集成电路硬件设计)可以采用计算机代码的形式,举例来说,如网表、用于配置可编程芯片的代码,如定义任何级别的集成电路的硬件描述语言(包括寄存器传输级(rtl)代码),如高级电路表述(如verilog或vhdl),以及如低级电路表述(如oasis(rtm)和gdsii)。在逻辑上定义集成电路(如rtl)的更高级表述可以在被配置用于在软件环境背景下生成集成电路的制造定义的计算机系统处加以处理,该软件环境包括电路部件的定义和用于组合这些部件的规则,以便生成由该表述所定义的集成电路的制造定义。如同在计算机系统处执行以定义一机器的软件所通常有的情况一样,可能需要一个或更多个中间用户步骤(例如,提供命令、变量等),以便使被配置用于生成集成电路的制造定义的计算机系统执行定义一集成电路的代码,从而生成该集成电路的制造定义。

下面,参照图8,对在集成电路制造系统处理集成电路定义数据集以便配置该系统来制造用于实现整数除法的集成电路的示例进行描述。

图8示出了被配置成制造用于实现整数除法的集成电路的集成电路(ic)制造系统802的示例。具体来说,该ic制造系统802包括布局处理系统804和集成电路生成系统806。ic制造系统802被配置成接收ic定义数据集(举例来说,如本文所述的用于实现整数除法的集成电路硬件设计),处理ic定义数据集,并且根据ic定义数据集(例如,其具体实施整数除法器)来生成ic。ic定义数据集的处理将ic制造系统802配置成制造如本文任何示例中所描述的实现整数除法的集成电路。

布局处理系统804被配置成接收和处理ic定义数据集(例如,集成电路硬件设计)以确定电路布局。根据ic定义数据集确定电路布局的方法是本领域中已知的,并且例如可以涉及综合rtl代码以确定要生成的电路的门电平表述,例如,在逻辑组件方面(例如,nand、nor、and、or、mux以及flip-flop组件)。通过确定针对逻辑组件的位置信息,可以根据电路的门电平表述来确定电路布局。这可以自动完成或者在用户参与下完成,以便优化电路布局。当布局处理系统804已经确定电路布局时,其可以将电路布局定义输出至ic生成系统806。电路布局定义例如可以是电路布局描述。

ic生成系统806根据电路布局定义生成ic,如本领域所已知的。例如,ic生成系统806可以实现半导体装置制造工序以生成ic,其可以涉及一个多步骤序列的照相光刻和化学加工步骤,在此期间,电子电路逐渐地创建在由半导体材料制成的晶片上。该电路布局定义可以采用掩模的形式,其可以在用于根据电路定义生成ic的光刻工序中使用。另选的是,提供给ic生成系统806的电路布局定义可以采用ic生成系统806可以使用的计算机可读代码的形式,以形成供在生成ic中使用的适当掩模。

由ic制造系统802执行的不同工序可以全部在一个位置(例如,由一方)实现。另选的是,ic制造系统802可以是分布式系统,使得一些工序可以在不同位置执行,并且可以由不同方执行。例如,以下阶段中的一些:(i)综合表示ic定义数据集的rtl代码以形成要生成的电路的门电平表述,(ii)基于门电平表述生成电路布局,(iii)根据电路布局形成掩模,以及(iv)利用掩模制造集成电路,可以在不同位置和/或由不同方执行。

在其它示例中,在集成电路制造系统处对集成电路定义数据集进行处理可以将该系统配置成制造用于实现整数除法的集成电路,而不必处理ic定义数据集以确定电路布局。例如,集成电路定义数据集可以定义诸如fpga的可重新配置处理器的配置,并且对该数据集的处理可以配置ic制造系统以生成具有该定义配置的可重新配置处理器(例如,通过将配置数据加载至fpga)。

在一些实施方式中,集成电路制造定义数据集,当在集成电路制造系统中处理时,可以使集成电路制造系统生成如本文所述的装置。例如,按上面参照图8描述的方式根据集成电路制造定义数据集配置集成电路制造系统可以使制造如本文所述的装置。

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

本领域技术人员应当认识到,用于存储程序指令的存储装置可以分布在网络上。例如,远程计算机可以存储被描述为软件的处理的示例。本地或终端计算机可以访问远程计算机并下载部分或全部软件来运行该程序。另选的是,本地计算机可以根据需要下载软件片段,或者在本地终端处执行一些软件指令,并且在远程计算机(或计算机网络)处执行一些软件指令。本领域技术人员还将认识到,通过利用本领域技术人员已知的常规技术,可以通过专用电路(如dsp、可编程逻辑阵列等)来执行全部或部分软件指令。

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

本文所述硬件组件可以由其上编码有计算机可读程序代码的非暂时性计算机可读存储介质生成。

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

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

本文给出的任何范围或装置值可以加以扩展或改变而不失去所寻求的效果,如本领域技术人员所显见的。

应当明白,上述益处和优点可以涉及一个实施方式或可以涉及几个实施方式。实施方式不限于解决任何或全部所述问题的那些或具有任何或所有所述益处和优点的那些。

对“一(an)”项目的任何引用指的是这那些项目中的一个或更多个。在文本中使用术语“包括(comprising)”意指包括所标识的方法模块或部件,但这样的模块或部件不包括排它性列表,并且装置可以包含附加模块部件,并且方法可以包含附加操作或部件。而且,模块、部件以及操作本身并未隐含地关闭。

本文所述方法的步骤可以以任何合适的次序执行,或者在适当的情况下同时执行。图中方框之间的箭头示出了方法步骤的一个示例序列,但并非旨在排除其它序列或并行执行多个步骤。另外,可以从任何方法中删除单个模块,而不脱离本文所述主旨的精神和范围。上述任何示例的方面可以与所述任何其它示例的方面组合,以形成另一些示例而不失去所寻求的效果。在附图中的部件通过箭头连接示出的情况下,应当清楚,这些箭头仅示出部件之间的通信(包括数据和控制消息)的一个示例流动。部件之间的流动可以是任一方向或两个方向。

本申请人特此孤立地将本文所述每个单独特征和两个或更多个这种特征的任何组合公开到这种程度,以致这种特征或组合能够按照本领域技术人员的公知常识,总体上基于本说明书来执行,而不管这种特征或特征的组合是否解决在此公开的任何问题。鉴于前述描述,本领域技术人员应当明白,在本发明的范围内,可以进行各种修改。

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