文章目录
- [1. 三温测试程序搭建](#1. 三温测试程序搭建)
-
- [1.1 testprogram](#1.1 testprogram)
- [1.2 DSA](#1.2 DSA)
- [1.3 test table](#1.3 test table)
- [2. 三压测试程序搭建](#2. 三压测试程序搭建)
-
- [2.1 spec](#2.1 spec)
- [2.2 test method](#2.2 test method)
- [2.3 flow](#2.3 flow)

1. 三温测试程序搭建
- 三温:高温(HT):105度,低温(LT):- 40度,常温(NT):25度 。
1.1 testprogram
假设项目名为:MCUProject,在 src/commmon/ 路径下可以建立三个 testprogram 文件代表高温,低温,常温的测试程序,假设命名为testprogram_HT.prog,testprogram_LT.prog,testprogram_NT.prog。
每个 testprogram 包含相同或者不同的 testmethod ,testmethod 中的 setup 函数会产生 *.spec 和 *.seq 文件,所以我们需要将高温,低温,常温产生的 setup 文件分别放到自己的目录下,可以在 三份 testprogram 文件中定义一个 String 变量,分别赋不同的值,如下:
高温 testprogram:
java
//testprogram_HT.prog 文件
@Options(mutable = Anytime)
var String dsa_path = "HT";
低温 testprogram:
java
//testprogram_LT.prog 文件
@Options(mutable = Anytime)
var String dsa_path = "LT";
常温 testprogram:
java
//testprogram_NT.prog 文件
@Options(mutable = Anytime)
var String dsa_path = "NT";
- @Options(mutable = Anytime) 的作用时:这些变量始终是可变的,并且可以在任何测试流程和测试方法中修改。
1.2 DSA
每个 suite 会 calls 一个 testmethod ,testmethod 中的 setup() 方法中生成设备 setup 的类是 IDeviceSetup ,实例化为:
java
IDeviceSetup ds = DeviceSetupFactory.createInstance();
createInstance() 的一种用法是填写两个参数:
- prefix:创建此实例所有生成文件的根目录名称。该根目录在 dsa_gen 目录中生成。
- dsaGenMode:实例中要使用的 DSA 生成模式。
java
public static IDeviceSetup createInstance(String prefix, IDeviceSetup.DSAGenerationMode dsaGenMode);
prefix 这个参数可以填入下面的代码访问得到 testprogram 中变量 dsa_path 的值:
java
context.testProgram().variables().getString("dsa_path").get()
dsaGenMode 这个参数填入下面的代码使 DSA 生成的设置应存储在文件中。
java
DSAGenerationMode.GENERATE_IN_FILE
最后,代码为:
java
IDeviceSetup ds = DeviceSetupFactory.createInstance(context.testProgram().variables().getString("dsa_path").get(), DSAGenerationMode.GENERATE_IN_FILE);
这样 dsa 生成的 setup 文件就会放在这三个目录下:dsa_gen/HT,dsa_gen/LT,dsa_gen/NT,分别代表三温 testprogram 的 setup 文件。
1.3 test table
- 芯片工作环境温度的不同,工作电压和电流会有些许不同,所以需要设置不同的limit,在 test table 中 limit 部分可以如下设置:

PreBind flow 中运行导入 testtable 的函数:
java
com.advantest.itee.testtable.testmethod.TestTableReader
该函数有两个参数可以这么设置:
- testTablePath = "common/TestTable.ods"; test table 的路径。
- limitCategory = testProgramVariables.getString("dsa_path"); 导入哪些测试类别。
通过 给 limitCategory 这个参数赋值:testProgramVariables.getString("dsa_path"),也就是 dsa_path 变量的值,可以让高温 testprogram 依据 高温 limit 进行判断,其他两个温度也是一样的。
2. 三压测试程序搭建
- 三压系数:高压(HV):1.05,低压(LV):0.95,常压(NV):1.0 。
2.1 spec
spec 文件中定义一个电压系数变量,初值设为:1.0 :
java
var Double VoltageCoefficient = 1.0;
-
如果芯片引脚使用的是仪器:dcVI ,那么在 action vforce 动作时,给 forceValue 这个参数赋的电压值乘上电压系数 VoltageCoefficient;
-
如果芯片引脚使用的是仪器:digInOut,那么在 set level 时,给 vil,vih,vt,vth,这些参数赋的电压值乘上电压系数 VoltageCoefficient;
2.2 test method
- 通过 measurement 对象访问 spec 中的变量并重新赋值:
java
public IMeasurement measurement;
- 通过一个 String 变量,接受来自 flow 的字符串来判断是高压,低压,常压修改电压系数:
java
public String setVoltage = ""; //HV, LV, NV
- 在 update() 中通过 measurement 对象更新电压系数:
java
@Override
public void update() {
switch (setVoltage) {
case "HV":
measurement.specVariables().setVariable("VoltageCoefficient", 1.05);
break;
case "LV":
measurement.specVariables().setVariable("VoltageCoefficient", 0.95);
break;
default:
measurement.specVariables().setVariable("VoltageCoefficient", 1.0);
break;
}
}
2.3 flow
- 建立一个 flow 文件顺序执行测试项,通过在 flow 建一个变量:
java
in voltage = ""; //HV, LV, NV
将该变量赋值三压的字符串:"HV", "LV", "NV", 再传递给 suite :
java
setVoltage = voltage;
可实现三压测试。