You are on page 1of 6

Creating the Test Program File

Initialize_tester() function:
Called once. Define the mapping of the device-pin to tester-pin. Define testing pattern
Testing can be done simultaneously upto 8 channels, each located in different area in the test
board. Called multisite test. Defined here.

Test_device() function:
The test procedure
Shutdown_device() fuction:
Remove power for safety shutdown of test equipment
Summary() function:
Display results
Some frequent used commands:
Make_pin("D1","i",1,193)
(Name of DUT pin, type of pin, DUT pin number, board reference number)
Make_pinlist(all_pin, D1 D2 D3 D4);
Where all_pin is defined as:
PINLIST *all_pin;

* This test program incorporates parallel PMU testing on one device */


#include box.h
#include base_pin_incl.h
PINLIST *allq;
PINLIST *short_allq;
PINLIST *allpins;
PARALLEL_PINLIST par_allq; /* parallel pinlist struct */
/* for allq */
PARALLEL_PINLIST par_short_allq; /* parallel pinlist struct for */
/* short_allq */
/* tester setup and pin initialization */
void initialize_tester()
{
/* create bin information for summary report */
/* function soft hard bin wafer pass or */
/* call bin bin wafer code fail bin? */
make_bin( 0, 1, good_dut, j, PASS);
/*soft bin (represent a level of performance or
failure), hard bin (actual lab bin), description, bin display (show at test result), passor fail */
make_bin( 1, 12, shortq, j, FAIL);
make_bin( 3, 3, allq, j, FAIL);
make_bin( 4, 3, norm, j, FAIL);
/* Load pattern and make pinlist */
pat_load(ppexample.pat, 0,NULL, ALL_SITES); /*load pattern file, start from location 0,
pinlist, multisite test, how to write pattern file?*/
make_pin(q1, i , 1);
make_pin(q2, i , 2);

make_pin(q9, i , 9);
make_pin(q10, i , 10);
make_pin(q19, i , 19);
make_pin(q20, i , 20);
make_pin(q23, i , 23);
make_pin(q32, i , 32);
make_pin(t27, i , 27);
MAKE_PINLIST(allq, q1 q2 q9 q10 q19 q20 q23 q32);
MAKE_PINLIST(short_allq, q1 q2 q20 t27);
MAKE_PINLIST(allpins, q1 q2 q9 q10 q19 q20 q23 q32 t27);
/* The next two calls create parallel pinlists out of the pinlists*/
/* allq and short_allq, and writes these pinlists to the structs */
/* par_allq and par_short_allq. */
create_parallel_pinlist(allq,&par_allq);
create_parallel_pinlist(short_allq,&par_short_allq);
}
/* Begin test device */
void test_device()
{
int s ;
/* initialize the bin to a pass1 */
set_bin(bin_name(good_dut), UNUSED);
/* connect all the IO reeds */
close_io_relays(allq); /*connect the DUT pins in allq pinlist to the test board*/
/* Setup Timing */

set_cycle_length(0, 100.0*NANO, NULL);


set_inhibit_edges(allpins, FON, UNUSED, NOCHANGE, NOCHANGE);
set_force_edges(allpins, DNRZ, 0, 0.0, 0.0);
set_force_levels(allpins, DRIVER_RAIL1, 0.9, 4.0);
func_seq(0, 8 ); /* run functional test from vector 0 to 8 */
/* Voh Test1 */
test_name(allq);
set_pmu_measure_v(allq, 0.0, NOCHANGE, NOCHANGE, NOCHANGE);
/* loop through all parallel pinlists */
for( s = 0; s < par_allq.nrpinl; s++)
{
if( pmu_test(par_allq.pinl[s], 0.2, 5.0, TRUE) == FAIL)
{
set_bin(bin_name(allq), UNUSED);
update_bin_counters();
shutdown_device();
return;
}
}
/* Voh Test2 */
test_name(short_allq);
for( s = 0; s < par_short_allq.nrpinl; s++)
{
if( pmu_test(par_short_allq.pinl[s],0.2,5.0,TRUE)== FAIL)
{

set_bin(bin_name(shortq), UNUSED);
update_bin_counters();
shutdown_device();
return;
}
}
unset_pmu_mode(allq );
}

You might also like