用于形式特性验证的假设的自动近似的制作方法

文档序号:6580568阅读:206来源:国知局
专利名称:用于形式特性验证的假设的自动近似的制作方法
技术领域
本公开通常涉及电子设计自动化。更为具体地,本公开涉及用于简化在形式电路 验证(formal circuit verification)期间所使用的假设集的技术和系统。
背景技术
使用高级硬件描述语言来描述电路,这允许硬件工程师在将该电路的高级描述转 换为该电路的详细物理布局之前,定义该电路的功能并优化该电路的架构。形式验证技术的目标在于证明处于验证下的电路(CUV)在操作期间将如期望的 那样进行动作。形式验证技术通常使用两种类型的逻辑功能假设(assumption)和断言 (assertion)。假设是用于对运行环境进行建模的逻辑功能,而断言是定义CUV的期望行为 的逻辑功能。在没有假设的情况下,CUV未被约束到合法的行为,并且正被验证的断言被不 正确地验证为假。期望减少对CUV进行形式验证所需要的时间量。不幸地是,该假设集可能大且复 杂,并且在尝试证明断言为真或假时,对该假设的全集进行形式分析有时在计算上是不可 实现的。具体地,形式特性验证被公知为PSPACE-hard问题。因此,大且复杂的假设集可 能不成比例地增加形式验证问题的复杂度,从而使得对CUV进行形式验证在计算上不可实 现。

发明内容
一些实施例提供了用于自动地近似假设以降低形式验证问题的复杂度的系统和 技术。注意,近似的假设集可能在逻辑上不等价于原始假设集。在操作期间,该系统可以可选地简化该假设集,以获得简化后的假设集,该简化后 的假设集在逻辑上等价于该原始假设集。接着,该系统可以可选地将该简化后假设的子集 与该断言集中的断言相关联。注意,将该假设子集与断言相关联,可以降低复杂度,这是因 为在提供相关联的断言时,仅仅需要考虑假设子集(与假设全集相反)。该系统随后近似简化后的假设集,从而改变可允许的输入赋值(assignment)的 集合。如果未执行简化过程,则该系统可以近似该原始假设集。具体地,假设集可以被欠近 似(under-approximate)或过近似(over-approximate)。当假设集被欠近似时,限制了在 原始假设集下可允许的输入赋值序列。当假设集被过近似时,允许比在原始假设集下可允 许的输入赋值更多的输入赋值。注意,当假设集被近似时,所得到的假设集在逻辑上不等价 于原始假设集。一旦系统具有近似出的假设集,该系统就可以使用所近似出的假设集来执行形式 验证。注意,如果假设集被欠近似,则保持断言为假证明。换言之,针对该欠近似的假设集 的断言证明为假的轨迹,也将针对该原始假设集的断言证明为假。相反地,如果假设集被过 近似,则保持将断言为真证明,即,针对该过近似的断言集将断言证明为真对于该原始假设 集而言也有效。


