Dinglei_hello · 4月19日

有关FPV

1. 处理FPV中复杂度问题的两个简单办法

作为FPV验证计划的一部分,我们应该尽考虑采取措施来减少FPV执行的DUT规模的

复杂度,当然如果设计的复杂度不高,也不是必须要降低复杂度的。

所以,对于FPV,最重要的就是在早期评估复杂度问题!以及工具无法run完时的应对策略。

b25a69e7e6e8307a54fedef0d47ff680.png

我们在这里讨论在FPV验证规划阶段可以考虑的一些基本的降低复杂度技术。

黑盒

选择黑盒时,我们需要仔细考虑数据流,分析我们想要黑盒的子模块对于整个DUT的验证会产生什么影响。

需要记住的是当我们将某个模块黑盒后,该模块的输出变成了完全随机的变量,因此在黑盒化之后可能还需要新增新的约束。

抽象

另一种有用的降低FPV复杂度的技术是减少逻辑的大小进行抽象,例如,通过减少buffer的深度或者数据宽度等等(数据抽象)。减少时序电路状态空间的结构抽象,因为FPV工具必须搜索完DUT微架构的全部状态空间。

其实结构抽象和数据抽象不是独立的,例如,当减少buffer的深度时,其buffer满的状态也更容易覆盖到。

这些数据/结构抽象通常非常简单,因为大多数模块的关键buffer深度和位宽都是参数化的,FPV工具可以通过各种方式修改这个parameter来进行数据/结构的抽象。

2. 什么时候才能说我们完成了FPV验证

其实FPV也类似于EDA simulation,首先根据规格指定FPV的验证计划,定义测试点或者属性(property),采取某些技术手段降低FPV复杂度。

那么在质量活动进行到什么样的程度才能说明我们已经完成了FPV呢?

589356768a6f919147d7de82f1da20ed.png

• 时间限制:通常使用FPV进行bug hunting时,FPV仅作为EDA simulation的补充,我们建议根据设计的复杂性设定一个明确的时间(大概两到三周)。当你在bug hunting模式发现了FPV应用在该模块的更多价值时(发现了更多的问题),就应该考虑对该模块进行FPV full prove的可能性,如果决定进行FPV full prove,时间设定就可以再加上一个月。

虽然FPV full prove可能花费大量的时间,但是如果真的能够对某些模块进行full prove,这个成本的收益完全是可以收回来的,甚至完全替换掉EDA simulation,去掉需要花费在该模块EDA simulation的人力时间成本。

• 质量:我们还需要根据质量活动的进展来决定是否已经完成了FPV,不管是bug hunting还是full prove。前文已经提到过这些质量活动,一般包括:检视验证计划,assertion,cover、assume、FPV验证环境中的特殊技术手段、FPV执行结果等等。

1、属性(property)集的质量检视:确保验证计划经过完全的检视,所有的属性断言都PASS了。

2、约束的质量检视:确保我们所有的cover都覆盖到了并且这些assume在集成到EDA simulation验证环境中没有fail。

3、验证结果质量:如果某个断言无法full prove,需要确保所有有界证明都是可接受的(可以参考覆盖率是否全部达到)。

4、验证收敛:和EDA simulation一样,在验证的后期所有的断言和checker逐渐老化,我们需要不断地调整约束或者新增断言,当持续比较长时间(例如一个月)没有发现新的问题时就可以人为验证完成。

END

作者:验证哥布林
原文链接:
处理FPV中复杂度问题的两个简单办法
什么时候才能说我们完成了FPV验证

微信公众号:
 title=

推荐阅读

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