当前位置: 首页 > news >正文

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

@[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将网表固定后的修改进行了点对点的对比。

# 流程规范

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

# 参考文档

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 算法第十天:leetcode203.移除链表元素
  • 【C++】C++11的新特性 --- 右值引用与移动语义
  • 排序系列 之 选择排序
  • FastAPI -- 第三弹(自定义响应、中间件、代理、WebSockets)
  • 【Python 对接QQ的接口(三)】简单用接口查询【等级/昵称/头像/Q龄/状态/会员/当天在线时长/下一个等级升级需多少天】
  • 架构以及架构中的组件
  • 迪米特法则
  • leetcode145. 二叉树的后序遍历,递归法+迭代法,全过程图解+步步解析,一点点教会你迭代法后序遍历
  • Web3时代的教育技术革新:智能合约在学习管理中的应用
  • 收银系统源码-线上商城diy装修
  • 腾讯元宝上线“3D角色梦工厂”:快速生成专属3D角色!
  • 求职学习day5
  • 01 MySQL
  • JavaWeb笔记_Response对象
  • https和http区别
  • Android Studio:GIT提交项目到远程仓库
  • Android 控件背景颜色处理
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • Android系统模拟器绘制实现概述
  • Docker入门(二) - Dockerfile
  • es6(二):字符串的扩展
  • export和import的用法总结
  • js操作时间(持续更新)
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • log4j2输出到kafka
  • mysql 数据库四种事务隔离级别
  • nodejs:开发并发布一个nodejs包
  • October CMS - 快速入门 9 Images And Galleries
  • python学习笔记-类对象的信息
  • 读懂package.json -- 依赖管理
  • 浮现式设计
  • 技术发展面试
  • 前端_面试
  • 前端之React实战:创建跨平台的项目架构
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 深入 Nginx 之配置篇
  • 使用API自动生成工具优化前端工作流
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 温故知新之javascript面向对象
  • 原生Ajax
  • # 利刃出鞘_Tomcat 核心原理解析(八)-- Tomcat 集群
  • #{}和${}的区别?
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (二)windows配置JDK环境
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (四)鸿鹄云架构一服务注册中心
  • (转)shell中括号的特殊用法 linux if多条件判断
  • .gitignore文件_Git:.gitignore
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .NET Core 项目指定SDK版本
  • .NET Core 中插件式开发实现