图1例示了根据本发明的实施例的集成电路的设计和制造过程的各个步骤;图2例示了根据本发明的实施例的通过近似假设来执行电路验证的装置;图3例示了根据本发明的实施例的使用假设近似来验证电路设计的过程的各个 阶段;图4示出了例示根据本发明的实施例的使用假设近似来验证电路设计的过程的 流程图;图5示出了例示根据本发明的实施例的用于将假设子集与断言相关联的过程的 流程图;图6示出了例示根据本发明的实施例的通过精选(refine)假设子集来验证电路 设计的流程图,其中该假设子集过近似初始假设集;图7示出了例示根据本发明的实施例的通过精选假设子集来验证电路设计的流 程图,其中该假设子集欠近似初始假设集;图8例示了根据本发明的实施例的用于通过近似假设来促进对电路设计进行验 证的示例计算机系统。在附图中,相同的参考标记指代相同的附图元件。
具体实施例方式下述描述被呈现来使得本领域的技术人员能够进行和使用该实施例,并且下述描 述是在具体应用及其要求的上下文中提供的。对所公开的实施例的各种修改对于本领域技 术人员而言是非常显而易见的,并且这里所定义的一般性原理可以应用于其它实施例或应 用,而不会背离本公开的精神和范围。因此,本发明不限于所示出的实施例,而是与符合在 此所公开的原理和特征的最广范围相一致。在本详细描述中所描述的数据结构和代码通常存储在计算机可读存储介质上,计 算机可读存储介质可以是可以存储可供计算机系统使用的代码和/或数据的任何设备或 介质。计算机可读存储介质包括但不限于,易失性存储器、非易失性存储器、磁性或光学存 储设备(比如盘驱动器、磁带、CD(压缩盘)、DVD(数字通用盘或数字视频盘))、或者现在已 知或稍后开发的能够存储计算机可读介质的其他介质。在详细描述部分中描述的方法和过程可以被具体体现为代码和/或数据,代码和 /或数据可以存储在如上所述的计算机可读存储介质中。当计算机系统读取和执行在该计 算机可读存储介质上存储的代码和/或数据时,计算机系统执行被具体体现为在该计算机 可读存储介质中存储的代码和/或数据结构的方法和过程。此外,本文所描述的方法和过程可以包括在硬件模块或装置中。这些模块或装置 可以包括但不限于,专用集成电路(ASIC)芯片、现场可编程门阵列(FPGA)、在特定时间执 行特定软件模块或代码的专用或共享处理器、和/或现在公知或稍后开发的其它可编程逻 辑器件。当硬件模块或装置被激活时,硬件模块或装置执行在它们中包括的方法和过程。集成电路(IC)设计流程图1例示了根据本发明的实施例的集成电路的设计和制造过程的各种步骤。
5
IC设计过程开始于产品构想(操作100),其使用电子设计自动化(EDA)过程实现 (操作110)。一旦设计完成,通常就可以进行流片(事件140),在这一点上,进行制造过程 (操作150),以及封装和组装过程(操作160),以生产出所制造的微芯片(结果170)。EDA过程(操作110)包括操作112-130,将在下面对其进行描述,这仅仅是用来例 示,而不是意在限制本发明。具体地,实际的集成电路设备可以要求设计者按照与下面所描 述的顺序不同的顺序来执行设计操作。系统设计(操作112)在该阶段,设计者描述实现产品构想的功能。他们还可以 执行what-if (如果-怎么样)规划来精选功能以及进行成本分析等。在该阶段可以出现 硬件-软件架构划分。在该阶段可以使用的、来自SYN0PSYS公司的示例EDA软件产品包括 Model Architect、Saber 、System Studio 禾口 Design Ware 。逻辑设计和功能验证(操作114)在此阶段,写入用于该系统中的模块的VHDL 或Verilog代码,并且检查设计的功能准确性。更为具体地,对该设计进行检查,以确保 它产生正确的响应。在该阶段可以使用的、来自SYN0PSYS公司的示例EDA软件产品包括 VCS 、Vera 、Design Ware 、Magellan 、Formality 、ESP 禾口 Leda 。综合和测试设计(操作116)在该阶段,VHDL/Verilog源代码被转换为网表。可 以针对目标技术来对该网表进行优化,并且可以设计和实现测试来检查所制造出的芯片。 在该阶段可以使用的、来自SYN0PSYS公司的示例EDA软件产品包括Design Compiler 、 Physical Compiler 、 Test Compiler、 Power Compiler ^ FPGACompi 1 er>
TetraMAX 和 Design Ware 。网表验证(操作118)在这个阶段,检查网表与时序约束的兼容性以及与VHDL/ Verilog源代码的对应性。在该阶段可以使用的、来自SYN0PSYS公司的示例EDA软件产品 包括Formality 、Prime Time 和VCS 。设计规划(操作120)在该阶段,针对时序和顶层布线来构建和分析微芯片的平 面布局(floorplan)。在该阶段可以使用的来自SYN0PSYS公司的示例EDA软件产品包括 Astro 和 IC Compiler 产品。物理实现(操作122)放置(电路元件的定位)和布线(互连的布置)在这个阶 段出现。在该阶段可以使用的、来自SYN0PSYS公司的示例EDA软件产品包括Astro 和IC Compiler 产品。分析和提取(操作124):在这个阶段,在晶体管级上验证电路功能;这反过来允 许what-if精选。在该阶段可以使用的、来自SYN0PSYS公司的示例EDA软件产品包括 AstroRail 、PrimeRail、Prime Time 和 Star-RCX 。物理验证(操作126)在这个阶段,对设计进行检查,以确保制造、电气问题、光刻 问题和电路的正确性。Hercules 是在该阶段可以使用的来自SYN0PSYS公司的示例EDA软 件产品。分辨率(resolution)增强(操作128)这个阶段包括对布局的几何处理,以改 进设计的可制造性。在该阶段可以使用的、来自SYN0PSYS公司的示例EDA软件产品包括 Proteus/Progen、ProteusAF 禾口 PSMGen。掩膜数据制备(操作130)这个阶段提供制造掩膜的流片数据,以产生完成的芯片。在该阶段可以使用的来自SYN0PSYS公司的示例EDA软件产品包括CATS 系列产品。MM—些实施例提供了用于使用形式验证技术来证明CUV在操作期间将按照期望的 那样进行动作的系统和技术。在一些实施例中,这些形式验证技术通过确定在满足假设集 时CUV是否满足断言集来对CUV的功能性进行验证。假设是用来对CUV的运行期环境的合 法行为进行建模的逻辑功能集。断言是定义CUV的合法行为的逻辑功能集。注意,CUV的 运行环境可以至少包括CUV的多个主输入和/或主输出。在一些实施例中,系统通过首先确定CUV的运行环境是否满足CUV的假设集,对 CUV的断言进行形式验证。如果不满足假设集,则系统不对断言进行形式验证,因为CUV未 处于合法状态。另一方面,如果满足假设集,则系统尝试证明断言为真。在一些实施例中,系统通过生成证明断言集中的断言为真或假所需的假设集的近 似,来促进对大型CUV进行形式验证。图2例示了根据本发明的实施例的通过近似假设来促进执行电路验证的装置。装 置202可以包括多个机构,该多个机构可以经由有线或无线通信信道来彼此通信。装置202 可以通过使用一个或多个集成电路来实现,并且装置202可以集成在计算机系统中,或者 装置202可以被实现为能够与其它计算机系统和/或设备相通信的单独的设备。具体地, 电路验证装置202可以包括关联机构204、近似机构206和验证机构208。在一些实施例中,电路验证装置202采用以下作为输入CUV214、对CUV214的合法 工作环境进行建模的假设210和定义CUV214的期望行为的断言212。电路验证装置202生 成验证结果216作为输出,该输出指定在满足假设210时CUV 214是否满足断言212。注意,假设可以是组合的或顺序的。组合假设指定在特定时间点上估计出其值的 两个或多个变量之间的逻辑关系。另一方面,顺序假设指定在不同的时间点上估计出其值 的两个或多个变量之间的逻辑关系。例如,组合假设可以表明只要状态变量“a”为真,则状 态变量“b”必须也为真。另一方面,顺序假设可以表明只要状态变量“a”为真,则状态变量 “b”必须在至少“n”个周期内保持为真。关联机构204可以将假设210与断言212相关联。如果假设直接或间接与断言共 享逻辑,则该假设可以与该断言相关联。关联机构204的输出可以被输入到近似机构,该近 似机构对该假设进行近似。近似机构206可以生成假设近似220,从而使得假设近似220对假设210进行近 似。注意,如果假设集~所允许的CUV的输入序列集也被假设集A2允许,则假设集~对假 设集A2欠近似。相反,如果假设集A2所允许的CUV的输入序列集也被假设集~允许,则假 设集~对假设集A2过近似。如果假设集~既欠近似假设集A2也过近似假设集A2,则假设 集~在逻辑上等价于假设集A2。当假设集被过近似时,附加的输入序列可以使得断言被不正确地证明为假。因此, 在过近似情形中,如果断言被验证机构208证明为假,则电路验证装置202可以使用近似机 构206来精选假设近似220,并且尝试在精选后的假设下对该断言进行验证。类似地,当假设集被欠近似时,缺少某些输入序列可以使得断言被不正确地证明 为真。因此,在欠近似情形中,如果断言被验证机构208证明为真,则电路验证装置202可 以使用近似机构206来精选假设近似220,并且尝试在精选后的假设下对该断言进行验证。
注意,验证机构208和近似机构206之间的交互可以允许电路验证装置202迭代 地精选假设近似220,直到电路验证装置202证明CUV的断言212为真或假。图3例示了根据本发明的实施例的由电路验证系统执行来使用假设近似验证电 路设计的过程的各个阶段。在一些实施例中,该过程包括6个操作阶段重写假设,关联假 设,去关联假设,近似假设,验证CUV和精选假设。注意,可以跳过一个或多个阶段,或者可 以改变它们的顺序。例如,在一些实施例中,系统可以仅仅执行近似假设阶段和验证CUV阶 段。REWRITE (操作302)系统将CUV的假设重写为更小的假设,该更小的假设一起等 价于CUV的原始假设。注意,在执行REWRITE操作302后,假设的总大小可以增加,但是对 于已被重写的假设,范围减小。ASSOCIATE(操作304)系统将假设的子集与断言相关联。具体地,在该操作中,系 统可以使用通过REWRITE操作302生成的假设。通常,所有假设与所有断言相关联。因此, 在没有这个操作的情况下,形式验证工具在证明断言为真或假的同时将考虑所有假设。DISASSOCIATE(操作306)结构分析可以是保守的(conservative)。因此, ASSOCIATE操作304可以将假设与断言相关联,即使该假设对于证明该断言为真或假都是 没有用处的。在DISASSOCIATE操作306期间,系统执行详细的分析来识别出假设,使得无 论是否满足该假设,都可满足相关联的断言。系统随后将所识别出的假设与断言去关联。APPROXIMATE (操作308)针对每个断言,系统放宽有关假设集等价于原始假设集 的要求。如此实现,允许系统更为主动地重写和去关联假设,从而从原始假设集中产生被大 大减少的假设集。如果系统尝试证明断言为假,则系统生成假设近似集,该假设近似集欠近 似原始假设集。否则,如果系统尝试证明断言为真,则该系统生成假设近似集,该假设近似 集过近似原始假设集。VERIFY (操作310)系统使用假设近似来对CUV执行形式验证。注意,如果假设集 是对初始假设集的过近似,则系统尝试证明相关联的断言为真。否则,如果假设集是对初始 假设集的欠近似,则系统尝试证明相关联的断言为假。REFINE(操作312)如果系统成功地证明断言为真或假,则该过程结束。否则,系 统返回到APP0XIMATE步骤来使用从非结论性VERIFY操作收集的信息,以生成新的假设近 似集。注意,操作302到306可以被认为是静态阶段的部分,其保留修改后的假设集等价 于原始假设集的不变性。换言之,执行操作302到306生成用于所选择的断言的缩减的假 设集,从而使得使用该缩减的假设集来证明断言为真或假等价于使用CUV的初始假设集来 证明断言为真或假。在一些实施例中,操作302到306可以由图2中的关联机构204来执 行。操作308到312可以被认为是动态阶段的部分,其迭代地精选假设近似集,直到断 言被成功地证明为真,或者直到断言被成功地证明为假。在一些实施例中,操作308可以由 图2中的近似机构206执行。此外,操作310-312可以由图2中的验证机构208执行。MM在一些实施例中,REWRITE操作302可以简化原始假设集中的假设,以产生一个 或多个假设,该一个或多个假设一起等价于正在被简化的原始假设。例如,REWRITE操作302可以执行包括下述操作的一组操作中的一个或多个操作合取分离(conjunction splitting),蕴涵分离(implication splitting),重复范围分离,蕴涵重复范围分离,比特 截割,大的子表达式排除,假设排除和可以在使用合取分离对假设进行分割之前将假设转 换为合取范式(CNF)的任何其它操作。下面将更为详细地描述这些操作。
合取分离如果假设是项的合取,则它可以被假设集替换,在该假设集中,每项是一个假设。 例如,给定包括η项的假设aA. . . &an, REWRITE操作302可以利用η个更小的假设 到an 来替换该假设。蕴涵分离CUV的环境约束通常使用处于蕴涵(implication)下的逻辑项的合取来描述,从 而使得逻辑项的合取指定特定事件的结果(即,CUV的主输入、主输出和/或状态变量的值 的特定集合)。例如,下述假设包括逻辑项的合取bA. · · &bn,如果满足逻辑项a则必须满足 该逻辑项的合取. . &bn
& ...&6J
οREWRITE操作302可以通过将蕴涵分发给单个项(即,通过在该蕴涵上移动合取) 来转换该假设。通过如此完成,REWRITE操作302创建了蕴涵的合取,其中当满足逻辑项a
时必须满足逻辑项h
(β 、) & …& (β 么)
ο随后,REWRITE操作302可以应用合取分离来获得形式为(a ^ 6,·)的η个单独的假 设,其中i的范围为1到η。合起来,该η个单独假设的集合等价于原始假设。注意,蕴涵分离产生具有共同前身(antecedent)的η个单独假设,从而产生当合 在一起大于原始假设的假设集。然而,利用APPROXIMATE操作308来合并蕴涵分离转换,可 以大大地降低最终的假设集的复杂度。重复范围分离假设可以指定其中表达式必须成立的周期数的范围。在一些实施例中,REWRITE操 作302可以利用其中该范围成立的最小周期数来替换该范围。例如,给定在表明函数f必 须在8到32个周期之间有效(hold true)的下述假设f[*8 32],则REWRITE操作302可以 利用表明f必须在至少8个周期内有效的等价假设(即,f [*8])来重写假设。蕴涵和重复范围分离重复范围可以作为假设的子表达式出现。对子表达式执行重复范围分离并不总是 安全的,但是对下述假设α ^/[*8:32j执行重复范围分离是安全的,该假设表明当满足项a 时,项f必须在8到32个周期之间成立。REWRITE操作302可以利用下述等价假设α B f[*8]
来替换该假设,该等价假设表明当满足项a时,f必须在至少8个周期之间成立。比特截割包含向量的假设趋于大且分解复杂,特别是在该假设实质上是顺序的时。然而,可 以使用数据流分析来以逐比特的方式对此种假设进行截割。例如,考虑包含32-比特向量u和ν以及比特a和b的下述假设。下述假设表明在比特a被置位后,向量u和ν在10个 周期内必须相等,其后是在稍后的8个周期对比特b置位
ah^(v == w)[*10]##8Z7。REWRITE操作302可以将假设重写为32个具有下述形式的假设,其中i的范围为 1 至Ij 32
“^(冲]==4])[*10]##86。大的子表达式排除形式为f(i,s,g(i'))的组合假设,其中i和i’为CUV的主输入,s是状态变量, 等价于f(i,s,r)&(r == g(i')),其中r是通过REWRITE操作302引入的新变量。注意,如果i和i ’为与CUV不相 关的输入,那么可以独立于表示式f(i,s, r)来求解表达式r = = g(i')。在一些实施例中,REWRITE操作302可以利用f (i,s, r)替换原始假设来进行验 证。随后,当证明断言为假时,REWRITE操作302可以通过在该证明为假的过程中针对每个 r值求解r==g(i'),来填入i,的合适值。假设排除对于形式为a = = f (b)的假设,其中a是CUV的主输入,REWRITE操作302可以 利用f(b)来替换假设集中所有出现的a,并且从该假设集中除去针对a的假设。通过如此 完成,REWRITE操作302减少与假设相关联的CUV的输入的数目,从而简化将假设与断言相 关联的问题。合取范式在一些实施例中,REWRITE操作302可以通过首先将不适合的假设转换为合取范 式(CNF),将该不适合的假设划分成上述种类。随后,REWRITE操作302可以使用合取分离 来将转换后的假设分割为更小的假设。注意,如果假设太大而不能直接转换为合取范式,则 REWRITE操作302可以确定该假设的表达式中的切割点,并且将该假设中的位于切割点之 间的段转换为合取范式。纖在一些实施例中,ASSOCIATE操作304可以通过识别假设和断言之间的共享逻 辑来将假设与断言相关联。注意,如果存在扇出到假设a和断言b两者的主输入,则假 设a和断言b相关联(在本实例中,假设a和断言b直接共享逻辑)。关联性是可传递的 (transitive),从而如果假设y与断言ζ共享逻辑,则与假设y共享逻辑的假设χ将与断言 Z相关联,即使假设X不直接与断言Z共享逻辑(在本实例中,假设X和断言Z间接共享逻 辑)。换言之,如果假设与断言直接或间接共享逻辑,则假设与断言相关联。去关联即使在执行上述操作后,验证问题可能仍然具有太多的与断言相关联的假设。在一些实施例中,DISASSOCIATE操作306可以被使用来进一步减少与断言相关联的假设的 数目。具体地,DISASSOCIATE操作306可以执行合格检查(qualification)操作和去合取(disjunction)操作中的至少一个或多个。合格检杳
在一些实施例中,DISASSOCIATE操作306可以确定假设是否与断言相关联。例 如,考虑断言a和假设b,因为它们共享主输入. . .,in,所以断言a和假设b相关联。 DISASSOCIATE操作306可以计算表达式ν“··Λ,b,并且测试它是否是可满足的,即, DISASSOCIATE操作306可以确定对于主输入. . .,in的所有值,假设b是否是可满足的。 如果表达式是不可满足的,那么DISASSOCIATE操作306必须保持假设b和断言a之间的关 联性。否则,DISASSOCIATE操作306可以将假设b从断言a去关联,因为可以独立于断言 a而满足假设b。此外,在一些实施例中,DISASSOCIATE操作306可以将上述合格检查过程 应用于假设对,以断开假设的传递链。去合取在一些实施例中,如果假设 或假设a2不与断言c共享逻辑,则DISASSOCIATE操 作306可以将形式为ai I Ia2的假设从断言c去关联,并且可以独立于断言c来满足假设(例 如使用合格检查)。應由操作308到312执行的动态分析可以生成假设近似集,该假设近似集是对初始 假设集的过近似。被过近似的假设随后被使用来证明CUV满足断言。动态分析还可以生成假设近似集,该假设近似集是对初始假设集的欠近似。被欠 近似的假设随后被使用来证明断言为假。下述部分描述了可以被用于近似假设的技术。过近似去关联技术在一些实施例中,APPROXIMATE操作308使用可以减少假设的蕴涵和/或去合取 的近似技术,从而进一步减小从DISASSOCIATE操作306接收的假设集。Hfi在一些实施例中,如果项b不与断言c (直接或间接)共享逻辑,则APPROXIMATE 操作308将形式为《 ^ 的蕴涵假设从断言c去关联,即使项a与断言c (直接或间接)共 享逻辑。注意,环境所强加的条件通常通过蕴涵假设的结果(即,项b)而不是蕴涵假设的 前身(即,项a)来实施。去合取在一些实施例中,如果项al或项a2不与断言c (直接或间接地)共享逻辑,则 APPROXIMATE操作308可以将形式为a」a2的假设从断言c去关联。在一些实施例中, APPROXIMATE操作308不验证项或项a2可以独立于断言c而被满足。重写技术在一些实施例中,APPROXIMATE操作308可以通过放宽假设的重复范围的界限,将 假设集转换为过近似。此外,APPROXIMATE操作308可以通过利用非确定性值来替换大的 组合子表达式来将假设集转换为过近似。重复范围内部延迟一些假设,比如下述假设,表明如果项a成立,则表达式f必须在m个周期到η个周期之间成立,并且随后表达式C必须在P个周期后成立
在一些实施例中,APPROXIMATE操作308可以通过利用将表达式f的条件放宽到
只在至少m个周期内成立的下述假设来替换假设,生成该假设的过近似 注意,参数m的值通常小(例如,m通常为1),并且参数η的值可以大。因此,从该 假设中除去参数η可以大大地简化该假设。大的子表达式排除组合假设可以具有形式f(i,s,g(i',s')),其中i和i’为CUV的主输入,s和 s,是状态元素。在一些实施例中,APPROXIMATE操作308可以通过以形式f(i,s,r)来对假 设进行重写以使得r是用于替换原始假设中的g(i',s')的新变量,而生成组合假设的过 近似。注意,VERIFY操作310可以在验证期间使用该新假设来证明断言为真,即使i与i’ 相关联。如果断言被证明为假,则对于r和s的一些值,不能对r ==g(i',s')进行求 解,但是该过程可以从这种情形中恢复。欠沂似重写延迟范围假设内的范围信息可以加到形式验证的复杂度中,因为它可以导致状态空间中的 大量分支。下述假设指定,如果满足项a,则在满足项b后,在m个周期到η个周期之间必须 满足项c 这种假设导致在每个状态存在m-n+1种可能的结果,其中所指定的范围内的每个 延迟值一种结果。注意,对于m-n+1的更大值,证明假设为真或假的复杂度增加。因此,通 过最小化落入该范围中的延迟值的数目,可以大大地降低复杂度。注意,设计错误通常在延 迟范围的端点处出现。因此,APPROXIMATE操作308可以通过重写该假设使得该假设仅仅 考虑在恰好m个周期或恰好η个周期之后正在满足的项c,生成降低该假设的复杂度的欠近 似。所重写的假设将每个状态的结果数目减少为2,并且可以表示为 大的子表汰式排除组合假设可以具有形式f(i,s,g(i',s')),其中i和i’为CUV的主输入,s和 S,是状态元素。在一些实施例中,APPROXIMATE操作308可以通过以形式f (i,s,r)对该 假设进行重写以使得r是用于替换原始假设中的g(i' , s')的新变量,来生成组合假设 的欠近似。在一些变型中,r可以包括一组可允许的常数值,使得可以使用非确定性选择算 法来选择用于替换g(i',s')的值。注意,VERIFY操作310可以在验证期间使用该新假 设来证明断言为真,即使i与i’相关。
来自偏置的干扰在一些实施例中APPROXIMATE操作308可以利用由用户指定的偏置(biasing)信 息来对CUV的输入进行注释。当正在通过VERIFY操作310对假设进行分析时,该偏置信息 可以被使用来将值设置为该假设中的常数。数据路径方法数据路径假设可以包括相关的运算符,该相关的运算符在两个数据路径变量之间 比较所述值。在一些实施例中,APPROXIMATE操作308可以使用相等性(equality)来重写 数据路径假设。例如,APPROXIMATE操作308可以执行下述重写数据路径假设a < b可以 被重写为a = = 2*b,以及数据路径假设a > b可以被重写为b = = 2*a。(注意,选择乘数 “2”仅仅是用于示例性目的;数据路径假设可以使用任何正乘数来重写)。舰在一些实施例中,VERIFY操作310可以利用假设近似集来使用标准形式验证技 术对CUV的断言进行验证。注意,如果该假设近似集是对CUV的初始假设集的过近似,则 VERIFY操作310使用该假设近似集来证明该断言的有效性。相反,如果假设近似集是对CUV 的初始假设集的欠近似,则VERIFY操作310使用假设近似集来证明断言为假。MM在一些实施例中,REFINE操作312可以解译来自VERIFY操作310的结果,以确定 VERIFY操作310是否已经成功证明断言为真或者为假。过沂似如果该假设近似集是对CUV的初始假设集的过近似,则对断言证明为真是结论性 的。然而,如果VERIFY操作310证明断言为假,则系统可以相对于初始假设集对证明为假 的轨迹进行仿真,以识别该轨迹所违反的一个或多个假设。如果系统确定没有假设被违反,则针对该初始假设集,该断言也被证明为假,并且 系统可以向用户报告断言被证明为假。另一方面,如果系统识别出被违反的一个或多个假设,则被违反的假设被标记,以 防止系统在将来近似这些假设。接着,系统可以将初始假设集(其可以包括被标记的假设) 输入到APPROXIMATE操作308来进行近似。一旦APPROXIMATE操作308生成新的假设近似 集,该新的假设近似集对该初始假设集过近似,系统可以使用该新的假设近似集来进行验 证。注意,对被违反的假设的识别和标记可以由REFINE操作312执行。欠近似如果假设近似集是对CUV的初始假设集的欠近似,则对断言证明为假是结论性 的。然而,如果VERIFY操作310证明断言为真,则系统可以使用APPROXIMATE操作308来 生成新的假设近似集。具体地,系统可以从该初始集中识别被用来证明断言为真的假设,并且对所识别 出的假设进行标记,使得在随后的近似操作期间,不对被标记的假设进行修改。系统还可以 增加用于试探法的阈值,该试探法的阈值被系统使用来选择用于近似的假设。例如,该试探 法可以选择仅仅大于该阈值的那些假设。注意,对在证明为真中所使用的假设的识别和标 记可以由REFINE操作312执行。形式特性验证
13
图4示出了例示根据本发明的实施例的使用假设近似来验证CUV的过程的流程 图。在一些实施例中,该过程可以由计算机系统执行,该计算机系统包括存储指令的计算机 可读存储介质,当由该计算机系统执行时,所述指令使得该计算机系统执行验证CUV的过程。系统开始于接收CUV (操作402),接收断言集(操作404),以及接收第一假设集 (操作406)。接着,系统重写第一假设集,以获得第二假设集,该第二假设集在逻辑上等价 于第一假设集(操作408)。注意,第二假设集的基数可以大于第一假设集的基数。然而,第 二假设集中的个体假设通常小于第一假设集中的假设。随后,对于断言集中的断言(操作410),系统将第一假设子集与断言相关联(操 作412),并且对第一假设子集进行修改,以获得第二假设子集,第二假设子集在逻辑上不等 价于第一假设子集(操作414)。注意,第一假设子集可以是第二假设集的子集,并且第二假 设子集可以是对第一假设子集的近似。系统随后通过至少确定在满足第二假设子集时CUV 是否满足断言,对CUV进行验证(操作416)。一旦系统确定在满足相关联的假设时CUV满 足所有断言,则系统可以宣称CUV满足断言。在一些实施例中,操作414对第一假设子集进行修改,以获得第二假设子集,第二 假设子集过近似第一假设子集。在其它实施例中,操作414修改第一假设子集,以获得第二 假设子集,该第二假设子集欠近似第一假设集。图5示出了例示根据本发明的实施例的用于将假设子集与断言相关联的过程的 流程图。在一些实施例中,该过程对图4的操作412扩充。系统可以开始于从断言集中选 择断言(操作502),并且接收第一假设集(操作504)。接着,系统将初始假设子集与断言 相关联(操作506)。系统可以将初始假设子集初始化为空集合,并且迭代地将假设添加到 该集合中。具体地,系统可以从第一假设集中识别出直接或间接与断言共享逻辑的第一假 设(操作508),并且将第一假设插入到初始假设子集中(操作510)。随后,系统减少初始假设子集(操作512)。为了如此完成,系统可以迭代地从初 始假设子集中除去假设。具体地,系统从初始假设子集中识别出第二假设,使得不管是否 满足第二假设都满足断言(操作514),并且系统从初始假设子集中除去该第二假设(操作 516)。图6示出了例示根据本发明的实施例的通过精选过近似初始假设集的假设子集 来验证电路设计的过程的流程图。在一些实施例中,该过程对图4中的操作416进行扩充。所述系统可以开始于从 断言集中选择断言(操作602),以及接收第二假设子集,第二假设子集过近似CUV的第一假 设集(操作604)。接着,系统确定对于CUV是否存在其中不满足断言但满足第二假设子集的状态 (操作606)。如果系统确定对于CUV此种状态不存在,则系统报告CUV满足断言(操作 612),并且该过程结束。如果对于CUV存在其中不满足断言但满足第二假设子集的状态,则系统对第一假 设子集进行修改,以获得第三假设子集,该第三假设子集在逻辑上不等价于第一假设子集, 并且不同于第二假设子集(操作608)。具体地,第三假设子集可以是对第一假设子集的过 近似,且不同于第二假设子集。
接着,系统通过至少确定在满足第三假设子集时CUV是否满足断言,对CUV进行验 证(操作610)。随后,系统返回到操作606,以确定是否需要再次对第一假设子集进行修改, 以获得新的假设子集,该新的假设子集不同于第二和第三假设子集。图7示出了例示根据本发明的实施例的通过精选假设子集来验证电路设计的过 程的流程图,其中该假设子集对初始假设集进行欠近似。在一些实施例中,过程对图4中的 操作416进行扩充。系统可以开始于从断言集中选择断言(操作702),并且接收第二假设子集,该第 二假设子集对CUV的第一假设集欠近似(操作704)。接着,系统确定是否只要满足第二假设子集,就满足断言(操作706)。如果否(即, 系统确定存在其中在满足第二假设子集时不满足断言的状态),则系统报告CUV不满足断 言(操作712),并且该过程结束。如果只要满足第二假设子集,就满足断言,则系统对第一假设子集进行修改,以获 得第三假设子集,该第三假设子集在逻辑上不等价于第一假设子集,并且不同于第二假设 子集(操作708)。具体地,第三假设子集可以是不同于第二假设子集的、对第一假设子集的 欠近似。接着,系统通过至少确定在满足第三假设子集时CUV是否满足断言,对CUV进行验 证(操作710)。随后,系统返回到操作706,以确定是否需要再次对第一假设子集进行修改, 以获得新的假设子集,该新的假设子集不同于第二和第三假设子集。图8例示了根据本发明的实施例的用于通过近似假设来促进对电路设计进行验 证的示例计算机系统。计算机系统802包括处理器804、存储器806和存储设备808。此外, 计算机系统802可以耦合到显示设备810、键盘812和指示设备813。存储设备808存储操作系统814、电路验证系统816、CUV 826、断言集828、假设集 830、假设近似集832和验证结果834。电路验证系统816可以包括图形用户界面(⑶1)818、 关联模块820、近似模块822和验证模块824。图8中所示出的模块仅是例示性的,并且不 是旨在将本发明限制到所公开的形式。在操作期间,将电路验证系统816从存储设备808装载到存储器806中,并且由处 理器804来执行电路验证系统816。在一些变型中,可以在比如ASIC或FPGA的硬件模块中 实现电路验证系统816。在一些实施例中,电路验证系统816可以生成与断言集832中的断 言相关联的假设近似集832,从而使得假设近似832对假设830过近似或欠近似。为了完 成这,关联模块820从假设830中识别出第一假设子集,该第一假设子集与断言相关联。随 后,关联模块820重写第一假设子集,以生成第二假设子集,该第二假设子集在逻辑上等价 于假设830。接着,近似模块822生成假设近似832,该假设近似832在逻辑上不等价于第一假 设子集。具体地,假设近似832对第一假设子集过近似或欠近似。验证模块824随后通过 至少确定在满足假设近似832时CUV 826是否满足断言来对CUV 826进行验证。仅出于示例和描述的目的已呈现对各种实施例的前文描述。本意并非让它们穷举 本发明或者使本发明限于公开的形式。相应地,许多修改和变形对于本领域的技术人员而 言是显而易见的。另外,上述公开不是旨在限制本发明。
权利要求
一种通过确定在满足第一假设集时电路设计是否满足断言集来对所述电路设计进行验证的方法,其中所述断言集对所述电路设计的期望行为进行建模,以及其中所述假设集指定在正常电路操作期间被期望满足的逻辑功能,所述方法包括简化所述第一假设集,以获得第二假设集,所述第二假设集在逻辑上等价于所述第一假设集;将第一假设子集与所述断言集中的断言相关联,其中所述第一假设子集是所述第二假设集的子集;对所述第一假设子集进行修改,以获得第二假设子集,所述第二假设子集在逻辑上不等价于所述第一假设子集;并且通过至少确定在满足所述第二假设子集时所述电路设计是否满足所述断言,对所述电路设计进行验证。
2.如权利要求1所述的方法,其中,将所述第一假设子集与所述断言集中的所述断言 相关联包括将初始假设子集与所述断言相关联,其中如果假设直接或间接与断言共享逻辑,则假 设与断言相关联;并且如果不管是否满足第一假设,所述断言都是可满足的,则从所述初始假设子集中除去 至少所述第一假设。
3.如权利要求1所述的方法,其中,所述第二假设子集是对所述第一假设集的过近似。
4.如权利要求3所述的方法,其中,如果只要满足所述第二假设子集就满足所述断言, 则所述电路设计满足所述断言。
5.如权利要求4所述的方法,还包括响应于确定存在其中不满足所述断言但满足所述第二假设子集的状态,对所述第一假设子集进行修改,以获得第三假设子集,所述第三假设子集在逻辑上不 等价于所述第一假设子集,且不同于所述第二假设子集;并且通过至少确定在满足所述第三假设子集时所述电路设计是否满足所述断言,对所述电 路设计进行验证。
6.如权利要求1所述的方法,其中,所述第二假设子集是对所述第一假设集的欠近似。
7.如权利要求6所述的方法,其中,如果存在其中满足第二假设子集但不满足所述断 言的状态,则所述电路设计不满足所述断言。
8.如权利要求7所述的方法,还包括响应于确定只要满足所述第二假设子集就满足所述断言,对所述第一假设子集进行修改,以获得第三假设子集,所述第三假设子集在逻辑上不 等价于所述第一假设子集,且不同于所述第二假设子集;通过至少确定在满足所述第三假设子集时所述电路设计是否满足所述断言,对所述电 路设计进行验证。
9.一种通过确定在满足第一假设集时电路设计是否满足断言集来对所述电路设计进 行验证的装置,其中所述断言集对所述电路设计的期望行为进行建模,以及其中所述假设 集指定在正常电路操作期间被期望满足的逻辑功能,所述装置包括关联机构,被配置为简化所述第一假设集,以获得第二假设集,所述第二假设集在逻辑上等价于所述第一 假设集;并且将第一假设子集与所述断言集中的断言相关联,其中所述第一假设子集是所述第二假 设集的子集;近似机构,被配置为对所述第一假设子集进行修改,以获得第二假设子集,所述第二假 设子集在逻辑上不等价于所述第一假设子集;以及验证机构,被配置为通过至少确定在满足所述第二假设子集时所述电路设计是否满足 所述断言,对所述电路设计进行验证。
10.如权利要求9所述的装置,其中,将所述第一假设子集与所述断言集中的所述断言 相关联包括将初始假设子集与所述断言相关联,其中如果假设直接或间接与断言共享逻辑,则假 设与断言相关联;并且如果不管是否满足第一假设,所述断言是可满足的,则从所述初始假设子集中除去至 少所述第一假设。
11.如权利要求9所述的装置,其中,所述第二假设子集是对所述第一假设集的过近似。
12.如权利要求11所述的装置,其中,如果只要满足所述第二假设子集就满足所述断 言,则所述电路设计满足所述断言。
13.如权利要求12所述的装置,其中,如果所述验证机构确定存在其中不满足所述断 言但满足所述第二假设子集的状态,则所述近似机构被进一步配置为对所述第一假设子集进行修改,以获得第三假设子集, 所述第三假设子集在逻辑上不等价于所述第一假设子集,且不同于所述第二假设子集;以 及所述验证机构被进一步配置为通过至少确定在满足所述第三假设子集时所述电路设 计是否满足所述断言,对所述电路设计进行验证。
14.如权利要求9所述的装置,其中,所述第二假设子集是对所述第一假设集的欠近似。
15.如权利要求14所述的装置,其中,如果存在其中满足第二假设子集但不满足所述 断言的状态,则所述电路设计不满足所述断言。
16.如权利要求15所述的装置,其中,如果所述验证机构确定只要满足所述第二假设 子集就满足所述断言,则所述近似机构被进一步配置为对所述第一假设子集进行修改,以获得第三假设子集, 所述第三假设子集在逻辑上不等价于所述第一假设子集,且不同于所述第二假设子集;以 及所述验证机构被进一步配置为通过至少确定在满足所述第三假设子集时所述电路设 计是否满足所述断言,对所述电路设计进行验证。
全文摘要
本发明涉及用于形式特性验证的假设的自动近似。本发明的一个实施例提供了一种系统,包括用于简化电路设计的假设集,以及用于通过确定在满足所述简化后的假设集时电路设计是否满足断言集来对所述电路设计进行验证的方法和装置。在操作期间,所述系统可以通过针对所述断言集中的断言来识别直接或间接与所述断言共享逻辑的第一假设子集,来简化假设集。此外,所述系统可以对第一假设子集进行修改,以获得第二假设子集,该第二假设子集过近似或欠近似第一假设子集。随后,所述系统可以精选所述第二假设子集,以证明所述断言为真或假。
文档编号G06F17/50GK101866372SQ20091017491
公开日2010年10月20日 申请日期2009年10月29日 优先权日2009年4月17日
发明者A·M·德索扎 申请人:新思科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1