CN101866372A - 用于形式特性验证的假设的自动近似 - Google Patents
用于形式特性验证的假设的自动近似 Download PDFInfo
- Publication number
- CN101866372A CN101866372A CN200910174914A CN200910174914A CN101866372A CN 101866372 A CN101866372 A CN 101866372A CN 200910174914 A CN200910174914 A CN 200910174914A CN 200910174914 A CN200910174914 A CN 200910174914A CN 101866372 A CN101866372 A CN 101866372A
- Authority
- CN
- China
- Prior art keywords
- hypothesis
- subclass
- asserting
- satisfy
- circuit design
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
- G06F30/3323—Design verification, e.g. functional simulation or model checking using formal methods, e.g. equivalence checking or property checking
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
- Tests Of Electronic Circuits (AREA)
Abstract
本发明涉及用于形式特性验证的假设的自动近似。本发明的一个实施例提供了一种系统,包括用于简化电路设计的假设集,以及用于通过确定在满足所述简化后的假设集时电路设计是否满足断言集来对所述电路设计进行验证的方法和装置。在操作期间,所述系统可以通过针对所述断言集中的断言来识别直接或间接与所述断言共享逻辑的第一假设子集,来简化假设集。此外,所述系统可以对第一假设子集进行修改,以获得第二假设子集,该第二假设子集过近似或欠近似第一假设子集。随后,所述系统可以精选所述第二假设子集,以证明所述断言为真或假。
Description
技术领域
本公开通常涉及电子设计自动化。更为具体地,本公开涉及用于简化在形式电路验证(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例示了根据本发明的实施例的集成电路的设计和制造过程的各种步骤。
IC设计过程开始于产品构想(操作100),其使用电子设计自动化(EDA)过程实现(操作110)。一旦设计完成,通常就可以进行流片(事件140),在这一点上,进行制造过程(操作150),以及封装和组装过程(操作160),以生产出所制造的微芯片(结果170)。
EDA过程(操作110)包括操作112-130,将在下面对其进行描述,这仅仅是用来例示,而不是意在限制本发明。具体地,实际的集成电路设备可以要求设计者按照与下面所描述的顺序不同的顺序来执行设计操作。
系统设计(操作112):在该阶段,设计者描述实现产品构想的功能。他们还可以执行what-if(如果-怎么样)规划来精选功能以及进行成本分析等。在该阶段可以出现硬件-软件架构划分。在该阶段可以使用的、来自SYNOPSYS公司的示例EDA软件产品包括Model Architect、System Studio和Design
逻辑设计和功能验证(操作114):在此阶段,写入用于该系统中的模块的VHDL或Verilog代码,并且检查设计的功能准确性。更为具体地,对该设计进行检查,以确保它产生正确的响应。在该阶段可以使用的、来自SYNOPSYS公司的示例EDA软件产品包括MagellanTM、ESP和
综合和测试设计(操作116):在该阶段,VHDL/Verilog源代码被转换为网表。可以针对目标技术来对该网表进行优化,并且可以设计和实现测试来检查所制造出的芯片。在该阶段可以使用的、来自SYNOPSYS公司的示例EDA软件产品包括DesignPhysicalTest Compiler、Power CompilerTM、FPGACompiler、和Design
设计规划(操作120):在该阶段,针对时序和顶层布线来构建和分析微芯片的平面布局(floorplan)。在该阶段可以使用的来自SYNOPSYS公司的示例EDA软件产品包括AstroTM和IC Compiler产品。
物理实现(操作122):放置(电路元件的定位)和布线(互连的布置)在这个阶段出现。在该阶段可以使用的、来自SYNOPSYS公司的示例EDA软件产品包括AstroTM和IC Compiler产品。
分析和提取(操作124):在这个阶段,在晶体管级上验证电路功能;这反过来允许what-if精选。在该阶段可以使用的、来自SYNOPSYS公司的示例EDA软件产品包括AstroRailTM、PrimeRail、Prime和Star-RCXTM。
物理验证(操作126):在这个阶段,对设计进行检查,以确保制造、电气问题、光刻问题和电路的正确性。HerculesTM是在该阶段可以使用的来自SYNOPSYS公司的示例EDA软件产品。
分辨率(resolution)增强(操作128):这个阶段包括对布局的几何处理,以改进设计的可制造性。在该阶段可以使用的、来自SYNOPSYS公司的示例EDA软件产品包括Proteus/Progen、ProteusAF和PSMGen。
掩膜数据制备(操作130):这个阶段提供制造掩膜的流片数据,以产生完成的芯片。在该阶段可以使用的来自SYNOPSYS公司的示例EDA软件产品包括系列产品。
概述
一些实施例提供了用于使用形式验证技术来证明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进行近似。注意,如果假设集A1所允许的CUV的输入序列集也被假设集A2允许,则假设集A1对假设集A2欠近似。相反,如果假设集A2所允许的CUV的输入序列集也被假设集A1允许,则假设集A1对假设集A2过近似。如果假设集A1既欠近似假设集A2也过近似假设集A2,则假设集A1在逻辑上等价于假设集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):如果系统成功地证明断言为真或假,则该过程结束。否则,系统返回到APPOXIMATE步骤来使用从非结论性VERIFY操作收集的信息,以生成新的假设近似集。
注意,操作302到306可以被认为是静态阶段的部分,其保留修改后的假设集等价于原始假设集的不变性。换言之,执行操作302到306生成用于所选择的断言的缩减的假设集,从而使得使用该缩减的假设集来证明断言为真或假等价于使用CUV的初始假设集来证明断言为真或假。在一些实施例中,操作302到306可以由图2中的关联机构204来执行。
操作308到312可以被认为是动态阶段的部分,其迭代地精选假设近似集,直到断言被成功地证明为真,或者直到断言被成功地证明为假。在一些实施例中,操作308可以由图2中的近似机构206执行。此外,操作310-312可以由图2中的验证机构208执行。
重写
在一些实施例中,REWRITE操作302可以简化原始假设集中的假设,以产生一个或多个假设,该一个或多个假设一起等价于正在被简化的原始假设。例如,REWRITE操作302可以执行包括下述操作的一组操作中的一个或多个操作:合取分离(conjunction splitting),蕴涵分离(implication splitting),重复范围分离,蕴涵重复范围分离,比特截割,大的子表达式排除,假设排除和可以在使用合取分离对假设进行分割之前将假设转换为合取范式(CNF)的任何其它操作。
下面将更为详细地描述这些操作。
合取分离
如果假设是项的合取,则它可以被假设集替换,在该假设集中,每项是一个假设。例如,给定包括n项的假设a1&...&an,REWRITE操作302可以利用n个更小的假设a1到an来替换该假设。
蕴涵分离
CUV的环境约束通常使用处于蕴涵(implication)下的逻辑项的合取来描述,从而使得逻辑项的合取指定特定事件的结果(即,CUV的主输入、主输出和/或状态变量的值的特定集合)。例如,下述假设包括逻辑项的合取b1&...&bn,如果满足逻辑项a则必须满足该逻辑项的合取b1&...&bn:
REWRITE操作302可以通过将蕴涵分发给单个项(即,通过在该蕴涵上移动合取)来转换该假设。通过如此完成,REWRITE操作302创建了蕴涵的合取,其中当满足逻辑项a时必须满足逻辑项bi:
随后,REWRITE操作302可以应用合取分离来获得形式为的n个单独的假设,其中i的范围为1到n。合起来,该n个单独假设的集合等价于原始假设。
注意,蕴涵分离产生具有共同前身(antecedent)的n个单独假设,从而产生当合在一起大于原始假设的假设集。然而,利用APPROXIMATE操作308来合并蕴涵分离转换,可以大大地降低最终的假设集的复杂度。
重复范围分离
假设可以指定其中表达式必须成立的周期数的范围。在一些实施例中,REWRITE操作302可以利用其中该范围成立的最小周期数来替换该范围。例如,给定在表明函数f必须在8到32个周期之间有效(hold true)的下述假设f[*8:32],则REWRITE操作302可以利用表明f必须在至少8个周期内有效的等价假设(即,f[*8])来重写假设。
蕴涵和重复范围分离
重复范围可以作为假设的子表达式出现。对子表达式执行重复范围分离并不总是安全的,但是对下述假设执行重复范围分离是安全的,该假设表明当满足项a时,项f必须在8到32个周期之间成立。REWRITE操作302可以利用下述等价假设来替换该假设,该等价假设表明当满足项a时,f必须在至少8个周期之间成立。
比特截割
包含向量的假设趋于大且分解复杂,特别是在该假设实质上是顺序的时。然而,可以使用数据流分析来以逐比特的方式对此种假设进行截割。例如,考虑包含32-比特向量u和v以及比特a和b的下述假设。下述假设表明在比特a被置位后,向量u和v在10个周期内必须相等,其后是在稍后的8个周期对比特b置位:
REWRITE操作302可以将假设重写为32个具有下述形式的假设,其中i的范围为1到32:
大的子表达式排除
形式为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与断言z共享逻辑,则与假设y共享逻辑的假设x将与断言z相关联,即使假设x不直接与断言z共享逻辑(在本实例中,假设x和断言z间接共享逻辑)。换言之,如果假设与断言直接或间接共享逻辑,则假设与断言相关联。
去关联
即使在执行上述操作后,验证问题可能仍然具有太多的与断言相关联的假设。在一些实施例中,DISASSOCIATE操作306可以被使用来进一步减少与断言相关联的假设的数目。具体地,DISASSOCIATE操作306可以执行合格检查(qualification)操作和去合取(disjunction)操作中的至少一个或多个。
合格检查
在一些实施例中,DISASSOCIATE操作306可以确定假设是否与断言相关联。例如,考虑断言a和假设b,因为它们共享主输入i1,...,in,所以断言a和假设b相关联。DISASSOCIATE操作306可以计算表达式并且测试它是否是可满足的,即,DISASSOCIATE操作306可以确定对于主输入i1,...,in的所有值,假设b是否是可满足的。如果表达式是不可满足的,那么DISASSOCIATE操作306必须保持假设b和断言a之间的关联性。否则,DISASSOCIATE操作306可以将假设b从断言a去关联,因为可以独立于断言a而满足假设b。此外,在一些实施例中,DISASSOCIATE操作306可以将上述合格检查过程应用于假设对,以断开假设的传递链。
去合取
在一些实施例中,如果假设a1或假设a2不与断言c共享逻辑,则DISASSOCIATE操作306可以将形式为a1||a2的假设从断言c去关联,并且可以独立于断言c来满足假设(例如使用合格检查)。
近似
由操作308到312执行的动态分析可以生成假设近似集,该假设近似集是对初始假设集的过近似。被过近似的假设随后被使用来证明CUV满足断言。
动态分析还可以生成假设近似集,该假设近似集是对初始假设集的欠近似。被欠近似的假设随后被使用来证明断言为假。
下述部分描述了可以被用于近似假设的技术。
过近似
去关联技术
在一些实施例中,APPROXIMATE操作308使用可以减少假设的蕴涵和/或去合取的近似技术,从而进一步减小从DISASSOCIATE操作306接收的假设集。
蕴涵
在一些实施例中,如果项b不与断言c(直接或间接)共享逻辑,则APPROXIMATE操作308将形式为的蕴涵假设从断言c去关联,即使项a与断言c(直接或间接)共享逻辑。注意,环境所强加的条件通常通过蕴涵假设的结果(即,项b)而不是蕴涵假设的前身(即,项a)来实施。
去合取
在一些实施例中,如果项a1或项a2不与断言c(直接或间接地)共享逻辑,则APPROXIMATE操作308可以将形式为a1||a2的假设从断言c去关联。在一些实施例中,APPROXIMATE操作308不验证项a1或项a2可以独立于断言c而被满足。
重写技术
在一些实施例中,APPROXIMATE操作308可以通过放宽假设的重复范围的界限,将假设集转换为过近似。此外,APPROXIMATE操作308可以通过利用非确定性值来替换大的组合子表达式来将假设集转换为过近似。
重复范围内部延迟
一些假设,比如下述假设,表明如果项a成立,则表达式f必须在m个周期到n个周期之间成立,并且随后表达式c必须在p个周期后成立:
在一些实施例中,APPROXIMATE操作308可以通过利用将表达式f的条件放宽到只在至少m个周期内成立的下述假设来替换假设,生成该假设的过近似:
注意,参数m的值通常小(例如,m通常为1),并且参数n的值可以大。因此,从该假设中除去参数n可以大大地简化该假设。
大的子表达式排除
组合假设可以具有形式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个周期到n个周期之间必须满足项c:
这种假设导致在每个状态存在m-n+1种可能的结果,其中所指定的范围内的每个延迟值一种结果。注意,对于m-n+1的更大值,证明假设为真或假的复杂度增加。因此,通过最小化落入该范围中的延迟值的数目,可以大大地降低复杂度。注意,设计错误通常在延迟范围的端点处出现。因此,APPROXIMATE操作308可以通过重写该假设使得该假设仅仅考虑在恰好m个周期或恰好n个周期之后正在满足的项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使用假设近似集来证明断言为假。
精选
在一些实施例中,REFINE操作312可以解译来自VERIFY操作310的结果,以确定VERIFY操作310是否已经成功证明断言为真或者为假。
过近似
如果该假设近似集是对CUV的初始假设集的过近似,则对断言证明为真是结论性的。然而,如果VERIFY操作310证明断言为假,则系统可以相对于初始假设集对证明为假的轨迹进行仿真,以识别该轨迹所违反的一个或多个假设。
如果系统确定没有假设被违反,则针对该初始假设集,该断言也被证明为假,并且系统可以向用户报告断言被证明为假。
另一方面,如果系统识别出被违反的一个或多个假设,则被违反的假设被标记,以防止系统在将来近似这些假设。接着,系统可以将初始假设集(其可以包括被标记的假设)输入到APPROXIMATE操作308来进行近似。一旦APPROXIMATE操作308生成新的假设近似集,该新的假设近似集对该初始假设集过近似,系统可以使用该新的假设近似集来进行验证。注意,对被违反的假设的识别和标记可以由REFINE操作312执行。
欠近似
如果假设近似集是对CUV的初始假设集的欠近似,则对断言证明为假是结论性的。然而,如果VERIFY操作310证明断言为真,则系统可以使用APPROXIMATE操作308来生成新的假设近似集。
具体地,系统可以从该初始集中识别被用来证明断言为真的假设,并且对所识别出的假设进行标记,使得在随后的近似操作期间,不对被标记的假设进行修改。系统还可以增加用于试探法的阈值,该试探法的阈值被系统使用来选择用于近似的假设。例如,该试探法可以选择仅仅大于该阈值的那些假设。注意,对在证明为真中所使用的假设的识别和标记可以由REFINE操作312执行。
形式特性验证
图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可以包括图形用户界面(GUI)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进行验证。
仅出于示例和描述的目的已呈现对各种实施例的前文描述。本意并非让它们穷举本发明或者使本发明限于公开的形式。相应地,许多修改和变形对于本领域的技术人员而言是显而易见的。另外,上述公开不是旨在限制本发明。
Claims (16)
1.一种通过确定在满足第一假设集时电路设计是否满足断言集来对所述电路设计进行验证的方法,其中所述断言集对所述电路设计的期望行为进行建模,以及其中所述假设集指定在正常电路操作期间被期望满足的逻辑功能,所述方法包括:
简化所述第一假设集,以获得第二假设集,所述第二假设集在逻辑上等价于所述第一假设集;
将第一假设子集与所述断言集中的断言相关联,其中所述第一假设子集是所述第二假设集的子集;
对所述第一假设子集进行修改,以获得第二假设子集,所述第二假设子集在逻辑上不等价于所述第一假设子集;并且
通过至少确定在满足所述第二假设子集时所述电路设计是否满足所述断言,对所述电路设计进行验证。
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所述的装置,其中,如果所述验证机构确定只要满足所述第二假设子集就满足所述断言,则
所述近似机构被进一步配置为对所述第一假设子集进行修改,以获得第三假设子集,所述第三假设子集在逻辑上不等价于所述第一假设子集,且不同于所述第二假设子集;以及
所述验证机构被进一步配置为通过至少确定在满足所述第三假设子集时所述电路设计是否满足所述断言,对所述电路设计进行验证。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/425,597 | 2009-04-17 | ||
US12/425,597 US8813007B2 (en) | 2009-04-17 | 2009-04-17 | Automatic approximation of assumptions for formal property verification |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101866372A true CN101866372A (zh) | 2010-10-20 |
CN101866372B CN101866372B (zh) | 2014-07-02 |
Family
ID=42958100
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910174914.9A Active CN101866372B (zh) | 2009-04-17 | 2009-10-29 | 用于形式特性验证的假设的自动近似 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8813007B2 (zh) |
CN (1) | CN101866372B (zh) |
TW (1) | TWI471748B (zh) |
WO (1) | WO2010120490A2 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112257366A (zh) * | 2020-10-13 | 2021-01-22 | 国微集团(深圳)有限公司 | 一种用于等价性验证的cnf生成方法及系统 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100313175A1 (en) * | 2009-06-05 | 2010-12-09 | Advanced Micro Devices, Inc. | Verification systems and methods |
WO2015148599A1 (en) * | 2014-03-25 | 2015-10-01 | Clayton Gillespie | Solving np-complete problems without hyper polynomial cost |
US10528868B2 (en) | 2010-06-25 | 2020-01-07 | Clayton Gillespie | Solving NP-complete problems without hyper polynomial cost |
US8881075B2 (en) | 2013-03-04 | 2014-11-04 | Atrenta, Inc. | Method for measuring assertion density in a system of verifying integrated circuit design |
US10915683B2 (en) * | 2018-03-08 | 2021-02-09 | Synopsys, Inc. | Methodology to create constraints and leverage formal coverage analyzer to achieve faster code coverage closure for an electronic structure |
US10657211B2 (en) | 2018-04-20 | 2020-05-19 | International Business Machines Corporation | Circuit generation based on zero wire load assertions |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6748352B1 (en) * | 1999-12-30 | 2004-06-08 | Intel Corporation | Method and apparatus for scan design using a formal verification-based process |
US20040261043A1 (en) * | 2003-06-19 | 2004-12-23 | International Business Machines Corporation | Integrated design verification and design simplification system |
CN1828612A (zh) * | 2004-12-14 | 2006-09-06 | 国际商业机器公司 | 使用可达性过度逼近进行验证的方法和系统 |
CN101159492A (zh) * | 2007-09-11 | 2008-04-09 | Ut斯达康通讯有限公司 | 一种用于sdh逻辑设计的仿真验证系统及其方法 |
CN101404045A (zh) * | 2007-07-02 | 2009-04-08 | 韵律设计系统公司 | 为组合验证生成自动化假设的方法、系统和计算机程序产品 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6182258B1 (en) * | 1997-06-03 | 2001-01-30 | Verisity Ltd. | Method and apparatus for test generation during circuit design |
US6931611B2 (en) * | 2001-12-19 | 2005-08-16 | Freescale Semiconductor, Inc. | Design verification system for avoiding false failures and method therefor |
US6567971B1 (en) * | 2001-12-20 | 2003-05-20 | Logicvision, Inc. | Circuit synthesis method using technology parameters extracting circuit |
US7093218B2 (en) * | 2004-02-19 | 2006-08-15 | International Business Machines Corporation | Incremental, assertion-based design verification |
US7711536B2 (en) * | 2005-12-30 | 2010-05-04 | Cadence Design Systems, Inc. | System and method for verification aware synthesis |
US20080127009A1 (en) * | 2006-11-03 | 2008-05-29 | Andreas Veneris | Method, system and computer program for automated hardware design debugging |
-
2009
- 2009-04-17 US US12/425,597 patent/US8813007B2/en active Active
- 2009-10-29 CN CN200910174914.9A patent/CN101866372B/zh active Active
-
2010
- 2010-03-01 TW TW99105823A patent/TWI471748B/zh active
- 2010-03-30 WO PCT/US2010/029133 patent/WO2010120490A2/en active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6748352B1 (en) * | 1999-12-30 | 2004-06-08 | Intel Corporation | Method and apparatus for scan design using a formal verification-based process |
US20040261043A1 (en) * | 2003-06-19 | 2004-12-23 | International Business Machines Corporation | Integrated design verification and design simplification system |
CN1828612A (zh) * | 2004-12-14 | 2006-09-06 | 国际商业机器公司 | 使用可达性过度逼近进行验证的方法和系统 |
CN101404045A (zh) * | 2007-07-02 | 2009-04-08 | 韵律设计系统公司 | 为组合验证生成自动化假设的方法、系统和计算机程序产品 |
CN101159492A (zh) * | 2007-09-11 | 2008-04-09 | Ut斯达康通讯有限公司 | 一种用于sdh逻辑设计的仿真验证系统及其方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112257366A (zh) * | 2020-10-13 | 2021-01-22 | 国微集团(深圳)有限公司 | 一种用于等价性验证的cnf生成方法及系统 |
CN112257366B (zh) * | 2020-10-13 | 2024-05-07 | 深圳国微芯科技有限公司 | 一种用于等价性验证的cnf生成方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
WO2010120490A3 (en) | 2011-01-13 |
WO2010120490A2 (en) | 2010-10-21 |
US8813007B2 (en) | 2014-08-19 |
CN101866372B (zh) | 2014-07-02 |
TW201042481A (en) | 2010-12-01 |
US20100269078A1 (en) | 2010-10-21 |
TWI471748B (zh) | 2015-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101866372B (zh) | 用于形式特性验证的假设的自动近似 | |
CN101833590B (zh) | 使用简化网表来生成布图规划的方法和设备 | |
CN102598001B (zh) | 用于执行对逻辑设计的分析的方法和系统 | |
CN101872369B (zh) | 规范化表示中的自适应状态-符号转换 | |
US10915683B2 (en) | Methodology to create constraints and leverage formal coverage analyzer to achieve faster code coverage closure for an electronic structure | |
US8156462B2 (en) | Verification technique including deriving invariants from constraints | |
CN103403719A (zh) | 使用基于样本的静态时序基础结构的同步多角静态时序分析 | |
Marquez et al. | Formal equivalence checking between high-level and RTL hardware designs | |
Qin et al. | Directed test generation for validation of multicore architectures | |
Chen et al. | Reliability-aware operation chaining in high level synthesis | |
US7441216B1 (en) | Applying CNF simplification techniques for SAT-based abstraction refinement | |
TWI461945B (zh) | 實施使用下限距離之抽象化-精緻化技術的方法及裝置 | |
Guo et al. | Automatic RTL-to-formal code converter for IP security formal verification | |
US8104002B2 (en) | Performing logic optimization and state-space reduction for hybrid verification | |
Pan et al. | A Semi-Tensor Product based Circuit Simulation for SAT-sweeping | |
Ferrante et al. | A methodology for increasing the efficiency and coverage of model checking and its application to aerospace systems | |
Luria et al. | Logic encryption for resource constrained designs | |
Aftabjahani et al. | Special Session: CAD for Hardware Security-Promising Directions for Automation of Security Assurance | |
Chen et al. | Quantitative evaluation of register vulnerabilities in RTL control paths | |
EP2797017B1 (en) | Cloud-based digital verification system and method | |
Han et al. | {FuncTeller}: How Well Does {eFPGA} Hide Functionality? | |
Nguyen et al. | Sequential equivalence checking of hard instances with targeted inductive invariants and efficient filtering strategies | |
Chen et al. | Quantitative analysis of soft error propagation at rtl | |
Sundaresan | Architectural Synthesis Techniques for Design of Correct and Secure ICs | |
Bhadra et al. | A formal framework for verification of embedded custom memories of the Motorola MPC7450 microprocessor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |