B体育我觉得这个问题就是为我量身定制的!作为前Teradyne ATE工程师,现AMD DFT+数字IC设计工程师,以亲身项目经验,来谈谈这个问题。
芯片测试分两个阶段,一个是CP(Chip Probing)测试,也就是晶圆(Wafer)测试。另外一个是FT(Final Test)测试,也就是把芯片封装好再进行的测试。
CP测试的目的就是在封装前就把坏的芯片筛选出来,以节省封装的成本。同时可以更直接的知道Wafer 的良率。CP测试可检查fab厂制造的工艺水平。现在对于一般的wafer成熟工艺,很多公司多把CP给省了,以减少CP测试成本。具体做不做CP测试,就是封装成本和CP测试成本综合考量的结果。
一片晶圆越靠近边缘,die(一个小方格,也就是一个未封装的芯片)出问题的概率越大。
随着芯片规模的越来越大,测试也更为复杂。ATE(Automatic Test Equipment)也就应运而生B体育。 目前ATE公司最大的是Teradyne和爱德万,NI目前也在做这一块,并且很多小公司都在用NI的仪器。国内的公司知名的有长川科技。
ATE作为集成了众多高精密的Instruments的设备,价格自然不菲。一台泰瑞达的高端Ultra Flex可以买上海的几套房!
主要包含以下测试,Continuity测试(又称open/short test)主要是检查芯片的引脚以及和机台的连接是否完好。其余的测试都是检查DC电气参数是否在一定的范围内B体育。
以下这张图就是open/short test原理示意图,DUT(Device Under Test)的引脚都挂有上下两个保护二极管,根据二极管单向导通以及截至电压的特性,对其拉/灌电流,然后测试电压,看起是否在设定的limit范围内。
主要是数模/模数混合测试,检查信号经过ADC/DAC后的信号是否符合期望,这个地方涉及到的信号知识比较多。总体来说包含静态测试和动态测试。
除了以上常规测试项,根据芯片的类型不同可能会进行不同的测试,比如RF测试,SerDes高速测试。Efuse测试等。
所有的测试项都是在ATE上执行的,一般会执行几秒到几十秒,因为ATE是根据机时来付费的(很少有海思,苹果这种土豪公司一次买数十台),所以缩短测试时间变得尤其重要!另外一般芯片在量产测试的时候,都是百万颗或者千万颗,每个芯片节省一秒,总体来说缩短的时间还是很可观的。
在测试执行完成后,ATE会输出一个Datalog,以显示测试结果。对于测试pass或fail测试项的不同,也会对其进行分类(Bin),最后由Handler分拣。
对于封装好的芯片,通常测试是不需要进行焊接的,它和ATE机台的连接方式是通过socckt和Load board。
不同大小,不同封装类型的芯片,socckt也不同,有专门的做这个的厂商。
先把芯片放到socckt里,再把socckt放到load board上,load board再放在机台上。有的load board很重,对很多女同志来说搬起来是有些辛苦啊!
一个load board上面支持放多个socckt,我们称其为site。示意图如下,共6个site,可以对6个芯片同时进行测试:
在这里先说明一下,芯片的逻辑功能是有IC验证工程师来完成的,是在流片之前,并不依赖于测试。
所以测试工程师所需要的关心的就是把pattern都跑通,如果跑不通可能会和DFT工程师一起进行diagnosis。
测试工程在写测试项的时候,也不是要一行一行代码去写,通常ATE机台的嵌入式软件都有提供测试项的Template, 只需要填写参数就好。另外针对一些大客户的成熟测试项,也会开发一些测试模板,留好必要的参数接口,这样就很方便应用到其他的芯片测试上。
一个完备的的芯片测试不是靠芯片测试工程师一个人完成的,而是需要设计工程师,DFT工程师的支持,以及由可靠的EDA工具,优秀的硬件支撑等多方因素共同决定的。
芯片测试是极其重要的一环,有缺陷的芯片能发现的越早越好。在芯片领域有个十倍定律,从设计--制造--封装测试--系统级应用,每晚发现一个环节,芯片公司付出的成本将增加十倍!!!
所以测试是设计公司尤其注重的,如果把有功能缺陷的芯片卖给客户,损失是极其惨重的B体育,不仅是经济上的赔偿,还有损信誉。因此芯片测试的成本也越来越高!
在 IC 行业,每一个环节都要十分小心,一次流片的费用在数百万美金,一天的ATE机台使用几百美金。而一个芯片的利润可能只有几美分。这也是IC行业投资周期长,收益少的原因,基本前几年都在亏钱。幸运的是国家越来越重视芯片了,期待国内IC发展能越来越好。
大公司的每日流水的芯片就有几万片, 测试的压力是非常大. 当芯片被晶圆厂制作出来后, 就会进入Wafer Test的阶段. 这个阶段的测试可能在晶圆厂内进行, 也可能送往附近的测试厂商代理执行. 生产工程师会使用自动测试仪器(ATE)运行芯片设计方给出的程序, 粗暴的把芯片分成好的/坏的这两部分, 坏的会直接被舍弃, 如果这个阶段坏片过多, 基本会认为是晶圆厂自身的良品率低下. 如果良品率低到某一个数值之下, 晶圆厂需要赔钱.
通过了Wafer Test后, 晶圆会被切割. 切割后的芯片按照之前的结果分类. 只有好的芯片会被送去封装厂封装. 封装的地点一般就在晶圆厂附近, 这是因为未封装的芯片无法长距离运输. 封装的类型看客户的需要, 有的需要球形BGA, 有的需要针脚, 总之这一步很简单, 故障也较少. 由于封装的成功率远大于芯片的生产良品率, 因此封装后不会测试.
封装之后, 芯片会被送往各大公司的测试工厂, 也叫生产工厂. 并且进行Final Test. 生产工厂内实际上有十几个流程, Final Test只是第一步. 在Final Test后, 还需要分类, 刻字, 检查封装, 包装等步骤. 然后就可以出货到市场.
Final Test是工厂的重点, 需要大量的机械和自动化设备. 它的目的是把芯片严格分类. 以Intel的处理器来举例, 在Final Test中可能出现这些现象:
3. 芯片部分损坏. 比如CPU有2个核心损坏, 或者GPU损坏, 或者显示接口损坏等
这时, 工程师需要和市场部一起决定, 该如何将这些芯片分类.打比方说, GPU坏了的, 可以当做无显示核心的赛扬系列处理器. 如果CPU坏了2个的, 可以当酷睿i3系列处理器. 芯片工作正常, 但是工作频率不高的, 可以当酷睿i5系列处理器. 一点问题都没有的, 可以当酷睿i7处理器.
(上面这段仅是简化说明芯片测试的结果影响着产品最终的标签这个过程, 并不是说Intel的芯片量产流水线是上文描述的这样. 实际上Intel同时维持着多个产品流水线的芯片并非同一流水线上产品. )
以处理器举例, Final Test可以分成两个步骤: 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而延迟.
考虑到每一次测试版本迭代都是几十万行的代码, 保证代码不能出错. 需要涉及上百人的测试工程师协同工作, 这还不算流水线技工, 因此测试是费时费力的工作. 实际上, 很多大公司芯片的测试成本已经接近研发成本.
不好意思, 我想先简单回答一下, 以后有空补充详细吧, 也欢迎各位提问, 尽力回答.
芯片复杂度越来越高, 为了保证出厂的芯片没有问题, 需要在出厂前进行测试以确保功能完整性等. 而芯片作为一个大规模生产的东西, 大规模自动化测试是唯一的解决办法, 靠人工或者说bench test是没法完成这样的任务的.
芯片测试实际上是一个比较大的范畴, 一般是从测试的对象上分为wafer test 和final test, 对象分别是尚未进行封装的芯片, 和已经封装好的芯片. 为啥要分两段? 简单的说, 因为封装也是有cost的, 为了尽可能的节约成本, 可能会在芯片封装前, 先进行一部分的测试, 以排除掉一些坏掉的芯片. 而为了保证出厂的芯片都是没问题的, final test也即FT测试是最后的一道拦截, 也是必须的环节.
这需要专业的ATE也即automatic test equipment. 以final test为例, 首先根据芯片的类型, 比如automotive, Mixed Signal, memory等不同类型, 选择适合的ATE机台. 在此基础上, 根据芯片的测试需求, (可能有专门的test specification的文档, 或者干脆让测试工程师根据data sheet来设计test spec), 做一个完整的test plan. 在此基础上, 设计一个外围电路load board, 一般我们称之为DIB or PIB or HIB , 以连接ATE机台的instrument和芯片本身. 同时, 需要进行test 程序开发, 根据每一个测试项, 进行编程, 操控instrument连接到芯片的引脚, 给予特定的激励条件, 然后去捕捉芯片引脚的反应, 例如给一个电信号, 可以是特定的电流, 电压, 或者是一个电压波形, 然后捕捉其反应. 根据结果, 判定这一个测试项是pass或者fail. 在一系列的测试项结束以后, 芯片是好还是不好, 就有结果了. 好的芯片会放到特定的地方, 不好的根据fail的测试类型分别放到不同的地方.
所以楼主的问题里, 对于各种功能的测试, 确实可能需要一行一行写代码来做测试开发, 这也是我日常工作的一大部分.
芯片测试的目的是在找出没问题的芯片的同时尽量节约成本, 所以, 容易检测或者比较普遍的缺陷类型会先检测. 一般来讲, 首先会做的是连通性测试, 我们称之为continuity test. 这是检查每个引脚的连通性是否正常.
Functional test的思想是很直观的。我设计了一个加法器,我就给他俩数,看看加起来对不对。但是这个方法有很大缺陷。一是耗时,得费脑筋设计测试输入。二是依靠具体设计者,假如他没工夫就得等他,假如后来他跳槽了公司就傻眼了。三是依靠人类智力。万一设计者脑残有个情况没想到也完蛋了。
所以后来有了structural test思想。这个思想是我不管你怎么设计的。反正数字电路最大,而且数字电路可以靠拓扑关系完全描述。那么每条连线我可以穷举他所有可能的出错情况:跟电源短路、跟地短路、断路、升压太慢、降压太慢等等。这样我就有了所有可能出错情况的列表。然后我设计一个引擎计算任一给定输入情况下可以发现的出错情况列表。
再然后呢?没有再然后了,你弄个随机数发生器随便生成一堆输入我就能计算出来这些输入可能检测到的出错情况,够了就收手呗。
电路内部状态怎么办?数字电路内部状态全是寄存器存的。你加个开关把这些寄存器连起来,两头接输入输出,那寄存器里的数还不是你想让他圆他就圆想让他方他就方。
因为structural test有这些好处,所以测试是很快的。如果说生成测试序列因为优化的关系可能还慢一些,真正ATE上测试的时间很短,以秒计算。
焊接倒不需要,设计出适合BGA一类封装的socket并非难事,比如socket下面是很多顶针构成的阵列,测试时只需要将抓取的芯片往上一压就行。socket是做好的电板,连接到测试机的各个端子,测试机读取预先标号的测试程序,一颗小型的IC几秒钟就可以搞定。
像处理器那种复杂IC功能很多,在芯片设计之初就会考虑到测试的方式, 我也不是很懂,猜想也许是每条指令跑一遍。DFT(design for test)应该就是专门讲这方面的B体育。
WAT:WaferAcceptance Test,是晶圆出厂前对testkey的测试。采用标准制程制作的晶圆,在芯片之间的划片道上会放上预先一些特殊的用于专门测试的图形,我们叫testkey。这跟芯片本身的功能是没有关系的,它的作用是Fab检测其工艺上有无波动。因为代工厂只负责他自己的工作是无误的,芯片本身性能如何那是设计公司的事儿。只要晶圆的WAT测试是满足规格的,晶圆厂基本上就没有责任。如果有失效,那就是制造过程出现了问题。
CP:CircuitProbe,是封装前晶圆级别对芯片测试。这里就涉及到测试芯片的基本功能了。不同项目的失效,会分别以不同颜色表示出来。失效的项目反映的是芯片设计的问题。
FT: Final test,封装完成后的测试,也是最接近实际使用情况的测试B体育,会测到比CP更多的项目,处理器的不同频率也是在这里分出来的。这里的失效反应封装工艺上产生的问题,比如芯片打线不好导致的开短路。