微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 半导体厂商如何做芯片的出厂测试

半导体厂商如何做芯片的出厂测试

时间:05-18 来源:未知 点击:

半导体厂商如何做芯片的出厂测试呢,这对芯片来说,是流片后或者上市前的必须环节。

  大公司的每日流水的芯片就有几万片,测试的压力是非常大。当芯片被晶圆厂制作出来后,就会进入WaferTest的阶段。这个阶段的测试可能在晶圆厂内进行,也可能送往附近的测试厂商代理执行。生产工程师会使用自动测试仪器(ATE)运行芯片设计方给出的程序,粗暴的把芯片分成好的/坏的这两部分,坏的会直接被舍弃,如果这个阶段坏片过多,基本会认为是晶圆厂自身的良品率低下。如果良品率低到某一个数值之下,晶圆厂需要赔钱。

  WT的测试结果多用这样的图表示:

  通过了WaferTest后,晶圆会被切割。切割后的芯片按照之前的结果分类。只有好的芯片会被送去封装厂封装。封装的地点一般就在晶圆厂附近,这是因为未封装的芯片无法长距离运输。封装的类型看客户的需要,有的需要球形BGA,有的需要针脚,总之这一步很简单,故障也较少。由于封装的成功率远大于芯片的生产良品率,因此封装后不会测试。

  封装之后,芯片会被送往各大公司的测试工厂,也叫生产工厂。并且进行FinalTest。生产工厂内实际上有十几个流程,FinalTest只是第一步。在FinalTest后,还需要分类,刻字,检查封装,包装等步骤。然后就可以出货到市场。

  FinalTest是工厂的重点,需要大量的机械和自动化设备。它的目的是把芯片严格分类。以Intel的处理器来举例,在FinalTest中可能出现这些现象:

  1.虽然通过了WaferTest,但是芯片仍然是坏的。

  2.封装损坏。

  3.芯片部分损坏。比如CPU有2个核心损坏,或者GPU损坏,或者显示接口损坏等

  4.芯片是好的,没有故障

  这时,工程师需要和市场部一起决定,该如何将这些芯片分类。打比方说,GPU坏了的,可以当做无显示核心的"赛扬"系列处理器。如果CPU坏了2个的,可以当"酷睿i3"系列处理器。芯片工作正常,但是工作频率不高的,可以当"酷睿i5"系列处理器。一点问题都没有的,可以当"酷睿i7"处理器。

  (上面这段仅是简化说明"芯片测试的结果影响着产品最终的标签"这个过程,并不是说Intel的芯片量产流水线是上文描述的这样。实际上Intel同时维持着多个产品流水线,i3和i7的芯片并非同一流水线上产品。)

  那这里的FinalTest该怎样做?

  以处理器举例,FinalTest可以分成两个步骤:1。自动测试设备(ATE)。2。系统级别测试(SLT)。2号是必要项。1号一般小公司用不起。

  ATE的测试一般需要几秒,而SLT需要几个小时。ATE的存在大大的减少了芯片测试时间。

  ATE负责的项目非常之多,而且有很强的逻辑关联性。测试必须按顺序进行,针对前列的测试结果,后列的测试项目可能会被跳过。这些项目的内容属于公司机密,我仅列几个:比如电源检测,管脚DC检测,测试逻辑(一般是JTAG)检测,burn-in,物理连接PHY检测,IP内部检测(包括Scan,BIST,Function等),IP的IO检测(比如DDR,SATA,PLL,PCIE,Display等),辅助功能检测(比如热力学特性,熔断等)。

  这些测试项都会给出Pass/Fail,根据这些Pass/Fail来分析芯片的体质,是测试工程师的工作。

  SLT在逻辑上则简单一些,把芯片安装到主板上,配置好内存,外设,启动一个操作系统,然后用软件烤机测试,记录结果并比较。另外还要检测BIOS相关项等。

  图为测试厂房的布置

  而所有的这些工作,都需要芯片设计工程师在流片之前都设计好。测试工作在芯片内是由专属电路负责的,这部分电路的搭建由DFT工程师来做,在流片后,DFT工程师还要生成配套输入矢量,一般会生成几万个。这些矢量是否能够正常的检测芯片的功能,需要产品开发工程师来保证。此外还需要测试工程师,产品工程师,和助手来一同保证每天能够完成几万片芯片的生产任务不会因为测试逻辑bug而延迟。

  考虑到每一次测试版本迭代都是几十万行的代码,保证代码不能出错。需要涉及上百人的测试工程师协同工作,这还不算流水线技工,因此测试是费时费力的工作。实际上,很多大公司芯片的测试成本已经接近研发成本。

1、为什么要进行芯片测试?

  芯片复杂度越来越高,为了保证出厂的芯片没有问题,需要在出厂前进行测试以确保功能完整性等。而芯片作为一个大规模生产的东西,大规模自动化测试是唯一的解决办法,靠人工或者说benchtest是没法完成这样的任务的。

2、芯片测试在什么环节进行?

芯片测试实际上是一个比较大的范畴,一般是从测试的对象上分为wafertest和finaltest,对象分别是尚未进行封装的芯片,和已经封装好的芯片。为啥要分两段?简单的说

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top