刚好做过芯片设计,DFT和测试,pre-silicon和post-silicon都懂一点,那么就从以下三个方面谈一谈这个问题:
芯片含有几十亿个晶体管,怎么保证它的功能不会出错?
怎么保证制造的时候不出错?
即使芯片功能和制造都不出错,怎么保证以后使用中某个晶体管不会坏掉?
1、芯片含有几十亿个晶体管,怎么保证它的功能不会出错?
这就是验证工程师的重要性所在。从IP到SOC,每一个模块,每一个team都有自己的验证工程师。而每一个模块验证的test case都成百上千条。
而怎么保证所有的功能都被验证到了呢?这就要引入一个覆盖率的概念,覆盖率又分为以下几种:
代码覆盖率(行、条件、FSM、toggle);
功能覆盖率;
断言覆盖率;
覆盖率足够高,我们就可以认为它的功能是完善的,保证覆盖率满足要求就是验证工程师的职责之一。
2、怎么保证制造的时候不会出错
首先,制造的时候肯定出错。我从没见过良率(yield)100%的晶圆片。
即使制造环境绝对纯净,恒温恒湿,工艺成熟,也难保证一颗晶圆所有的die(芯片未封装的时候)都是好的。一般良率能达到95%-98%就不错了。
DFT和IC测试(ATE)工程师就是要把这些坏的芯片筛选出来。当然,坏的芯片也不是都扔了,而是会把坏的芯片分类,还可以再应用到其他低端一点的产品上去。你所知道的酷睿i7,i5,i3就是这个道理。
其实测试的成本是非常高的,ATE这种设备,低端一点的几十万美金,高端一点的几百万美金,可以说为了增加芯片的可靠性,芯片公司在测试上花费是巨大的。
芯片制造过程中的缺陷
3、即使芯片功能和制造都不出错,怎么保证以后使用中某个晶体管不会坏掉?
这个也保证不了,比如CPU、GPU在执行高速计算渲染任务的时候,芯片的温度会升高,有可能破坏晶体管,或者设备摔了一下,也有可能导致其损坏。
但是,硅由于物理性质稳定,而且用作芯片的硅是单晶硅,也很难发生化学反应,在非外力因素下,晶体管出问题的概率很小很小。
即使如此,芯片在出场前,还要经过一项测试,叫“老化测试”,是在高/低温的炉里经过 135/25/-45摄氏度不同温度以及时间的测试,以保证其稳定性。
就算是某个晶体管坏了,就像其他答主所说,会引入容错性设计,容错性设计又可以从软件和硬件两个方面来实施。
比如存储器中一般存在冗余的信号线和单元,通过检查发现有问题的单元,从而用冗余的模块替换有缺陷的模块,保证存储的正常使用。
比如下面橙色的为冗余的memory,红色的是坏的memory,我们便可以通过算法把红色memory的地址映射到橙色备用的一个memory上。
一个典型的memory repair 流程图如下:
其实芯片的可靠性从一开始设计或者制造都已经考虑进去了,毕竟芯片的缺陷如果晚一个环节发现,成本将增加10倍!
最后,芯片行业无论哪个环节都不容易,投入巨大,风险巨大,投资与收益周期长,希望国家能多重视半导体行业,毕竟这才是真正的国之重器!
领取专属 10元无门槛券
私享最新 技术干货