一、基于tessent shell 生成的pattern 分以下几种类型:
1. basic _Scan_pat :对于 full-scan 的电路 生成的是basic scan的pattern
2. clock Sequential_pat 用于那些时序深度有限 ,且存在no-scan latches /no-scan cell 的电路 在时序路径上: shift_in之后或者说load_in需要若干个cycle 给no-scan cell复制或者灌入确切的值 ,只有最后一个capture_cycle才是真正capture;
3. clock PO_pat :某些时钟信号经过组合逻辑,然后直接连接到PO。这种情况是可以测到stuck at 1的,但是不能够测试到stuck 0(由于其本身为clk,又为PI ,双重身份,它不能随便赋1,所以无法检测sa0 的fault)
4. Multiple load 用于存在 no-scan cell的RAM 或者ROM 的设计; 在时序上可能存在多个scan load cycle以及 一个或多个capture的cycle;
二、生成过程
1.Basic Scan Patterns:
默认情况下工具是会先生成basic scan patterns,basic scan patterns是将一组values 给所有的scan cells( load in)以及 primary PI,另外在所有的primary output 以及scan cell上进行观察(measure po), 工具会使用默认的scan clock 来抓取数据到observable scan cells(capture_clock_on,capture_clock_off) . 每一只pattern都是独立的。
basic pattern遵循下面的events:
1、load values into scan chains.
2、 Force values 在所有的non-clock primary inputs(with clocks off and constrained pins at their constrained valued)
3、measure all primary outputs(except those connected to scan clocks)
4、pulse a capture clock or apply seleced clock procedure.
5、unload values from scan chains
load in -->force PI–>measure PO–>capture—>load out
2、Clock Sequential Patterns
由于电路中存在non-scan cell逻辑,而sequential pattern就是为了提高non-scan cell的coverage的,能测到其端口faults。
sequential pattern在测试时候的event包括了:
1、load scan chain
2、apply clock sequential cycle : 重复force PI–> pulse clock N次,此时N为时序深度-1
3、apply capture cycle : force PI measure ,PO pulse ,capture clock
4、unload
non scan cell的Q端口是没法给出值的,因为load in 只会load SDFF cell,两个寄存器的Q都会有值存在,进行force PI, measure PO,load out的时候是比较的Scan out的值,所以在capture的时候,non-scan cell可能抓到了一个非X的值,再继续load out的时候也只会比较scan out上的值。假设我们shift in进去值00,然后进行force PI, 但是此时我们知道这个non-scan cell仍然是X态。即使我现在measure PO, 那么我此刻Y端口仍然是unknow。接下来,我要做capture动作,然后load out,此时我比值比的scan out chain上的值。也就是说整个过程因为我的non scan cell 为X,而影响了我的比值为X,从而影响了covage。
在capture_cycle之前,增加或者打一个sequential cycle, 通过force PI, 此刻,non scan cell的D端口将会有确切的值。
再进入 capture_cycle阶段,在capture cycle的时候进行force PI和 measure PO动作,给一个capture clk pulse,就可以将逻辑中的值capture到扫描链中。因此,我们第一次force PI, 然后sequential pulse是为了将确切值灌入non scan cell, 第二次PI才是真正用于capture的值。
3、Clock PO pattern
某些时钟信号经过组合逻辑,然后直接连接到PO。这种情况是可以测到stuck at 1的,但是不能够测试到stuck 0(由于其本身为clk,又为PI ,双重身份,它不能随便赋1,所以无法检测sa0 的fault)
由于basic pattern的过程,force PI ,measure PO, 发生在没有时钟的阶段,即SE=0拉低的阶段,此时时钟能够为0. 所以在force PI和 measure PO的时候,可以测试stuck at 1,因为时钟clk_in相 当于可以被force PI为0状态。
为了解决这个问题,采用multiple timeplate方案,一个附加的timeplate被工具自动生成。capture cycle阶段,clk_in 表现为持续拉高的一个状态。此时,我们在force PI 就可以force一个高电平的值,在measure PO就可以观察clk_out。
注意:1.主要用于解决DRC的违例中的C8、 C9时,,提高覆盖率问题,但是前提是ATE机台支持multiple timeplate方案;对于 sub-block 来说, block级的PO 可能并不是 top level 的PO;所以block并不考虑 clock PO的 pattern.一般都关闭;对于 top level, 也要看ATE机台是否支持multiple timeplate ,对于不支持的 只能cut off掉,但是对覆盖率的影响微乎其微。