对于我每天一千来字的文章来说,这个题目起的着实有点大。要知道现在的DFT所涉及的内容实在太多了,以至于催生了专门的DFT team和专门做DFT的工程师。但是对于芯片设计中的每一环,对DFT所要做的工作都必须有所了解,今天我就把我所理解的DFT简单介绍一下。
DFT全称为Design for Test,可测性设计。就是说我们设计好一个芯片后,在仿真时可能99%的用例都通过了,怎么保证流片出来的实际芯片也能正常工作呢?这里大家必须建立一个概念就是,不管是前端后端,总之只要是设计阶段,不管是waveform还是版图,他都不能完全代表最终出来的芯片的样子,那些设计图纸只是我们美好的想象,实际的制造结果可能会有工艺的偏差的。比如GDS里没有short,但是有可能制造出来的芯片真的有short,这就关系到我们所谓的良率问题。那么DFT的终极目标就是在流片后,我也能通过某些测试的方法,保证芯片和我们的设计图纸吻合,不出现异常。
这其实是一件很难的事情。因为芯片太小了,我们不可能拿着电子显微镜一点一点地去看吧,那要怎么做呢?其实它蕴含的思想很简单,或者说人类还没有发明出更高级的办法。大家肯定有在家里用过电笔的经历,或者稍微专业一点的都知道万用表,他们都是有内部的自建电路,然后利用探针来测被测电路的某一点电势,进而判断是否发生open/short。对于芯片的测试也没有更高级,也是用这种方法,可以利用探针探测芯片的输入输出引脚,看看输入输出是否正常,第二种比较厉害的是用探针直接伸到芯片内部,测里面某些点的逻辑信号。这个方法逻辑上听起来也没什么大不了,但是实际实现是非常难的,需要把芯片放到专用的测试机器上,我们叫ATE机台,测试的价格也非常高昂。每次到这我都想感叹一下人类真是太强了。
既然有了这种ATE机台,理论上我们就可以测芯片中每一点的逻辑信号,进而判断芯片是否良好。但是实际上是不可能行得通的,因为会耗费巨大的时间,可能到宇宙尽头也测不完,其次它实在是太贵了,探针每选择一个点的价格都是我们打工人想象不到的程度。如何更为经济、快速的来测,就是DFT工程师的主要工作目的了。
对于DFT工程师来说,芯片的open/short可以等效为两种fault:Stuck at 0、stuck at 1,说的是不管信号如何变化,某些点可能一直保持0或者1,其实就是发生了open/short。噢,我这里还说的不太准确,也有可能是cell内部的错误,不是metal的open/short。举一个简单的例子,一个二输入与门,它在输入10、01、00的时候输出都为0,看起来是正常的,但是输入11的时候输出也为0,这就不对了,发生了stuck at 0的错误;如果对于所有的输入都输出1,那也不对,发生了stuck at 1的错误。那么反过来,我现在想测这个与门是否正常,怎么来测?思路是先测是否有stuck at 0,再测是否有stuck at 1.那么我如何测出它是否有stuck at 0?我就先假设它有SA0,我就找它应该输出为1的输入是什么,然后灌进去这个输入(这个例子里就是11),如果测到输出为0,那么他就发生SA0,如果输出为1,那么他就没有SA0. SA1也是一样,我把所有应该产生0的输入灌进去(10、01、00),如果至少有一个的输出为1,那么就发生SA1,如果全部输出为0,那么就没有发生SA1. 听起来这个逻辑关系好像很简单,对于这个与门的例子一个小学生可能都会自发的想出要这么测。但我这里费了这么多笔墨要把这件事讲清楚,就是当电路复杂的时候,需要这样一步一步来推导所需要的输入是什么。
不知不觉写了这么多了,明天再继续讲。
版权声明:本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。