SystemVerilog Assertion精华知识

前言

断言主要用于验证设计的行为。断言也可用于提供功能覆盖率,并标记用于验证的输入激励不符合假定的需求。

在验证平台中,通常进行三个主要任务:

  • 产生激励
  • 功能检查
  • 功能覆盖率度量

在当今的设计越来越复杂情况下,像波形调试这样的方式很容易出现人为错误,因此验证平台应该有一种自动和动态地检查预期结果的方式,这将使调试过程更容易,也使回归测试更有效。功能检查通常针对两个特定领域:

  • 协议检查:检查目标是控制信号,控制信号的有效性是任何设计验证的核心;
  • 数据检查:检查目标是所处理数据的完整性,比如网络传输的数据包是否有损坏;

SystemVerilog中引入的SVA在协议检查和协议覆盖率方面可以发挥重要的作用,它们更接近设计信号,通过将这些断言直接连接到设计,一方面便于管理,另一方面仿真性能可以得到极大的提高。SVA语言本身非常简洁,且提供了很好的时序控制能力。

那么什么是断言(SVA, SystemVerilog Assertion)呢?我们可以找到对它的经典解释。断言是对设计属性的描述:

  • 如果在仿真中检查的属性没有按照我们期望的方式运行,则断言失败;
  • 如果在仿真中出现了在设计中禁止发生的行为属性,则断言失败;

其实简单来说,就是该发生的一定要发生,不应该发生的就决不能发生,否则断言就失败了,进而产生报错信息

设计属性通常可以从设计的功能规范中提取,并转换为断言。这些断言一方面可以用于功能仿真期间持续监控设计行为,另一方面也可以通过使用Formal技术来验证设计。

SVA调度

SystemVerilog语言是基于事件(events)的执行模型。在每个time slot内,把所有发生的事件按顺序排序处理。关于SV events的调度,可以看下我之前写的一篇文章《详解SystemVerilog中time slot的调度》。通过遵循SV的调度算法,仿真器可以避免设计和验证平台交互过程的错乱,而且也让开发人员有迹可循,写出稳定的代码。断言的采样、评估和执行涉及time slot里的三个regions(区域)。

  • Preponed:该区域对断言变量进行采样。在这个区域内,net和variable不会改变其状态,这就允许在time slot的开始处采样到最稳定的值。
  • Observed:所有属性表达式(property expressions)都在该区域中求值。
  • Reactive:评估属性(property)的成功或失败在这个区域进行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谷公子的藏经阁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值