ICT 数字测试原理 6 - -VCL 测试结构
ICT 数字测试原理 6 - -VCL 测试结构
文章目录
- ICT 数字测试原理 6 - -VCL 测试结构
- VCL 测试结构
- 编写声明部分
- 编写向量定义部分
- 编写向量执行部分
- VCL 语句
- 声明部分
- 声明部分示例
- 语句顺序
VCL 测试结构
一个 VCL 测试由四个部分组成,如表 2-2 所述:
各部分必须按所列顺序排列。每个部分都有其自己的语句集。如果测试使用图 1-2 所示的标准向量时序,并且没有可变的时序要求,则不需要时序部分。时序部分在“使用 VCL 进行高级测试”中与其他高级测试主题一起描述。
表 2-2
VCL 测试的部分
部分 | 描述 |
---|---|
声明部分 | 声明测试类型、所需的系统资源、设备类型及其属性。所有库测试必须至少包含这一部分,以便数字程序生成器能够分配系统资源并为夹具做出适当的引脚分配。查看编写声明部分。 |
时序部分 | 定义任何特殊的测试时序。在 Mux 系统中,仅在需要可变时序组合的测试中使用时序部分。如果您使用时序组合,请勿在声明部分中指定向量时序。查看使用 VCL 进行高级测试。 |
向量定义部分 | 定义用于测试设备的向量。使用特殊的定义部分能够有效生成复杂向量。例如,如果您从 CAD 系统下载向量,您将使用 PCF(模式捕获格式)向量。在“使用 VCL 进行高级测试”中全面讨论的 PCF 向量将向量定义和执行功能结合在一起,必须位于测试的向量执行部分。如果测试中的所有向量都是 PCF 向量,则不需要向量定义部分。请参见编写向量定义部分。 |
向量执行部分 | 包含任何 PCF 向量,以及执行前面部分定义的向量的指令。该部分由一个或多个数字单元和(可选的)数字子程序组成;如果有子程序,必须位于数字单元之前。请参阅编写向量执行部分。 |
编写声明部分
声明部分中的信息用于设置测试环境并描述设备。这些信息被数字程序生成器用于资源分配。请参阅仅设置测试。
- 声明测试类型。
使用 combinatorial
或 sequential
语句。参见建立环境。
- 指定处理器。
使用 processor
语句。默认值为 vpu
。
- 生成调试数据文件。
如果需要,使用 generate debug
语句和将用户向量映射到机器向量的文件(generate map
语句)。
- 指定要传递给测试的任何变量的 VCL 名称。
使用 test digital
语句。参见在testplan和数字测试之间传递数据。
- 将设备引脚分配到组。
使用 assign to
语句并指定任何默认状态。参见在向量中分配资源和默认状态。
- 对组进行分类。
使用 inputs
、inputs formatted clock
、outputs
、bidirectional
、power
、nondigital
、use cards on
、fixed
和 wait line
语句。参见分配资源。
- 指定向量中引脚状态的格式。
使用 format
语句。参见表 2-6。
- 声明外部源向量的引脚顺序。
使用 pcf order is
语句。参见使用 VCL 进行高级测试。
- 指定所需的驱动和接收特性。
使用 family
、set load
和 set ref
语句。参见测试参数。
- 指定向量时序。
使用 vector cycle
和 receive delay
语句。参见向量时序。如果测试要与外部时钟同步,请参阅时钟同步。如果要使用时序组合(在 Mux 系统上),请参见编写向量定义部分。
- 为 SAFEGUARD 安全分析例程提供可选数据。
这仅适用于库测试。使用 outputs limited to
语句。
- 指定等待线上的状态。
要触发硬件等待的终止,请使用 wait terminated when
语句。
- 提供禁用信息。
这仅适用于库测试。
a. 为具有可总线输出或双向引脚的设备提供禁用信息。
b. 为可能需要禁用或在其用作被测设备上游使用时需要处理的部件提供禁用和处理信息。
使用 disable with
、condition with
和 unit disable method
语句。
编写向量定义部分
定义各个向量。每个向量必须在自己的代码块中,由向量和结束向量语句界定。你可以使用初始化语句作为输入辅助工具来定义相似的向量。如果你在编写新的测试用例,请同时开发此部分和向量执行部分,而不是先定义所有向量然后再书写所有向量执行语句。
请参考向量定义部分以获取关于向量的完整信息。
如果测试仅使用PCF向量(参见使用VCL进行高级测试),则不需要向量定义部分。
编写向量执行部分
向量执行部分根据前面部分定义的资源和向量,以及本部分中的任何PCF向量来控制测试的流程。按照正确的顺序安排语句以执行向量,并在需要时合并PCF向量。
- 编写子程序。
子程序可以包含任何顺序的向量执行语句、自归环路、重复环路以及对其他子程序的调用。请参阅数字子程序。
- 编写数字单元。
所有向量执行语句和对子程序的调用必须位于数字单元中,由单元和结束单元语句界定。请参阅数字单元。
- 为组合器件编写库测试。
组合器件的库测试只需要一个单元。然而,它可以有多个。
序列器件的库测试可能需要分段为更小的单元,以避免拓扑冲突。请参阅解决拓扑冲突。
- 定义自归环路。
使用自归环路使设备从未知状态转变为特定的已知状态,以便可以进行实际测试。请参阅自归环路。
- 定义CRC。
在进行大型测试时,如果预测所有向量的响应过于耗时或不切实际,可以使用CRC。请参阅压缩和循环冗余校验。
如果被测设备对给定的一组向量并不总是以相同方式响应,则不能使用CRC。
- 定义测试暂停。
要临时中止测试(例如进行模拟测量),请使用停止和暂停语句。请参阅测试控制语句。
- 分段长测试。
对于可能长时间驱动上游设备的长测试,用冷却延迟语句进行分段。请参阅测试控制语句。
- 编写单元禁用测试。
可总线设备的测试可能需要单元禁用测试。请参阅单元禁用测试。
VCL 语句
表2-3、表2-4和表2-5列出了与测试各部分相关的VCL语句。这些语句分为两列。标准测试语句在本章中描述,进阶测试语句在《使用VCL进行高级测试》中描述。
表2-3
声明部分
标准测试语句 | 进阶测试语句 |
---|---|
combinatorial | test time |
sequential | dynamic |
processor | generate static test |
test digital | outputs reference clock |
enable loop counter | pcf order is |
generate debug | when |
generate map | variable to groups |
default device | andtree |
assign to | nandtree |
inputs | nortree |
outputs | xnortree |
bidirectional | xortree |
capture—pack | flash |
fixed | flash isp |
power | pld isp |
nondigital | |
wait line | |
family | |
vector cycle | |
receive delay | |
wait terminated when | |
use cards on | |
set load | |
set ref | |
set terminators | |
outputs limited to | |
disable with | |
disabled device | |
condition with | |
conditioned device | |
on failure report |
表2-4 向量定义部分
标准测试语句 | 进阶测试语句 |
---|---|
vector | data |
initialize to | file |
set to | values |
receive | end data |
drive | flash assignments |
upcounter | end flash assignments |
downcounter | |
graycounter | |
end vector |
表2-5 向量执行部分
标准测试语句 | 进阶测试语句 |
---|---|
sub | pcf |
subend (or end sub) | use pcf order |
unit | end pcf |
execute | piped |
preset counter | next |
count | rewind |
call | segment |
tied | end segment |
homingloop | |
end homingloop | |
generate nested repeat warning | |
repeat times | |
end repeat | |
controllerloop | |
end controllerloop | |
compress | |
end compress | |
capture | |
end capture | |
fetch | |
halt | |
pause | |
message | |
continue analog | |
delay for cooling | |
end unit | |
unit disable method | |
unit disable test |
表2-6简要描述了VCL语句的功能和用途。更多信息可以参考所示主题。
语句 | 测试部分 | 描述/主题 |
---|---|---|
! | 所有部分 | 与BT-Basic注释类似。 |
andtree | 声明 | 声明被测设备包含一个AND树可测试性结构。 |
assign to | 声明 | 为设备引脚组分配名称(标识符)。 |
bidirectional | 声明 | 声明哪些设备引脚组是双向的。 |
call | 向量执行 | 调用数字子程序并传递向量给它。 |
capture | 向量执行 | 开始一个捕获块。捕获的数据保存在捕获RAM中。也是向量执行语句的辅助关键词。 |
capture—pack | 声明 | 指定要捕获的节点、数据类型(串行或并行)、以及所提取数据的格式。 |
combinatorial | 声明 | 声明被测设备仅有组合电路(即无存储器)——默认是顺序电路。 |
compress | 向量执行 | 开始一个压缩块;将设备对块中所有向量的实际响应添加到测试的CRC。 |
condition with | 声明 | 提供数字程序生成器所需的条件设备信息。 |
conditioned device | 声明 | 指定除被测设备外,测试期间其他已进行条件设置的设备。 |
continue analog | 向量执行 | 在混合测试中暂停数字测试并执行模拟测试。 |
controllerloop | 向量执行 | 标记混合测试中控制器循环的开始。 |
count | 向量执行 | 增加(或减少)计数器并执行包含该计数器的向量。 |
default device | 声明 | 在可执行测试中指定被测设备的代号。 |
delay for cooling | 向量执行 | 在正常冷却延迟时期暂停数字测试。 |
disable with | 声明 | 提供禁用可总线设备所需的数字程序生成器信息。 |
disabled device | 声明 | 指定测试期间除被测设备外的其他被禁用设备。 |
downcounter | 向量定义 | 为向量分配一个降序计数器。 |
drive | 向量定义 | 声明哪些双向引脚作为此语句出现向量中的设备输入(系统驱动)。 |
enable loop counter | 声明 | 启用真正的计数归位循环。 |
end capture | 向量执行 | 标记捕获块的结束。 |
end compress | 向量执行 | 标记压缩块的结束。 |
end controllerloop | 向量执行 | 标记混合测试中控制器循环的结束。 |
end homingloop | 向量执行 | 标记归位循环的结束。 |
end pcf | 向量执行 | 标记PCF向量块的结束。 |
end repeat | 向量执行 | 标记重复循环的结束。 |
end sub | 向量执行 | 与subend相同。 |
end unit | 向量执行 | 标记数字单元的结束。 |
end vector | 向量定义 | 标记向量块的结束。 |
execute | 向量执行 | 执行一个向量(其中不能包含计数器)。 |
family | 声明 | 声明用于测试设备的默认逻辑电平(如TTL, Flash5V等)。 |
fetch | 向量执行 | 从捕获RAM中提取捕获数据到指定变量。 |
flash | 声明 | 打开闪存特定功能以处理Mototola S和Intel Hex记录。 |
format | 所有部分 | 声明要在测试的向量执行部分中使用的数制(如二进制、八进制或十六进制)。 |
generate debug | 声明 | 指定在编译VCL测试时产生调试数据文件。 |
generate map | 声明 | 指定由编译器生成的将用户向量映射到机器向量的文件。 |
generate nested repeat warning | 向量执行 | 指定如果重复循环未优化则发出警告。 |
graycounter | 向量定义 | 为向量分配一个灰度计数器。 |
halt | 向量执行 | 暂停数字测试,将驱动器置于三态,并将控制返回到testplan。 |
homingloop | 向量执行 | 标记归位循环的开始。 |
include | 所有部分 | 指定包含待编译进测试的VCL语句的文件。 |
initialize to | 向量定义 | 一个输入辅助工具:复制先前定义向量的所有引脚设置。 |
inputs | 声明 | 声明哪些设备引脚组是设备的输入(系统驱动)。 |
message | 向量执行 | 指定每当向量失败时,发送到报告的消息。 |
nandtree | 声明 | 声明被测设备包含一个NAND树可测试性结构。 |
nondigital | 声明 | 声明设备引脚中非数字引脚。这些引脚在安全分析中被忽略。 |
nortree | 声明 | 声明被测设备包含一个NOR树可测试性结构。 |
on failure report | 声明 | 指定在测试失败时发送到报告设备的失败消息。 |
outputs | 声明 | 声明哪些设备引脚组是设备的输出(系统接收)。 |
outputs limited to | 声明 | 指定同时可以是高(或低)的最大输出数量(用于SAFEGUARD安全分析)。 |
pause | 向量执行 | 暂停数字测试,保持驱动器的当前状态,并将控制返回到testplan。 |
pcf | 向量执行 | 标记PCF向量块的开始。 |
pcf order is | 声明 | 指定应用PCF向量的节点组。 |
power | 声明 | 声明连接到电源节点的设备引脚组(即处于固定电平)。 |
preset counter | 向量执行 | 将计数器预置为其初始状态并执行包含该计数器的向量。 |
processor | 声明 | 选择测试的处理器模式。 |
receive | 向量定义 | 声明哪些双向引脚作为此语句出现向量中的设备输出(系统接收)。 |
receive delay | 声明 | 建立驱动器接收器之间的向量时间延迟。 |
repeat times | 向量执行 | 开始一个重复循环并指定执行次数。 |
sequential | 声明 | 声明被测设备具有顺序电路(即具有存储器)。这是默认设置。 |
set load | 声明 | 允许在单个接收器(设备输出)上设置负载(上拉或下拉)。 |
set ref | 声明 | 允许在单个驱动器和接收器上设置逻辑电平。 |
set terminators | 声明 | 连接接收器电路中的RC网络,以提高高速信号质量。 |
set to | 向量定义 | 指定分配给引脚组的状态。 |
sub | 向量执行 | 标记子程序的开始,并声明其正式向量的名称。 |
subend | 向量执行 | 标记子程序的结束并返回程序执行到调用点。 |
test digital | 声明 | 指定从testplan传递到测试的变量的本地标识符。 |
test time | 声明 | 规定典型测试执行时间的估计值。 |
tied | 向量执行 | 标识为单个单元连接在一起的一组引脚。 |
trace to | 声明 | 在库测试中,用于指定设备的哪些输入引脚影响其哪些输出引脚。 |
unit | 向量执行 | 开始一个数字单元。 |
unit disable method | 向量执行 | 开始数字单元,包含需要多向量预调的设备预调语句。 |
unit disable test | 向量执行 | 开始数字单元,以确保设备在其他设备测试期间可被禁用。 |
upcounter | 向量定义 | 为向量分配一个升序计数器。 |
use cards on | 声明 | 指定用于为引脚组提供资源的引脚卡类型。 |
vector | 向量定义 | 开始一个向量块并命名向量。 |
vector cycle | 声明 | 确定向量周期时间;即开始一个向量和下一个向量之间的时间。 |
wait line | 声明 | 指定板上的输出被用作硬件触发器以终止硬件等待。 |
wait terminated when | 声明 | 指定终止硬件等待的等待线条件。 |
warning | 所有部分 | 添加警告消息到由数字程序生成器生成的文件ipg/details中的测试报告中。 |
xnortree | 声明 | 声明被测设备包含一个XNOR树可测试性结构。 |
xortree | 声明 | 声明被测设备包含一个XOR树可测试性结构。 |
声明部分
声明部分是VCL测试的第一个部分。它定义了设备或集群的类型和拓扑结构,以便数字程序生成器可以确定测试所需的系统资源。
如果要测试的设备是一个可总线组件,或者可以进行预调节(禁用或调节),那么声明部分还必须包含预调节信息(参见 condition with 和 disable with 语句)。这使得数字程序生成器能够在同一总线上的其他设备正在测试时对设备进行预调节。设备的预调节信息仅在库测试中是必需的。
如果设备的测试是可执行的,你可能需要添加语句以在测试该设备时禁用或调节其他设备。通常情况下,数字程序生成器会这样做,但如果生成器无法进行操作,则必须由你来进行禁用。参见预调节(禁用和调节)。
库测试必须至少具有声明部分,以便数字程序生成器可以进行适当的系统资源分配。本章后面描述的只进行设置的测试,通常仅有声明部分。
声明部分示例
示例2-1展示了一个库测试的声明部分。语句中包含了解释性注释。基于此处分配的引脚组的示例向量将在本章稍后展示,并附有测试中向量定义部分的描述。
(本测试段取自本章末尾展示的示例测试。)
示例2-1
sequential ! 测试类型
vector cycle 550n ! 向量时序
receive delay 450n !assign Data_in to pins 1,2,9,8 !
assign Results to pins 3,4,5,6 ! 分配引脚到组并命名这些组
assign I_O_bar to pins 10 ! (也确定了向量的引脚顺序)
assign Bus1 to pins 13,12,11 !
assign VCC to pins 14 !
assign GND to pins 7 ! family TTL ! 设置向量驱动和接收电压为TTL电平inputs Data_in, I_O_bar !
outputs Results ! 将引脚组分类为输入、输出等。
bidirectional Bus1 ! 双向
power VCC, GND !
format hexadecimal Results ! "set"语句要使用的格式
format octal Bus1 ! 指定引脚状态disable Bus1 with I_O_bar to "1"! 其他测试所需用于禁用此设备
语句顺序
一般来说,只要语句出现在测试相应的部分,它们可以按任何顺序使用。主要的规定是,任何使用其他语句中的数据的语句必须位于该其他语句之后。
以下语句必须出现在测试开始处,并在任何 assign to 语句之前(它们可以按任何顺序排列):
- combinatorial, sequential, flash, flash isp, pld isp, andtree, nandtree, nortree, xnortree, 或 xortree
- processor(如果使用)
- test time(如果使用)
- generate debug(如果使用)
- generate map(如果使用)
- test digital(如果使用)
许多语句引用在 assign to 语句中声明的组名,因此,assign to 语句必须位于声明部分的开头附近。如果有任何默认设备语句,每个语句必须位于它适用的 assign to 语句之前。
注释可以放在任意位置。