验证工程师、生产测试工程师和系统集成商经常负责开发自动化测试设备(ATE)系统,该系统被广泛应用于各种半导体器件的测试,如晶体管、二极管、MOSFET和ASIC等。
自动化测试有助于识别缺陷、验证器件性能并确保元件质量——尤其是在半导体、航空航天和国防等对可靠性要求极高的行业中。
MP5000系列是Tektronix推出的模块化ATE系统,目前配备有直流电源(DC Power Supply)和源测量单元(SMU)模块。这些模块可自由组合,以满足各种测试应用需求。与Keithley 26xx系列源测量单元(SMU)类似,MP5000系列主机与模块支持 TSP(Test Script Processor)命令集。
TSP是一种灵活的软硬件架构,允许基于消息的编程。它类似于SCPI,但增加了更强的控制能力,用于测试顺序/流程控制、逻辑决策以及仪器的自主运行。启用TSP的仪器可以像传统的SCPI仪器一样运行,通过响应由PC发送的一系列命令完成控制。
在本指南中,我们将介绍以下内容:
■1. 熟悉仪器的TSP命令集
■2. 如何进行命令序列化
■3. 构建测试流程
■4. 将测试集成到您的测试环境中
学习TSP命令
在实现MP5000系列自动化之前,首先要熟悉仪器及其TSP命令集。
TSP命令集是一组预定义的函数与属性,用于控制仪器操作。它们的功能类似于某些仪器中使用的SCPI命令。与SCPI一样,TSP命令也可分为多个类别,但并非所有类别都适用于所有仪器。以下示例展示了传统SCPI命令与TSP命令在语法上的区别(以2461型SMU为例):
| SCPI示例 | TSP示例 |
| *RST | reset() |
| SOURce: FUNCtion VOLTage | smu. source. func = smu. FUNC_DC_VOLTAGE |
用于控制MP5000系列的TSP命令可在《MP5000系列编程手册》中找到。MP5000系列的命令结构要求用户在命令中明确指定目标仪器在MP5103主机中的槽位(slot)和通道(channel)。
TSP MSMU60-2示例
reset()
slot[1]. smu[2]. source. func = slot[1]. smu[2]. FUNC _ DC _ VOLTAGE
这些命令可以通过别名(aliasing)进行缩写,以提高速度与可读性。别名是一个包含命令表结构中部分路径的变量。通过创建别名,可以根据应用需求简化并自定义TSP命令。
别名示例
gateSMU = slot[1].smu[2]
gateSMU. source. func = gateSMU. FUNC _ DC _ VOLTAGE
命令顺序化
自动化新的MP5000模块化精密测试系统的第一步,是通过将一系列TSP命令按顺序组合,来创建一个简单的测试程序。这可以通过任何程序或语言逐条发送TSP命令来实现,方式与使用SCPI命令类似。常用的编程语言包括Python和C#。
首先,需要与仪器建立通信连接。这可以通过VISA实现,如下Python示例所示:
import pyvisa
rm = pyvisa.ResourceManager()
inst = rm. open _ resource ('TCPIP0 :: 192. 168. 0. 2 :: hislip0 :: INSTR')
接下来,发送必要的命令以配置测试设置。在设置完参数后,可以开启仪器输出,并通过编程逻辑实现所需的测试行为。
下面的Python示例展示了如何向MP5000 MSMU60-2发送TSP命令以执行一个简单的电流扫描(Current Sweep):
inst.write('reset()')
#SourceSettings
inst.write('slot[1].smu[2].source.func = slot[1]. smu[2]. FUNC_DC_CURRENT')
inst.write('slot[1].smu[2].source.rangei = 1000e-3')
inst.write('slot[1].smu[2].source.leveli = 0')
inst.write('slot[1].smu[2].source.limitv = 6')
#MeasureSettings
inst.write('slot[1].smu[2].measure.rangev = 6')
inst.write('slot[1].smu[2].measure.rangei = 1000e-3')
inst.write('slot[1].smu[2].measure.nplc = 1')
inst.write('slot[1].smu[2].measure.autorangei = 1')
#SenseMode
inst.write('slot[1].smu[2].sense = slot[1]. smu[2]. SENSE _ 2WIRE')
#Calculatestop current / (number of sweep points -1)
delta=300e-3/ (31-1)
#TurnOutput On
inst.write('slot[1].smu[2].source.output = 1')
inst.write('reset()')
#foreach sweep point, calculate the source level and then take an iv
Measurement
For j inrange(1, 31):
inst.write('slot[1].smu[2].source.leveli ='str((j-1) * delta))
inst.write('slot[1].smu[2].measure.iv(slot[1].smu[2].defbuffer1,
slot[1].smu[2].defbuffer2)')
#TurnOutput Off
inst.write('slot[1].smu[2].source.output = 1')
对于希望在编程中进一步抽象化TSP命令或需要使用多种仪器的用户而言,驱动程序能显著简化代码编写过程。Tektronix为MP5000提供了Python驱动程序和IVI驱动程序,这些驱动程序可在任意IDE或代码编辑器(如Visual Studio Code)中使用。
Tektronix Python驱动库:tm_devices
tm_devices是Tektronix提供的设备管理包,包含大量命令与函数,可帮助用户轻松通过Python自动化控制Tektronix各类仪器。它支持代码自动补全功能,使具有不同软件经验水平的工程师都能轻松实现测试自动化。安装非常简单,可通过Python的包管理系统pip完成:
pip install tm_devices
以下为使用tm_devices Python驱动自动化控制MP5000 MPSU50-2ST的示例:
From typing importcast, TYPE_CHECKING
From tm_devices import DeviceManager
From tm_devices.drivers import MP5103
If TYPE_CHECKING:
From tm_devices.commands import PSU50STCommands
With DeviceManager(verbose=True) as device _ manager:
# Add a mainframe to the device manager and access its commands.
mainframe: MP5103 =device_manager.add_mf("0.0.0.0")
# Some examples demonstrating the usage of mainframe level commands.
mf_model=mainframe.commands.localnode.model
value=mainframe.commands.eventlog.count
# Get access to the psu module command object available in third slot of
the mainframe.
modular_psu=cast("PSU50STCommands",
mainframe.get_module_commands_psu(slot=3))
# Some examples demonstrating the usage of module level commands.
# Get the psu model and version
psu_model=modular_psu.model
psu_version=modular_psu.version
modular_psu.firmware.verify()
# Some examples demonstrating the usage of channel level commands.
# Set the measurement aperture in seconds
modular_psu.psu[1].measure.count=5
# Enable the source output
modular_psu.psu[2].source.output=1
# Set the offset value used for voltage measurements
rel_value=modular_psu.psu[1].measure.rel.levelv
# Create a reference to the default buffer
my_buffer=modular_psu.psu[1].defbuffer1
# Read the value in the specified reading buffer
# Measure the voltage on channel 1 of the PSU
voltage_value=modular_psu.psu[1].measure.v()
构建测试
在使用MP5000进行测试开发时,有两种选择:
■传统测试开发—— 由PC软件控制测试执行;
■完全利用TSP—— 同时作为命令集和编程语言,通过编写TSP脚本实现。
脚本是TSP的核心功能之一,它允许用户在无需外部计算机处理的情况下,直接自动控制仪器,类似于嵌入式设备的脚本执行方式。TSP脚本可完成多种复杂任务,例如:根据最近一次测量动态调整源输出值;在多台仪器间同步触发扫描;或执行简单任务,如对缓冲区读数应用数学公式。通过脚本,仪器成为一个功能强大的“边缘计算解决方案”,可即时做出决策,减少通信开销并简化数据分析。

