数字IC验证通识知识笔记

芯片开发流程

  1. 从市场人员与客户沟通开始。
  2. 系统设计人员按照功能划分为各个子系统
  3. 子系统被进一步划分为功能模块,并由设计团队实现。
  4. 验证人员对设计功能展开验证,发现设计缺陷,交由设计人员修正。
  5. 验证没有出现漏洞后,交由后端人员进行综合、布局、布线。
  6. 后端人员将核心数据交由FAB(Fabrication)进行流片

验证分类

从验证工具的分类:仿真验证、形式验证。
从复杂度出发:黑盒、白盒、灰盒验证。

动态仿真

该方式通过测试序列和激励生成器给入待验设计适当的激励,伴随着仿真时间,进而判断输出是否符合预期。
按照激励生成方式和检查方式,动态仿真分为:

  • 定向测试
  • 随机测试
  • 参考模型检查
  • 断言检查

静态检查

与动态仿真相对,本身不需要仿真、波形激励,它通过工具辅助,可以发现设计中存在的问题。

  • 语法检查
  • 语义检查
  • 跨时钟域检查
  • 形式验证
    • 等价检查:用于保证两个电路的行为是等价的,检查不同抽象级电路是否一致,例如RTL级和网表级。
    • 属性检查:模型检查。

验证周期

P24

  1. 创建验证计划:验证周期的起点,参照系统工程师给出的功能详述文档。
  2. 开发验证环境:邀请设计人员和系统人员回顾验证计划,确保无遗漏,这是第一个检查点
  3. 调试环境:提供激励,比对设计输出结果,定位硬件HDL文件缺陷位置。
    第二个检查点:验证代码检查
  4. 回归测试:将已有的所有测试用例都执行一次。
    第三个检查点:流片前验证完备性检查。
  5. 硅后系统测试:完成对接。
  6. 展开逃逸分析:硅后发现的缺陷展开逃逸分析。
    第四个检查点:吸取教训。

验证计划

  1. 在验证初期,应该只发送一些基本的测试数据,因此约束范围应该尽可能窄。
  2. 在验证中期,由于设计已经基本稳定,所以可以扩大约束范围,以此更有效地完成测试。
  3. 在验证后期,有一些状态空间由于需要特定的测试序列,因此收窄约束范围有利于测试。

计划模板

P81

  • 设计功能简述
  • 硬件实现框图
  • 待验证的功能点
  • 验证环境搭建
  • 测试用例构成
  • 编译脚本和回归测试
  • 覆盖率分析

代码覆盖率

p87

  1. 语句覆盖率:程序每一行代码是否被执行过。
  2. 条件覆盖率:每个条件中的逻辑操作数被覆盖的情况。
  3. 分支覆盖率:在if,case,while,repeat, forever,for,loop语句中各个分支执行情况。
  4. 事件覆盖率:记录某一个事件被触发的次数。
  5. 翻转覆盖率:记录某个设计边界信号数据位的0/1翻转情况,如从0到1,或从1到0。
  6. 状态机覆盖率:仿真器的覆盖率功能可以识别设计中的状态机部分,记录各种状态被进入的次数,以及状态之间的跳转情况。

————摘自路科芯院

  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值