降低芯片流片风险的几种方法

@[TOC]

#说明

该文章仅科普下各方法是如何降低流片失败的可能性的。

#1. UVM方法学

1. uvm方法学的主要思想是通过用其它高级语言(python、c等)编写参考模型(REF)实现DUT设计相同功能。再使用uvm的一系列验证组件将相同的激励给到REF及DUT,使得二者的结果一致,则认为DUT在这种激励条件下的行为正确。典型的例子是算法转RTL ip。则可在实现了RTL设计后,使用原始算法对实现的RTL进行检查。

2. 某些复杂的ip三方可提供对应的ip服务,即提供该ip,另外也会提供uvm对应的验证组件vip,使得再待测系统中可使用该vip检查对ip的一系列检查(对该ip的接口操作检查、集成检查)。买ip、vip可大大减少芯片开发的周期,因为对应的ip可能复杂性都比较高。

3. uvm验证方法学的主题思想是需要提供完整的激励进行覆盖率的收集,重点并不是环境有多么的完美,还是要回到覆盖率本身。需要对所有的功能点进行特定的激励生成。

4. 对于每个功能点都需要有特定的check,没有自动比对的check机制是不完美的。比如通过波形check的手段,无法保证下一次的再跑该case时的情况是否正确。

# 软硬件协同

1. 在soc中将各个子系统进行了整合,那怎么保证这个整合是正确的。uvm的验证可能更偏向于对于每一个子系统进行检查,软硬件协同便可以解决该问题了。软件设计一整套流程,硬件需配合该流程完成一系列操作,如果最终结果正确,既能说明硬件设计正确,软件也正确。

2. 软件可通过编译,将对应的软件编译文件通过后门访问写入uvm对应组件中,即可进行软硬件问题的定位。

3. 软硬件验证过程中的用例可作为后续软件开发的SDK提供给用户使用。也是芯片交付的一部分。

#FPGA

1.fpga是指将芯片整体映射到一块可编程的板子上,当然这块板子肯定比真实的芯片大多了。使用fpga可使得软硬件协同验证的收敛速度大大加快。

2. fpga的速度高于vcs、uvm的仿真。原因是fpga内部的与或非等逻辑都是有真实的硬件存在。而vcs等都是通过电脑的cpu进行该运算的模拟,当芯片规模大起来后,fpga的速度优势更加明显。所以可以在fpga上进行某些用例的回归,跑case快了, 那问题暴露的几率肯定也就是变大了。

3. fpga发现问题快,但是定位问题却很慢,可通过uvm进行仿真使得问题定位加快;

# 加速器

个人工作上没咋接触过这个,简单聊聊,说错了请帮忙指正。

1. 加速器和fpga类似,不过和fpga相比,允许的速度稍微逊色一点,但换来的是问题定位的快速性。加速器内部含有一些用于定位的逻辑,这也是为啥加速器速度不及fpga的主要原因。加速器很贵(几百万级别),可租用。

# 形式验证Formal

1. 形式验证主要是减少重提网表后DFT、后端布局布线的工作量。假设后端布局布线已经完成,此时前段发现一个bug需修复,则前段修改代码,后端修改网表。比对二者修改后的内容一致即认为修改正确。formal将网表固定后的修改进行了点对点的对比。

# 流程规范

这不用多说了吧,芯片那么复杂需要需求、设计、验证、软件等一系列的沟通,单纯口头上的沟通是远远不够的,需要文档记录等一系列的流程规范。

# 参考文档

降低芯片流片失败风险的"七种武器"

相关推荐

  1. 降低芯片风险方法

    2024-07-19 04:46:01       23 阅读
  2. Jtti:降低香港服务器被攻击策略方法

    2024-07-19 04:46:01       54 阅读
  3. OpenResty实现限方式

    2024-07-19 04:46:01       27 阅读
  4. 前端下载文件方式(url方式和文件方式)

    2024-07-19 04:46:01       40 阅读
  5. PEFT方式

    2024-07-19 04:46:01       18 阅读
  6. 解决跨域方法

    2024-07-19 04:46:01       33 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-19 04:46:01       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-19 04:46:01       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-19 04:46:01       58 阅读
  4. Python语言-面向对象

    2024-07-19 04:46:01       69 阅读

热门阅读

  1. MySQL 架构中的三层服务是什么?

    2024-07-19 04:46:01       19 阅读
  2. C语言——函数指针

    2024-07-19 04:46:01       18 阅读
  3. 玩转springboot之springboot启动原理

    2024-07-19 04:46:01       21 阅读
  4. Python(字典)

    2024-07-19 04:46:01       22 阅读
  5. 部署和运维

    2024-07-19 04:46:01       15 阅读
  6. junit mockito Base基类

    2024-07-19 04:46:01       20 阅读
  7. 代码随想录-DAY⑩-二叉树——leetcode 144 | 94 | 145

    2024-07-19 04:46:01       21 阅读
  8. Redis 延迟队列

    2024-07-19 04:46:01       21 阅读
  9. (二)js前端开发中设计模式之单例模式

    2024-07-19 04:46:01       21 阅读
  10. 深度学习落地实战:人脸五官定位检测

    2024-07-19 04:46:01       20 阅读
  11. postman接口测试工具详解

    2024-07-19 04:46:01       21 阅读
  12. 自制数据集处理

    2024-07-19 04:46:01       19 阅读
  13. layui前端开发-记录一次弹窗嵌套表格功能的开发

    2024-07-19 04:46:01       19 阅读
  14. oracle 查询锁 && 解锁

    2024-07-19 04:46:01       20 阅读
  15. 初识Redis

    2024-07-19 04:46:01       17 阅读