图1:传统PC测试开发与在仪器上运行的TSP脚本的可视化对比
TSP脚本可使用文本编辑器编写,也可通过Tektronix提供的TSP Toolkit(Visual Studio Code扩展)实现。该扩展为开发者提供了:
■语法高亮
■内联命令提示与自动补全
■完整调试器
■其他丰富功能,显著提升TSP脚本开发体验。
TSP脚本可以保存到MP5000系列仪器中在本地运行,也可以通过TSP Toolkit终端以Sockets或VISA连接方式从外部运行。

图2: 在TSP Toolkit终端中运行的TSP脚本、函数调用及命令
关于TSP脚本的重要规则
■每个脚本必须具有唯一名称,且名称不能以数字开头。
■脚本名称不能包含空格。
■脚本名称必须保持唯一。
若加载一个与现有脚本同名的新脚本,系统将生成错误事件信息。
用户必须在创建同名新脚本之前删除原有脚本。
■ 若对现有脚本进行修改并以新名称保存,则原始脚本仍会以旧名称保留在仪器中。
■用户可将脚本保存到仪器的非易失性存储器中。
将脚本保存到非易失性存储器可确保仪器在断电后不会丢失脚本。
以下是一个简单的TSP脚本示例
使用MP5000 MSMU60-2模块执行一个基本的电流扫描(Current Sweep):
reset()
-- Source Settings
slot[1].smu[2].source.func=slot[1].smu[2].FUNC_DC_CURRENT
slot[1].smu[2].source.rangei=1000e-3
slot[1].smu[2].source.leveli=0
slot[1].smu[2].source.limitv=6
-- Measure Settings
slot[1].smu[2].measure.rangev=6
slot[1].smu[2].measure.rangei=1000e-3
slot[1].smu[2].measure.nplc=1
slot[1].smu[2].measure.autorangei=1
--Sense Mode
slot[1].smu[2].sense=slot[1].smu[2].SENSE_2WIRE
--Calculate stop current / (number of sweep points -1)
localdelta=300e-3/ (31-1)
--Turn Output On
slot[1].smu[2].source.output=1
--for each sweep point, calculate the source level and then take an iv
Measurement
forj=1, 31 , 1do
slot[1].smu[2].source.leveli= ((j-1) *delta)
slot[1].smu[2].measure.iv(slot[1].smu[2].defbuffer1,
slot[1].smu[2].defbuffer2)
end
TSP命令可以组合在一起,并与其他编程逻辑结合,创建一个函数(function)。
这类函数即称为脚本(script),仪器可将其解释为一个单独的TSP命令来执行。
将测试集成到测试环境中
可以使用Python或其他编程语言来调用TSP脚本。这种能力意味着用户可以复用部分或全部现有的编程代码,无需完全重构代码库,同时利用TSP提供的更高吞吐量、更好的同步性与触发控制。TSP脚本使用TSP Toolkit编写和调试非常方便,而测试框架的其余部分可通过相应的VS Code扩展轻松编辑,以提升开发效率。
一个加载到仪器内存中的TSP脚本可以通过一行Python代码执行:
import pyvisa
rm = pyvisa.ResourceManager()
inst = rm.open_resource('TCPIP0::INSTR')
inst.write('SimpleIVTest()')
另一个需要考虑的方面是如何从仪器中获取数据。用户可以使用TSP命令直接在TSP Toolkit终端中打印缓冲数据:
--for each sweep point, calculate the source level, take an iv measurement, and then print the values to the terminal
print("Current Voltage")
for j = 1, 31 , 1 do
slot[1].smu[2].source.leveli = 0 + ((j-1) * delta)
slot[1].smu[2].measure.iv(slot[1].smu[2].defbuffer1,
slot[1].smu[2].defbuffer2)
print(slot[1].smu[2].defbuffer1[j],slot[1].smu[2].defbuffer2[j])
end
这些命令同样可以在Python中执行,以实现相同的功能。
#foreach sweep point, calculate the source level, take an iv measurement, and then print the values to the terminal
print("Current Voltage")
for j in range(1, 31):
inst.write('slot[1].smu[2].source.leveli =' str((j-1) * delta))
inst.write('slot[1].smu[2].measure.iv(slot[1].smu[2].defbuffer1,
slot[1].smu[2].defbuffer2)')
inst.query('print(slot[1].smu[2].defbuffer1[j],slot[1].smu[2].defbuffer2[j])')
|结论|
MP5000模块化精密测试系统(MP5000 Modular Precision Test System)结合TSP脚本的灵活性与驱动程序支持,为工程师提供了一个功能强大且可扩展的平台,用于自动化测试开发。通过学习TSP命令结构、编排命令序列、构建可复用脚本,并将其集成到现有测试环境中,用户可以:
■优化测试流程;
■减少通信开销;
■实现更快、更可靠的测试结果。
无论是利用Python驱动实现简洁控制,还是全面采用嵌入式TSP脚本实现高效率执行,MP5000都能帮助工程师构建高效、灵活、并面向未来的自动化测试解决方案,以支持广泛的半导体和电子器件验证需求。
我们提供专业的测量洞见信息,旨在帮助您提高绩效以及将各种可能性转化为现实。
泰克设计和制造能够帮助您测试和测量各种解决方案,从而突破复杂性的层层壁垒,加快您的全局创新步伐。我们携手共进,一定能够帮助各级工程师更方便、更快速、更准确地创造和实现技术进步。
我们隶属于锐联特(Ralliant)公司。锐联特在精密技术领域拥有值得信赖的测试与测量(Test and Measurement)、传感器与安全系统(Sensors and Safety Systems)等行业标杆品牌,汇聚全球精英团队,共同护航客户关键应用,携手缔造未来科技图景。
-
Tektronix
+关注
关注
1文章
61浏览量
29768 -
python
+关注
关注
57文章
4856浏览量
89548 -
TSP
+关注
关注
1文章
26浏览量
17394 -
自动化测试系统
+关注
关注
0文章
21浏览量
9086 -
泰克科技
+关注
关注
2文章
216浏览量
20465
原文标题:从Python到TSP:快速上手MP5000自动化测试系统
文章出处:【微信号:泰克科技,微信公众号:泰克科技】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
泰克MP5000系列的TSP Toolkit I-V脚本生成功能
构建高效自动化测试系统:盛铂科技功率计的程控与集成之道
从设计到落地,音圈执行器如何适配你的自动化需求?
泰克MP5000系列模块化精密测试系统, 重新定义自动化测试
重磅发布 | 泰克(Tektronix)推出全新7系列DPO示波器与MP5000系列模块化精密测试
泰克科技推出全新7系列DPO示波器与MP5000系列模块化精密测试系统
EasyGo TestSim:新能源电力系统自动化测试的利器
如何用Renix实现网络测试自动化: 从配置分离到多厂商设备支持
干货分享 | TSMaster MBD模块全解析:从模型搭建到自动化测试的完整实践
通用自动化测试软件 - TAE

从Python到TSP:快速上手MP5000自动化测试系统
评论