模型验证中减少计算引擎调用次数的空满足性检查方法技术

技术编号:39131960 阅读:13 留言:0更新日期:2023-10-23 14:51
本发明专利技术公开了一种模型验证中减少计算引擎调用次数的空满足性检查方法,包括以下步骤:在模型验证工具中输入待验证的设计和属性;提取蕴含表达式的先行算子和后续算子;判断先行算子是否为真,若先行算子为真则转向步骤四;若先行算子为否,则待验证属性为空满足;判断后续算子是否为真,若后续算子为真则待验证属性为验证通过;若后续算子为否则待验证属性为验证失败。通过将属性空满足性检查转化为可行算子可达性的检查,只需调用一次计算引擎就可以检查出属性是否为空满足,从根本上解决计算引擎调用次数与子公式的强关联性,从而减少空成功检查过程中的验证时间。本发明专利技术的方法简单,能够有效地减少空满足检查过程中的验证时间。时间。时间。

【技术实现步骤摘要】
模型验证中减少计算引擎调用次数的空满足性检查方法


[0001]本专利技术涉及模型验证研究领域,具体涉及一种模型验证中减少计算引擎调用次数的空满足性检查方法及计算机可读存储介质。

技术介绍

[0002]随着先进节点SoC设计的发展,复杂的多核CPU和系统拓扑对验证造成极大的挑战,其中,设计规范属性的空满足性检查就是挑战之一。在验证过程中,验证人员可能无意中过度约束了测试环境。这意味着验证空间中的重要行为被约束或验证设置的其他参数排除在外。在最坏的情况下,如果验证人员创建了一个定义全局错误条件的假设,例如(1= =0),则可能会排除所有可能的输入,并且由于根本没有任何合法输入,所有断言都被认为是正确的。当这种情况发生时,属性的验证证明将被报告为验证通过,如图1所示,验证通过的属性中包含空满足的属性,可能会忽略关键错误。有研究表明,在硬件设计的第一次模型验证中,通常20 %以上的属性是空满足性的,而这些空满足性的属性往往指向设计或规范中的真实问题。
[0003]以有针对空满足性及空满足性检查的研究主要集中在空满足性的定理证明和语义分析,通过不断增加空满足性定义的约束条件来降低空满足性检查的复杂度,即从检查所有子公式的可满足性发展为检查部分子公式的可满足性。而在空满足检查过程中,本质是一样的,每个属性都包含多个子公式,每个子公式验证都要调用引擎进行一次求解,即每个属性都要进行多次引擎的调用,如图2所示,极大地增加了空满足检查过程中验证的时间。

技术实现思路

[0004]有鉴于此,有必要提供一种执行速度快、节省验证时间的模型验证中减少计算引擎调用次数的空满足性检查方法及计算机可读存储介质。
[0005]一种模型验证中减少计算引擎调用次数的空满足性检查方法,所述方法包括以下步骤:步骤一,在模型验证工具中输入待验证的设计和属性;步骤二,提取蕴含表达式的先行算子和后续算子;步骤三,判断先行算子是否为真,若先行算子为真则转向步骤四;若先行算子为否,则待验证属性为空满足;步骤四,判断后续算子是否为真,若后续算子为真则待验证属性为验证通过;若后续算子为否则待验证属性为验证失败。
[0006]优选地,步骤二中的提取蕴含表达式的先行算子和后续算子的步骤具体包括:以蕴含表达式中的蕴含操作符为界,蕴含操作符前面的部分为先行算子,蕴含操作符后面的部分为后续算子。
[0007]优选地,步骤三中的判断先行算子是否为真的步骤具体包括:
将先行算子变换为第一布尔表达式;通过SMT/SAT确定第一布尔表达式是否可满足;若第一布尔表达式可满足,则先行算子为真;若第一布尔表达式不可满足,则先行算子为否。
[0008]优选地,步骤四中的判断后续算子是否为真的步骤具体包括:将后续算子变换为第二布尔表达式;通过SMT/SAT确定第二布尔表达式是否可满足;若第二布尔表达式可满足,则后续算子为真;若第二布尔表达式不可满足,则后续算子为否。
[0009]优选地,待验证属性的验证结果包括可满足、验证通过和验证失败。
[0010]优选地,所述模型验证工具采用Z3,Alt

Ergo,AProVE,Boolector,CVC4,MathSAT 5,Minkeyrink,OpenSMT 2,Q3B,SMTInterpol,SMT

