CN1658199A - 增量式基于断言的设计验证 - Google Patents
增量式基于断言的设计验证 Download PDFInfo
- Publication number
- CN1658199A CN1658199A CN2005100081141A CN200510008114A CN1658199A CN 1658199 A CN1658199 A CN 1658199A CN 2005100081141 A CN2005100081141 A CN 2005100081141A CN 200510008114 A CN200510008114 A CN 200510008114A CN 1658199 A CN1658199 A CN 1658199A
- Authority
- CN
- China
- Prior art keywords
- design
- node
- consistance
- engine
- asserted
- 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
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)
- Tests Of Electronic Circuits (AREA)
- Semiconductor Integrated Circuits (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
一种设计验证系统包括第一验证引擎,其用来模拟集成电路的第一设计的操作,以获得验证结果,包括在其操作的N个时间阶段期间该模型对属性的依附性、可达到一个或多个验证目标的证明以及未达到的目标的验证覆盖范围结果。一致性引擎确定集成电路的第一设计和第二设计之间的功能一致性。如果被证明,功能一致性允许复用第一引擎的验证结果,以减少在随后分析第二设计的期间所耗的资源。一致性确定可使用具有“蕴涵”逻辑来代替“异或”逻辑的集成电路复合模型来简化。蕴涵逻辑指示第二设计中的节点处于与第一设计的验证结果相反的状态的情形。
Description
技术领域
本发明涉及集成电路设计领域,特别涉及集成电路设计验证系统领域。
背景技术
随着微处理器和其他大规模集成电路的复杂度在这几年中增大,贡献给设计验证的资源占据了开发和制造这样的装置所需的总资源的日益增大的百分比。实际上,现在估计,验证具有多处理能力的高级微处理器的正确功能性比实际设计该装置更耗费时间、劳力和其他资源。
历史上,功能验证主要包括生成大量测试程序或测试例,并且在对模拟装置操作的模拟器上运行这些测试程序。设计者和验证工程师经常在各种随机和特定测试生成器的帮助下人工开发这些测试例。随着集成电路中的晶体管、功能、寄存器和其他设施的数目增大,传统验证方法通过简单地增加所模拟的测试数量来响应。不幸的是,生成看上去无限数量的测试是低效且不可靠的验证复杂电路中所有组件的功能性的方法。
在微处理器开发的早期,由于测试空间的大小(例如由微处理器可采取的状态数测量)足够小而容忍了功能验证系统的低效率。另外,早期微处理器典型地具有比现代微处理器少的功能单元,并且各组件和功能之间的交互得以很好的理解和控制。微处理器中日益增多的功能单元从验证的角度是重要的,因为功能单元之间的交互不再能够忽略或者仅仅通过传统验证方法来宽松地验证。
采用现代集成电路的各种应用使得不可能预测和计划将在其上运行的软件应用的类型,因此在该领域内将会遇到的状态和互相关性相当多并且通常是不确定的。粗略地说,微处理器的测试空间近似等于2n,其中n表示微处理器内的锁存器(状态存储器件)的数目。根据该近似,可以理解,微处理器的测试空间随着锁存器数目增大而呈指数增长。
在传统功能验证方案中,通过简单地增加所模拟测试数量来验证装置中的增大复杂度,从而传统功能验证方案迅速地变得不可行。另外,由于传统验证过程中对模拟器的输入简单地是大量确定的测试或随机生成的测试,因此必须辛苦地评测模拟输出,以确定特定模拟对于测试该装置的预定功能性是否成功。
在设计过程期间所进行的不可避免的设计修改增加了执行功能验证所需的成本和时间。由于加入新功能性、更正设计瑕疵、对设计进行综合优化以满足定时/大小约束,以及添加普及(pervasive)功能如测试逻辑,因此复杂集成电路的设计典型地演化多次。不管变更多小,除非该变更被证明为极其无关紧要,否则每次设计变更时都典型地需要重新执行验证过程。当设计阶段将近结束时(即接近于“磁带输出(tape out)”、“第一硅(first silicon)”或设计完成时的任何其他重要阶段),重新验证设计所需的时间尤其有限。
因此期望实现一种解决了上述设计验证的测试验证系统。
发明内容
一般而言,本发明涉及一种用于验证集成电路的设计的模块化系统以及独特的一致性(correspondence)检查机制。该模块化系统包括验证引擎或模块,其被专门设计用于执行适于在设计变更之后使用的一致性检查。结合模块化验证系统如在2003年2月20日提交的发明名称为“Use of Time Step Information in a Design Verification System”,美国专利申请No.10/371,002的Baumgartner等人的共同未决专利申请(这里称作“’002申请”)中公开的系统,一致性检查模块的加入提供了可以复用在特定设计的先前版本上执行的验证结果以减少验证设计修正之后的设计所需的资源的机制。’002申请与使用和受益于特定设计(即无设计变更)内的先前验证工作有关,而本发明专门地将该概念扩展到包括设计变更。
在一个实施例中,一致性模块可以采用高效的一致性检查算法来实现,其中在传统上用来验证例如旧设计中的节点与新设计中的节点之间的一致性的“异或(EXOR)”逻辑以“蕴涵(IMPLIES)”逻辑替代,其中“蕴涵”逻辑取决于重新应用到新设计的先前验证数据的类型(例如,一种蕴涵逻辑用于目标(target)或节点已知为在先前设计中被命中(hit)的情况,而另一种蕴涵逻辑用于旧设计中的节点未被命中的情况)。蕴涵逻辑与传统的基于异或的一致性模型相比更易于建模(更少的逻辑元件)和评测。
附图说明
通过阅读下面详细描述和参照附图,本发明的其他目的和优点将会变得清楚,其中:
图1是示出根据本发明一个实施例的一般化设计验证流程的方框图;
图2是将特定验证信息传入和传出模块化验证引擎以简化或缩短验证过程的一般化设计验证系统;
图3示出用于本发明的一致性检查技术的实施例的蕴涵逻辑;
图4示出根据本发明一个实施例的一致性检查过程的流程图;以及
图5示出根据本发明一个实施例的图4的流程图的详细信息。
本发明可以采取各种变型和替代形式,在附图中作为例子示出了其特定实施例,并且这里将对其进行详细描述。然而,应当理解,这里给出的附图和详细描述不旨在将本发明局限于所公开的特定实施例,与此相反,本发明涵盖落在由所附权利要求限定的本发明的精神和范围内的所有变型、等价方案和替代方案。
具体实施方式
现在参照附图,图1是适于与本发明的一个实施例使用的设计验证系统100的选定部分的概念图。在所示实施例中,系统100包含很多与在’002申请中描述的系统100相同的单元。因此,例如,系统100包括设计验证框架102。框架102包括用来与由系统用户调用的一个或多个应用程序101通信的接口。框架102还被配置成向图1中被标识为根引擎104的验证引擎提供验证问题。验证问题典型地包括连线表(netlist)或其他适合的电路结构表示以及要被证实或反驳的一个或多个电路网上的一组预期值。如果状态或状态序列在指定电路网上产生预期值,则预期值被证实。
框架102创建(实例化)典型地通过应用程序101由用户定义的一个或多个序列中的一组验证引擎的实例。所实例化的引擎典型地安排在具有一个或多个可与其他分支分叉的验证分支的树状架构中。从框架102接收验证问题的根验证引擎104位于该树结构的顶点。框架102控制验证问题在分支中的各验证引擎之间的流动。
如图1所示,框架102被配置成通过应用程序101与用户交互以创建一个或多个验证分支105,其中每一个都包括在图1中由标号104、106和108表示的一个或多个验证引擎的用户定义序列。每个验证引擎被配置成模拟集成电路的操作(状态改变),并且评估模型对一个或多个属性的依附性(adherence)。可由框架102实例化或调用的验证引擎包括修改引擎106以及决策引擎108。如其名称所暗示的那样,修改引擎106被配置成修改(并且可能简化)给定验证问题,而决策引擎108作用于经过修改或未经修改的验证问题,以尝试解决问题或提供有关电路模型的其他信息。与本申请注重于验证设计变更相一致,根据本发明一个实施例的决策引擎108可包括被设计成验证特定电路或设计的两个模型之间的一致性或等效性的一致性引擎。
框架102将一个或多个验证分支105中的每一个应用于验证问题。在每个分支105内,可以由一个或多个修改引擎106修改验证问题,最终直到该分支以表示给定分支上的最后引擎的“叶子”引擎终止为止。叶子引擎典型地是尝试解决验证问题的决策引擎108。
在框架102将验证分支105应用于验证问题之后,叶子引擎典型地识别出至少一个针对所接收验证问题的反例跟踪信息(counterexampletrace),或者证实没有反例跟踪信息是可能的,即问题被证实是正确的。假定特定分支105中的叶子引擎对于解决特定问题是成功的(例如,叶子引擎产生了至少一个反例跟踪信息或者证实了问题的正确性),则它将结果(例如,所发现的跟踪信息或“正确”结果)传给其父引擎(最初从其接收验证问题的引擎)。然后,父引擎负责修改所接收的结果,以将任何修改反映到其在将连线表传给叶子引擎之前所创建的连线表。在相应地修改结果之后,父引擎则将修改后的跟踪信息传给其自己的父引擎,其进一步修改结果以反映其发起的修改等等直到将结果从根引擎104回传给框架102为止。以这种方式,从每一个分支105回传给框架102的结果将与由框架102生成的连线表一致。
在处理验证问题的期间,验证引擎可以了解可使其他引擎更易于解决验证问题的某些验证相关情况。了解了该情况的引擎典型地将所了解的信息传播给其父亲和其孩子(子引擎是该引擎在处理了验证问题之后将该问题传给其的引擎-作为验证分支中的最后子引擎的叶子引擎没有子引擎)。这些引擎或模块的每一个又将把所了解的信息传给其各自的父亲和孩子。以这种方式,在整个树结构内传播所了解的信息。因此,如图1所示,从根引擎104传给每个子引擎106的信息可包括验证问题以及所了解的设计情况。从子引擎106回传给根引擎104的信息可包括通过/未通过信息、一个或多个反例跟踪信息、以及所了解的情况。
现在参照图2,描述了设计验证系统100的模块化实施例的附加详细信息。图2所示的系统100的各单元包括由验证引擎中的一些或全部生成时间阶段(time step)信息,并且结合使用一致性引擎在引擎之间共享该信息,其中一致性引擎例如使得从先前设计提取的验证信息和时间阶段信息能够以在所需操作资源方面是高效的方式应用于新或修正的设计。
为了强调这些单元,图2示出框架102、根验证引擎104和以引擎1(111)、引擎2(112)、引擎3(113)和引擎4(114)标识的一组四个子验证引擎。验证引擎104和111到114被调用以评估电路模型对可由用户预定义或指定的一个或多个属性的依附性。其中每一个可被实现为如上所述的修改引擎或决策引擎。另外,每个验证引擎被专门配置成接收和发送某种形式的与正被验证的设计对应的所了解信息,其可由后继引擎使用以简化或缩短其所执行的验证。
在一种特别适于在设计变更的环境下使用的实现中,子验证引擎111到114之一是一致性引擎。在该实现中,除了在’002申请中描述的时间阶段信息和直径信息之外,在验证引擎之间共享的信息还包括表示集成电路的第一模型与集成电路的第二模型之间的功能一致性的一致性信息。很可能,集成电路的第一模型表示设计的先前或旧修正,而第二模型表示设计的新修正。一致性信息用来确定在旧设计上获得的验证结果是否可应用于新设计。
每个验证引擎可以接收时间阶段和直径信息,并且执行验证任务而不管该任务是变换任务、决策任务还是其组合。然后,每个这样的引擎根据所执行的验证任务适当时修改时间阶段和直径信息,并且将所更新的信息发送到下一个引擎。每个验证引擎可以使用时间阶段和直径来消除冗余的验证处理。冗余验证处理包括在先前检查过的时间阶段期间检查属性违例,以及忽略“大于”完全验证设计所需的最大时间阶段数的时间阶段。而且,一致性引擎可被调用以通过对于当前考虑的验证测试证明旧设计和新设计的功能一致性来复用先前验证工作。因此,例如,如果在旧设计的模型上执行的验证工作彻底地模拟了N个时间阶段,则肯定的一致性测试意味着不必验证新设计的开头N个时间阶段。这样,一致性引擎使得能够在设计变更之间复用先前验证工作。
为了示出在本发明中强调的单元,结合图2所示的系统100的实施例,描述一个示例性验证过程。考虑指定设计并且使用在’002申请中描述的模块化验证方法对其进行广泛验证的设计过程,其中该模块化验证方法包括在各个验证引擎之间传递时间阶段、直径和其他信息,以最小化验证设计所消耗的资源。在该广泛验证之后,为了添加附加功能性或者由于各种其他原因中的任一种,响应从验证测试了解的信息而修改设计。
经常地,从绝大多数锁存器和其他设计特性在先前(旧)和修改后的(新)设计中是相同的这一意义上而言,当前考虑的设计变更是微小的。在这样的情况下,从功能角度假定旧和新设计基本上相同是自然的。不幸的是,与引入具有功能瑕疵或缺陷的芯片相关联的成本大得使芯片制造商必须广泛地验证甚至是无关紧要的设计变更。
因此,对于高效验证两个类似但非相同的设计的功能等效性,投入了大量的工作。这种验证通常称作一致性检查。如上所述,传统一致性检查通过创建一组一致性信号来执行,其中每个一致性信号反映作为旧设计中的节点与新设计中的对应节点的异或结果的复合节点的值(状态)。如果共同一组刺激被施加于旧和新设计并且一致性信号被断言(assert),则对于当前考虑的测试,这两个设计的功能等效性被否定或反驳。
通过认识到验证结果可分成两个不同类即特定信号被断言或“命中”的验证结果和特定信号未被命中的验证结果(后一类测试结果可以进一步分成终结情况和非终结情况,在终结情况下,验证结论性地证明信号在指定状态下不能被断言,而在非终结情况下信号不能被断言是非结论性的。然而,对于本发明而言,终结和“部分”结果之间的区别基本上不重要),本发明的一个方面提高了传统一致性检查的效率。根据本发明的一致性检查对于第一类验证结果提出了第一类型的一致性逻辑(代替传统异或逻辑),并且对于第二类验证结果提出了第二类型的逻辑。如果先前验证结果证明特定节点可以被命中,则用来验证新设计中的并行节点的功能一致性的一致性逻辑仅指示旧节点被断言而新节点未被断言的状态(即旧与非(新))。相反,如果在先前验证测试期间特定节点未被断言,则用来验证新设计中的对应节点的功能一致性的一致性逻辑仅指示新节点被断言但是旧节点未被断言的状态(非(旧)与新)。
参照图3,示出了上述一致性逻辑。如下面进一步所述,通过创建包括旧设计402和新设计412的复合设计401来实现一致性检查。创建复合设计401最好包括确定对应或平行的节点。在所示实施例中,新设计412中的节点414被确定为在功能上对应于旧设计402中的节点404,并且新设计412中的节点416被确定为在功能上对应于旧设计402中的节点406。还假定先前验证工作即在旧设计402(或者功能上等效的旧设计402的先前版本)上执行的验证工作证明了至少一个其中节点404被断言的状态,而先前验证工作未揭示出任何其中节点406被断言的状态。根据本发明的一致性检查包括使用第一类型的蕴涵逻辑408创建第一复合节点409(也称作第一一致性节点),以确认旧设计402的节点404与新设计412的节点414之间的功能一致性,并且使用第二类型的蕴涵逻辑418创建第二复合节点419(也称作第二一致性节点),以确认旧设计402的节点406与新设计412的节点416之间的功能一致性。
如果可以(例如,使用一致性算法)证实作为第一类型的蕴涵逻辑408的输出的第一复合节点409不能被断言,则这表示不存在来自旧设计402的节点404被断言(真)而其提出的来自新设计412的等效节点414未被断言(假)的状态。由于在旧设计402上执行的先前功能验证工作证实了存在节点404被断言的状态,因此肯定一致性结果意味着在新设计412中存在节点414也可被断言(真)的状态。如果证明了作为第二类型的蕴涵逻辑418的输出的第二复合节点419不能被断言,则该结果表示不存在节点416为真而节点406为假的复合设计401的状态。由于在旧设计402上执行的先前验证工作没有发现节点406被断言的状态,因此肯定一致性结果在这种情况下意味着如果要在新设计412上执行等效的验证,则将发现不了节点416被断言的状态。因此,通过允许将来自先前验证工作的结果-包括证明节点能被断言、节点决不能被断言或者节点在N个时间阶段内不能被断言的结果-从旧设计402复用到新设计412,证实复合节点(例如,409或419)不能被断言节省了总体验证时间。例如,如果先前验证结果从某个初始状态彻底地验证了10个时间阶段,并且一致性引擎证明两个设计的功能一致性,则可将先前验证结果应用于新设计,使得不必重新验证新设计的时间阶段0到9,从而节省潜在相当多的验证资源。当然,如果一致性检查产生复合节点(409或419)的断言,则否定一致性结果阻止复用对应的先前验证结果。
现在参照图2,示出了模块化验证系统100的实施例,其中所示实施例强调将一致性引擎包括到系统中。初始地,通过框架102定义验证问题130,并且将其提供给根引擎104。验证问题130包括某种形式的设计描述、当前考虑的输入的定义、以及所要验证的属性的定义。所要验证的属性可以以达到特定状态的特定节点来表达。设计描述典型地是连线表、VHDL描述或某种其他适合的设计描述。
每个验证引擎111-114被配置成在执行或运行时从另一个引擎(父引擎)接收验证问题如验证问题130,并且对该问题执行其既定任务。在所示实施例中,根引擎104是引擎111、113和114的父引擎。验证引擎的既定任务可包括以某种方式简化电路模型或验证任务的变换任务以及在一些既定参数(例如时间阶段数)内检查现有模型的决策任务。另外,验证引擎113的所示实施例的既定任务是一致性任务(即,验证引擎113的所示实施例是一致性引擎)。
每个模块化验证引擎111-114还被配置成将验证问题传给另一个引擎(其子引擎),并且当其孩子完成了验证处理时接收从该孩子返回的验证结果。验证结果可包括反例跟踪信息、节点决不能被断言的完备证明、所了解的情况和/或所验证的时间阶段和设计直径估计。然后,每个引擎111-114将所接收的验证结果回传给其父亲。在所示实施例中,引擎112是相对于引擎111的子引擎,而引擎113和114如图所示没有子引擎。因此,引擎111被配置成接收与已被引擎112处理的验证问题相关的数据,并且将所接收的数据向上回传给根引擎104。
如前所述,在引擎113是一致性引擎的实施例中,根引擎104和引擎111、112和114中的一个或多个都可以被配置成当它们相互传递验证问题时在它们之间传递时间阶段和直径信息。类似地,将时间阶段和直径信息从子引擎传播到其父亲。在这样的实现中,验证引擎中的一个或多个包括直径估计引擎。如’002申请所述,直径估计引擎是保守地(conservatively)估计(即过高估计)为了正式地验证设计而需完全枚举的时间阶段数的上限的引擎。完全枚举是指模拟电路可采取的每一个可能状态的过程。当验证引擎评测电路在一时间阶段期间可采取的每一个可能状态时,该时间阶段被完全枚举。
除了直径信息之外,根引擎104和引擎111、112和114中的一个或多个可被配置成在预定数目的时间阶段内完全枚举集成电路模型。另外,根引擎104和验证引擎111-114中的每一个被配置成相互传播直径和经过时间阶段验证的信息。因此,每个验证引擎被配置成接收其可用来简化所执行的验证的时间阶段和直径信息。大概地,每个验证引擎“改善”时间阶段和/或直径信息,或者对其保持不动。时间阶段信息的改善是所验证时间阶段数的增加,而直径信息的改善是所估计直径的减小,因为增加所验证的时间阶段数和减小最大所需时间阶段数的估计是期望的。
每个验证引擎可以使用时间阶段和直径信息来最小化验证资源。作为例子,如果所验证的彻底时间阶段数超过所估计的直径,则可以推断电路属性是正确的。彻底验证的时间阶段数可包括前向时间阶段组成部分和后向时间阶段组成部分。在这种情况下,只需彻底验证的时间阶段的组成部分之一超过所估计的直径。当调用彻底搜索算法时,发生验证资源减少的另一个例子。该算法在已经检查的时间阶段期间(即,在具有小于时间阶段前向信息和时间阶段后向信息的较大者的值的时间阶段期间)无需检查指定属性的真或假。因此,如果在前向上彻底验证了6个时间阶段而在后向上彻底验证了10个时间阶段,则后继引擎无需验证时间阶段0到9期间的电路属性。
回到图2所示的特定实施例,框架102发送直径被估计为非常大(例如,2R)的验证问题,并且将前向(FWD)和后向(BCK)时间阶段参数初始化为0。当调用系统100中的每个引擎时,适当时它将内部更新这三个参数的记录。当引擎随后将该问题传给子引擎时,父引擎将把当前参数值传播给其孩子。类似地,当引擎接收到从其孩子返回的验证数据(包括这三个参数)时,它将适当地对这些参数更新其内部值(即,如果直径值小于其先前保持的值,则记录由其孩子报告的直径,并且如果前向和后向时间阶段值大于其先前保持的值,则记录由其孩子报告的前向和后向时间阶段值)。然后,引擎将把这些参数的任何改进(更低的直径、更高的前向或后向时间阶段)向上传播到其父亲(所示例子中的根引擎104)。最终,框架102将对这些参数的最佳确定值进行归档。如果执行随后趟(run),则该执行将以所归档的参数值为初始值开始。
在强调设计变更环境下的验证的图2所示的实施例中,最左验证分支301(包括引擎111和112的分支)表示对于特定设计的第一修正执行的系统的第一“趟”,其中特定设计的第一修正也被称作旧设计。中间验证分支302表示系统的第二趟。分支302是一致性验证分支,其包括在设计的第一修正变至设计的第二修正(新设计)之后调用的一致性引擎113。中间验证分支302的目的在于确定对于旧设计获得的验证结果(由第一验证分支301获得的结果)是否可应用于新设计,并且最好使用显著少于简单地对新设计重新执行验证分支301所需的验证资源来进行该确定。最右验证分支303表示系统的第三趟,在此期间,实现附加验证(除了最左验证分支301所达到的覆盖范围之外的验证覆盖范围)。
图2所示的过程可以如下进行定性描述。经常地,将使用例如在’002申请中描述的系统对设计执行广泛的验证。所有该“先前”验证工作在图2中以分支301表示。然后,对该验证的结果(时间阶段信息、跟踪信息、正确性证明等)进行归档。在设计变更之后,将执行由分支302表示的“一致性检查”,并且试图证实一致性逻辑是不可断言的。如果该证实成功,则可以将过去验证结果从旧设计直接应用于新设计。更具体地说,可以对一致性检查证实了关联一致性逻辑不能被断言的任何节点复用旧结果。对于所有其他一致性逻辑(即,未被结论性地证实为不可断言的一致性逻辑),不能复用旧结果。在完成一致性检查之后,分支303表示最好使用如在’002申请中描述的系统对新设计执行的附加验证测试。
例如,验证引擎111是在6个时间阶段内对旧设计执行有界后向彻底搜索的变换引擎。后向搜索是为了评估属性在其变换期间的不正确性而执行的。假定问题在6个时间阶段内未被解决,则将从验证引擎111输出的电路模型随同信息201一起传给其孩子即验证引擎112。此时,信息201表示最大后向时间阶段数为6,而前向时间阶段数和直径仍然分别保持其缺省(初始)值0和2R。
引擎2(112)可以是在20个时间阶段内执行有界彻底前向搜索的验证引擎。在执行该验证处理时,引擎2(112)通过在其枚举时间阶段0到5的期间不检查属性违例来利用信息201。如果引擎2(112)在其20个时间阶段内不能证实或反驳属性,则它以20为时间阶段前向数更新时间阶段信息,并且将该信息作为信息202回传给引擎1(111),其中前向为20,后向为6,并且估计直径仍然为2R。引擎1(111)将信息203往回传播到根引擎104,其中信息203与信息202相同。
在进行设计变更之后,根引擎104则将(包括在信息204中)的旧设计的快照传给一致性引擎113。信息204可包括表示哪些目标或节点在旧设计中被命中的数据、示出旧设计上的命中节点的任何可用调试跟踪信息、哪些节点未被命中、以及未命中节点的覆盖范围数据。信息204还包括新设计的模型,并且可能包括在验证分支301中对旧设计确定的任何时间阶段和直径信息。
如下面关于图4进一步所述,一致性引擎113的一个实施例使用旧设计快照和新设计的模型创建包括旧设计和新设计的复合模型。复合模型包括被设计成表示两个设计的对应目标或节点之间的区别的一致性信号。然后,一致性引擎113返回表示由验证分支301获得的验证结果对于新设计是否有效的结果(信息205)。如果一致性引擎113确定先前验证结果有效,则将包括在验证分支301中确定的任何时间阶段和直径信息的先前结果转发到验证分支303,并且由其使用。
本发明的各部分可被实现为存储在计算机可读介质如动态或静态RAM单元、非易失性介质如磁盘、CD ROM、软盘、闪存、磁带等上的一组计算机可执行指令(即软件)。在一个这样的实现中,当执行时,软件的各个部分执行图2所示的集成电路设计验证处理,其包括如’002申请所述的设计验证处理。对于本发明对设计变更之间的验证的强调,该软件可包括一致性验证软件,当执行时,其执行图4的流程图所示的一致性验证过程或方法500。
在所示实施例中,过程500包括对设计的第一修正(旧设计)执行(块502)设计验证作为预备步骤。该处理表示图2所示的验证处理301。验证处理502产生验证结果504。然后,通过对旧设计执行一次或多次修正来创建设计的第二修正(新设计)。然后,编译新设计(块506),并且清除新设计的所有验证数据。
在一致性验证方法500的所示实施例中,在新设计上模拟(块508)在验证旧设计的期间所发现的任何调试跟踪信息,以获得某快速的覆盖范围。在两个设计基本上类似且在功能上等效或相近的假设下,命中旧设计上的节点的调试跟踪信息很有可能命中新设计上的对应节点。如果这样的节点被命中,则模拟先前设计调试跟踪信息对于发现新设计上的命中节点是高效的。另一方面,如果旧设计调试跟踪信息中的一个或多个不产生命中节点,则先前设计验证的模拟对于反驳两个设计之间的一致性是高效的。
如果在块510中确定旧调试跟踪信息的模拟解决了当前考虑的所有节点,则将旧验证结果应用于新设计(块511)。如果一个或多个节点在块508之后仍然未被解决,则创建包括旧设计和新设计的复合模型(块512)。该复合模型可以使用对于等效性检查是传统的对应节点上的异或逻辑,或者在优选实施例中将使用蕴涵逻辑而非异或逻辑来进行一致性检查。
一旦创建了复合模型,则可以根据当在新设计上模拟旧调试跟踪信息时在块508中获得的覆盖范围来进行某些模型简化。具体地说,可以从电路模型中删除(块514)在块508中在新设计中命中的任何旧设计节点(因为在新设计中命中节点的能力已被证明)。另外,通过从复合设计中消除(块516)由于节点的增量式验证无意义而没有获得验证覆盖范围的任何旧设计节点,可以实现复合设计的简化。
在简化复合模型之后,为简化之后剩余的所有目标创建或构建(块517)复合目标。每个复合目标被设计成表示旧设计中的节点或目标与新设计中的对应节点或目标之间的功能差异。复合目标可以采用传统异或逻辑来实现。可选地,如图5所示,复合目标的生成(517)可以使用如上面关于图3所述的蕴涵逻辑来生成复合或一致性信号。在本实施例中,块517包括使用图3中由标号408表示的旧与非(新)类型的蕴涵逻辑为在旧设计中命中的在块516之后剩余的任何节点创建(块518)复合节点。接下来,使用图3中由标号418表示的非(旧)与新类型的蕴涵逻辑为在旧设计中未命中的在块516之后剩余的任何节点创建(块520)复合节点。
回到图4,在创建了一致性目标之后,执行一致性验证(块522)。最好,使用高效一致性检查算法执行使用复合模型的一致性检查。虽然按照锁存器或潜在状态数,复合设计401(图3)的大小基本上两倍于旧或新设计的大小,但是存在能够高效排除(discharge)一致性问题的一致性算法。例如,各种公知的组合式等效性检查算法能够非常高效地执行等效性检查。在旧和新设计非常接近于等同时,更是如此,而这种情况是设计变更往往微小时成熟设计的环境下常见的适当假设。
在完成一致性检查问题之后,可以将已被证实为不能达到的任何一致性信号(如来自图3中的蕴涵逻辑408、418的输出信号)、与旧设计中的信号有关的任何旧验证结果应用(块524)于新设计中的对应信号。以这种方式,方法500能够确定设计的两个版本之间的等效性。由于方法500的优选实施例使用比对于传统一致性模型是典型的异或逻辑更简单且更易于评测的蕴涵逻辑,因此方法500能够更好地解决一致性问题。
本领域的技术人员在受益于本公开内容之后应当清楚,本发明涉及一种用于验证集成电路设计的方法和系统。应当理解,在详细描述和附图中示出和描述的发明形式仅仅作为本发明的优选例子。所附权利要求应当被宽泛地解释,以包括所公开优选实施例的所有变体。
Claims (20)
1.一种设计验证系统,包括:
第一验证引擎,被配置成模拟集成电路的第一设计的操作,并且评估在其操作的N个时间阶段期间该模型对属性的依附性;
用于记录和传播N值的装置;
一致性引擎,被配置成确定集成电路的第一设计与集成电路的第二设计之间的功能一致性;以及
用于响应一致性引擎确定第一设计的至少一个节点与第二设计的对应节点的功能一致性,使用所传播的N值以减少在随后分析集成电路的第二设计的期间所耗的资源的装置,其中随后分析验证在大于N的时间阶段期间第二设计对该属性的的依附性。
2.如权利要求1所述的系统,其中使用所传播的N值以减少所耗资源包括将由第一验证引擎获得的验证结果应用于被确定为与第一设计中的相应节点具有功能一致性的第二设计中的每个节点。
3.如权利要求2所述的系统,其中一致性引擎被配置成确定第一设计中的节点与第二设计中的对应节点之间的功能一致性,其包括创建包括复合节点的复合模型,其中该复合节点的状态由第一设计中的节点和第二设计中的相应节点的状态确定,并且监测该复合节点,其中该复合节点的断言否定第一和第二设计中的节点之间的功能一致性。
4.如权利要求3所述的系统,其中一致性引擎还被配置成使用旧设计的任何调试跟踪信息模拟新设计,并且通过消除在该模拟期间命中的新设计中的任何节点并且删除与没有获得覆盖范围的旧设计节点对应的任何复合节点来简化复合模型。
5.如权利要求4所述的系统,其中确定第一设计中的节点与第二设计中的对应节点之间的功能一致性包括创建异或节点,在将共同一组输入施加于第一和第二设计的情况下,其具有第一设计中的节点与第二设计中的节点的异或结果值。
6.如权利要求4所述的系统,其中第一设计中的节点由第一验证引擎表示为被命中,此外其中确定第一设计中的节点与第二设计中的对应节点之间的功能一致性包括创建蕴涵节点,在将共同一组输入施加于第一和第二设计的情况下,当且仅当第一设计中的节点被断言而第二设计中的对应节点未被断言时,其才被断言。
7.如权利要求4所述的系统,其中第一设计中的节点未由第一验证引擎表示为被命中,此外其中确定第一设计中的节点与第二设计中的对应节点之间的功能一致性包括创建蕴涵节点,在将共同一组输入施加于第一和第二设计的情况下,当且仅当第二设计中的节点被断言而第一设计中的对应节点未被断言时,其才被断言。
8.一种用于验证集成电路设计的计算机程序产品,该计算机程序产品包括计算机可读介质,其包括:
第一验证引擎代码单元,用来模拟集成电路的第一设计的操作,并且评估在其操作的N个时间阶段期间该模型对属性的依附性;
用于记录和传播N值的代码单元;
一致性代码单元,用于确定集成电路的第一设计与集成电路的第二设计之间的功能一致性;以及
用于响应一致性引擎确定第一设计的至少一个节点与第二设计的对应节点的功能一致性,使用所传播的N值以减少在随后分析集成电路的第二设计的期间所耗的资源的单元,其中随后分析验证在大于N的时间阶段期间第二设计对该属性的的依附性。
9.如权利要求8所述的计算机程序产品,其中用于使用所传播的N值以减少所耗资源的代码单元包括用于将由第一验证引擎获得的验证结果应用于被确定为与第一设计中的相应节点具有功能一致性的第二设计中的每个节点的代码单元。
10.如权利要求9所述的计算机程序产品,其中用于减少所耗资源的代码单元包括当在小于N的时间阶段内枚举集成电路的第二设计的状态时,省略属性违例检查。
11.如权利要求8所述的计算机程序产品,其中用于确定第一设计中的节点与第二设计中的对应节点之间的功能一致性的代码单元包括用于创建其状态由第一设计中的节点和第二设计中的相应节点的状态确定的复合节点的代码单元。
12.如权利要求11所述的计算机程序产品,其中第一设计中的节点由第一验证引擎表示为被命中,此外其中用于确定第一设计中的节点与第二设计中的对应节点之间的功能一致性的代码单元包括用于创建蕴涵节点的代码单元,在将共同一组输入施加于第一和第二设计的情况下,当且仅当第一设计中的节点被断言而第二设计中的对应节点未被断言时,该蕴涵节点才被断言。
13.如权利要求11所述的计算机程序产品,其中第一设计中的节点未由第一验证引擎表示为被命中,此外其中用于确定第一设计中的节点与第二设计中的对应节点之间的功能一致性的代码单元包括创建蕴涵节点,在将共同一组输入施加于第一和第二设计的情况下,当且仅当第二设计中的节点被断言而第一设计中的对应节点未被断言时,其才被断言。
14.如权利要求11所述的计算机程序产品,其中用于确定第一设计中的节点与第二设计中的对应节点之间的功能一致性的代码单元包括创建异或节点,在将共同一组输入施加于第一和第二设计的情况下,其具有第一设计中的节点与第二设计中的节点的异或结果值。
15.一种设计验证系统,包括:
用于创建集成电路的第一设计和集成电路的第二设计的复合设计的装置;
其中该复合设计包括至少一个其状态由第一设计中的节点和第二设计中的对应节点的状态确定的一致性节点;
其中该一致性节点显现与第一和第二设计中的节点的蕴涵关系,其中当第一设计中的节点显现在先前验证中被验证的状态而第二设计中的对应节点未显现时,一致性节点被断言;以及
用于尝试确定一致性节点是否能够被断言的装置。
16.如权利要求15所述的系统,其中当且仅当第一设计中的节点为真且第二设计中的对应节点为非(真)时,一致性节点才被断言。
17.如权利要求15所述的系统,其中当且仅当第一设计中的节点为非(真)且第二设计中的对应节点为真时,一致性节点才被断言。
18.如权利要求15所述的系统,还包括用于从被配置成模拟第一设计的至少第一节点的行为的第一验证引擎接收验证结果的装置、以及用于如果一致性节点被确定为不能被断言时将验证结果应用于第二设计的第一节点的装置。
19.如权利要求18所述的系统,其中第一验证引擎验证在N个时间阶段内第一设计的第一节点的行为。
20.如权利要求19所述的系统,其中将验证结果应用于第二设计的第一节点包括忽略在开头N个时间阶段期间第二设计的第一节点的属性检查。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/782,673 | 2004-02-19 | ||
US10/782,673 US7093218B2 (en) | 2004-02-19 | 2004-02-19 | Incremental, assertion-based design verification |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1658199A true CN1658199A (zh) | 2005-08-24 |
CN100416575C CN100416575C (zh) | 2008-09-03 |
Family
ID=34861067
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100081141A Expired - Fee Related CN100416575C (zh) | 2004-02-19 | 2005-02-06 | 用于集成电路设计的验证系统和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US7093218B2 (zh) |
CN (1) | CN100416575C (zh) |
TW (1) | TWI322365B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1693921B (zh) * | 2004-05-05 | 2010-04-28 | 伊斯帕诺-叙扎公司 | 检查物理系统模型的鲁棒性 |
CN105137330A (zh) * | 2014-05-22 | 2015-12-09 | 炬芯(珠海)科技有限公司 | 多电压域数字电路的验证装置及其运行方法 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050188336A1 (en) * | 2004-02-25 | 2005-08-25 | Mortensen Michael P. | System and method for waiving a verification check |
US7509605B2 (en) * | 2005-12-12 | 2009-03-24 | International Business Machines Corporation | Extending incremental verification of circuit design to encompass verification restraints |
US8103999B1 (en) * | 2007-06-15 | 2012-01-24 | Jasper Design Automation, Inc. | Debugging of counterexamples in formal verification |
US8042078B2 (en) * | 2009-04-01 | 2011-10-18 | International Business Machines Corporation | Enhancing formal design verification by reusing previous results |
US8813007B2 (en) * | 2009-04-17 | 2014-08-19 | Synopsys, Inc. | Automatic approximation of assumptions for formal property verification |
US8996339B2 (en) | 2011-09-07 | 2015-03-31 | International Business Machines Corporation | Incremental formal verification |
US10409941B2 (en) * | 2013-10-31 | 2019-09-10 | Synopsys, Inc. | Visual representation of circuit related data |
US9495504B2 (en) * | 2014-05-01 | 2016-11-15 | International Business Machines Corporations | Using traces of original model to verify a modified model |
US10387605B2 (en) | 2015-07-23 | 2019-08-20 | Synopsys, Inc. | System and method for managing and composing verification engines |
US10503853B1 (en) * | 2017-07-28 | 2019-12-10 | Synopsys, Inc. | Formal verification using cached search path information to verify previously proved/disproved properties |
CN112052642A (zh) * | 2019-05-20 | 2020-12-08 | 台湾积体电路制造股份有限公司 | 用于机器学习的esl建模的系统和方法 |
US10970444B1 (en) | 2020-08-10 | 2021-04-06 | International Business Machines Corporation | Methods and systems to verify correctness of bug fixes in integrated circuits |
Family Cites Families (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5461574A (en) * | 1989-03-09 | 1995-10-24 | Fujitsu Limited | Method of expressing a logic circuit |
JP3179004B2 (ja) * | 1995-10-17 | 2001-06-25 | 富士通株式会社 | 論理回路検証システムおよび方法 |
US6212669B1 (en) * | 1997-11-05 | 2001-04-03 | Fujitsu Limited | Method for verifying and representing hardware by decomposition and partitioning |
US20020152060A1 (en) * | 1998-08-31 | 2002-10-17 | Tseng Ping-Sheng | Inter-chip communication system |
CA2345648A1 (en) * | 1998-09-30 | 2000-04-06 | Cadence Design Systems, Inc. | Block based design methodology |
JP4418591B2 (ja) * | 1998-11-03 | 2010-02-17 | ワンスピン ソリューションズ ゲゼルシャフト ミット ベシュレンクテル ハフツング | 技術システムの予め設定された特性と第1の特性とを比較するための方法及び装置 |
US6321363B1 (en) * | 1999-01-11 | 2001-11-20 | Novas Software Inc. | Incremental simulation using previous simulation results and knowledge of changes to simulation model to achieve fast simulation time |
US6408424B1 (en) * | 1999-06-04 | 2002-06-18 | Fujitsu Limited | Verification of sequential circuits with same state encoding |
WO2001001245A1 (en) * | 1999-06-26 | 2001-01-04 | Yang Sei Yang | Input/output probing apparatus and input/output probing method using the same, and mixed emulation/simulation method based on it |
JP2001060210A (ja) * | 1999-08-20 | 2001-03-06 | Nec Corp | Lsi検証方法、lsi検証装置および記録媒体 |
US7356786B2 (en) * | 1999-11-30 | 2008-04-08 | Synplicity, Inc. | Method and user interface for debugging an electronic system |
US6493852B1 (en) * | 2000-05-08 | 2002-12-10 | Real Intent, Inc. | Modeling and verifying the intended flow of logical signals in a hardware design |
US6571375B1 (en) * | 2000-05-08 | 2003-05-27 | Real Intent, Inc. | Determining dependency relationships among design verification checks |
US6539523B1 (en) * | 2000-05-08 | 2003-03-25 | Real Intent, Inc. | Automatic formulation of design verification checks based upon a language representation of a hardware design to verify the intended behavior of the hardware design |
US6651228B1 (en) * | 2000-05-08 | 2003-11-18 | Real Intent, Inc. | Intent-driven functional verification of digital designs |
US6611947B1 (en) * | 2000-08-23 | 2003-08-26 | Jasper Design Automation, Inc. | Method for determining the functional equivalence between two circuit models in a distributed computing environment |
US6859770B2 (en) * | 2000-11-30 | 2005-02-22 | Hewlett-Packard Development Company, L.P. | Method and apparatus for generating transaction-based stimulus for simulation of VLSI circuits using event coverage analysis |
US6470480B2 (en) * | 2000-12-14 | 2002-10-22 | Tharas Systems, Inc. | Tracing different states reached by a signal in a functional verification system |
US6480988B2 (en) * | 2000-12-14 | 2002-11-12 | Tharas Systems, Inc. | Functional verification of both cycle-based and non-cycle based designs |
US6691287B2 (en) * | 2000-12-14 | 2004-02-10 | Tharas Systems Inc. | Functional verification system |
US6629297B2 (en) * | 2000-12-14 | 2003-09-30 | Tharas Systems Inc. | Tracing the change of state of a signal in a functional verification system |
US6625786B2 (en) * | 2000-12-14 | 2003-09-23 | Tharas Systems, Inc. | Run-time controller in a functional verification system |
US6490708B2 (en) * | 2001-03-19 | 2002-12-03 | International Business Machines Corporation | Method of integrated circuit design by selection of noise tolerant gates |
US6912700B1 (en) * | 2001-06-06 | 2005-06-28 | The United States Of America As Represented By The National Security Agency | Method and system for non-linear state based satisfiability |
US6578174B2 (en) * | 2001-06-08 | 2003-06-10 | Cadence Design Systems, Inc. | Method and system for chip design using remotely located resources |
JP2003108619A (ja) * | 2001-09-27 | 2003-04-11 | Toshiba Corp | 半導体集積回路の設計方法および設計プログラム |
US6658633B2 (en) * | 2001-10-03 | 2003-12-02 | International Business Machines Corporation | Automated system-on-chip integrated circuit design verification system |
US6698003B2 (en) * | 2001-12-06 | 2004-02-24 | International Business Machines Corporation | Framework for multiple-engine based verification tools for integrated circuits |
JP2004213605A (ja) * | 2002-11-15 | 2004-07-29 | Fujitsu Ltd | 論理等価検証装置 |
GB0301249D0 (en) * | 2003-01-20 | 2003-02-19 | Paradigm Design Systems Ltd | Generation of improved input function for clocked element in synchronous circuit |
US6993734B2 (en) * | 2003-02-20 | 2006-01-31 | International Business Machines Corporatioin | Use of time step information in a design verification system |
US7266790B2 (en) * | 2003-03-07 | 2007-09-04 | Cadence Design Systems, Inc. | Method and system for logic equivalence checking |
US7032192B2 (en) * | 2003-05-22 | 2006-04-18 | Fujitsu Limited | Performing latch mapping of sequential circuits |
-
2004
- 2004-02-19 US US10/782,673 patent/US7093218B2/en not_active Expired - Fee Related
-
2005
- 2005-02-04 TW TW094103528A patent/TWI322365B/zh not_active IP Right Cessation
- 2005-02-06 CN CNB2005100081141A patent/CN100416575C/zh not_active Expired - Fee Related
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1693921B (zh) * | 2004-05-05 | 2010-04-28 | 伊斯帕诺-叙扎公司 | 检查物理系统模型的鲁棒性 |
CN105137330A (zh) * | 2014-05-22 | 2015-12-09 | 炬芯(珠海)科技有限公司 | 多电压域数字电路的验证装置及其运行方法 |
CN105137330B (zh) * | 2014-05-22 | 2018-09-25 | 炬芯(珠海)科技有限公司 | 多电压域数字电路的验证装置及其运行方法 |
Also Published As
Publication number | Publication date |
---|---|
US7093218B2 (en) | 2006-08-15 |
TWI322365B (en) | 2010-03-21 |
TW200602918A (en) | 2006-01-16 |
CN100416575C (zh) | 2008-09-03 |
US20050188337A1 (en) | 2005-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100416575C (zh) | 用于集成电路设计的验证系统和方法 | |
US7673261B2 (en) | Systematic compliance checking of a process | |
Marinov et al. | TestEra: A novel framework for automated testing of Java programs | |
JP3858000B2 (ja) | フィルタリング型アプローチを使用する組合せ回路の検証方法 | |
US7117484B2 (en) | Recursive use of model based test generation for middleware validation | |
Van Eijk | Sequential equivalence checking based on structural similarities | |
US7529655B2 (en) | Program product for defining and recording minimum and maximum event counts of a simulation utilizing a high level language | |
US7331007B2 (en) | Harnessing machine learning to improve the success rate of stimuli generation | |
CN102598001B (zh) | 用于执行对逻辑设计的分析的方法和系统 | |
Wolf | Behavioral intervals in embedded software: timing and power analysis of embedded real-time software processes | |
del Mar Gallardo et al. | Debugging UML designs with model checking | |
CN113626324B (zh) | 一种面向Move语言虚拟机的模糊测试方法 | |
Ahmad et al. | Cirfix: automatically repairing defects in hardware design code | |
CN116341428B (zh) | 构建参考模型的方法、芯片验证方法及系统 | |
Bonfiglio et al. | Software faults emulation at model-level: Towards automated software fmea | |
Suneja et al. | Towards reliable AI for source code understanding | |
CN112948193A (zh) | 一种基于差异测试的fpga综合工具缺陷检测方法 | |
Bertacco et al. | Cycle-based symbolic simulation of gate-level synchronous circuits | |
Suri et al. | On the use of formal techniques for validation | |
De Moura et al. | Bugs, moles and skeletons: Symbolic reasoning for software development | |
Santiesteban et al. | Cirfix: Automated hardware repair and its real-world applications | |
US7650579B2 (en) | Model correspondence method and device | |
Wetzler | Efficient, mechanically-verified validation of satisfiability solvers | |
Wagner et al. | SIMPAL: a compositional reasoning framework for imperative programs | |
Dan et al. | Automatic test case generation for RAISE |
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20080903 Termination date: 20110206 |