什么是验证?我所认为的验证就是指为确保芯片在流片之前,所有既定功能已被正确设计而所做一系列工程活动,站在全流程的角度,它是一种防范于未然的措施。我们知道芯片一旦被制造出来,就没有办法进行更改,即使在流片过程中容许一定程度的EC,其代价也非常昂贵,所以把问题拦截在流片环节之前异常重要,这正是验证存在的意义。不要把验证与测试等同起来,测试的所有结果都基于既成事实,即使发现了功能问题,也无力回天了。
什么是验证方法学?验证工程师绕不开的一个基本概念。芯片规模越大功能越复杂,潜在的问题也就越多,验证的难度也就越大,验证方法学,就是研究怎样降低验证工程复杂度的同时,还能保证验证的可靠性,提升验证效率的一门学问。从它被提出到今天,其核心依然是带约束的随机激励、覆盖率驱动以及重用,并利用面向对像语言的特性对常用功能进行高度封装,再提供统一的事物层接口使不同抽象层级的建模数据得以共享和有效通信,从而极大地提升验证平台的构建效率,并加速EDA仿真,最终对缩短芯片面市周期做出贡献。
验证的基本流程。一般认为,所谓数字芯片验证,就是对RTL代码进行EDA仿真,并从中发现RTL代码BUG后,再提交设计工程师进行BUG修复的过程。实际项目操作中,验证工作的参与不仅仅是在RTL代码的仿真阶段,它应该贯穿整个项目的始终。如果说开发一颗芯片是一场战斗,那么设计与验证是同时投入,积粮草、挖战壕、冲锋陷阵都在一起,但拼杀结束后,设计可以陆续撤离,而验证则要负责打扫战场,确认所有敌人都不再喘气儿,保证万无一失。