芯片测试的目的是快速了解它的本质.
当芯片被晶圆厂制作出来后, 就会进入wafer test的阶段. 这个阶段的测试可能在晶圆厂内进行, 也可能送往附近的测试厂商代理执行. 生产工程师会使用自动测试仪器(ate)运行芯片设计方给出的程序, 简单的把芯片分成好的/坏的这两部分, 坏的会直接被舍弃, 如果这个阶段坏片过多, 基本会认为是晶圆厂自身的良品率低下. 如果良品率低到某一个数值之下, 晶圆厂需要赔钱.
通过了wafer test后, 晶圆会被切割. 切割后的芯片按照之前的结果分类. 只有好的芯片会被送去封装厂封装. 封装的地点一般就在晶圆厂附近, 这是因为未封装的芯片无法长距离运输.
封装的类型看客户的需要, 有的需要球形bga封装芯片, 有的需要针脚, 如qfn/dfn/wson封装芯片、qfp/otq/lqfp/cqfp/tqfp封装芯片、sop/ssop/tsop/tssop/csop/ots封装芯片、emmc/emcp封装芯片、sot封装芯片、to封装芯片、lcc/clcc/plcc封装芯片、lga封装芯片、csp/wlcsp封装芯片、陶瓷封装芯片、蝶形管壳封装芯片等等,这一步很简单, 故障也较少,封装的成功率远大于芯片的生产良品率.
封装之后, 芯片会被送往各大公司的测试工厂, 也叫生产工厂. 并且进行final test. 生产工厂内实际上有十几个流程, final test只是第一步. 在final test后, 还需要分类, 刻字, 检查封装, 包装等步骤. 这里就需要用到封装芯片测试座(ic test socket),目前国内市场上的封装芯片测试座socket已经趋于成熟阶段,不过测试座socket的价格有高有低,这点需要工程师计算在成本内,测试后就可以出货到市场.
final test是工厂的重点, 需要大量的机械和设备. 它的目的是把芯片严格分类. 以intel的soc来说, 在final test中可能出现这些现象:
1. 虽然通过了wafer test, 但是芯片仍然是坏的.
2. 封装损坏.
3. 芯片部分损坏. 比如cpu有2个核心损坏, 或者gpu损坏, 或者显示接口损坏等
4. 芯片是好的, 没有故障,工程师需要和市场部一起决定,
该如何将这些芯片分类. final test该怎样做?
final test可以分成两个步骤:
1.自动测试设备(ate).
2. 系统级别测试(slt).
2号是必要项. 1号一般小公司用不起,ate的测试一般需要几秒, 而slt需要几个小时. ate的存在大大的减少了芯片测试时间.
ate负责的项目非常之多, 而且有很强的逻辑关联性. 测试必须按顺序进行, 针对前列的测试结果, 后列的测试项目可能会被跳过. 这些项目的内容属于公司机密, 我仅列几个: 比如电源检测, 管脚dc检测, 测试逻辑电路(一般是jtag)检测, 高压烤片, 物理连接层phy检测, ip内部检测(包括scan, bist, function等), ip的io检测(比如ddr, sata, pll, pcie, display等), 辅助功能检测(比如热力学特性, 熔断等),这些测试项会给出pass/fail, 根据这些pass/fail来分析芯片的体质, 就是测试工程师的工作.
slt在逻辑上则简单一些, 把芯片安装到主板上, 配置好内存, 外设, 启动一个操作系统, 然后用软件烤机测试并记录结果并比较. 另外还要检测bios相关项等.所有的这些工作, 都需要芯片设计工程师在流片之前都设计好. 测试工作在芯片内是由专属电路负责的, 这部分电路的搭建由dft工程师来做, 在流片后, dft工程师还要生成配套输入矢量, 一般会生成几万个. 这些矢量是否能够正常的检测芯片的功能, 需要产品开发工程师来保证. 此外还需要测试工程师, 产品工程师, 和许多助手来一同保证每天能够完成几万片芯片的生产任务.
考虑到每一次测试版本迭代都是几十万行的代码, 保证代码不能出错. 需要涉及上百人的测试工程师协同工作, 这还不算流水线工, 因此测试是费时费力的工作. 实际上, 很多大公司芯片的测试成本已经接近研发成本.
根据鸿怡电子设计出适合如bga一类封装的测试座socket并非难事,比如测试座socket下面是很多顶针构成的阵列,测试时只需要将抓取的芯片往上一压就行(结构有翻盖式、下压式、双扣式、压合式、旋钮式)。测试座socket有做好的电板,连接到测试机的各个端子,测试机读取预先标号的测试程序,一颗小型的ic测试几秒钟就可以搞定。(ic测试一般分为ic老化测试、ic编程烧录、ic测试,匹配不同的ic测试座、ic老化座、ic烧录座)
1. 为什么要进行芯片测试?
芯片复杂度越来越高, 为了保证出厂的芯片没有问题, 需要在出厂前进行测试以确保功能完整性等. 而芯片作为一个大规模生产的东西, 大规模自动化测试是唯一的解决办法, 靠人工或者说bench test是没法完成这样的任务的.
2. 芯片测试在什么环节进行?
芯片测试实际上是一个比较大的范畴, 一般是从测试的对象上分为wafer test 和final test, 对象分别是尚未进行封装的芯片, 和已经封装好的芯片. 为啥要分两段? 简单的说, 因为封装也是有cost的, 为了尽可能的节约成本, 可能会在芯片封装前, 先进行一部分的测试, 以排除掉一些坏掉的芯片. 而为了保证出厂的芯片都是没问题的, final test也即ft测试是最后的一道拦截, 也是必须的环节.
3. 怎么样进行芯片测试?
这需要专业的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的测试类型分别放到不同的地方.
4. 一般的芯片测试都包含哪些测试类型?
一般来说, 包括引脚连通性测试, 漏电流测试, 一些dc(direct current)测试, 功能测试(functional test), trim test, 根据芯片类型还会有一些其他的测试, 例如ad/da会有专门的一些测试类型.
芯片测试的目的是在找出没问题的芯片的同时尽量节约成本, 所以, 容易检测或者比较普遍的缺陷类型会先检测. 一般来讲, 首先会做的是连通性测试, 我们称之为continuity test. 这是检查每个引脚的连通性是否正常.