发表于:2010-02-26 22:55:54
楼主
DFT其实是一个很广泛的范围,我们做ic设计的人讲到dft设计其实也是指其中一个很小的范围。
首先说,我们为什么要做dft?首先要明白一个这样一个概念,我们做dft主要是为了检查工艺错误,而不是为了检查芯片本身的设计错误。举一个简单的例子,有一个2输入的与门,如果它有工艺错误,output端不能从0正确的变到1。那么我们就会在它的两个input端口灌1,1信号,然后检查它的output是不是1,从而判定它有没有工艺错误。那么我们把这个概念推广到整个芯片的测试,我们为了检测到芯片每个部分,那么就要反推出input应该灌什么样的pattern。因为时序电路的特殊性,就引入了SDFF,把时序结果人为的变成“组合逻辑”,这样我们就能比较方便的通过控制SDFF的input值,达到控制它的output值得目的。
接着讲讲最基本的用mux-dff做的full scan的步骤(用DC做):我通常会对芯片中的memory做memory bist(包含了bypass电路),做scan chain的时候就通过bypass电路绕过memory。然后用compile -scan 产生一个带SDFF但没有形成scan chain的网表(这个步骤中推荐使用rtldrc,把所有的error跟warning修改掉)。然后在这个netlist的基础上check dft修改掉error跟warning,确认preview dft是你想要的结果,就可以形成scan chain了。
然后用ATPG的tool产生测试pattern,看看覆盖l率,如果你是到好的生产代工的公司流片那么95%的覆盖率已经足够了。
补充:
DFT的基本概念里,fault at 0,fault at1是基本的.
就是说故障0,故障1,
要测试这些,有很多的算法.