1. 处理FPV中复杂度问题的两个简单办法
作为FPV验证计划的一部分,我们应该尽考虑采取措施来减少FPV执行的DUT规模的
复杂度,当然如果设计的复杂度不高,也不是必须要降低复杂度的。
所以,对于FPV,最重要的就是在早期评估复杂度问题!以及工具无法run完时的应对策略。
我们在这里讨论在FPV验证规划阶段可以考虑的一些基本的降低复杂度技术。
黑盒
选择黑盒时,我们需要仔细考虑数据流,分析我们想要黑盒的子模块对于整个DUT的验证会产生什么影响。
需要记住的是当我们将某个模块黑盒后,该模块的输出变成了完全随机的变量,因此在黑盒化之后可能还需要新增新的约束。
抽象
另一种有用的降低FPV复杂度的技术是减少逻辑的大小进行抽象,例如,通过减少buffer的深度或者数据宽度等等(数据抽象)。减少时序电路状态空间的结构抽象,因为FPV工具必须搜索完DUT微架构的全部状态空间。
其实结构抽象和数据抽象不是独立的,例如,当减少buffer的深度时,其buffer满的状态也更容易覆盖到。
这些数据/结构抽象通常非常简单,因为大多数模块的关键buffer深度和位宽都是参数化的,FPV工具可以通过各种方式修改这个parameter来进行数据/结构的抽象。
2. 什么时候才能说我们完成了FPV验证
其实FPV也类似于EDA simulation,首先根据规格指定FPV的验证计划,定义测试点或者属性(property),采取某些技术手段降低FPV复杂度。
那么在质量活动进行到什么样的程度才能说明我们已经完成了FPV呢?
• 时间限制:通常使用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验证微信公众号:
推荐阅读
更多IC设计技术干货请关注IC设计技术专栏)