NAME

Parse::STDF - Module for parsing files in Standard Test Data Format

SYNOPSIS

use Time::localtime;
use Parse::STDF;

my $s = Parse::STDF->new ( "file.stdf" );

while ( $s->get_record() )
{
  if ( $s->recname() eq "MIR" )
  {
    my $mir = $s->mir();
    printf ("Started At: %s\n", ctime($mir->{START_T}) );
    printf ("Station Number: %s\n", $mir->{STAT_NUM} );
    printf ("Station Mode: %s\n", $mir->{MODE_COD} );
    printf ("Retst Code: %s\n", $mir->{RTST_COD} );
    printf ("Lot: %s\n", $mir->{LOT_ID} );
    printf ("Part Type: %s\n", $mir->{PART_TYP} );
    printf ("Node Name: %s\n", $mir->{NODE_NAM} );
    printf ("Tester Type: %s\n", $mir->{TSTR_TYP} );
    printf ("Program: %s\n", $mir->{JOB_NAM} );
    printf ("Version: %s\n", $mir->{JOB_REV} );
    printf ("Sublot: %s\n", $mir->{SBLOT_ID} );
    printf ("Operator: %s\n", $mir->{OPER_NAM} );
    printf ("Executive: %s\n", $mir->{EXEC_TYP} );
    printf ("Test Code: %s\n", $mir->{TEST_COD} );
    printf ("Test Temprature: %s\n", $mir->{TST_TEMP} );
    printf ("Package Type: %s\n", $mir->{PKG_TYP} );
    printf ("Facility ID: %s\n", $mir->{FACIL_ID} );
    printf ("Design Revision: %s\n", $mir->{DSGN_REV} );
    last;
  }
}

DESCRIPTION

Standard Test Data Format (STDF) is a widely used standard file format for semiconductor test information. It is a commonly used format produced by automatic test equipment (ATE) platforms from companies such as LTX-Credence, Roos Instruments, Teradyne, Advantest, and others.

A STDF file is compacted into a binary format according to a well defined specification originally designed by Teradyne. The record layouts, field definitions, and sizes are all described within the specification. Over the years, parser tools have been developed to decode this binary format in several scripting languages, but as of yet nothing has been released to CPAN for Perl.

