Dinglei_hello · 2022年01月21日

有关FPV

一、在FPV中如何约束设计

在实际验证项目中,我们通常需要添加约束,对实际激励进行限制。约束一个RTL模型输入有很多原因:

  1. 有些输入值怎么也不可能产生。
  2. 有些输入值在业务上不会使用。
  3. 有些输入表示设计的某些特性,暂时不关心,例如我们之前的密码锁设计中的override信号。在验证环境中,我们主要验证输入数据组合对锁的是否打开影响,所以将override信号约束为0

Simulation

在simulation中,我们需要输入激励满足实际的约束,即不能拉高override信号,可以一直让driver赋值为0,或者通过SV 约束其一直为0(和FPV assume类似)。这种约束是合理的,即使有些场景没有被测到也是在预期范围内的。

FPV

在FPV中不需要主动发送激励,因为默认FPV会涵盖整个验证空间。我们需要添加assume排除掉非法值,即约束override一直为高。

fix1: assume property (override == 0);

一旦我们这样做了,FPV环境就涵盖了整个验证空间减去我们排除的空间子集(override为高)。

二、设计可以使用FPV做什么

设计可以使用FPV技术在不创建testbench的情况下探索模块的基本行为。

乍一看,这个用法似乎有点奇怪,因为最初FV方法被引入是为了解决验证的“最后一公里”问题的,试图涵盖simulation很难验证的corner case。

但是,设计如何使用FPV来探索模块的“基本行为”呢?

如果你是一个设计工程师,当你完成第一版设计时需要搭建一个基本的验证平台来观察模块的行为。很多时候,我们开发的模块都比较复杂,设计工程师很难短时间开发出复杂的验证平台能够覆盖其关心的corner case。

FPV和simulation的思路不一样,使用FPV工具可以指定一个特定的场景,然后工具会展示出导致这个场景的输入情况。

这种功能感觉恰好是为设计工程师服务的,而需要一个简单的SVA断言即可。在以下情况下,你应该考虑使用FPV探索你的设计:

  1. 你正在编写新的RTL,并想看看它的基本功能。
  2. 试图在交付给验证之前进行开发者自测试(设计自己使用FPV进行验证sign off)。
  3. 你继承了一些没有文档的遗留RTL代码,需要了解它的基本行为。
  4. 你对RTL进行了时序优化,但是不希望改变原有的功能,可以使用FPV进行两者之间的功能比对。

END

作者:验证哥布林
原文链接:
https://mp.weixin.qq.com/s/xiGGXv1XWOAjDjpBglJGIw
https://mp.weixin.qq.com/s/N1ak8JCbmvnn3Xn8cSYEzg
微信公众号:
 title=

推荐阅读

更多IC设计技术干货请关注IC设计技术专栏
推荐阅读
关注数
20195
内容数
1307
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息