前文《芯片验证的挑战之一:理论上无限的验证空间》已经提到了验证的第一大挑战,本文描述验证的第二个验证挑战:如何能检测出设计的非预期行为 。
RTL设计的本质就是根据当前的设计状态和输入获取设计的下一个状态,验证工程师也必须根据设计的当前状态和输入建模一个设计预期的行为,然后将RTL实际的输出和参考模型进行比对,以判断RTL实现是否正确。
最开始验证工程师不应该过分关注RTL设计的每一种可能的状态,而应该在更抽象层次验证RTL的功能正确性。验证工程师将RTL的输入划分为多个场景,然后聚焦RTL在这些激励下的行为。简而言之,验证工程师一开始还是应该从黑盒的角度,并基于规格进行验证。
上图是针对不同设计类型给出的激励类型、输出检查,以及不同设计类型的各自的验证难点,其实这也是验证工程师的价值所在,而不仅仅是熟练使用SV/UVM。以第一个微处理器的验证为例,其对多个通用寄存器的值(general-purpose registers ,GPRs)进行读写操作。 在每一个指令执行完成,我们应该检查相应操作目标寄存器的值是否正确,同时还应该检查该指令有没有影响其他的寄存器的值。
除了从黑盒的角度对设计进行验证,验证工程师可以将视角移入到设计内部,针对设计内部的某个方面添加checker或者断言,即白盒验证。
作者:验证哥布林
原文链接:https://mp.weixin.qq.com/s/vdd3Cvnj4\_9aARWs497Tcw
微信公众号:
推荐阅读
更多IC设计技术干货请关注IC设计技术专栏。