上回书说到SA0和SA1的测试方法。
这种测试方法是建立在一个前提上的,就是我们可以任意改变输入信号的逻辑值。如果这个输入正好就是整个芯片的输入还好办,直接在芯片外部改变即可。但很多时候我们需要测试芯片内部的各个逻辑单元,它们的输入就会是在芯片内部,不那么好调整了,这可咋办呢?
这个时候人们就想到了芯片中的重要元件——寄存器。如果我们给寄存器存储相应的测试的逻辑值,让这些reg的存储的数据作为我们DFT测试的输入,不就可以达到控制输入信号的目的了吗?但这种方法有一定局限性,这样我们的DFT测试输入位置必须保证是时序逻辑中寄存器的输出pin才行,接收输出信号就还是用探针就可以,没有太多限制。这样的输入限制有可能会导致我们无法完全测试出所有combinational cell的问题,但DFT工程师还是可以控制输入信号测很多次,来尽可能多的覆盖到能测的cell。DFT测试中有一个测试覆盖率的概念,一般都会要求到90%以上。
然而使用reg来作为测试输入又带来了新的问题,那就是我如何给这些reg灌进我想要的值呢?要知道芯片在正常工作时reg之间是会互相影响的,我们很难控制在某一个时刻,很多个reg都正好输出我们想要的某个逻辑值组(一般DFT工程师称这种输入逻辑组叫pattern,比如上篇提到的例子里,11、10就是不同的两个pattern),怎么办呢?为了DFT测试,我们要对芯片进行大刀阔斧的改革!