一种迭代式的形式验证断言空泛性强度的测试方法、存储介质和终端与流程

文档序号:25742317发布日期:2021-07-06 18:53阅读:162来源:国知局
一种迭代式的形式验证断言空泛性强度的测试方法、存储介质和终端与流程

本发明涉及一种迭代式的形式验证断言空泛性强度的测试方法、存储介质和终端。



背景技术:

形式验证是一种基于逻辑建模和数学推理证明的芯片功能验证技术,是对传统仿真验证的补充并在很多场景正在取代仿真。由于形式验证技术的独特性,其在芯片设计验证流程中的应用存在不少障碍,第一个就是如何生成正确和准确的断言。断言分为约束和属性两种。前者定义了被测设计的输入环境,后者是形式验证的对象-即这些属性在设计的所有在输入约束允许的运行状态和运行路径下是否都成立。

由于断言语言的复杂性和高表述力,以及断言和所测设计间的相互作用,断言经常会隐藏一些开发者自己没有意识到的语义,其中最常见的一类就是空泛性。带有空泛性的断言往往表面断言本身不够准确,或者断言和设计之间的交互作用出现了问题。现在商业的形式验证工具只针对一种空泛性进行测试,就是因果空泛性。在a-》b形式的断言中,如果a不成立,那么整个断言的成立与b是否成立并没有关系。从断言本身看a的不成立不是预期的,而针对b是否成立的测试因为a的不成立并没有实施。现有工具针对因果形式的断言会做两项验证,一是a的可达性,即a是可以成立的。二是整个断言是否成立。a不可达的情况下断言的成立被称为空泛的成立。这种方法有两个问题。第一它只针对因果空泛,缺乏完整性。第二每个断言它会做两次验证,降低了效率。



技术实现要素:

本发明的目的在于克服现有技术的不足,提供一种迭代式的形式验证断言空泛性强度的测试方法、存储介质和终端。

本发明的目的是通过以下技术方案来实现的:

本发明的第一方面,提供一种迭代式的形式验证断言空泛性强度的测试方法,包括如下步骤:

将断言的每一子表达式分别置为0和1后进行综合并做自动机最小化处理,得到的两个结果若相同则认为断言具有空泛性。

进一步地,所述方法还包括:

将逻辑电路加入断言形成新断言;

将新断言的每一子表达式分别置为0和1后进行综合并做自动机最小化处理,得到的两个结果若相同则认为断言具有空泛性。

进一步地,所述将逻辑电路加入断言形成新断言包括:

逐步增加逻辑电路,以形成新断言。

进一步地,所述逐步增加逻辑电路的前提是在不具有空泛性的情况下。

进一步地,所述逐步增加逻辑电路为增加逻辑电路的深度和/或设计模块的深度。

进一步地,所述逐步增加逻辑电路,根据用户设定的计算资源,包括设定最大计算时间和最大可用内存,决定增加逻辑的数量和最终的测试的程度。

进一步地,所述方法还包括:

纠正断言,对使得断言具有空泛性的子表达式置0或1。

进一步地,在所述纠正断言之前还包括:

接收多余子表达式不是错误的确认信息。

本发明的第二方面,提供一种存储介质,其上存储有计算机指令,所述计算机指令运行时执行所述的一种迭代式的形式验证断言空泛性强度的测试方法的步骤。

本发明的第三方面,提供一种终端,包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的计算机指令,所述处理器运行所述计算机指令时执行所述的一种迭代式的形式验证断言空泛性强度的测试方法的步骤。

区别于现有技术的情况,本发明的有益效果是:

(1)本发明基于最广泛的空泛性定义,增加了测试的完整性;同时由于所使用的综合过程和最小化的可确定性,两个结果只需要进行结构对比,效率很高。

(3)本发明的优选实施例中,加入了额外的逻辑电路进行空泛性测试,有可能发现空泛存在于表达式。这个结果表明外部加入的逻辑出现了错误导致断言空泛。

