Test Pattern File
the ASCII and BIST pattern file formats
ASCII File Format
描述扫描测试向量的ASCII文件分为五个部分,分别为header_data、setup_data、functional_chain_test、scan_test和scan_cell。每个部分(header_data部分除外)以section_name语句开始,以end语句结束。文件中,任何以双斜杠(//)开头的行都是注释行。
Header_Data
header_data部分包含与测试向量相关的基本信息或注释,是一个可选部分,该部分的每一行的开头都有一个双斜线(//)。如下所示:
ASCII Setup_Data
setup_data部分包含扫描结构的定义和测试向量描述中引用的一般测试程序。
(BIST向量会有一些额外的格式,详见"BIST Pattern File Format")
该部数据的基本格式如下:
SETUP =
<setup information>
END;
具体setup information 的内容如下:
declare input bus “PI” = <ordered list of primary inputs>;
declare output bus “PO” = <ordered list of primary outputs>;
定义电路的PIs、POs列表,每个PI或PO用双引号括起来,用逗号分隔。如果是双向端口,需要同时放输入和输出的列表中。
CLOCK ''clock_name1" =
OFF_STATE = <off_state_value>;
PULSE_WIDTH = <pulse_width_value> ;
END;
CLOCK ''clock_name1" =
OFF_STATE = <off_state_value>;
PULSE_WIDTH = <pulse_width_value> ;
END;
定义电路中的时钟列表。时钟数据包含,时钟名称,关闭状态值(off-state value)和脉冲宽度。对于边沿触发的scan cells,
WRITE_CONTROL ''primary_input_name" =
OFF_STATE = <off_state_value>;
PULSE_WIDTH = <pulse_width_value> ;
END;
该部分定义了电路中包含的写控制线(write control)的列表。写控制线包括用引号括起来的原始输入名称、关断状态值和脉冲宽度。如果有多条写控制线,则它们的脉冲必须是同步的。
PROCEDURE TEST_SETUP ''test_up"
FORCE "primary_input_name1" <value> <time>;
FORCE "primary_input_name2" <value> <time>;
...
...
END;
该部分是可选过程,用于将非扫描存储单元在ATPG和load/unload的过程中设置为固定状态。只在测试集开始部分使用一次,该过程只包含force命令。
SCAN_GROUP "scan_group_name1" =
<scan_group_information>
END;
SCAN_GROUP "scan_group_name2" =
<scan_group_information>
END;
...
...
该部分定义电路中的 scan chain group。scan group是scan chain 的集合,它们并行load 和 unload。
SCAN_CHAIN "scan_chain_name1" =
SCAN_IN = "scan_in_pin";
SCAN_OUT = "scan_out_pin";
LENGTH = <length_of_scan_chain>;
END;
SCAN_CHAIN "scan_chain_name2" =
SCAN_IN = "scan_in_pin";
SCAN_OUT = "scan_out_pin";
LENGTH = <length_of_scan_chain>;
END;
...
...
该部分描述电路中扫描链相关的信息。
PROCEDURE <procedure_type> "scan_group_procedure_name" =
<lsit of events>
END;
过程的类型(type of procedures)可以包括 shift procedure, load and unload procedure, shadow-control procedure, master-observe procedure, shadow-observe procedure, and skew-load procedure。
事件列表可以是以下命令的任意组合:
FROCE "primary_input_pin" <value> <time>;
// 此命令用于在给定时间在选定的PI引脚上的施加值(0,1,X或Z)。时间值不得低于该过程以前的时间值。每个过程的时间从时间0开始。
APPLY "scan_group_procedure_name" <#times> <time>;
// 此命令指示所选程序将从选定时间开始应用选定次数,只能在加载和卸载过程中使用。
FORCE_SCI "scan_chain_name" <time>;
// 此命令指示移位过程中要在扫描链输入上放置值的时间。
MEASURE_SCO "scan_chain_name" <time>;
// 该命令指示移位过程中要在扫描链输出上测量值的时间。
Functional_Chain_Test
functional_chain_test部分包含电路中用于所有待测扫描链的扫描链功能测试的定义。对于每个扫描链组(scan group),扫描链测试包括交替加载00和11(00110011…),然后卸载扫描链组中所有扫描链的这些值。
格式如下:
如果Setup_Data部分中有test_setup过程,则在扫描链功能测试向量的开头应该有可选的test_setup行。
第二行的用于pattern的number是一个zero-based pattern number,待测电路中的所有扫描链都要进行功能测试。
扫描链组 laod 和 unload的名字,扫描链的名字,以及 load 和 unload 扫描链的值都被放在引号中。
在扫描链的加载(loading)过程中,相应扫描链的每个值被放置在其扫描链输入引脚处。移位过程(shift procedure)通过扫描链依次移位每一个值,直到扫描链需要的所有值都已被加载为止。因为shift的数量是由最长扫描链的长度决定的,所以X值(don’t care)被放置在较短扫描链的开头,这样可以所有扫描链都正确加载其所需要的全部值。
在扫描链的卸载(unloading)过程中,在扫描链输出引脚处测量相应对应扫描链的每个值。移位过程将扫描链中的值依次移出,直到所有扫描链中的所有值都被unloading。同样,因为shift的数量是由最长扫描链的长度决定的,所以X值(don’t care)被放置在较短扫描链的末端。这样可以确保正确卸载扫描链的所有值。
扫描链功能测试的实例如下:
Scan_Test
scan_test部分内容是由Tessent Shell创建的扫描测试向量的定义。
扫描向量(scan pattern)通常包括以下内容:
The number of the pattern represents the pattern number in which the scan chain is loaded, values are placed and measured, any capture clock is pulsed, and the scan chain is unloaded. The pattern number is zero-based and must start with zero.
如果使用了transition fault,则在每个测试向量的开始处应用额外的force声明。一个向量的所有时间值都不得低于该想向量施加之前的时间值。
PI值和PO值与按照setup部分中定义的顺序进行对应。
如果setup_Data部分中有test_setup过程,则在应用第一个向量之前,必须先应用test_setup过程中的第一个事件:
APPLY "test_setup" <value> <time>;
如果有任何写控制线,则在将值施加到PI之后对它们进行脉冲:
PULSE "write_control_input_name" <time>;
如果有捕获时钟,则在PO测量值之后,在相同的选定时间对其进行脉冲处理。任何扫描时钟都可以用于将数据捕获到用于观察的扫描单元中。
扫描向量参考适当的测试程序来定义如何控制和观察扫描单元。如果要master element放到其扫描单元的输出中,可以通过应用卸载(unload)操作对其进行观察,master_observe过程则必须在卸载扫描链之前应用:
APPLY “scan_group_master_observe_name” <value> <time>;
如果要将shadow的内容放入其扫描单元的输出中,可以通过应用卸载操作对其进行观察,shadow_observe过程则必须在卸载扫描链之前应用:
APPLY “scan_group_master_observe_name” <value> <time>;
如果扫描单元的主单元和辅单元(master and secondary of a scan cell)要处于不同的检测值,则skew_load procedure 必须在加载扫描链之后应用:
APPLY “scan_group_skew_load_name” <value> <time>;
每个扫描向量都具有独立于所有其他扫描向量的特性。扫描向量通常包含以下事件:
- Load values into the scan chains.
- Force values on all non-clock primary inputs.
- Measure all primary outputs not connected to scan clocks.
- Exercise a capture clock (optional).
- Apply observe procedure (if necessary).
- Unload values from scan chains.
当卸载最后一个向量时,该工具第二次加载最后一个向量,以完全shift最后一个捕获周期的内容,从而使输出与计算值相匹配。
尽管加载和卸载操作是单独给出的,但强烈建议在测试仪上应用向量时,在卸载前一向量的同时加载下一组向量。
为了观察连接到时钟的主POs,还有一种额外的扫描模式,包含以下事件:
- Load values into the scan chains.Test Pattern File Formats
- Force values on all primary inputs including clocks.
- Measure all primary outputs that are connected to scan clocks.
Scan_Cell
scan_cell部分包含电路中使用的扫描单元的定义。
该部分数据的基本格式如下:
- cellid — A number that identifies the position of the scan cell in the scan chain. The number 0 indicates the scan cell closest to the scan-out pin.
- type — The type of scan memory element. The type may be MASTER, SLAVE, SHADOW, OBS_SHADOW, COPY, or EXTRA.
- sciinv — Inversion of the library input pin of the scan cell relative to the scan chain input pin. The value may be T (inversion) or F (no inversion).
- scoinv — Inversion of the library output pin of the scan cell relative to the scan chain output pin. The value may be T (inversion) or F (no inversion).
- relsciinv — Inversion of the memory element relative to the library input pin of the scan cell. The value may be T (inversion) or F (no inversion).
- relscoinv — Inversion of the memory element relative to the library output pin of the scan cell. The value may be T (inversion) or F (no inversion).
- instance_name — The top level boundary instance name of the memory element in the scan cell.
- model_name — The internal instance pathname of the memory element in the scan cell (if used - blank otherwise).
- input_pin — The library input pin of the scan cell (if it exists, blank otherwise).
- output_pin — The library output pin of the scan cell (if it exists, blank otherwise).
Example Circuit
BIST Pattern File Format
上一节中描述的所有测试向量文件格式也直接适用于BIST模式。然而,ASCII格式的向量文件中,BIST向量还需要一些特定的内容和格式。