做一颗芯片很难,做出一颗有bug的芯片,会更难。
不说一颗芯片tape out前的各种惊心动魄,相比拿到样品后测试时的心潮起伏,到底哪个更刀刀催人老;也不说测试报告的issue到底是feature还是bug;更不必说“决策时拍脑袋、执行中拍胸脯、有问题拍大腿、兜不住拍屁股”时,到底哪种姿势拍起来最帅;今天这篇儿只说说芯片做出之后怎么修bug。
首先大家知道芯片是一层一层做出来的,就像做煎饼果子,师傅先把铁板锅烧热、打开电机开关让锅旋转起来(spin),然后擦上油、浇一勺面糊打底(wafer)、磕鸡蛋抹平(transistor layer)、各种酱刷一层(metal 1 layer)、葱花香菜洒一层(metal 2 layer)、油炸果子放一层(metal 3 layer)、煎饼卷起来打包装好(package)、师傅关掉电机、锅慢慢停止旋转。
然后你咬了一口(测试),说我没要香菜啊(发现bug)。然后呢,节省的师傅会摊开煎饼把香菜叶子一颗一颗捡出来(metal 2 fix by FIB);豪爽的师傅会打开电机让锅重新转起来(respin),给你新做一个不带香菜的煎饼果子。
如果你要一百个煎饼,都不带香菜。聪明的师傅大概会撤下葱花香菜掺一起的菜盆,单摆一个只放葱花的菜盆(metal 2 fix by respin)。
回到芯片,制造芯片的一套mask有好多层,每层mask的价格有高有低。当然如果你是土豪不在意钱,有了bug直接整套mask全部重来一遍、重新制造一批芯片也可以,相当于重新tape out一次。
然而公司都是讲成本的,怎么省钱怎么来。首先条件允许的话,会做FIB(Focused Ion Beam),直接改手头的芯片。如果修改的地方只有metal层,那么叫做metal fix。这种方法只能一颗芯片一颗芯片的修改,太慢不适合批量修改,只能用于bug fix的验证或少量送样。bug fix方案经过FIB或者其它手段的验证,就可以用来做mask的修改了,mask一经修改,就可以用于批量生产修正了这个bug的芯片。
怎么改mask,改哪些层的mask,还是怎么省钱怎么来。每层mask的价格高低基本由制造这些mask的工艺(比如最小特征尺寸)所决定。像transistor层的mask最多最复杂,价格最贵。metal层的mask相对简单,价格便宜一些。所以最经济的方案是修改最少层数的metal mask,同样可以叫做metal fix。不过因为是通过修改metal层的mask来间接修改芯片的metal层,所以更准确的叫法是metal respin。
也就是metal fix的实现有两种方式,一种是respin,一种是FIB。而这两种bug fix方式的实现,都离不开spare cell的利用。预先摆放的spare cell的类型选择、摆放位置,都会影响metal fix的难度、甚至决定了bug fix的可行性。毕竟,难以预料的bug,不仅仅是靠断开或连接几根连线就可以解决的。