来源:未知
半导体厂商如何做芯片的出厂测试呢,这对芯片来说,是流片后或者上市前的必须环节。
大公司的每日流水的芯片就有几万片,测试的压力是非常大。当芯片被晶圆厂制作出来后,就会进入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,对象分别是尚未进行封装的芯片,和已经封装好的芯片。为啥要分两段?简单的说,因为封装也是有cost的,为了尽可能的节约成本,可能会在芯片封装前,先进行一部分的测试,以排除掉一些坏掉的芯片。而为了保证出厂的芯片都是没问题的,finaltest也即FT测试是最后的一道拦截,也是必须的环节。
3、怎么样进行芯片测试?
这需要专业的ATE也即automaTIctestequipment。以finaltest为例,首先根据芯片的类型,比如automoTIve,MixedSignal,memory等不同类型,选择适合的ATE机台。在此基础上,根据芯片的测试需求,(可能有专门的testspecificaTIon的文档,或者干脆让测试工程师根据datasheet来设计testspec),做一个完整的testplan。在此基础上,设计一个外围电路loadboard,一般我们称之为DIBorPIBorHIB,以连接ATE机台的instrument和芯片本身。同时,需要进行test程序开发,根据每一个测试项,进行编程,操控instrument连接到芯片的引脚,给予特定的激励条件,然后去捕捉芯片引脚的反应,例如给一个电信号,可以是特定的电流,电压,或者是一个电压波形,然后捕捉其反应。根据结果,判定这一个测试项是pass或者fail。在一系列的测试项结束以后,芯片是好还是不好,就有结果了。好的芯片会放到特定的地方,不好的根据fail的测试类型分别放到不同的地方。
所以楼主的问题里,对于各种功能的测试,确实可能需要一行一行写代码来做测试开发,这也是我日常工作的一大部分。
芯片fail可以是下面几个方面:
1.功能fail,某个功能点点没有实现,这往往是设计上导致的,通常是在设计阶段前仿真来对功能进行验证来保证,所以通常设计一块芯片,仿真验证会占用大约80%的时间
2.性能fail,某个性能指标要求没有过关,比如2G的cpu只能跑到1.5G,数模转换器在要求的转换速度和带宽的条件下有效位数enob要达到12位,却只有10位,以及lna的noise figure指标不达标等等。这种问题通常是由两方面的问题导致的,一个是前期在设计系统时就没做足余量,一个就是物理实现版图太烂。这类问题通常是用后仿真来进行验证的。
3.生产导致的fail。这个问题出现的原因就要提到单晶硅的生产了。学过半导体物理的都知道单晶硅是规整的面心立方结构,它有好几个晶向,通常我们生长单晶是是按照111晶向进行提拉生长。但是由于各种外界因素,比如温度,提拉速度,以及量子力学的各种随机性,导致生长过程中会出现错位,这个就称为缺陷。缺陷产生还有一个原因就是离子注入导致的,即使退火也未能校正过来的非规整结构。这些存在于半导体中的问题,会导致器件的失效,进而影响整个芯片。所以为了在生产后能够揪出失效或者半失效的芯片,就会在设计时加入专门的测试电路,比如模拟里面的testmux,数字里面的scan chain(测逻辑),mbist(测存储),boundry scan(测io及binding),来保证交付到客户手上的都是ok的芯片。而那些失效或半失效的产品要么废弃,要么进行阉割后以低端产品卖出。这个就叫做dft测试。通常dft测试会按照需求在封装前或封装后进行测试,工厂里有专门的ate测试机台,用探针来连接测试的io进行dft测试。通常dft测试不会测试功能,因为这货是按时间收钱的..测试用例越简洁有效越好。而且用例太复杂,会影响出货速度,比如出100w的货,一块芯片测试一秒,单dft测试24小时不停就要11天多。
4、一般的芯片测试都包含哪些测试类型?
一般来说,包括引脚连通性测试,漏电流测试,一些DC(directcurrent)测试,功能测试(functionaltest),Trimtest,根据芯片类型还会有一些其他的测试,例如AD/DA会有专门的一些测试类型。
芯片测试的目的是在找出没问题的芯片的同时尽量节约成本,所以,容易检测或者比较普遍的缺陷类型会先检测。一般来讲,首先会做的是连通性测试,我们称之为continuitytest。这是检查每个引脚的连通性是否正常。