📄 testplan
字号:
!##############################################################################
sub Print_Startup_Message
global Panel$, Panel_Rev$, Using_ART, QSTATS_Mode, Histo
global Analog_Sample_Rate, Chek_Point_Mode, Failures
global Report_Printer$, Using_Buffered_Reporting, Testmain_Revision$
global Serializing, Serial_Length, Using_Graphics
print using "@,2/"
print "BOARD TYPE"
print " Name: ";Panel$
print " Revision: ";Panel_Rev$
print "AGILENT 3070 TESTMAIN"
print " Report Printer: ";Report_Printer$
print " Revision: ";Testmain_Revision$
! Build list of options to be printed
! O1$ is first line, O2$ is second line
O1$ = " Options: "
if Using_ART then O1$=O1$&" PR+"
if QSTATS_Mode then O1$=O1$&" QSTATS"
if Chek_Point_Mode then
O1$=O1$&" Chek-Point"
if Chek_Point_Mode = Failures then
O1$=O1$&"-Failures"
else
O1$=O1$&"-Pretest"
end if
end if
if Using_Graphics then O1$ = O1$ & " Graphics"
if (O1$=" Options: ") then
O2$=O1$
else
print O1$
O2$= " "
end if
if Serializing then O2$=O2$&" Serializing("&val$(Serial_Length)&")"
if learning then O2$=O2$&" LEARNING"
if Using_Buffered_Reporting then O2$=O2$&" Buffered-Reporting"
if QSTATS_Mode = Histo then
O2$=O2$&" Histograms("&val$(Analog_Sample_Rate)&")"
end if
if not (O2$ = " ") then print O2$
print using "3/"
subend
!##############################################################################
sub Get_Board_Revision
! NOTE: If Board revs are different from panel rev, modify this routine!
global Panel_Rev$, Panel_Rev_Prompt$, Board_Rev$(*), Number_Boards_On_Panel
global Panel_Itself
if Panel_Rev$ = "" then
print using """"&Panel_Rev_Prompt$&""",#"
input "",Panel_Rev$
for I = Panel_Itself to Number_Boards_On_Panel
Board_Rev$(I) = Panel_Rev$
next I
end if
subend
!##############################################################################
sub Do_Version_Inits
global Version_Inits_Needed, Chek_Point_Mode, True, False, Off
unpowered
faoff
!call Characterize ! external to testmain
if Chek_Point_Mode <> Off then ! preload pins into testhead memory
Log_Level_Reset = False
if lli$ = "all" then
log level is none ! turn off digital datalogging
Log_Level_Reset = True ! for 'ignore all failures'
end if
ignore all failures
Err = fn Pinsfailed ("") ! external to testmain
acknowledge all failures
if Log_Level_Reset = True then log level is all ! reset datalogging
end if
Version_Inits_Needed = False
subend
!##############################################################################
sub Get_Version_Label
global Version_Label$, Version_Prompt$, True, False
global Version_Inits_Needed ,Autover$ ,Tempver$
Old_Version$ = bvi$
Version_Inits_Needed = True
loop
Version_Label$ = ""
!+++++++++++++++++++++++++++++++++
! print using """" & Version_Prompt$ & """,#"
! input "", Version_Label$
!=================================
Tempver$="600-10"&Autover$[6;3]&"-"&Autover$[9;4]&"-"&Autover$[13;3]
print Tempver$
if Autover$[24;1]="U" or Autover$[24;1]="u" then
PcbaVer$= Autover$[24;1]
else
PcbaVer$= Autover$[23;2]
end if
if Tempver$="600-10651-0001-200" and (Autover$[20;1] = "S" or Autover$[20;1] = "s") then
Version_Label$=""
! print "version label is : " ;Tempver$
print "-------------------------------------"
print "PCB P/N is: 180-10651-0000-A02"
print "PCB Ver is: E"
print "PCBA P/N is: 600-10651-0000-002"!;Tempver$ !cerfi
print "PCBA Ver is: ";PcbaVer$
else
if Tempver$="600-10651-0001-201" and (Autover$[20;1] = "S" or Autover$[20;1] = "s") then
Version_Label$=""
! print "version label is : " ;Tempver$
print "-------------------------------------"
print "PCB P/N is: 180-10651-0000-A02"
print "PCB Ver is: E"
print "PCBA P/N is: 600-10651-0000-002"!
print "PCBA Ver is: ";PcbaVer$
else
if Tempver$="600-10651-0000-200" and (Autover$[20;1] = "H" or Autover$[20; 1] = "h") then
Version_Label$="600-10651-0000-200"
print "----------------------------------"
print "PCB P/N is: 180-10651-0102-A02"
print "PCB Ver is: B"
print "PCBA P/N is: " ;Version_Label$
print "PCBA Ver is: ";PcbaVer$
else
if Tempver$="600-10651-0000-201" and (Autover$[20;1] = "H" or Autover$[20; 1] = "h") then
Version_Label$="600-10651-0000-200"
print "----------------------------------"
print "PCB P/N is: 180-10651-0102-A02"
print "PCB Ver is: B"
print "PCBA P/N is: " ;Version_Label$
print "PCBA Ver is: ";PcbaVer$
else
print tab(15);chr$(27)&"&v1S==============================================="
print tab(15);chr$(27)&"&v1Sboard version slection error // or wrong board"
print tab(15);chr$(27)&"&v1S==============================================="
wait 2m
goto Re_input
end if
end if
end if
end if
if Version_Label$ = "" or Version_Label$ = "*" then
board version is *, Err
else
! board version is Version_Label$, Err
end if
exit if not Err
print errmlong$
end loop
if bvi$ = Old_Version$ then
Version_Inits_Needed = False
end if
subend
!##############################################################################
sub Initialize_Constants
global PreshortsMsg$, ShortsMsg$, PowerMsg$, DigitalMsg$, AnalogMsg$
global DigitalFuncMsg$, AnalogPoweredMsg$, Chek_Point_Msg$
global Break_Detected, Mode$, Board_Not_Tested$,FET_TestMsg$,Failed_In_FET_Test
global True, False, InvOn$, InvOff$, First_Run$, Panel_Rev_Prompt$
global Pass_Msg$, Fail_Msg$, Pass_File$, Fail_File$, Stop_Msg$, Break_Msg$
global No_Init_Warning$, Rep_Test$, Place_Board_Prompt$, Learning_Off_Msg$
global Failed_In_Learn, Failed_Pin_Test, Failed_In_Preshorts, Failed_In_Shorts
global Failed_In_Analog, Failed_In_Power_Supplies, Failed_In_Digital
global Failed_In_Functional, Failed_In_BScan, Passed, Failed, Xed_Out
global Directory_Exists, Log_Path$, System$, Queue_Error_Msg$
global Break_Code, Error_Code
global But$, Put$, Serial_Prompt$, Bad_Serial_Image$, Oper_Id_Prompt$
global Known_Good_Prompt$, Serial_Nr$, Failed_Board$
global Retry_PinTest$, Cycle_Vacuum$, Recycle_Vacuum$
global Pin_Msg$, Pin_Msg2$, Max_Times_To_Fix_Contact
global BScanIntconMsg$, BScanIncktMsg$, All_Xout$
global TestJetMsg$, Failed_In_TestJet
global PolarityMsg$, Failed_In_Polarity_Check
global BScanPShortsMsg$, No_Version_Init_Warning$
global Version_Label$, Version_Prompt$
global ConnectCheckMsg$, Failed_In_ConnectCheck
global Failed_In_Flash, FlashProgMsg$
global AnalogClusterMsg$, Failed_In_Analog_Cluster
global BScanSiNailsMsg$, Failed_In_BScan_SiNails
global SW_ScanPathVerifyMsg$, Failed_In_SW_Testing
global SW_DrVerifyMsg$, SW_IrVerifyMsg$
global SW_InterconnectMsg$, SW_MemInterconnectMsg$
global SW_ClusterMsg$, SW_MemBistMsg$
global SW_ProgrammingMsg$, Failed_In_SW_Programming
global SW_FlashMsg$, Failed_In_SW_Flash
global Bad_Board_Name$
Break_Detected = False
InvOn$ = chr$(27)&"&dB"&chr$(7) ! chr$(7) rings bell
InvOff$ = chr$(27)&"&d@"
Passed = 0
Failed = 1
Failed_Pin_Test = 2
Failed_In_Learn = 3
Failed_In_Shorts = 4
Failed_In_Analog = 6
Failed_In_Power_Supplies = 7
Failed_In_Digital = 8
Failed_In_Functional = 9
Failed_In_Preshorts = 10
! Status codes 11, 12 reserved for use by EFS
Xed_Out = 13 ! This status is maintained but not logged
Failed_In_BScan = 8 ! Equate to Failed_In_Digital
Failed_In_TestJet = 14
Failed_In_Polarity_Check = 15
Failed_In_ConnectCheck = 16
Failed_In_Analog_Cluster = 17
Failed_In_Flash = 18
Failed_In_BScan_SiNails = 19
Failed_In_SW_Testing = 8 ! Equate to Failed_In_Digital
Failed_In_SW_Programming = 20
Failed_In_SW_Flash = 21
Error_Code = 80
Break_Code = 82
Failed_In_FET_Test = 23
Directory_Exists = 100312
Log_Path$ = "G:\"
!Log_Path$ = btgetenv$("AGILENT3070_ROOT")&"/qm/logdata/testerq/"
enter "uname -n |";System$ ! gets hostname (without domain)
Max_Times_To_Fix_Contact = 4 ! MUST BE >= 1
Pin_Msg$ = "FIXTURE CONTACT PROBLEM"
Pin_Msg2$ = "FIXTURE CONTACT PROBLEM ON FOLLOWING BOARDS:"
O$ = InvOn$&"Press YES"&InvOff$
O$ = O$&" to retry Pins Test, "&InvOn$&"NO"&InvOff$
Retry_PinTest$ = O$&" to continue."
O$ = InvOn$&"Press YES"&InvOff$&" to cycle vacuum, "
Cycle_Vacuum$ = O$&InvOn$&"NO"&InvOff$&" Otherwise."
O$ = InvOn$&"Press YES"&InvOff$
Recycle_Vacuum$ = O$&" to turn vacuum on and continue testing."
Queue_Error_Msg$ = "Cannot create directory to queue up log data. Error is:"
But$ = "Board Under Test: "
Put$ = "Panel Under Test: "
Serial_Prompt$ = InvOn$&"Enter"&InvOff$&" Panel Identifier: "
O$ = "/,""Identifier has wrong length ("",dd,""), must be "
Bad_Serial_Image$ = O$&""",dd,""."",/"
Oper_Id_Prompt$ = InvOn$&"Enter"&InvOff$&" Operator Identifier: "
Known_Good_Prompt$ = InvOn$&"Enter"&InvOff$&" Verification Board Identifier: "
Rep_Test$ = "Repeating test of the following boards: "
First_Run$ = "Please stand by -- doing first-run initializations"
No_Init_Warning$ = "** WARNING: FIRST RUN INITIALIZATIONS NOT COMPLETED --"
No_Init_Warning$ = No_Init_Warning$ & " CLEARING NRUN **"
O$ = "** WARNING: VERSION CHANGE INITIALIZATIONS NOT"
No_Version_Init_Warning$ = O$ & " COMPLETED -- CLEARING NRUN **"
Pass_File$ = btgetenv$("AGILENT3070_ROOT")&"/util/pass"
Fail_File$ = btgetenv$("AGILENT3070_ROOT")&"/util/fail"
Board_Not_Tested$ = "Board not fully tested."
Pass_Msg$ = "P A N E L P A S S E D"
Fail_Msg$ = "P A N E L F A I L E D"
Stop_Msg$ = "P R O G R A M S T O P P E D"
Break_Msg$ = "Break/Stop detected."
Place_Board_Prompt$ = "Place panel on fixture and "&InvOn$&"press START"
Panel_Rev_Prompt$ = InvOn$&"Enter"&InvOff$&" Panel Revision: "
Learning_Off_Msg$ = "Learning turned off"
if learning then
Mode$ = "Learning "
else
Mode$ = "Testing "
end if
PreshortsMsg$ = "Preshorts"
ShortsMsg$ = "Shorts"
PowerMsg$ = "Setting Up Power Supplies"
DigitalMsg$ = "Digital Incircuit"
AnalogMsg$ = "Analog Unpowered"
AnalogClusterMsg$ = "Analog Cluster"
TestJetMsg$ = "TestJet"
FET_TestMsg$ = "FET_Test"
PolarityMsg$ = "Polarity Check"
ConnectCheckMsg$ = "Connect Check"
DigitalFuncMsg$ = "Digital Functional"
AnalogPoweredMsg$ = "Analog Powered and Mixed"
BScanIntconMsg$ = "Boundary Scan Interconnect"
BScanIncktMsg$ = "Boundary Scan Incircuit"
BScanPShortsMsg$ = "Boundary Scan Powered Shorts"
BScanSiNailsMsg$ = "Boundary Scan Silicon Nails"
FlashProgMsg$ = "Programming Flash"
SW_ScanPathVerifyMsg$ = "Scan Path Verify with ScanWorks"
SW_DrVerifyMsg$ = "DR Verify with ScanWorks"
SW_IrVerifyMsg$ = "IR Verify with ScanWorks"
SW_InterconnectMsg$ = "Interconnect with ScanWorks"
SW_MemInterconnectMsg$ = "Memory Interconnect with ScanWorks"
SW_ClusterMsg$ = "Cluster with ScanWorks"
SW_MemBistMsg$ = "Memory BIST with ScanWorks"
SW_ProgrammingMsg$ = "Programming Devices with ScanWorks"
SW_FlashMsg$ = "Programming Flash with ScanWorks"
Serial_Nr$ = "Serial #: "
All_Xout$ = "No boards selected; panel has FAILED."
Chek_Point_Msg$ = "Testing Pin Contact"
O$ = "Further testing on this panel is suspended "
Failed_Board$ = O$&"due to failures on boards: "
Version_Label$ = ""
Version_Prompt$ = InvOn$&"Enter"&InvOff$&" Version Label: "
Bad_Board_Name$ = "Board name contains space, cannot proceed:"
subend
!##############################################################################
sub Set_Custom_Options
! All variables likely to need to be changed are initialized here.
! The Usage flag(s) can be set True or False to selectively enable or
! disable the code needed for each indicated subsystem or feature.
global Using_ART, QSTATS_Mode, Testrev$
global Analog_Sample_Rate
global Serializing, Serial_Length
global Chek_Point_Mode, Using_Graphics
global Report_Printer$, True, False, Using_Buffered_Reporting
global Off, Pretest, Failures, No_Histo, Histo
global Per_Run, Per_Board, Version_Prompting
global Programming
! Usage flag(s)
QSTATS_Mode = Off ! Choose {Off, No_Histo, Histo}
Chek_Point_Mode = Pretest ! Choose {Off, Pretest, Failures}
Using_ART = True !False ! Agilent Repair Tool.
Serializing = True !False ! Will get set True if Using_ART.
Using_Buffered_Reporting = True ! Report failures during board handling
Using_Graphics = True ! Will get set False if SimPlate fxt.
Programming = False ! Execute Flash and device programming.
! Other parameters
Report_Printer$ = btgetenv$("RPR"&th$) ! Final report destination
!Report_Printer$ = "/dev/tty" ! Send reports to the screen
Testrev$ = "RevA" ! Update this faithfully
Analog_Sample_Rate = .30 ! Meaningful if QSTATS_Mode = Histo
Serial_Length = 24!28 ! Board Id Length (0 = no checking)
Version_Prompting = Per_Board ! Choose {Per_Board, Per_Run}
! Used only on multiple version board
subend
!##############################################################################
sub Cleanup_Flash
global Logging, Report_level$
if Report_level$ = "all" then report level is all
if Report_level$ = "none" then report level is none
if Report_level$ = "log" then report level is log
if Report_level$ = "report" then report level is report
if Logging then
call Set_Log_Level
end if
subend
! Data Logging Subroutines
!##############################################################################
sub Set_Log_Level
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -