芯片验证从零开始系列(一)——芯片验证概论
由于最近一个比赛要用到UVM验证,顺便多一门以后求职的手艺,准备系统地学习一下SV和UVM,也可以为之后的毕业论文和发展方向做一些准备。
芯片开发流程
- 1)市场人员和客户沟通确定用户需求
- 2)系统设计人员按照功能划分为各个子系统
- 3)子系统由设计团队开发实现
- 4)验证人员对设计功能展开验证,发现设计缺陷,交由设计人员修正
- 5)验证没有出现漏洞后,交由后端人员进行综合,布局布线
- 6)后端人员将版图交由FAB流片
动态验证技术
动态验证技术是目前的主流技术
依靠仿真器来对数字电路进行激励发送和结果检查
静态验证技术
可以分为人工形式验证(属性检查)和自动形式验证技术。
- 属性检查指通过断言结合形式验证工具对设计进行穷举检查,判断设计的正确性。
- 自动验证技术包括SOC集成连接检查,死锁检测,X语义安全检查,覆盖范围可及性等。
Emulation和FPGA原型开发
由于复杂的环境下,仿真的速度将非常慢。所以在开发的中后期等项目趋于稳定后用FPGA原型开发,来做一些更复杂的功能测试。(这里的FPGA仅作为逻辑容器)。并且通常的验证团队中负责FPGA原型开发的要求人数极少。
测试平台框架
- 对DUT(device under test)创建测试序列
- 观察DUT的输入输出
- 对DUT的输出数据与预期数据比对
- 输出报告检查结果
检查设计
检查设计一般分为以下几个步骤
- 1)设计文件是否正确地按照功能描述文档去实施
- 2)检测边界条件是否遗漏
- 3)设计是否足够稳定来处理一些错误情况
并且测试时给出的激励向量应该是先易后难,发现的缺陷也应该是先基本后高级
回归测试
最后当硬件设计经过了一定数量的激励测试,验证人员就可以准备回归测试了。
回归测试就是将已有的所有测试序列测试一次