如何编写ICT模拟功能测试
如何编写ICT模拟功能测试
文章目录
- 如何编写ICT模拟功能测试
- 编写模拟功能测试
- 模拟功能测试的结构
- 模拟功能测试中的子测试
- 仅设置的模拟功能测试
- 模拟功能库测试
- 模拟功能可执行测试
- 设置源
- 创建差分源
- 使用任意波形发生器
- 创建包含电压样本的数据块或数组有三种方法:
- 设置检测器
- 使用数字化检测器
- 模拟功能测试中的触发
编写模拟功能测试
在您能够编写有效的模拟功能测试之前,必须了解被测设备或电路。
您可以编写两种类型的模拟功能测试:
-
库测试:用于生成可执行测试
-
可执行测试
您可以为库测试和可执行测试编写完整的测试或仅设置的测试。
要编写自定义测试,建议您将一个类似的标准测试复制到本地板目录的模拟目录中,然后修改该测试。
本节内容包括:
-
模拟功能测试的结构
-
模拟功能测试中的子测试
-
仅设置的模拟功能测试
-
模拟功能库测试
-
模拟功能可执行测试
模拟功能测试的结构
模拟功能测试以测试块的形式编写,与模拟在线测试十分相似。测试块由 test powered
和 end test
语句来分隔。测试块中可以包含由 subtest
和 end subtest
语句分隔的子测试。
测试块中的语句包括:
-
将测量总线连接到被测设备。
-
设置源和检测器。
-
如有必要,设置模拟触发子系统。
-
执行测量。
测量可以通过 measure
语句执行。如果需要特殊的触发或处理测量结果,可以通过 arm
、initiate
、fetch
和 report analog
语句来执行测量。
在模拟功能测试块开始时,所有连接、源和检测器(除之前通过 report analog
和 connect keep
语句连接的GP继电器和同轴端口外)都会被清除;在测试块结束时,什么都不会被清除。任何时候断开 S 总线时,源都会自动关闭。
使用 clear connect
和 connect
语句的加电形式,有两种方法可以将测量总线连接到地。您可以:
-
指定地节点的名称
-
使用
ground
关键字。在clear connect
和connect
语句中的ground
关键字指定测量总线连接到指定为地的节点。例如:
示例4-1
connect l to "GND" ! 将 l 连接到名为 "GND" 的节点。connect l to ground ! 将 l 连接到开发软件中指定为地的节点。
为了在模拟功能测试中获得最佳性能:
-
尽可能使用
measure
语句,而不是fetch
和report analog
。这需要更少的执行时间。 -
避免在
on failure
块中使用exit test
。 -
编写简单的测试,因为它们更容易重复执行且更易于调试。
-
在过驱动时,使用交叉触发(模拟和数字子系统及外部仪器之间的触发)以尽量缩短过驱时间。
在模拟加电测试中指定连接时,请注意不要超过引脚卡继电器的电压、电流和功率额定值。
模拟功能测试中的子测试
在模拟功能测试中使用子测试可以:
-
执行小的重复性任务
-
控制数据记录
-
在测试中需要将总线连接更改为不同节点时,保持测试的结构化
主测试的元素称为测试层次,而子测试的元素称为子测试层次。
在开发子测试时:
-
如果子测试变量要在测试层次或其他子测试中使用,必须将其声明为全局变量。每个使用该变量的子测试必须将其声明为全局变量。
-
一旦测量总线在测试层次中连接到一个节点,它可以被断开然后重新连接到同一节点;但不能连接到不同的节点。在单个子测试中也是如此。
-
当需要在同一测试中将总线连接到不同节点时,使用多个子测试。可以在一个子测试中将总线连接到一个节点,然后在另一个子测试中将同一总线连接到不同的节点。
-
测试层次的总线连接在任何子测试中是保持的;不能在子测试内部更改测试层次的总线连接。
-
在下一个测试开始时,测试层次中进行的所有连接会自动断开(除了之前通过
report analog
和connect keep
语句连接的 GP 继电器和同轴端口)。 -
在子测试内部进行的所有连接在子测试结束时会自动断开(除了 GP 继电器)。在子测试中设置的所有源和检测器在子测试结束时会自动断开。
在子测试中可以像在没有子测试的测试中一样进行连接设置。然而,如果同样的连接要在多个子测试中使用,那么在测试层次中进行设置速度更快。应在每个需要的子测试中设置源和检测器。例如,参见示例4-2。
在这个示例中,源在两个子测试中都连接到相同的节点。源连接在测试层次中进行,但源是在每个子测试中设置的。由于检测器(i 总线)必须连接到不同的节点,所以在每个子测试中进行连接和设置。
示例4-2
模拟功能测试中的子测试
test powered analogclear connect s to "In" ! 连接整个测试的源总线。test "part_1" ! 调用子测试 "part_1"。test "part_2" ! 调用子测试 "part_2"。end testsubtest "part_1"connect i to "NODE_1"; l to "GND" ! 连接检测器。source dcv, amplitude 5, on ! 设置源。detector dcv, expect 5 ! 设置检测器。measure 5, 4 ! 执行测量。end subtest ! 检测器被断开。subtest "part_2"connect i to "NODE_2"; l to "GND" ! 连接检测器。source dcv, amplitude .2, on ! 设置源。detector dcv, expect .7 ! 设置检测器。measure .7, -.5 ! 执行测量。
仅设置的模拟功能测试
仅设置的测试是一种设备测试,仅包含足够的信息,以便 i3070 在线测试软件为其分配资源。仅设置的测试并不是一个完整的测试。
您可以使用仅设置测试来加快测试开发过程。您不需要在构建测试夹具之前提供完整的设备测试;您可以编写仅设置的测试,然后在稍后完成测试,在夹具构建的同时可能进行此操作。
如以下示例所示,仅设置的模拟功能测试包含 connect
和 clear connect
语句,并由 test powered analog
和 end test
语句分隔。
test powered analogconnect s to "In"; i to "Out"; l to "GND"end test
模拟功能库测试
您的测试系统所提供的标准设备库目录中包含预编写的模拟功能测试。如果您需要测试一个没有预编写库测试的设备,则必须自行创建一个自定义测试。
当您为一个设备编写自定义库测试时,必须在i3070在线测试软件中输入该设备,并为该设备指定一个零件号。
模拟功能库测试的结构与任何模拟功能测试相似。连接必须指定为设备引脚而非节点。power pins
语句声明设备上任何连接到电源或地的引脚。nonanalog
语句声明任何数字或未连接的引脚。不要在库测试中使用default device
语句;它仅用于可执行测试。
示例4-3
模拟功能库测试示例
test powered analognonanalog pins 5power pins 7, 14connect s to pins 3connect i to pins 6; l to pins 9source dcv, amplitude 5.0, icompliance 1detector dcv, expect .2measure .2, ‑.2end test
软件将编译库测试,或者您可以手动编译。请参见编译模拟功能测试。
模拟功能可执行测试
您可以手动创建可执行测试。
为其编写自定义可执行测试的设备应输入到i3070在线测试软件中。将设备指定为未测试,且不需要包含零件号。
软件会为您编译可执行测试,或者您可以手动进行编译。请参见编译模拟功能测试。
模拟功能可执行测试的结构与任何模拟功能测试相似。连接可以指定为设备引脚或节点。
在库测试中使用power pins
语句声明哪些引脚连接到电源或地;该语句在可执行测试中是可选的。
您可以使用default device
语句来声明针对引脚导向的可执行测试的设备;但不能用于库测试。引脚导向的测试是指声明与引脚而非节点的连接的测试。
如果在模拟功能测试中不包含default device
语句,设备ID将从测试文件名中获取。如果在混合测试中不包含default device
语句,设备ID将从测试目录名中获取。
如果您不使用default device
语句且设备与测试名不同,则必须指定设备以及连接的引脚。请参见以下示例:
示例4-4
此测试使用default device
语句:
default device "u1"clear connect s to pins 1connect i to pins 2; l to "GND"source dcv, amplitude 5, icompliance 1detector dcv, expect .2measure .2, -.2end test
此测试为每个连接指定设备和引脚:
test powered analogclear connect s to device u1 pins 1connect i device u1 pins 2; 1 to "GND"source dcv, amplitude 5, icompliance 1detector dcv, expect .2measure .2, ‑.2end test
设置源
在模拟功能测试中使用源之前,使用 source
语句来设置源。
通过在 source
语句中包含 on
选项,可以立即打开源。源也可以通过 initiate
语句打开。
当您指定一个交流源(正弦、方波或三角波)并包含 digital
选项时,源会立即设置为直流偏移值;除非通过 on
选项打开源,或直到源被初始化,否则不会出现交流信号。如果您没有指定直流偏移,系统会使用零伏的偏移。
如果您使用带直流偏移的交流源和 DCV 检测器,请先设置检测器。否则,源只会设置为直流偏移;交流信号不会出现。
您可以通过 source
语句设置电流限制。指定:
-
0 表示低电流限制(约30 mA)
-
1 表示高电流限制(约150 mA)
默认电流限制为1(辅助直流源为0)。
您不能数字触发直流源。
本节内容包括:
-
创建差分源
-
使用任意波形发生器
创建差分源
由于两个直流源(dcv 和辅助源)的低端总是连接到地(参见表4-5),您无法通过任一源提供差分电压。但您可以一起使用两个源来提供差分电压。
图4-2展示了如何在两个点之间提供差分电压。主源连接到一个点并设置为 5 伏,辅助源连接到另一个点并设置为 2 伏。两个点之间的差分电压是 3 伏,即两个源之间的差值。请注意,差分电压是相对于地的;它不是浮动的。
施加差分源
示例中产生差分源所需的语句可能如下所示:
connect s to "Node_1"
connect a to "Node_2"source dcv, amplitude 5, icompliance 0, offset 0
auxiliary dcv, amplitude 2, icompliance 0
使用任意波形发生器
使用任意波形发生器源(ARB)来对被测设备或电路施加除正弦、方波或三角波以外的波形。通过 source (ANALOG)
语句设置 ARB 源,并在数组或模拟数据块中定义波形的电压值(样本)。
请记住,数据块在模拟测试中是自动全局的,即无需声明为全局就可以在测试层次和子测试层次中使用。然而,数值数组必须声明为全局才能在测试和子测试级别中使用。
使用 source
语句来指定 ARB 源和适当的选项。ARB 源的选项如表4-7所示。
表4-7
ARB 源语句的选项
选项 | 描述 |
---|---|
digital | 设置源以接收数字触发。 |
icompliance | 指定电流限制。 |
on | 立即打开源。 |
samples <值> | 指定数组或数据块中的样本数量。如果未使用单步选项,该值可以是1024或4096。如果使用单步选项,该值可以是从1到1024(样本数必须与数字触发次数匹配)。不论哪种情况,如果没有包含该值,源假定为1024个样本。 |
repetition <值> | 指定整个波形每秒重复的次数(频率,赫兹)。对于由1024个样本组成的波形,该值可以从1到32768。对于由4096个样本组成的波形,该值可以从1到8192。不论哪种情况,如果没有包含该值,源假定为512次重复。输出由具有120KHz 3db带宽的两极滤波器控制。此选项不能与单步选项同时使用。 |
terminated <值> | 指定与源串联的电阻器值(单位为欧姆)。该值可以是5、50、500或5K。如果未指定值,则为50。 |
single step | 指示 ARB 源逐步穿过电压样本。源每次接收到一个数字触发时,都会对下一个值进行采样。样本数量必须与数字触发的数量匹配。此选项需要 digital 选项。 |
voltages <数据ID> | 指定包含电压样本的数组或模拟数据块。如果电压样本在数组中,<数据ID> 是标识数组的标签。如果电压样本在模拟数据块中,<数据ID> 是标识数据块的字符串表达式。 |
如果使用数组定义波形,它必须是一维数字数组。数组最多可以有32767个元素。
定义数组时,请注意如果只指定数组的长度而不指定起始编号,起始编号为0。例如:
dim Waveform (100)
定义了一个从0开始有101个元素的数组。
数组可以在 BT-Basic 中定义,并传递给模拟测试,如示例4-5所示。
示例4-5
测试计划:
dim WaveForm (1:1024)test "Ana_Func_Test"; WaveForm (*)
模拟测试:
test powered analog; WaveForm (*)...end test
或者,数组可以在模拟测试中定义。数组和模拟数据块必须在 test powered
语句之后立即定义,如示例4-6所示。
示例4-6
测试计划:
test powered analogdim WaveForm (1:1024)...end test
模拟测试:
test powered analogdatavalues 0.0, 0.5, 1.0, 1.5...end data...end test
如果数组包含的样本少于 source
语句中 samples
选项指定的数量,源将假定其余样本为0。如果数组包含的样本多于 samples
选项中指定的数量,多余的值将被忽略。
如果使用模拟数据块定义波形,它必须在 test powered
语句之后立即在模拟测试中定义。模拟数据块通过 data
、end data
和 values
语句定义。
数据块中的电压值(样本)范围可以从 -10.0 到 10.0。
模拟数据块必须包含与 source
语句中指定的样本数量相同的样本。请参见示例4-7。
示例4-7
源语句示例
test powered analogdata "WaveForm"values 0.0, 0.5, 1.0, 1.5, 2.0, 2.5. . .values 0.0, -0.5, -1.0, -1.5, -2.0, -2.5end dataconnect s to "Node_1"connect i to "Node_2"; l to "Node_3"source arb, samples 1024, repetition 512, voltages "WaveForm", on. . .end test
创建包含电压样本的数据块或数组有三种方法:
-
手动输入数据。
-
编写 BT-Basic 程序创建值,然后手动编辑文件使其符合数据、
values
和end data
语句的正确格式。例如:
assign @Wave to "wave_data"D=-.01for I = 1 to 250A=D+.01B=A+.01C=B+.01D=C+.01output @Wave;A, B, C, D
next IA=0 | B=0 | C=0 | D=0for L = 1 to 6output @Wave;A, B, C, D
next Lassign @Wave to *
以下文件段表示上述程序生成的文件。该文件包含一个周期的斜坡波形,其中有1000个从0到10的数据点。最后的24个数据点为0。
0 .01 .02 .03
.04 .05 .06 .07
. . .
9.97 9.98 9.99 10
. . .
0 0 0 0
现在编辑文件,添加数据块语句和值之间的逗号(,)。然后将文件合并到模拟测试文件中。例如:
data "WaveForm"values 0, .01, .02, .03values .04, .05, .06, .07. . .values 9.97, 9.98, 9.99, 10. . .values 0, 0, 0, 0end data
- 使用外部程序或仪器。
示例4-8包含一个使用 ARB 应用由模拟数据块 “WaveForm” 指定的波形的模拟测试示例。measure
语句将结果存储在称为 Results 的数组中,并将结果与包含高限和低限的数据块进行比较。
示例4-8
ARB 应用由模拟数据块指定的波形的示例
test powered analogdata "WaveForm" ! 包含1024个values 0.0, 0.5, 1.0, 1.5, 2.0, 2.5 ! 定义波形的值的数据块。...end datadata "HiLimits" ! 包含1024个values 0.5, 1.0, 1.5, 2.0, 2.5, 3.0 ! 定义高限的值的数据块。...end datadata "LoLimits" ! 包含1024个values -0.5, 0.0, 0.5, 1.0, 1.5, 2.0 ! 定义低限的值的数据块。...end datadim Results (1024) ! 为结果设置数组的维度。connect s to "Node_1"connect i to "Node_2"; l to "Node_3"source arb, samples 1024, repetition 1, voltages "Waveform", ondetector digitizer, expect 4.5, rising 0.2, interval 100u, samples 1024measure "HiLimits", "LoLimits", Results(*)end test
设置检测器
在模拟功能测试中使用检测器之前,使用 detector
语句来设置检测器。
设置完成后,initiate
、arm
或 measure
语句会指示检测器进行测量。一旦启动,测试不会继续,直到检测器收到触发信号或测试超时。
如果将 measure
语句的高限和低限设置为 0,0,测试总是通过,并且不会生成数据记录或调试信息。
一次只能有一个检测器处于活动状态。如果在设置下一个检测器之前没有处理每次测量的结果,结果将会丢失。
使用 expect
选项来设置检测器的范围。为避免耗时的自动量程,将 expect
值设置为测试的高限。对于输入电压相对于系统地超过10伏的差分测量,将 expect
值设置为以下两者之一的较大者:
-
相对于系统地的预期值
-
输入电压相对于系统地的值
对于 dcv
和 digitizer
检测器,expect
值的范围是 -160 至 +160 伏。对于所有其他检测器,expect
值的范围是 0 到 112 伏。
acv
检测器执行 8000 个样本,用于计算 rms 电压值。为了更快的测试,可以通过在 detector
语句中包含 fast
选项来指示 acv
检测器仅执行 1000 个样本。
为脉冲和频率检测器指定门限。门限值为:
-
0 指定短门限 (750µS)
-
1 指定长门限 (150mS)
除非为频率、上升/下降脉冲和间隔检测器指定阈值,否则系统使用 1.4 伏的阈值。不能为高速检测器(rcvc
总线)指定阈值;它固定在 TTL 水平。
频率、脉冲和间隔检测器的超时时间为 150 毫秒。如果您的测量需要更多时间,必须使用 detector
语句的 timeout
选项指定更长的超时。
不要同时使用 average
和 digital
选项。
请参阅使用数字化检测器部分。
使用数字化检测器
使用数字化检测器对输入信号或波形进行多次测量。您可以通过 detector (ANALOG)
语句设置数字化源,并在模拟数据块或一维数字数组中定义多个测试限值。
请记住,数据块在模拟测试中是自动全局的,即无需声明为全局就可以在测试层次和子测试层次中使用。然而,数值数组必须声明为全局才能在测试和子测试级别中使用。
可以使用 measure (ANALOG)
语句执行多次测量,将测量结果与测试限值数据块或数组进行比较,并选择性地将结果保存到数组中。
如果需要在与限值比较之前对结果进行特殊处理,可以用 initiate detector
、fetch
和 report analog
语句的特殊版本替代 measure
语句。
使用 detector
语句指定数字化检测器和适当的选项。数字化检测器的选项如表4-8所述。
表4-8
数字化检测器语句的选项
选项 | 描述 |
---|---|
digital | 将检测器设置为接收数字触发。 |
expect <值> | 设置检测器的最大预期电压范围。数字化检测器不支持自动量程,因此 expect 是强制性的,正确设置<值>非常重要。 |
falling <值> | 指定当测量波形处于下降沿并且穿过以伏特指定的<值>时触发数字化检测器。<值>可以在 -100 到 100 之间。该 falling <值> 选项有 5 秒超时,不能与单步选项同时使用。 |
interval <值> | 指定数字化检测器的电压样本之间的时间间隔(以秒为单位)。<值>可以在 25u 到 31.2m 之间。如果没有指定间隔值,数字化检测器每 100u 秒对波形进行一次采样。该 interval <值> 选项不能与单步选项同时使用。间隔乘以样本数必须小于或等于 10 秒。 |
rising <值> | 指定当测量波形处于上升沿并且穿过以伏特指定的<值>时触发数字化检测器。<值>可以在 -100 到 100 之间。该 rising <值> 选项有 5 秒超时,不能与单步选项同时使用。 |
samples <值> | 指定要测量的样本数。该值可以在 1 到 8192 之间。如果没有指定值,检测器会取得 1024 个样本。样本数乘以间隔时间必须小于或等于 10 秒。 |
single step | 指示数字化检测器每接收到一个数字触发时取一个样本。单步选项需要包含数字选项。单步选项不能与下降、上升或间隔选项同时使用。 |
timeout <值> | 对于数字化检测器,timeout <值> 选项指定在超时前等待测量完成的最小时间(以秒为单位)。<值>可以在 0 到 4260 之间。如果没有指定 timeout <值> ,数字化检测器会等待 1 秒以完成测量,然后超时。 |
使用数字化检测器进行多次测量有两种方法:
-
您可以使用
measure
语句来启动检测器、收集结果并与测试限值进行比较。您还可以选择将结果保存到数组中。 -
您可以使用
initiate detector
语句启动检测器,使用fetch
语句收集结果并将其保存到数组中,并使用report analog
语句的特殊版本与测试限值进行比较。
对于这两种情况,您可以为测试限值创建模拟数据块或一维数组。有关使用数组和模拟数据块的信息,请参见使用任意波形发生器。
示例4-9展示了一个使用数字化检测器和 measure
语句的模拟测试。ARB 设置为应用由模拟数据块 “WaveForm” 指定的波形。
measure
语句将结果存储在一个名为 Results 的数组中,并将结果与包含高限和低限的数据块进行比较。
示例4-9
使用 measure
语句的数字化检测器示例
test powered analogdata "WaveForm" ! 包含1024个values 0.0, 0.5, 1.0, 1.5, 2.0, 2.5 ! 定义波形的值的数据块。...end datadata "HiLimits" ! 包含1024个values 0.5, 1.0, 1.5, 2.0, 2.5, 3.0 ! 定义高限的值的数据块。...end datadata "LoLimits" ! 包含1024个values -0.5, 0.0, 0.5, 1.0, 1.5, 2.0 ! 定义低限的值的数据块。...end datadim Results(1024) ! 为结果设置数组的维度。connect s to "Node_1"connect i to "Node_2"; l to "Node_3"source arb, samples 1024, repetition 1, voltages "Waveform", ondetector digitizer, expect 4.5, rising 0.2, interval 100u, samples 1024measure "HiLimits", "LoLimits", Results(*)end test
示例4-10展示了一个使用 initiate detector
、fetch
和 report analog
语句代替 measure
语句的测试。
示例4-10
使用 initiate detector
、fetch
和 report analog
的数字化检测器示例
test powered analogdata "WaveForm"values 0.0, 0.5, 1.0, 1.5, 2.0, 2.5...end datadata "HiLimits"values 0.5, 1.0, 1.5, 2.0, 2.5, 3.0...end datadata "LoLimits"values -0.5, 0.0, 0.5, 1.0, 1.5, 2.0...end datadim Results(1024)connect s to "Node_1"connect i to "Node_2"; l to "Node_3"source arb, samples 1024, repetition 512, voltages "Waveform", ondetector digitizer, expect 4.5, rising 0.2, interval 100u, samples 1024initiate detectorfetch Results(*)report multiple "HiLimits", "LoLimits", Results(*)end test
模拟功能测试中的触发
您可以通过使用触发语句的 trigger analog from rcva
格式从被测设备控制模拟测试的时序。测试必须将 rcva 总线连接到指定节点,触发器必须通过 arm
语句启动,wait for trigger
语句使测试等待 rcva 信号的下降沿。
trigger analog from rcvaarm triggerwait for trigger 5
您可以设置系统和外部仪器之间的源和检测器的交叉触发。可以使用交叉触发来减少设备过驱的时间。
使用 initiate
语句来打开源、指示检测器进行测量以及发送触发脉冲。源、检测器和触发器必须事先已设置好。
initiate source initiate auxiliaryinitiate detector initiate trigger
使用 trigger
语句在模拟测试和外部仪器之间设置触发。
外部仪器必须在配置文件中声明。
trigger <instrument name> from analogtrigger analog from <instrument name>
您还可以使用 trigger
语句来设置并向外部仪器发送触发脉冲。
trigger <instrument name>
这与执行以下两个语句相同:
-
trigger <instrument name> from analog
-
initiate trigger