三维集成与芯粒

已知良好裸片(known-good die, KGD)

已知良好裸片,指的是一颗还没装进封装、也还没和别的芯片键合在一起之前,就已经经过测试、被证明能正常工作的裸芯片。名字说得很直白:你手上握有证据,知道这一颗裸片是好的,而不只是抱着希望。通常一颗芯片要等到封装之后才接受真正的全面考验,但一旦你开始把好几颗裸片粘到一起、做成同一个产品,这个先后顺序就变得危险了——所以你把测试提前,挪到那颗散装裸片本身上去做。

下面说说,为什么这么一个小小的想法能救活那些大设计。缺陷在晶圆上大体是随机分布的,所以裸片越大,它越有可能至少吞下一个致命瑕疵——面积一涨,良率就掉得很快。一颗巨大的单片芯片就是一张孤注一掷的彩票:任何一处坏点,都会让整颗昂贵的裸片报废。换种做法,如果你把这个设计拆解成好几颗小芯粒,就能逐颗单独测试每一颗小裸片,只留下那些已知良好的,再用清一色的优胜者去组装一个封装。坏裸片在还便宜的时候就被丢掉了——还没等你花钱把它们键合到好邻居身边。

这就是芯粒浪潮底下那台安静运转的引擎。拆分设计要划得来,前提是你能信得过这些零件,而 KGD 测试正是让这些零件值得信赖的东西——它把『把小裸片混搭拼装』从一场良率赌博,变成了一套良率策略。难就难在:测一颗裸露、未封装的裸片是真的不容易——你得在细小的焊盘上建立起可靠的临时接触,还要在缺少成品封装所提供的保护与便于探测条件下,跑出有意义的测试,这也是为什么像 HBM 这样细间距、用 TSV 堆叠的存储器,会如此倚重精心设计的裸片级测试。

monolithic big die          4 small chiplets (test each, keep good)
+-----------------+         [die1 ok][die2 ok][die3 X][die4 ok]
|        X        |   -->        |       |    toss      |
|  one defect  =  |              keep the 3 known-good, swap
|  whole die lost |              in another good die -> good package
+-----------------+

一处缺陷就能毁掉整颗单片裸片;而先测试芯粒,就能让你只丢掉那颗坏的小裸片,再用已知良好的裸片把封装拼起来。

KGD 从来都不是十全十美的保证——裸片级测试无法复现一颗封装好的器件将会遇到的每一种工况,所以总还有少数漏网之鱼要等到组装之后才暴露出来;目标是把这一比例压得足够小,让拆解到头来仍然是净赚。

又称
KGDknown good die