DFT
在了解DFT之前,先简短回顾下整个数字产品定义-设计-验证-逻辑综合-物理设计-生产制造。设计和验证工作完成之后,我们就得到了一个实现了特定功能的RTL设计。这里我们可以说功能设计的部分已经完成,那接下来的流程中一个很重要的方面就是保证之前实现的功能不能被改变。
的设计流程:逻辑综合(logic synthesis)完成后执行的形式验证(formal verifica
on)就是保证逻辑综合得到的网表(netlist )与之前的RTL设计保持功能一致。物理设计的工作完成后,一是要进行物理设计产生的网表(post-routing netlist)与综合网表(pre-routing netlist)间的形式验证,另一工作就是LVS(logic versus schematic)以确保可制造的GDSII版图实现与post-routing netlist的功能一致性。至此我们就得到了一个与RTL设计功能一致的,可制造的版图实现,然后经过生产制造的过程得到实现特定功能的芯片。那新的问题就是用怎样的方法检查post-routing netlist(或GDSII database)与制造出的芯片之间是否功能一致?或者说制造出来的芯片是否实现了产品定义阶段所定义的功能呢?
回答这一问题之前再让我们来看看常用的功能验证方法。
常用的功能验证的方法之一是逻辑功能
。在输入特定激励的情况下,检查设计能不能得到期望的输出。这也是设计验证阶段所采用的常规办法。当然我们也可以利用验证阶段所得到测试用例,在netlist上采用逻辑功能仿真的方法,验证netlist中有没有改变RTL设计中实现的功能。但在netlist上采用这种方法的缺点是仿真周期长,消耗资源(cpu & memory)多。所以在特定的情境下,形式验证,包括LVS,被用来做功能验证。当然这些方法不需要测试用例,而是根据 结构来判断两个实现之间是否保持功能一致。如果两个设计实现保证了电路结构一致,功能自然而然也就是一致的。接下来言归正传,DFT的全称是design for test(可测试性设计),DFT技术就是前面寻求的检测post-routing netlist与制造出来的芯片之间功能一致性的方法。逻辑综合以及物理设计的过程中,可能因为EDA工具,或者设计流程,甚至人为等因素导致功能被改变。而在生产制造过程中,由于工艺或者环境等因素有可能在硅片上产生物理缺陷,进而导致制造出的芯片表现出不同于设计功能的现象。DFT技术就是用来捕捉芯片中的物理异常,进而做出芯片是否与post-routing netlist功能一致的判断。DFT技术所采用的方法也是根据电路结构,利用post-routing netlist产生出结构测试向量;如果在测试机台(ATE)上,这些结构测试向量也能令制造出的芯片产生出同样的输出结果,那么我们就认为该芯片与pos-routing netlist功能一致,实现了特定的设计功能。
需要注意的是DFT的方法并不能百分百检测出功能正确的芯片(因为没有覆盖百分百的电路结构),我们需要通过叠加板(board)级系统测试等方法来达到接近百分之百的覆盖率。另外,结构测试向量在DFT应用过程中起着至关重要的作用,为了得到高效率的此类测试向量,需要在设计阶段实现特定的辅助性设计;通过增加一定的硬件开销,获得最大可测试性。而此类的辅助性设计就包括扫描链(scan chain),内建自测试(build-in-self-test)及边界扫描(boundary scan)等逻辑。