V93K FlexDC API是用于在V93K测试平台上生成直流(DC)测试程序的接口,以实现高效的并行测试和多站点(multi-site)测量。
本文目录
o Pin Scale测试系统
o SPMU_TASK API
o DPS_TASK API
o FlexDC APIs
1. Pin Scale测试系统
·
"Pin Scale"通常指的是测试机台的引脚数量和处理能力。在V93000 EXA Scale系统中,"Pin Scale 5000数字板卡"以5Gbit/s的速度树立了扫描测试的新标准,提供了市场上最深的矢量存储器,并采用Xtreme Link™技术,实现了业界最快的结果处理。"DPS Scale"则涉及到测试机台的电源供应能力。如DPS64,它提供了64个DPS资源,支持从-2V到+7V的HC电压范围和从-6V到+15V的HV电压范围。
· 当前应用最广泛的Pinscale测试系统中的PMU 有两种, 一种称为PPMU(Per- Pin PMU),包含在每个数字通道内。另一种HPPMU (High Precision PMU,高精度PMU)。
· 每16个管脚为一组pogo。每组pogo共享一个BADC(Built-in Analog-to-Digital Converter),用于将模拟信号转换为数字信号。每8组pogo共享一个高精度测试单元HPPMU,用于高精度的参数测量。
·
2. SPMU_TASK API
1.1 功能描述
SPMU_TASK API是专为高精度电源测量单元(HPPMU)、PMU模式下的DC Scale卡或数字卡上的内置模拟数字转换器(BADC)等Pin进行并行直流测量而设计的。
1.2 API定义位置
此API在头文件 /opt/hp93000/soc/prod_com/include/MAPI/SpmuTask.h 中定义。
1.3 实现方式
SPMU_TASK 类通过以下方式实现并行测量:
· 定义测量条件:用户可以为每个测量任务定义具体的条件,如电压、电流、测量范围等。
· 设置执行模式:通过 execMode() 成员函数设置测量的执行模式,例如,可以设置为立即执行或在特定条件下执行。
· 执行测量:使用 execute() 成员函数启动测量过程。
· 获取结果:测量完成后,可以通过 getValue()、getPassFail() 等函数获取测量结果和通过/失败状态。
1.4 示例代码1
在这个示例中,对引脚 I/O0 执行 SPMU IFVM测试,对引脚 I/O1 执行 SPMU VFIM测试。测量完成后,获取测量的电压值和电流值,并判断和记录通过/失败结果。
SPMU_TASK spmuTask;
ON_FIRST_INVOCATION_BEGIN();
CONNECT();
spmuTask.pin("I/O0").iForce(10 uA).clamp(3.5 V).min(1.5 V).max(3 V).relay("NTMBB");
spmuTask.pin("I/O1").vForce(3 V).clamp(1.5 mA).min(0.5 mA).max(1 mA).relay("NTMBB");
spmuTask.execMode(TM::PVAL).execute();
ON_FIRST_INVOCATION_END();
// 上传结果并记录数据
double vMeas, iMeas;
vMeas = spmuTask.getValue("I/O0");
iMeas = spmuTask.getValue("I/O1");
cout << vMeas << endl;
cout << iMeas << endl;
TEST("I/O0", "simpleSpmu", spmuTask.getPassFail("I/O0") ? TM::Pass : TM::Fail, TRUE);
TEST("I/O1", "simpleSpmu", spmuTask.getPassFail("I/O1") ? TM::Pass : TM::Fail, TRUE);
1.4 示例代码2
在这个示例中,引脚 I/O0 被用作直流源,为连接的DUT引脚提供 10 uA 的电流。
SPMU_TASK spmuTask;
ON_FIRST_INVOCATION_BEGIN();
CONNECT();
// 设置
spmuTask.pin("I/O0").iForce(10 uA).clamp(3.5 V).min(1.5 V).max(3 V).relay("NTMBB");
// 强制施加10uA电流
spmuTask.execMode(TM::FORCE_ON).execute();
ON_FIRST_INVOCATION_END();
1.1 功能描述
DPS_TASK API 提供了一种方法来执行与数字电源系统(Digital Power System,简称 DPS)相关的任务。
1.2 API定义位置
这个 API 在头文件 /opt/hp93000/soc/prod_com/include/MAPI/DpsTask.h 中定义。
1.3 实现方式
· 定义测量条件:为每个 DPS 定义具体的测量条件,如电压、电流、时间等参数。
· 并行执行测量:并行执行使用该类定义的所有测量,以提高测试效率。
· 检索测量结果:在测量完成后,获取和检索测量结果。
· 支持触发和非触发的 DPS 测量:支持根据需要进行触发或非触发的测量,增加了测量的灵活性。
· 支持 DC Scale 引脚的 DPS 模式:支持将 DC Scale 引脚配置为 DPS 模式,以进行更广泛的测量。
1.4 示例代码1
在这个示例中,对引脚 Vcc 和 Vee 执行 DPS 逐引脚值测量。测量完成后,获取测量的电流值,并判断和记录通过/失败结果。
DPS_TASK dpsTask;
ON_FIRST_INVOCATION_BEGIN();
CONNECT();
// 设置测量条件
dpsTask.pin("Vcc").min(0 A).max(0.1 A);
dpsTask.pin("Vee").min(0 A).max(0.2 A);
dpsTask.wait(5 ms);
dpsTask.execMode(TM::PVAL); dpsTask.trigMode(TM::INTERNAL);
// 执行测量
FUNCTIONAL_TEST();
dpsTask.execute();
ON_FIRST_INVOCATION_END();
// 上传结果并记录数据
double IMeas1, IMeas2;
IMeas1 = dpsTask.getValue("Vcc");
IMeas2 = dpsTask.getValue("Vee");
TEST("Vcc,Vee", "Idd_Test", dpsTask.getPassFail() ? TM::Pass : TM::Fail, true);
1.4 示例代码2
在这个示例中,对引脚 Vcc 执行 DPS 逐引脚值测试。测试由外部数字引脚触发。进行了八次测量。每次测量结果都被获取、判断和记录。
DPS_TASK dpsTask;
ARRAY_D valueArrayVcc, valueArrayVdd;
INT i;
static LIMIT limit;
MULTI_LIMITS templ;
ON_FIRST_INVOCATION_BEGIN()
CONNECT();
// 为每次测量创建一个限制
limit.unit("A");
limit.low(TM::GE, -4 uA);
limit.high(TM::LE, 175 uA);
templ.add(limit, 8);
// 确保你的模式发出8次触发,
// 否则你会收到错误消息
dpsTask.pin("Vcc").limits(templ);
dpsTask.trigMode(TM::EXTERNAL).execMode(TM::PVAL);
// 执行主要模式
dpsTask.execute();
ON_FIRST_INVOCATION_END();
// 上传结果并记录数据
valueArrayVcc = dpsTask.getWaveform("Vcc");
for (i = 0; i < valueArrayVdd.size(); i++) {
TEST("Vcc", "extTrigDps", limit, valueArrayVcc[i], TRUE);
}
4. FlexDC APIs
1. FlexDC APIs
· PPMU_SETTING:用于设置 Pin PMU(Pin Parametric Measurement Unit)的参数。
· PPMU_RELAY:用于控制 Pin PMU 的继电器。
· PPMU_MEASURE:用于执行测量操作。
· PPMU_CLAMP:用于设置电压或电流的钳位值。
· TASK_LIST:用于管理和执行一系列任务。
·
2. 示例代码
|