#include "asl.h"
#pragma warning (disable:4244)
#include "Vio_2.h"
void Vio_2_user_init(test_function&func)
{
ours=(Vio_2_params*)func.params;
}
void Vio_2(test_function&func)
{
Vio_2_params *ours;
ours=(Vio_2_params*)func.params;
float measured_V,Vadj,V,Vio;
int i;
board_hardware_init();
oal_8->open_relay(HV_BUF_CONN);
oal_8->open_relay(LOAD_REF_GND);
oal_8->close_relay(CONNECT_LOADS);
oal_8->close_relay(LOAD_REF_EXT);
oal_8->close_relay(LOAD_600);
dvi_9->set_current(DVI_CHANNEL_0,0.2);
dvi_11->set_current(DVI_CHANNEL_0,0.2);
dvi_9->set_voltage(DVI_CHANNEL_0,15); //VCC
dvi_11->set_voltage(DVI_CHANNEL_0, -15); //GND
delay(1);
oal_8->close_relay(DUT_OUT_OUT);
dvi_9->set_voltage_range(DVI_CHANNEL_1,POSITIVE_V_OUT,VOLT_20_RANGE, FAST_VOLTAGE_MODE); //set measure range
dvi_9->set_current(DVI_CHANNEL_1,1.0e-6);
dvi_9->set_meas_mode(DVI_CHANNEL_1,DVI_MEASURE_VOLTAGE);
func.dlog->power=POWER_MILLI;
Vadj=0.0;
V=0.0120;
for(i=0; i<40; i++)
{
Vadj=Vadj/3-3.0e-4;
dvi_11->set_voltage(DVI_CHANNEL_1,V);
dvi_11->set_current(DVI_CHANNEL_1,1.0e-3);
delay(1);
measured_V=dvi_9->measure();
if (measured_V>1.4000) V=V+Vadj;
else i=40;
}
if ((Vio==0.0120)||(measured_V>1.4000)) Vio=0.9999999;
else Vio=V;
do_dlog(func,0,Vio,ours->fail_bin,"");
board_hardware_init();
}
上述電壓比較器VIO的開環(huán)測試,實現(xiàn)了由間接測試向直接測試的轉(zhuǎn)化,適當(dāng)減小步進(jìn)(測試時間延長)可提高測試的分辨率,但卻將ASL-1000配置中所有的Force和Measure資源全部用完,因而在測試雙比較器和四比較器時,將器件所有輸入和輸出端接至mux_20,通過ASL-1000的內(nèi)部繼電器矩陣切換,完成了各通道的串行測試。
評論