一文看懂断言验证SVA(SystemVerilog Assertion)

 

目录

前言

什么是断言?

为什么使用SVA?

SVA应用方法

总结


 

前言

数字电路的规模和复杂度不断增长,使得功能验证成为一项巨大的挑战。验证的目标是彻底的验证被测设计,确保其中没有功能缺陷。现如今的测试平台都应当具备三个基础功能:1.产生激励 2.自检机制 3.衡量功能覆盖。产生激励就应当是根据端口数量和类型自动产生验证所需的激励,然后将结果自动与预期的结果做对比检查是否一致,最后衡量功能覆盖是否完整。

一个测试平台应该提供优秀的自检机制,应该有种方法使每个测试能自动和动态的检验期望的结果。这样调试过程会变得简单,同时回归测试更为有效。自检过程通常着眼于以下两个方面:1.协议检验 2.数据检验。协议检验的目标是控制信号。控制信号的正确性是验证任何设计的核心。数据检验的目的是检验正在处理的数据的完整性。

以上是摘自书中的内容,简要的讲述了验证中的自检机制。

回到文章主题,基于断言的验证(Assertion-Based Verification,ABV)来源于软件开发,随着硬件描述过程与软件设计过程在某种程度上越来越相似,断言验证也被应用于硬件设计。作为SystemVerilog的重要组成部分,SystemVerilog Assertion(SVA)提供了丰富的断言指令,使得设计工程师和验证工程师可以快速的对复杂设计验证行为进行定义。

什么是断言?

断言是设计的属性的描述:

  • 如果在一个模拟中被检查的属性(property)不像我们期望的那样表现,那么这个断言失败;
  • 如果一个被禁止在设计中出现的属性在仿真过程中发生,那么这个断言失败。

为什么使用SVA?

虽然Verilog可以很容易的用来实现一些检查,它仍有一些不足之处:

  • Verilog是一种过程语言,不能很好地描述时序;
  • Verilog是一种冗长的语言,随着断言数量的增加,断言的维护变得很困难;
  • 语言的过程性这一本质使得测试同一时间内变得相当困难;
  • Verilog语言没有提供内迁的机制来提供功能覆盖的数据,用户必须自己实现这部分代码

相比Verilog,SVA是一种描述性语言,可以完美的描述时序相关的状况,语言的描述性本质提供了对时间卓越的控制,语言本身十分精确且容易维护,并且提供了若干内嵌函数来测试特定的设计情况,以及一些构造来自动收集功能覆盖率。

SVA应用方法

断言的评估和执行包括以下三个阶段:

  • 预备:在这个阶段,采样断言变量,并且信号的值必须保持为稳定;
  • 观察:在这个阶段,对所有的属性表达式求值;
  • 响应:在这个阶段,调度评估属性成功或失败的代码;

SVA具体语法介绍可以参考Systemverilog之SVA(一)

以上大部分内容来自《A Practical Guide for Systemverilog Assertions》中文译本《Systemverilog Assertions应用指南》。

总结

UVM平台很好的解决了在验证工作中数据域的对比工作,但是控制域的一些信号无法通过数据表现出来,这就需要打开仿真波形去进行调试。而在调试过程中难免会有人为的错误出现,而使用SVA将断言和设计直观的连在一起,可以大大提高效率。虽然SVA直接和设计信号交互,但是它仍然可以和测试平台很有效的共享信息。这样一来,使用SVA完美而高效的处理了协议检验协议覆盖这两大类验证项。
 

 

 

 

你可能感兴趣的:(笔试面试)