Parse::STDF is a first attempt. It is an object oriented module containing methods which invoke APIs of an underlying C library called libstdf (see http://freestdf.sourceforge.net/). libstdf performs the grunt work of reading and parsing binary data into STDF records represented as C-structs. These structs are in turn referenced as Perl objects.

METHODS

new

new(stdf)

Create a new stdf object. The object represents a single file which may be in compressed gzip format.

my $s1 = Parse::STDF->new ( "file.stdf" );
my $s2 = Parse::STDF->new ( "file.stdf.gz" );

get_record

get_record()

Reads the next record using the underlying libstdf library. Returns a true/false status.

my $s = Parse::STDF->new ( "file.stdf" );
while ( $s->get_record() ) { ... };

recname

recname()

Returns currently active record name (e.g. "MIR", "FAR", "PCR" etc).

mir

mir()

Returns a hash reference to a MIR record object.

my $mir = $s->mir();
printf("\tSETUP_T: %s\n", ctime($mir->{SETUP_T}));
printf("\tSTART_T: %s\n", ctime($mir->{START_T}));
printf("\tSTAT_NUM: %s\n", $mir->{STAT_NUM});
printf("\tMODE_COD: %s\n", $mir->{MODE_COD});
printf("\tRTST_COD: %s\n", $mir->{RTST_COD});
printf("\tPROT_COD: %s\n", $mir->{PROT_COD});
printf("\tBURN_TIM: %s\n", $mir->{BURN_TIM});
printf("\tCMOD_COD: %s\n", $mir->{CMOD_COD});
printf("\tLOT_ID: %s\n", $mir->{LOT_ID});
printf("\tPART_TYP: %s\n", $mir->{PART_TYP});
printf("\tNODE_NAM: %s\n", $mir->{NODE_NAM});
printf("\tTSTR_TYP: %s\n", $mir->{TSTR_TYP});
printf("\tJOB_NAM: %s\n", $mir->{JOB_NAM});
printf("\tJOB_REV: %s\n", $mir->{JOB_REV});
printf("\tSBLOT_ID: %s\n", $mir->{SBLOT_ID});
printf("\tOPER_NAM: %s\n", $mir->{OPER_NAM});
printf("\tEXEC_TYP: %s\n", $mir->{EXEC_TYP});
printf("\tEXEC_VER: %s\n", $mir->{EXEC_VER});
printf("\tTEST_COD: %s\n", $mir->{TEST_COD});
printf("\tTST_TEMP: %s\n", $mir->{TST_TEMP});
printf("\tUSER_TXT: %s\n", $mir->{USER_TXT});
printf("\tAUX_FILE: %s\n", $mir->{AUX_FILE});
printf("\tPKG_TYP: %s\n", $mir->{PKG_TYP});
printf("\tFAMILY_ID: %s\n", $mir->{FAMILY_ID});
printf("\tDATE_COD: %s\n", $mir->{DATE_COD});
printf("\tFACIL_ID: %s\n", $mir->{FACIL_ID});
printf("\tFLOOR_ID: %s\n", $mir->{FLOOR_ID});
printf("\tPROC_ID: %s\n", $mir->{PROC_ID});
printf("\tOPER_FRQ: %s\n", $mir->{OPER_FRQ});
printf("\tSPEC_NAM: %s\n", $mir->{SPEC_NAM});
printf("\tSPEC_VER: %s\n", $mir->{SPEC_VER});
printf("\tFLOW_ID: %s\n", $mir->{FLOW_ID});
printf("\tSETUP_ID: %s\n", $mir->{SETUP_ID});
printf("\tDSGN_REV: %s\n", $mir->{DSGN_REV});
printf("\tENG_ID: %s\n", $mir->{ENG_ID});
printf("\tROM_COD: %s\n", $mir->{ROM_COD});
printf("\tSERL_NUM: %s\n", $mir->{SERL_NUM});
printf("\tSUPR_NAM: %s\n", $mir->{SUPR_NAM});

sdr

sdr()

Returns a hash reference to a SDR record object.

my $sdr = $s->sdr();
printf("\tHEAD_NUM: %s\n", $sdr->{HEAD_NUM});
printf("\tSITE_GRP: %s\n", $sdr->{SITE_GRP});
printf("\tSITE_CNT: %s\n", $sdr->{SITE_CNT});
print "\tSITE_NUM: ", join(", ",@{xU1_array_ref($sdr->{SITE_NUM}, $sdr->{SITE_CNT})}), "\n";
printf("\tHAND_TYP: %s\n", $sdr->{HAND_TYP});
printf("\tHAND_ID: %s\n", $sdr->{HAND_ID});
printf("\tCARD_TYP: %s\n", $sdr->{CARD_TYP});
printf("\tCARD_ID: %s\n", $sdr->{CARD_ID});
printf("\tLOAD_TYP: %s\n", $sdr->{LOAD_TYP});
printf("\tLOAD_ID: %s\n", $sdr->{LOAD_ID});
printf("\tDIB_TYP: %s\n", $sdr->{DIB_TYP});
printf("\tDIB_ID: %s\n", $sdr->{DIB_ID});
printf("\tCABL_TYP: %s\n", $sdr->{CABL_TYP});
printf("\tCABL_ID: %s\n", $sdr->{CABL_ID});
printf("\tCONT_TYP: %s\n", $sdr->{CONT_TYP});
printf("\tCONT_ID: %s\n", $sdr->{CONT_ID});
printf("\tLASR_TYP: %s\n", $sdr->{LASR_TYP});
printf("\tLASR_ID: %s\n", $sdr->{LASR_ID});
printf("\tEXTR_TYP: %s\n", $sdr->{EXTR_TYP});
printf("\tEXTR_ID: %s\n", $sdr->{EXTR_ID});

pcr

pcr()

Returns a hash reference to a PCR record object.

my $pcr = $s->pcr();
printf("\tHEAD_NUM: %s\n", $pcr->{HEAD_NUM});
printf("\tSITE_NUM: %s\n", $pcr->{SITE_NUM});
printf("\tPART_CNT: %s\n", $pcr->{PART_CNT});
printf("\tRTST_CNT: %s\n", $pcr->{RTST_CNT});
printf("\tABRT_CNT: %s\n", $pcr->{ABRT_CNT});
printf("\tGOOD_CNT: %s\n", $pcr->{GOOD_CNT});
printf("\tFUNC_CNT: %s\n", $pcr->{FUNC_CNT});

mrr

mrr()

Returns a hash reference to a MRR record object.

my $mrr = $s->mrr();
printf("\tFINISH_T: %s\n", ctime($mrr->{FINISH_T}));
printf("\tDISP_COD: %s\n", $mrr->{DISP_COD});
printf("\tUSR_DESC: %s\n", $mrr->{USR_DESC});
printf("\tEXC_DESC: %s\n", $mrr->{EXC_DESC});

wir

wir()

Returns a hash reference to a WIR record object.

my $wir = $s->wir();
printf("\tHEAD_NUM: %s\n", $wir->{HEAD_NUM});
printf("\tSITE_GRP: %s\n", $wir->{SITE_GRP});
printf("\tSTART_T: %s\n", ctime($wir->{START_T}));
printf("\tWAFER_ID: %s\n", $wir->{WAFER_ID});

pir

pir()

Returns a hash reference to a PIR record object.

my $pir = $s->pir();
printf("\tHEAD_NUM: %s\n", $pir->{HEAD_NUM});
printf("\tSITE_NUM: %s\n", $pir->{SITE_NUM});

prr

prr()

Returns a hash reference to a PRR record object.

my $prr = $s->prr();
printf("\tHEAD_NUM: %s\n", $prr->{HEAD_NUM});
printf("\tSITE_NUM: %s\n", $prr->{SITE_NUM});
printf("\tPART_FLG: %s\n", $prr->{PART_FLG});
printf("\tNUM_TEST: %s\n", $prr->{NUM_TEST});
printf("\tHARD_BIN: %s\n", $prr->{HARD_BIN});
printf("\tSOFT_BIN: %s\n", $prr->{SOFT_BIN});
printf("\tX_COORD: %s\n", $prr->{X_COORD});
printf("\tY_COORD: %s\n", $prr->{Y_COORD});
printf("\tTEST_T: %s\n", ctime($prr->{TEST_T}));
printf("\tPART_ID: %s\n", $prr->{PART_ID});
printf("\tPART_TXT: %s\n", $prr->{PART_TXT});
printf("\tPART_FIX: %s\n", $prr->{PART_FIX});

ptr

ptr()

Returns a hash reference to a PTR record object.

my $ptr = $s->ptr();
printf("\tTEST_NUM: %s\n", $ptr->{TEST_NUM});
printf("\tHEAD_NUM: %s\n", $ptr->{HEAD_NUM});
printf("\tSITE_NUM: %s\n", $ptr->{SITE_NUM});
printf("\tTEST_FLG: %X\n", $ptr->{TEST_FLG});
printf("\tPARM_FLG: %X\n", $ptr->{PARM_FLG});
printf("\tRESULT: %s\n", $ptr->{RESULT});
printf("\tTEST_TXT: %s\n", $ptr->{TEST_TXT});
printf("\tALARM_ID: %s\n", $ptr->{ALARM_ID});
printf("\tOPT_FLAG: %X\n", $ptr->{OPT_FLAG});
printf("\tRES_SCAL: %s\n", $ptr->{RES_SCAL});
printf("\tLLM_SCAL: %s\n", $ptr->{LLM_SCAL});
printf("\tHLM_SCAL: %s\n", $ptr->{HLM_SCAL});
printf("\tLO_LIMIT: %s\n", $ptr->{LO_LIMIT});
printf("\tUNITS: %s\n", $ptr->{UNITS});
printf("\tC_RESFMT: %s\n", $ptr->{C_RESFMT});
printf("\tC_LLMFMT: %s\n", $ptr->{C_LLMFMT});
printf("\tLO_SPEC: %s\n", $ptr->{LO_SPEC});
printf("\tHI_SPEC: %s\n", $ptr->{HI_SPEC});

dtr

dtr()

Returns a hash reference to a DTR record object.

my $dtr = $s->dtr();
printf("\tTEXT_DAT: %s\n", $dtr->{TEXT_DAT});

atr

atr()

Returns a hash reference to a ATR record object.

my $atr = $s->atr();
printf ("\tMID_TIM: %s\n", ctime($atr->{MOD_TIM}) );
printf ("\tCMD_LINE: %s\n", $atr->{CMD_LINE} );

far

far()

Returns a hash reference to a FAR record object.

my $far = $s->far();
printf ("\tCPU_TYPE: %s\n", $far->{CPU_TYPE});
printf ("\tSTDF_VER: %s\n", $far->{STDF_VER});

hbr

hbr()

Returns a hash reference to a HBR record object.

my $hbr = $s->hbr();
printf("\tHEAD_NUM: %s\n", $hbr->{HEAD_NUM});
printf("\tSITE_NUM: %s\n", $hbr->{SITE_NUM});
printf("\tHBIN_NUM: %s\n", $hbr->{HBIN_NUM});
printf("\tHBIN_CNT: %s\n", $hbr->{HBIN_CNT});
printf("\tHBIN_PF: %s\n", $hbr->{HBIN_PF});
printf("\tHBIN_NAM: %s\n", $hbr->{HBIN_NAM});

sbr

sbr()

Returns a hash reference to a SBR record object.

my $sbr = $s->sbr();
printf("\tHEAD_NUM: %s\n", $sbr->{HEAD_NUM});
printf("\tSITE_NUM: %s\n", $sbr->{SITE_NUM});
printf("\tSBIN_NUM: %s\n", $sbr->{SBIN_NUM});
printf("\tSBIN_CNT: %s\n", $sbr->{SBIN_CNT});
printf("\tSBIN_PF: %s\n", $sbr->{SBIN_PF});
printf("\tSBIN_NAM: %s\n", $sbr->{SBIN_NAM});

pmr

pmr()

Returns a hash reference to a PMR record object.

my $pmr = $s->pmr();
printf("\tPMR_INDX: %s\n", $pmr->{PMR_INDX});
printf("\tCHAN_TYP: %s\n", $pmr->{CHAN_TYP});
printf("\tCHAN_NAM: %s\n", $pmr->{CHAN_NAM});
printf("\tPHY_NAM: %s\n", $pmr->{PHY_NAM});
printf("\tLOG_NAM: %s\n", $pmr->{LOG_NAM});
printf("\tHEAD_NUM: %s\n", $pmr->{HEAD_NUM});
printf("\tSITE_NUM: %s\n", $pmr->{SITE_NUM});

pgr

pgr()

Returns a hash reference to a PGR record object.

my $pgr = $s->pgr();
printf("\tGRP_INDX: %s\n", $pgr->{GRP_INDX});
printf("\tGRP_NAM: %s\n", $pgr->{GRP_NAM});
printf("\tINDX_CNT: %s\n", $pgr->{INDX_CNT});
print "\tPMR_INDX: ", join(", ",@{xU2_array_ref($pgr->{PMR_INDX}, $pgr->{INDX_CNT})}), "\n";

plr

plr()

Returns a hash reference to a PLR record object.

my $plr = $s->plr();
printf("\tGRP_CNT: %s\n", $plr->{GRP_CNT});
print "\tGRP_INDX: ", join(", ",@{xU2_array_ref($plr->{GRP_INDX}, $plr->{GRP_CNT})}), "\n";
print "\tGRP_MODE: ", join(", ",@{xU2_array_ref($plr->{GRP_MODE}, $plr->{GRP_CNT})}), "\n";
print "\tGRP_RADX: ", join(", ",@{xU1_array_ref($plr->{GRP_RADX}, $plr->{GRP_CNT})}), "\n";
print "\tPGM_CHAR: ", join(", ",@{xCn_array_ref($plr->{PGM_CHAR}, $plr->{GRP_CNT})}), "\n";
print "\tRTN_CHAR: ", join(", ",@{xCn_array_ref($plr->{RTN_CHAR}, $plr->{GRP_CNT})}), "\n";
print "\tPGM_CHAL: ", join(", ",@{xCn_array_ref($plr->{PGM_CHAL}, $plr->{GRP_CNT})}), "\n";
print "\tRTN_CHAL: ", join(", ",@{xCn_array_ref($plr->{RTN_CHAL}, $plr->{GRP_CNT})}), "\n";

rdr

rdr()

Returns a hash reference to a RDR record object.

my $rdr = $s->rdr();
printf("\tNUM_BINS: %s\n", $rdr->{NUM_BINS});
print "\tRTST_BIN: ", join(", ",@{xU2_array_ref($rdr->{RTST_BIN}, $rdr->{NUM_BINS})}), "\n";

wrr

wrr()

Returns a hash reference to a WRR record object.

my $wrr = $s->wrr();
printf("\tHEAD_NUM: %s\n", $wrr->{HEAD_NUM});
printf("\tSITE_GRP: %s\n", $wrr->{SITE_GRP});
printf("\tFINISH_T: %s\n", ctime($wrr->{FINISH_T}));
printf("\tPART_CNT: %s\n", $wrr->{PART_CNT});
printf("\tRTST_CNT: %s\n", $wrr->{RTST_CNT});
printf("\tABRT_CNT: %s\n", $wrr->{ABRT_CNT});
printf("\tGOOD_CNT: %s\n", $wrr->{GOOD_CNT});
printf("\tFUNC_CNT: %s\n", $wrr->{FUNC_CNT});
printf("\tWAFER_ID: %s\n", $wrr->{WAFER_ID});
printf("\tFABWF_ID: %s\n", $wrr->{FABWF_ID});
printf("\tFRAME_ID: %s\n", $wrr->{FRAME_ID});
printf("\tMASK_ID: %s\n", $wrr->{MASK_ID});
printf("\tUSR_DESC: %s\n", $wrr->{USR_DESC});
printf("\tEXC_DESC: %s\n", $wrr->{EXC_DESC});

wcr

wcr()

Returns a hash reference to a WCR record object.

my $wcr = $s->wcr();
printf("\tWAFR_SIZ: %s\n", $wcr->{WAFR_SIZ});
printf("\tDIE_HT: %s\n", $wcr->{DIE_HT});
printf("\tDIE_WID: %s\n", $wcr->{DIE_WID});
printf("\tWF_UNITS: %s\n", $wcr->{WF_UNITS});
printf("\tWF_FLAT: %s\n", $wcr->{WF_FLAT});
printf("\tCENTER_X: %s\n", $wcr->{CENTER_X});
printf("\tCENTER_Y: %s\n", $wcr->{CENTER_Y});
printf("\tPOS_X: %s\n", $wcr->{POS_X});
printf("\tPOS_Y: %s\n", $wcr->{POS_Y});

tsr

tsr()

Returns a hash reference to a TSR record object.

my $tsr = $s->tsr();
printf("\tHEAD_NUM: %s\n", $tsr->{HEAD_NUM});
printf("\tSITE_NUM: %s\n", $tsr->{SITE_NUM});
printf("\tTEST_TYP: %s\n", $tsr->{TEST_TYP});
printf("\tTEST_NUM: %s\n", $tsr->{TEST_NUM});
printf("\tEXEC_CNT: %s\n", $tsr->{EXEC_CNT});
printf("\tFAIL_CNT: %s\n", $tsr->{FAIL_CNT});
printf("\tALRM_CNT: %s\n", $tsr->{ALRM_CNT});
printf("\tTEST_NAM: %s\n", $tsr->{TEST_NAM});
printf("\tSEQ_NAME: %s\n", $tsr->{SEQ_NAME});
printf("\tTEST_LBL: %s\n", $tsr->{TEST_LBL});
printf("\tOPT_FLAG: %X\n", $tsr->{OPT_FLAG});
printf("\tTEST_TIM: %s\n", $tsr->{TEST_TIM});
printf("\tTEST_MIN: %s\n", $tsr->{TEST_MIN});
printf("\tTEST_MAX: %s\n", $tsr->{TEST_MAX});
printf("\tTST_SUMS: %s\n", $tsr->{TST_SUMS});
printf("\tTST_SQRS: %s\n", $tsr->{TST_SQRS});

mpr

mpr()

Returns a hash reference to a MPR record object.

my $mpr = $s->mpr();
printf("\tTEST_NUM: %s\n", $mpr->{TEST_NUM});
printf("\tHEAD_NUM: %s\n", $mpr->{HEAD_NUM});
printf("\tSITE_NUM: %s\n", $mpr->{SITE_NUM});
printf("\tTEST_FLG: %X\n", $mpr->{TEST_FLG});
printf("\tPARM_FLG: %X\n", $mpr->{PARM_FLG});
printf("\tRTN_ICNT: %s\n", $mpr->{RTN_ICNT});
printf("\tRSLT_CNT: %s\n", $mpr->{RSLT_CNT});
print "\tRTN_STAT: ", join(", ", @{xN1_array_ref($mpr->{RTN_STAT}, $mpr->{RTN_ICNT})} ), "\n";
print "\tRTN_RSLT: ", join(", ", @{xR4_array_ref($mpr->{RTN_RSLT}, $mpr->{RSLT_CNT})} ), "\n";
printf("\tTEST_TXT: %s\n", $mpr->{TEST_TXT});
printf("\tALARM_ID: %s\n", $mpr->{ALARM_ID});
printf("\tOPT_FLAG: %X\n", $mpr->{OPT_FLAG});
printf("\tRES_SCAL: %s\n", $mpr->{RES_SCAL});
printf("\tLLM_SCAL: %s\n", $mpr->{LLM_SCAL});
printf("\tHLM_SCAL: %s\n", $mpr->{HLM_SCAL});
printf("\tLO_LIMIT: %s\n", $mpr->{LO_LIMIT});
printf("\tHI_LIMIT: %s\n", $mpr->{HI_LIMIT});
printf("\tSTART_IN: %s\n", $mpr->{START_IN});
printf("\tINCR_IN: %s\n", $mpr->{INCR_IN});
print "\tRTN_INDX: ", join(", ", @{xU2_array_ref($mpr->{RTN_INDX}, $mpr->{RTN_ICNT})} ), "\n";
printf("\tUNITS: %s\n", $mpr->{UNITS});
printf("\tUNITS_IN: %s\n", $mpr->{UNITS_IN});
printf("\tC_RESFMT: %s\n", $mpr->{C_RESFMT});
printf("\tC_LLMFMT: %s\n", $mpr->{C_LLMFMT});
printf("\tC_HLMFMT: %s\n", $mpr->{C_HLMFMT});
printf("\tLO_SPEC: %s\n", $mpr->{LO_SPEC});
printf("\tHI_SPEC: %s\n", $mpr->{HI_SPEC});

ftr

ftr()

Returns a hash reference to a FTR record object.

my $ftr = $s->ftr();
printf("\tTEST_NUM: %s\n", $ftr->{TEST_NUM});
printf("\tHEAD_NUM: %s\n", $ftr->{HEAD_NUM});
printf("\tSITE_NUM: %s\n", $ftr->{SITE_NUM});
printf("\tTEST_FLG: %X\n", $ftr->{TEST_FLG});
printf("\tOPT_FLAG: %X\n", $ftr->{OPT_FLAG});
printf("\tCYCL_CNT: %s\n", $ftr->{CYCL_CNT});
printf("\tREL_VADR: %s\n", $ftr->{REL_VADR});
printf("\tREPT_CNT: %s\n", $ftr->{REPT_CNT});
printf("\tNUM_FAIL: %s\n", $ftr->{NUM_FAIL});
printf("\tXFAIL_AD: %s\n", $ftr->{XFAIL_AD});
printf("\tYFAIL_AD: %s\n", $ftr->{YFAIL_AD});
printf("\tVECT_OFF: %s\n", $ftr->{VECT_OFF});
printf("\tRTN_ICNT: %s\n", $ftr->{RTN_ICNT});
printf("\tPGM_ICNT: %s\n", $ftr->{PGM_ICNT});
print "\tRTN_INDX: ", join(", ", @{xU2_array_ref($ftr->{RTN_INDX}, $ftr->{RTN_ICNT})} ), "\n";
print "\tRTN_STAT: ", join(", ", @{xN1_array_ref($ftr->{RTN_STAT}, $ftr->{RTN_ICNT})} ), "\n";
print "\tPGM_INDX: ", join(", ", @{xU2_array_ref($ftr->{PGM_INDX}, $ftr->{PGM_ICNT})} ), "\n";
print "\tPGM_STAT: ", join(", ", @{xN1_array_ref($ftr->{PGM_STAT}, $ftr->{PGM_ICNT})} ), "\n";
print "\tFAIL_PIN: ", join(", ", @{$ftr->{FAIL_PIN}} ), "\n";
printf("\tVECT_NAM: %s\n", $ftr->{VECT_NAM});
printf("\tTIME_SET: %s\n", $ftr->{TIME_SET});
printf("\tOP_CODE: %s\n", $ftr->{OP_CODE});
printf("\tTEST_TXT: %s\n", $ftr->{TEST_TXT});
printf("\tALARM_ID: %s\n", $ftr->{ALARM_ID});
printf("\tPROG_TXT: %s\n", $ftr->{PROG_TXT});
printf("\tRSLT_TXT: %s\n", $ftr->{RSLT_TXT});
printf("\tPATG_NUM: %s\n", $ftr->{PATG_NUM});
print "\tSPIN_MAP: ", join(", ", @{$ftr->{SPIN_MAP}} ), "\n";

bps

bps()

Returns a hash reference to a BPS record object.

my $bps = $s->bps();
printf("\tSEQ_NAME: %s\n", $bps->{SEQ_NAME});

eps

eps()

Returns a hash reference to a EPS record object.

my $eps = $s->eps();

gds

gds()

Returns a hash reference to a GDS record object.

my $gds = $s->gds();

unknown

unknown()

Returns a hash reference to a UNKNOWN record object.

my $unk = $s->unknown();

Unknown record is not part of the STDF specification. It is primarily used for debugging purposes.

version

version()

Returns the STDF version number which identifies the STDF specification.

xU1_array_ref, xU2_array_ref, xN1_array_ref, xR4_array_ref, xCn_array_ref

xU1_array_ref(xU1, len)

xU2_array_ref(xU2, len)

xN1_array_ref(xN1, len)

xR4_array_ref(xR4, len)

xCn_array_ref(xCn, len)

Utility methods to convert libstdf data types (xU1, xU2, xN1, XR4, xCn) into Perl array reference objects.

my $plr = $s->plr();
print "\tGRP_INDX: ", join(", ",@{xU2_array_ref($plr->{GRP_INDX}, $plr->{GRP_CNT})}), "\n";
print "\tGRP_MODE: ", join(", ",@{xU2_array_ref($plr->{GRP_MODE}, $plr->{GRP_CNT})}), "\n";
print "\tGRP_RADX: ", join(", ",@{xU1_array_ref($plr->{GRP_RADX}, $plr->{GRP_CNT})}), "\n";
print "\tPGM_CHAR: ", join(", ",@{xCn_array_ref($plr->{PGM_CHAR}, $plr->{GRP_CNT})}), "\n";
print "\tRTN_CHAR: ", join(", ",@{xCn_array_ref($plr->{RTN_CHAR}, $plr->{GRP_CNT})}), "\n";
print "\tPGM_CHAL: ", join(", ",@{xCn_array_ref($plr->{PGM_CHAL}, $plr->{GRP_CNT})}), "\n";
print "\tRTN_CHAL: ", join(", ",@{xCn_array_ref($plr->{RTN_CHAL}, $plr->{GRP_CNT})}), "\n";

SEE ALSO

libstdf is the lower-level C library which performs the grunt work of reading and parsing a Standard Test Data Formatted file into C structures availed to Parse::STDF. See http://freestdf.sourceforge.net for documentation and download information.

For an intro to the Standard Test Data Format (along with references to detailed documentation) see http://en.wikipedia.org/wiki/Standard_Test_Data_Format.

AUTHOR

Erick Jordan <ejordan@cpan.org>.

COPYRIGHT

Copyright (C) 2014 Erick Jordan <ejordan@cpan.org>

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.