RAT,STP,veriT,Yices 2。
[0011]以及,一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行实现如上所述的模型验证中减少计算引擎调用次数的空满足性检查方法。
[0012]上述模型验证中减少计算引擎调用次数的空满足性检查方法及计算机可读存储介质中,通过将属性空满足性检查转化为可行算子可达性的检查,只需调用一次计算引擎就可以检查出属性是否为空满足,从根本上解决计算引擎调用次数与子公式的强关联性,从而减少空成功检查过程中的验证时间。本专利技术的方法简单,能够有效地减少空满足检查过程中的验证时间。
附图说明
[0013]图1是模型验证中的验证结果示意图。
[0014]图2是已有的模型验证中空满足性检查的基本流程图。
[0015]图3是本专利技术实施例模型验证中减少计算引擎调用次数的空满足性检查方法的流程图。
具体实施方式
[0016]本实施例以模型验证中减少计算引擎调用次数的空满足性检查方法及计算机可读存储介质为例,以下将结合具体实施例和附图对本专利技术进行详细说明。
[0017]请参阅图3,示出本专利技术实施例提供的一种模型验证中减少计算引擎调用次数的空满足性检查方法,所述方法包括以下步骤:S10,在模型验证工具中输入待验证的设计和属性。
[0018]S20,提取蕴含表达式的先行算子和后续算子。
[0019]具体地,验证属性一般为cover/assert property,蕴含表达式是验证属性中带有蕴含操作符

>或者=>的表达式。
[0020]蕴含操作符左边的部分为先行算子,右边的部分为后续算子,例如:待验证属性为:assert property(@(posedge clk)a=>b );其中,a是先行算子,b为后续算子。
[0021]具体地,蕴含等效于if

then结构,蕴含操作符左边的叫做“先行算子”,右边的叫做“后续算子”;先行算子为验证属性的约束条件;当先行算子成功时,后续算子才会被计
算。
[0022]蕴含表达式包括交叠蕴含和非交叠蕴含。
[0023]交叠蕴含用符号“|

>”表示。如果先行算子匹配,在同一个时钟周期计算后续算子表达式。
[0024]非交叠蕴含用符号“|=>”表示。如果先行算子匹配,在下一个时钟周期计算后续算子表达式。后续算子表达式的计算总是有一个时钟周期的延迟。
[0025]S30,判断先行算子是否为真,若先行算子为真则转向步骤S40;若先行算子为否,则待验证属性为空满足。
[0026]具体地,判断先行算子是否为真的步骤具体包括:S31,将先行算子变换为第一布尔表达式。
[0027]S32,通过SMT/SAT确定第一布尔表达式是否可满足。
[0028]S33,若第一布尔表达式可满足,则先行算子为真。
[0029]S34,若第一布尔表达式不可满足,则先行算子为否。
[0030]具体地,SAT为SATISFIABILITY/布尔可满足性问题;SMT为Satisfiability Modulo Theories/可满足性模理论。
[0031]S40,判断后续算子是否为真,若后续算子为真则待验证属性为验证通过;若后续算子为否则待验证属性为验证失败。
[0032]具体地,判断后续算子是否为真的步骤具体包括:S41,将后续算子变换为第二布尔表达式。
[0033]S42,通过SMT/SAT确定第二布尔表达式是否可满足本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种模型验证中减少计算引擎调用次数的空满足性检查方法,其特征在于,所述方法包括以下步骤:步骤一,在模型验证工具中输入待验证的设计和属性;步骤二,提取蕴含表达式的先行算子和后续算子;步骤三,判断先行算子是否为真,若先行算子为真则转向步骤四;若先行算子为否,则待验证属性为空满足;步骤四,判断后续算子是否为真,若后续算子为真则待验证属性为验证通过;若后续算子为否则待验证属性为验证失败。2.如权利要求1所述的模型验证中减少计算引擎调用次数的空满足性检查方法,其特征在于,步骤二中的提取蕴含表达式的先行算子和后续算子的步骤具体包括:以蕴含表达式中的蕴含操作符为界,蕴含操作符前面的部分为先行算子,蕴含操作符后面的部分为后续算子。3.如权利要求1所述的模型验证中减少计算引擎调用次数的空满足性检查方法,其特征在于,步骤三中的判断先行算子是否为真的步骤具体包括:将先行算子变换为第一布尔表达式;通过SMT/SAT确定第一布尔表达式是否可满足;若第一布尔表达式可满足,则先行算子为真;若第一布尔表达式不可满足,则先行算子为否。4.如权利要求1所述的模型验证中减少计算引擎调...

【专利技术属性】
技术研发人员:刘美华苏宇白耿
申请(专利权)人:深圳国微芯科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1