WGL
- Signal:定义端口类型(input/output/inout),并通过initialp指定初始状态,如果省略initialp指定状态,则默认为D(force low)
- Scancell:给出一条扫描链内部所有cell的list(不包括SI、SO端口),先定义存在于grp1chain1组的所有单元,然后指定grp1chain1组的这些单元
- Scanchain:一条完整的扫描链组成,包括SI、SO端口
- Timeplate
定义timeplate名称、周期;
指定了信号的方向(input/output),每个channel(input/output)在周期循环里发生的事件,事件包括时间和TDS状态。
例:
定义了名字为gen_tp1的timeplate,周期为40ns,调用这个timeplate时,channel ijtag为输入端口,在0ns状态为D,20ns状态为S,40ns状态为D。
- Scanstate
Scanstate block 定义了在某一时刻的所有scan cell的状态,以扫描链为单位分别定义的,分别定义了输入和输出状态。O表示输出,I表示输入。这些数据指定的是每个单元的实际状态,不是shift data(存在不同个数反相器时,扫描链的实际状态与shift data可能不一致)
- Pattern
Pattern parameters,pattern参数列表,括号里的是在前面signal block中定义的信号,按照在括号里出现的顺序对应vector中的数列。
vector(+,gen_tp1):+表示自动从前一个vector中增加循环数,gen_tp1表示调用这个名为gen_tp1的timeplate。
5.1 unload/load过程(n个循环):扫描操作的循环次数为扫描链长度(扫描链单元数量),结合scanstate block,执行unload/load操作。如扫描链长度为400,则执行400次循环。
vector作为force PI的向量,是用于pattern Chain_Scan_test部分的iuput/output端口的序列,按照列表里的端口顺序对应。scan则是使扫描链转到指定的scanstate状态的向量,工具使用scan序列,经过操作使扫描链表现为指定的状态,如Output[chain1: Ogrp1chain1_00002],Input[chain1: Igrp1chain1_00002]。
5.2clock_sequential
Force PI 与capture过程
sequential cycle:force PI,pulse clock N次使 nonscan cell 捕获数据
5.3unload_load过程
STIL解析
pattern
1.1unload_load过程
Force PI:scan_en为1
Scanchain vector对应chain_in/chain_out后面的向量序列,例如第一个chain_in[0]向量即为shift_in的序列。
1.2force PI过程
force PI:scan_en为0
重复多次force PI过程,然后capture
1.3unload_load过程
force PI:scan_en为1,进入shift mode,unload出上一个pattern的数据,load下一个pattern的数据。
总结:WGL指定扫描链的状态,向量序列位数不与扫描链单元数一致,通过多个循环的操作, 使用scan vector将扫描链单元转化成指定的scanstate,不是直接将scanstate shift in扫描链(或者说需要先根据scanstate转化成需要的向量,再执行shift in操作)。STIL与WGL不同,它的扫描序列直接对应扫描链每个单元,直接将扫描向量shift in扫描链,即可达到指定的扫描状态,对ATE工具更友好。