(4)使用渐进的方式进行复杂度可控的测试,做了迭代式的空泛测试,从最强的空泛性即断言本身开始,逐步加入设计的逻辑电路,一是尽可能少的运用计算资源,二是尽早发现空泛中表达式,以利于对加入的逻辑电路进行分析纠错。

附图说明

图1是本发明测试和纠正方法流程图。

具体实施方式

下面结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

首先,需要说明的是,下述实例性实施例中将采纳最普适的空泛性定义,即对于断言中每一个子表达式,如果它的成立与不成立对整个断言的成立与否没有影响,那么这个子表达式就是多余的,而这个断言则是空泛的。

参见图1,图1为一种迭代式的形式验证断言空泛性强度的测试方法的流程图,包括如下步骤:

将断言的每一子表达式分别置为0和1后进行综合并做自动机最小化处理,得到的两个结果若相同则认为断言具有空泛性。

具体地,在断言综合过程中,对于每一个子表达式均会生成两个综合结果,一个假设此表达式为0,另一个假设为1,并对结果做自动机最小化处理。

理论上,两个逻辑等价的自动机只有在最小化后才保证自动机图形等价。因为我们只能依赖图形等价来判断功能等价,所以最小化是必须的。

对于断言本身(最强空泛性)的测试,唯一要做的就是对比两个结果是否相同。由于本实例性实施例中所使用综合过程和最小化方法的可确定性(优化结果的可确定性即唯一性,是自动机优化的基本理论),两个结果只需要进行结构对比,所以效率很高。

另外,空泛性有强弱之分。比如有的空泛性是断言自有的,和被验证的设计无关,这种无条件的空泛性强度最大;而有的空泛性是由设计中的逻辑电路关系引起的,比如背景技术中a的不成立,不是断言自身的问题。空泛性涉及的逻辑电路越多,和设计的关联就越大,强度就越低。针对这样一个观察,在本实例性实施例中提议做迭代式的空泛测试,从最强的空泛性即断言本身开始,逐步加入设计的逻辑电路。其中强度表明了空泛性从自发到由逻辑电路引起的程度变化,为空泛的原因提供的量化指标。

具体地,在一示例性实施例中,所述方法还包括:

将逻辑电路加入断言形成新断言;

将新断言的每一子表达式分别置为0和1后进行综合并做自动机最小化处理,得到的两个结果若相同则认为断言具有空泛性。

并且,所述将逻辑电路加入断言形成新断言包括:

在不具有空泛性的情况下,逐步增加逻辑电路,以形成新断言。

即在每一次迭代中,逐步增加逻辑电路。

其中,在又一个示例性实施例中,所述逐步增加逻辑电路为增加逻辑电路的深度和/或设计模块的深度。

在又一个示例性实施例中,所述逐步增加逻辑电路的前提是在不具有空泛性的情况。

在又一个示例性实施例中,所述逐步增加逻辑电路,根据用户设定的计算资源,包括设定最大计算时间和最大可用内存,决定增加逻辑的数量和最终的测试的程度。

同时,在又一示例性实施例中,所述方法还包括:

纠正断言,对使得断言具有空泛性的子表达式置0或1。

即最后发现多余子表达式,经用户确认不是错误后(优选方案),我们可以对断言进行优化,即删除多余子表达式,代入0或者1,使断言最小化。

尤其是在空泛性是引入的设计逻辑电路造成的情况下,用户需要确认是修改电路还是断言。在后一种情况下,即做自动断言修复。

通过对最新的ovl标准断言库的测试,我们发现了3处断言自带的空泛性,和6处在加入了断言所在ovl模块(不包含任何设计逻辑)后的空泛性。对于~40个ovl库断言所作的这两种强度的测试只用了几秒的cpu时间。

本发明的第二方面,提供一种存储介质,其上存储有计算机指令,所述计算机指令运行时执行所述的一种迭代式的形式验证断言空泛性强度的测试方法的步骤。

本发明的第三方面,提供一种终端,包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的计算机指令,所述处理器运行所述计算机指令时执行所述的一种迭代式的形式验证断言空泛性强度的测试方法的步骤。

基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得装置执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

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