一、芯片开发简化流程
- 用户需求
- 系统设计
- 硬件设计
- 功能验证
- 后端综合
二、验证人员工作
- 验证设计文件是否按照功能描述文档实现 验证会按照功能描述发送激励和比较结果
- 验证一些边界情况(corner condition).
- 设计文件是否能处理一些错误情况
三、验证面临的挑战
- 如何穷尽所有的情况给设计产生激励
- 何如在各种可能激励的情况下判断出不符合硬件描述的行为
验证工具:仿真验证和形式验证 复杂度:黑盒验证、白盒验证和灰盒验证
四、设计漏洞
设计露洞越晚发现,所修复的代价越大。
RTL阶段——>门级仿真——>流片后测试——>用户阶段
缺陷数量起初验证会发现很多,随着时间的增长,缺陷数量增长缓慢,直至最后不增长。
缺陷数量曲线的曲率是否收敛或者说是否在变小,在一定的程度上能证明验证的状态是否收敛和趋于完备
验证过程中发现的缺陷种类应该是从基本缺陷到高级缺陷,如果在验证后期还发现基本缺陷,整个验证策略的制定有问题
五、验证周期
- 创建验证计划
1. 需要功能描述文档 包括:接口信息(私有接口要详细)、结构信息、交互信息
2. 验证方法:直接验证、随机约束验证、形式验证等 - 开发验证环境
1. 实现激励产生器、参考模型、数据比较器
2. 不同的验证方法会决定不同的验证环境的结构和使用的软件 - 调试环境和HDL文件
1.环境是否有瑕疵
2.测试用例是否合理
3.参考模型是否遵循功能描述文档
4.硬件设计是否本身存在缺陷 - 递归测试
1. 回归测试:硬件某个缺陷修复或者添加了一项新功能,要通过以前的所有测试用例和可能添加的新的测试用例
回归测试的目的:硬件改动有没有引入新的漏洞;每次递交随机数不同,回归测试是有意义的 - 流片后系统测试
- 展开逃逸分析