783 lines
29 KiB
Plaintext
783 lines
29 KiB
Plaintext
compile function print_control_plan_org( PSNId )
|
||
declare function security_check, set_printer, get_printer, msg, fieldcount, entid, repository, obj_Install,Printer_Select
|
||
declare subroutine security_err_msg
|
||
|
||
$insert security_rights_equ
|
||
$insert oiprint_equates
|
||
$insert msg_equates
|
||
$insert prod_spec_equ
|
||
$insert quote_spec_equ
|
||
$insert company_equ
|
||
|
||
PrintPath = Printer_Select('',1) ;* Get default printer path
|
||
Stat = set_printer( 'INIT', '', '', .25:@fm:.25:@fm:.25:@fm:.25, 1, 3 ,PrintPath)
|
||
|
||
* PULL OFF ALL VARIABLES
|
||
* PSN IS PASSED VIA THE CALLING PROGRAM AND THIS CODE WILL PICK UP
|
||
* THE REST VIA TRANSLATION
|
||
|
||
PSN = xlate( 'PROD_SPEC', PSNId, '', 'X' )
|
||
PartNums = PSN<prod_spec_part_nums$>
|
||
SubstrInfo = PSN<prod_spec_spec_substrate$>
|
||
SpecialInst = SubstrInfo<1,QSSubInstructions$>
|
||
ProveInInst = xlate( 'PROD_SPEC', PSNId, 'PROVEIN_INST', 'X' )
|
||
SalesNotes = PSN<prod_spec_sales_notes$>
|
||
SpecEpi = PSN<prod_spec_spec_epi$>
|
||
LayerType = PSN<prod_spec_layer_type$>
|
||
convert char(248) to @fm in SpecEpi
|
||
Lcnt = fieldcount( SpecEpi, @fm )
|
||
SpecType = SubstrInfo<1,QSSubSpecType$>
|
||
EntryDate = PSN<prod_spec_entry_date$>
|
||
RevDate = PSN<prod_spec_mod_date$>
|
||
|
||
KeyContactPhone = "Onsite Quality Representative (480) 668-4000"
|
||
|
||
SupplierCode = PSN<prod_spec_supplier_code$>
|
||
PreClean = SubstrInfo<1,QSSubPreClean$>
|
||
PostClean = SubstrInfo<1,QSSubPostClean$>
|
||
OxideStrip = SubStrInfo<1,QSSubOxide$>
|
||
CustName = xlate( 'COMPANY', psn<prod_spec_cust_id$>, company_co_name$, 'X' )
|
||
swap 'DSP & 5" 2 layer' with '' in CustName
|
||
|
||
Font = "Times New Roman,36,C,1"
|
||
convert ',' to @fm in Font
|
||
Stat = set_printer( 'FONT', Font )
|
||
Void = set_printer( 'TEXT', 'Control Plan (':CustName:')' )
|
||
Font<2> = 10
|
||
Font<3> = 'L'
|
||
Stat = set_printer( 'FONT', Font )
|
||
Void = set_printer( 'TEXT', '' )
|
||
*CoreTeam = 'Steve Rickborn, Jon Flagg, Paul Westphal, Dan Syllaba, John Parsey, Jim Sellar (480) 668-4000'
|
||
CoreTeam = 'Executive Director, Quality Manager, Process Engineering Manager, Maintenance Engineering Manager, Manufacturing Manager (480) 668-4000'
|
||
|
||
|
||
swap @vm with ', ' in PartNums
|
||
* HEADINGS FOR TYPE
|
||
TableColInfo = '^_1300':@vm:'^_1300':@vm:'^_1300':@vm:'^_1300'
|
||
PrintTbl = 'Pre-Qualification':@vm:'Qualification':@vm:'Pre-Production':@vm:'Production'
|
||
Void = set_printer( 'ADDTABLE', TableColInfo, '', PrintTbl, '', '', 1, TB_NONE:@fm:'C' )
|
||
* DATA FOR TYPE
|
||
TableColInfo = '^_1300':@vm:'^_1300':@vm:'^_1300':@vm:'^_1300'
|
||
PreQual = ''
|
||
Qualification = ''
|
||
PreProd = ''
|
||
Production = ''
|
||
|
||
if SpecType = 'Q' then
|
||
Qualification = 'X'
|
||
end
|
||
if SpecType = 'E' then
|
||
PreProd = 'X'
|
||
end
|
||
if SpecType = 'P' then
|
||
Production = 'X'
|
||
end
|
||
if SpecType = 'U' then
|
||
PreQual = 'X'
|
||
end
|
||
|
||
PrintTbl = PreQual:@vm:Qualification:@vm:PreProd:@vm:Production
|
||
Void = set_printer( 'ADDTABLE', TableColInfo, '', PrintTbl, '', '', 1, TB_ALL:@fm:'C' )
|
||
Void = set_printer( 'TEXT', '' )
|
||
|
||
* HEADINGS FOR PLAN NUMBER, CONTACT AND DATES
|
||
TableColInfo = '^_4320':@vm:'^_4320':@vm:'^_2160':@vm:'^_2160'
|
||
PrintTbl = 'Control Plan Number':@vm:'Key Contact/Phone':@vm:'Date(Orig.)':@vm:'Date(Rev.)'
|
||
Void = set_printer( 'ADDTABLE', TableColInfo, '', PrintTbl, '', '', 0, TB_NONE:@fm:'C' )
|
||
* DATA FOR PLAN NUMBER, CONTACT AND DATES
|
||
Font<4> = 0
|
||
Void = set_printer( 'FONT', Font )
|
||
PrintTbl = PSNId:' - ':LayerType:@vm:KeyContactPhone:@vm:oconv( EntryDate, 'D2/' ):@vm:oconv( RevDate, 'D2/' )
|
||
Void = set_printer( 'ADDTABLE', TableColInfo, '', PrintTbl, '', '', 1, TB_ALL:@fm:'C' )
|
||
Font<4> = 1
|
||
Void = set_printer( 'FONT', Font )
|
||
Void = set_printer( 'TEXT', '' )
|
||
|
||
* HEADINGS FOR PART NUMBERS, CORE TEAM CUST ENGINEERING DATE
|
||
TableColInfo = '^+4320':@vm:'^+4320':@vm:'^+4320'
|
||
PrintTbl = 'Part Number/Latest Change Level':@vm:'Core Team':@vm:'Customer Engineering Approval/Date'
|
||
Void = set_printer( 'ADDTABLE', TableColInfo, '', PrintTbl, '', '', 0, TB_NONE:@fm:'C' )
|
||
* DATA FOR PART NUMBERS, CORE TEAM CUST ENGINEERING DATE
|
||
Font<4> = 0
|
||
Void = set_printer( 'FONT', Font )
|
||
PrintTbl = PartNums:@vm:CoreTeam:@vm:'NA'
|
||
Void = set_printer( 'ADDTABLE', TableColInfo, '', PrintTbl, '', '', 1, TB_ALL:@fm:'C' )
|
||
Font<4> = 1
|
||
Void = set_printer( 'FONT', Font )
|
||
Void = set_printer( 'TEXT', '' )
|
||
|
||
* HEADINGS FOR PART NAME DESCRIPTION, SUPPLIER APPROVAL
|
||
TableColInfo = '^_4320':@vm:'^_4320':@vm:'^_4320'
|
||
PrintTbl = 'Part Name/Description':@vm:'Supplier':@vm:'Customer Quality Approval/Date'
|
||
Void = set_printer( 'ADDTABLE', TableColInfo, '', PrintTbl, '', '', 0, TB_NONE:@fm:'C' )
|
||
* DATA FOR PART NAME DESCRIPTION, SUPPLIER APPROVAL
|
||
Font<4> = 0
|
||
Void = set_printer( 'FONT', Font )
|
||
PrintTbl = 'Silicon Epitaxy':@vm:obj_Install('Get_Prop','Company'):@vm:'NA'
|
||
Void = set_printer( 'ADDTABLE', TableColInfo, '', PrintTbl, '', '', 1, TB_ALL:@fm:'C' )
|
||
Font<4> = 1
|
||
Void = set_printer( 'FONT', Font )
|
||
Void = set_printer( 'TEXT', '' )
|
||
|
||
* HEADINGS FOR SUPPLIER CODE
|
||
TableColInfo = '^_4320':@vm:'^_4320':@vm:'^_2160':@vm:'^_2160'
|
||
PrintTbl = 'Plant':@vm:'Supplier Code':@vm:'Other Approval/Date':@vm:'Other Approval/Date'
|
||
Void = set_printer( 'ADDTABLE', TableColInfo, '', PrintTbl, '', '', 0, TB_NONE:@fm:'C' )
|
||
* DATA FOR SUPPLIER CODE
|
||
Font<4> = 0
|
||
Void = set_printer( 'FONT', Font )
|
||
PrintTbl = 'Mesa, Arizona':@vm:SupplierCode:@vm:'NA':@vm:'NA'
|
||
Void = set_printer( 'ADDTABLE', TableColInfo, '', PrintTbl, '', '', 1, TB_ALL:@fm:'C' )
|
||
|
||
* NEED TO PUT HEADINGS HERE
|
||
StepNumber = 0
|
||
Void = set_printer( 'TEXT', '' )
|
||
Font<4> = 1
|
||
Void = set_printer( 'FONT', Font )
|
||
TableColInfo = '^_720':@vm:'^_1440':@vm:'^_1440':@vm:'^_547':@vm:'^_1440':@vm:'^_1440':@vm
|
||
TableColInfo:= '^_2160':@vm:'^_1440':@vm:'^_1200':@vm:'^_840':@vm:'^_1080':@vm:'^_1440'
|
||
PrintTbl = 'Step':@vm:'Process Name':@vm:'Machine':@vm:'PSN':@vm:'Product':@vm:'Process':@vm:'Spec Tolerance':@vm
|
||
PrintTbl:= 'Eval Meas':@vm:'Size':@vm:'Freq.':@vm:'Control Method':@vm:'Reaction Plan'
|
||
Void = set_printer( 'ADDTABLE', TableColInfo, '', PrintTbl, '', '', 0, TB_ALL:@fm:'C' )
|
||
Font<4> = 0
|
||
Void = set_printer( 'FONT', Font )
|
||
*
|
||
* RECEIVING STEP WILL BE STEP ONE OF EACH CONTROL PLAN
|
||
StepNumber += 1
|
||
PrintTbl = StepNumber:@vm:'Receiving':@vm:'Paperwork':@vm:PSNId:@vm:'Paperwork':@vm:'Visual':@vm
|
||
PrintTbl:= 'Consistent Data':@vm:'Visual':@vm:'Shipment':@vm:'All':@vm:'WI':@vm:'Pass/Fail'
|
||
Void = set_printer( 'ADDTABLE', TableColInfo, '', PrintTbl, '', '', 1, TB_ALL:@fm:'C' )
|
||
|
||
*
|
||
PreBrightLight = PSN<prod_spec_pre_brightlight$>
|
||
PreMicroscope = PSN<prod_spec_pre_microscope$>
|
||
PreSurfscan = PSN<prod_spec_pre_surfscan$>
|
||
PreSurfscanRecipe = PSN<prod_spec_pre_surfscan_recipe$>
|
||
PreLPDLimit = PSN<prod_spec_pre_lpd$>
|
||
|
||
FirstBrightLight = PSN<prod_spec_first_brightlight$>
|
||
FirstMicroscope = PSN<prod_spec_first_microscope$>
|
||
FirstSurfscan = PSN<prod_spec_first_surfscan$>
|
||
FirstSurfscanRecipe = PSN<prod_spec_first_surfscan_recipe$>
|
||
FirstLPDLimit = PSN<prod_spec_post_lpd$>
|
||
|
||
PostBrightLight = PSN<prod_spec_post_clean_brightlight$>
|
||
PostSurfscan = PSN<prod_spec_post_clean_surfscan$>
|
||
PostSurfscanRecipe = PSN<prod_spec_post_clean_surfscan_recipe$>
|
||
|
||
*********************** PRE-CLEANING - MOVED FROM BELOW -- SCOTT EVANS **********************
|
||
|
||
if ( OxideStrip ) then
|
||
* PRE CLEANING STEP
|
||
StepNumber += 1
|
||
ProcessName = 'HF Strip' ;* #16
|
||
Machine = 'HF' ;* #17
|
||
Product = 'SC-1' ;* #19
|
||
Process = '20min or Dewet';* #20
|
||
SpecTol = 'NA' ;*#22
|
||
EvalMeas = 'HF' ;* #23
|
||
Size = '1 Cass' ;* #24a
|
||
Freq = 'All' ;* #24b
|
||
CtrlMethod = 'WI' ;* #25
|
||
RPlan = 'ORAP' ;* #26
|
||
|
||
PrintTbl = StepNumber:@vm:ProcessName:@vm:Machine:@vm:PSNId:@vm:Product:@vm:Process:@vm:SpecTol:@vm
|
||
PrintTbl:= EvalMeas:@vm:Size:@vm:Freq:@vm:CtrlMethod:@vm:RPlan
|
||
Void = set_printer( 'ADDTABLE', TableColInfo, '', PrintTbl, '', '', 1, TB_ALL:@fm:'C' )
|
||
end
|
||
|
||
|
||
if ( PreClean <> 'No' ) and ( PreClean <> '' ) then
|
||
* PRE CLEANING STEP
|
||
Process = ''
|
||
StepNumber += 1
|
||
ProcessName = 'Pre-epi Clean' ;* #16
|
||
if PreClean = 'If Necessary' then
|
||
PreClean = 'Semitool'
|
||
end
|
||
if PreClean = 'Semitool' then
|
||
Process = 'SC-1 Clean'
|
||
end
|
||
if PreClean = 'Megasonic' then
|
||
Process = field( SubstrInfo<1,QSSubWafersize$>, ' ', 3 ):'"'
|
||
end
|
||
Machine = PreClean ;* #17
|
||
Product = 'SC-1' ;* #19
|
||
Process = Process ;* #20
|
||
SpecTol = 'NA' ;*#22
|
||
EvalMeas = PreClean ;* #23
|
||
Size = '1 Cass' ;* #24a
|
||
Freq = 'All' ;* #24b
|
||
CtrlMethod = 'WI' ;* #25
|
||
RPlan = 'ORAP' ;* #26
|
||
|
||
PrintTbl = StepNumber:@vm:ProcessName:@vm:Machine:@vm:PSNId:@vm:Product:@vm:Process:@vm:SpecTol:@vm
|
||
PrintTbl:= EvalMeas:@vm:Size:@vm:Freq:@vm:CtrlMethod:@vm:RPlan
|
||
Void = set_printer( 'ADDTABLE', TableColInfo, '', PrintTbl, '', '', 1, TB_ALL:@fm:'C' )
|
||
end
|
||
|
||
|
||
*********************** END OF PRE-CLEANING *************************************************
|
||
|
||
|
||
|
||
|
||
if PreBrightLight then
|
||
* BRIGHTLIGHT PRE EPI INSPECTION
|
||
StepNumber += 1
|
||
ProcessName = 'Pre-epi Insp' ;* #16
|
||
Machine = 'Brightlight' ;* #17
|
||
Product = 'LPDs' ;* #19
|
||
Process = 'Visual' ;* #20
|
||
SpecTol = '<':PreLPDLimit;* #22
|
||
EvalMeas = 'Brightlight' ;* #23
|
||
Size = '1 Wafer' ;* #24a
|
||
Freq = 'Per Cass' ;* #24b
|
||
CtrlMethod = 'WI' ;* #25
|
||
RPlan = 'ORAP' ;* #26
|
||
|
||
PrintTbl = StepNumber:@vm:ProcessName:@vm:Machine:@vm:PSNId:@vm:Product:@vm:Process:@vm:SpecTol:@vm
|
||
PrintTbl:= EvalMeas:@vm:Size:@vm:Freq:@vm:CtrlMethod:@vm:RPlan
|
||
Void = set_printer( 'ADDTABLE', TableColInfo, '', PrintTbl, '', '', 1, TB_ALL:@fm:'C' )
|
||
end
|
||
|
||
if PreMicroscope then
|
||
* MICROSCOPE
|
||
StepNumber += 1
|
||
ProcessName = 'Pre-epi Insp' ;* #16
|
||
Machine = 'Microscope' ;* #17
|
||
Product = 'Surface Quality' ;* #19
|
||
Process = 'Visual' ;* #20
|
||
SpecTol = 'PSN#':PSNId:' - Surface Spec' ;*#22
|
||
EvalMeas = 'Microscope' ;* #23
|
||
Size = '1 Wafer' ;* #24a
|
||
Freq = 'Per Cass' ;* #24b
|
||
CtrlMethod = 'WI' ;* #25
|
||
RPlan = 'ORAP' ;* #26
|
||
|
||
PrintTbl = StepNumber:@vm:ProcessName:@vm:Machine:@vm:PSNId:@vm:Product:@vm:Process:@vm:SpecTol:@vm
|
||
PrintTbl:= EvalMeas:@vm:Size:@vm:Freq:@vm:CtrlMethod:@vm:RPlan
|
||
Void = set_printer( 'ADDTABLE', TableColInfo, '', PrintTbl, '', '', 1, TB_ALL:@fm:'C' )
|
||
end
|
||
|
||
if PreSurfscan then
|
||
* SURFSCAN
|
||
StepNumber += 1
|
||
ProcessName = 'Pre-epi Insp' ;* #16
|
||
Machine = 'Surf Scan' ;* #17
|
||
Product = 'LPDs' ;* #19
|
||
Process = PreSurfscanRecipe ;* #20
|
||
SpecTol = 'See Hard Copy Spec' ;*#22
|
||
EvalMeas = 'Surf Scan' ;* #23
|
||
Size = '1 Wafer' ;* #24a
|
||
Freq = 'Per Cass' ;* #24b
|
||
CtrlMethod = 'WI' ;* #25
|
||
RPlan = 'ORAP' ;* #26
|
||
|
||
PrintTbl = StepNumber:@vm:ProcessName:@vm:Machine:@vm:PSNId:@vm:Product:@vm:Process:@vm:SpecTol:@vm
|
||
PrintTbl:= EvalMeas:@vm:Size:@vm:Freq:@vm:CtrlMethod:@vm:RPlan
|
||
Void = set_printer( 'ADDTABLE', TableColInfo, '', PrintTbl, '', '', 1, TB_ALL:@fm:'C' )
|
||
end
|
||
|
||
*if ( OxideStrip ) then
|
||
* * PRE CLEANING STEP
|
||
* StepNumber += 1
|
||
* ProcessName = 'HF Strip' ;* #16
|
||
* Machine = 'HF' ;* #17
|
||
* Product = 'SC-1' ;* #19
|
||
* Process = '20min or Dewet';* #20
|
||
* SpecTol = 'NA' ;*#22
|
||
* EvalMeas = 'HF' ;* #23
|
||
* Size = '1 Cass' ;* #24a
|
||
* Freq = 'All' ;* #24b
|
||
* CtrlMethod = 'WI' ;* #25
|
||
* RPlan = 'ORAP' ;* #26
|
||
*
|
||
* PrintTbl = StepNumber:@vm:ProcessName:@vm:Machine:@vm:PSNId:@vm:Product:@vm:Process:@vm:SpecTol:@vm
|
||
* PrintTbl:= EvalMeas:@vm:Size:@vm:Freq:@vm:CtrlMethod:@vm:RPlan
|
||
* Void = set_printer( 'ADDTABLE', TableColInfo, '', PrintTbl, '', '', 1, TB_ALL:@fm:'C' )
|
||
*end
|
||
|
||
|
||
*if ( PreClean <> 'No' ) and ( PreClean <> '' ) then
|
||
* * PRE CLEANING STEP
|
||
* Process = ''
|
||
* StepNumber += 1
|
||
* ProcessName = 'Pre-epi Clean' ;* #16
|
||
* if PreClean = 'If Necessary' then
|
||
* PreClean = 'Semitool'
|
||
* end
|
||
* if PreClean = 'Semitool' then
|
||
* Process = 'SC-1 Clean'
|
||
* end
|
||
* if PreClean = 'Megasonic' then
|
||
* Process = field( SubstrInfo<1,QSSubWafersize$>, ' ', 3 ):'"'
|
||
* end
|
||
* Machine = PreClean ;* #17
|
||
* Product = 'SC-1' ;* #19
|
||
* Process = Process ;* #20
|
||
* SpecTol = 'NA' ;*#22
|
||
* EvalMeas = PreClean ;* #23
|
||
* Size = '1 Cass' ;* #24a
|
||
* Freq = 'All' ;* #24b
|
||
* CtrlMethod = 'WI' ;* #25
|
||
* RPlan = 'ORAP' ;* #26
|
||
*
|
||
* PrintTbl = StepNumber:@vm:ProcessName:@vm:Machine:@vm:PSNId:@vm:Product:@vm:Process:@vm:SpecTol:@vm
|
||
* PrintTbl:= EvalMeas:@vm:Size:@vm:Freq:@vm:CtrlMethod:@vm:RPlan
|
||
* Void = set_printer( 'ADDTABLE', TableColInfo, '', PrintTbl, '', '', 1, TB_ALL:@fm:'C' )
|
||
*end
|
||
|
||
ReactorTypes = ''
|
||
ReactorTypes = oconv( PSN<prod_spec_reactor_type$> , '[PROD_SPEC_RTYPE_CONV]' )
|
||
*E1 = PSN<prod_spec_e1$>
|
||
*E2 = PSN<prod_spec_e2$>
|
||
*Centura = PSN<prod_spec_centura$>
|
||
*Gemini = PSN<prod_spec_gemini$>
|
||
*MFC = PSN<prod_spec_mfc$>
|
||
*if E1 then
|
||
* ReactorTypes := 'E1, '
|
||
*end
|
||
*if E2 then
|
||
* ReactorTypes := 'E2, '
|
||
*end
|
||
*if Centura then
|
||
* ReactorTypes := 'Centura, '
|
||
*end
|
||
*if Gemini then
|
||
* ReactorTypes := 'Gemini, '
|
||
*end
|
||
*if MFC then
|
||
* ReactorTypes := 'MFC, '
|
||
*end
|
||
*ReactorTypes[-2,2] = ''
|
||
|
||
ThickMin = xlate( 'PROD_SPEC', PSNId, 'THICK_MIN_ALL', 'X' )
|
||
ThickMax = xlate( 'PROD_SPEC', PSNId, 'THICK_MAX_ALL', 'X' )
|
||
ThickMeasFirst = xlate( 'PROD_SPEC', PSNId, 'THICK_MEAS_FIRST_ALL', 'X' )
|
||
ThickMeasLast = xlate( 'PROD_SPEC', PSNId, 'THICK_MEAS_LAST_ALL', 'X' )
|
||
ThickMeasFreq = xlate( 'PROD_SPEC', PSNId, 'THICK_MEAS_FREQ_ALL', 'X' )
|
||
ThickMeasTool = xlate( 'PROD_SPEC', PSNId, 'THICK_MEAS_TOOL_ALL', 'X' )
|
||
ThickMeasType = xlate( 'PROD_SPEC', PSNId, 'THICK_MEAS_TYPE_ALL', 'X' )
|
||
ThickMeasSPC = xlate( 'PROD_SPEC', PSNId, 'THICK_MEAS_SPC_ALL', 'X' )
|
||
ThickUnits = xlate( 'PROD_SPEC', PSNId, 'THICK_UNITS_ALL', 'X' )
|
||
|
||
ResMin = xlate( 'PROD_SPEC', PSNId, 'RES_MIN_ALL', 'X' )
|
||
ResMax = xlate( 'PROD_SPEC', PSNId, 'RES_MAX_ALL', 'X' )
|
||
ResMeasFirst = xlate( 'PROD_SPEC', PSNId, 'RES_MEAS_FIRST_ALL', 'X' )
|
||
ResMeasLast = xlate( 'PROD_SPEC', PSNId, 'RES_MEAS_LAST_ALL', 'X' )
|
||
ResMeasFreq = xlate( 'PROD_SPEC', PSNId, 'RES_MEAS_FREQ_ALL', 'X' )
|
||
ResMeasTool = xlate( 'PROD_SPEC', PSNId, 'RES_MEAS_TOOL_ALL', 'X' )
|
||
ResMeasType = xlate( 'PROD_SPEC', PSNId, 'RES_MEAS_TYPE_ALL', 'X' )
|
||
ResMeasSPC = xlate( 'PROD_SPEC', PSNId, 'RES_MEAS_SPC_ALL', 'X' )
|
||
ResUnits = xlate( 'PROD_SPEC', PSNId, 'RES_UNITS_ALL', 'X' )
|
||
|
||
ConMin = xlate( 'PROD_SPEC', PSNId, 'CON_MIN_ALL', 'X' )
|
||
ConMax = xlate( 'PROD_SPEC', PSNId, 'CON_MAX_ALL', 'X' )
|
||
ConMeasFirst = xlate( 'PROD_SPEC', PSNId, 'CON_MEAS_FIRST_ALL', 'X' )
|
||
ConMeasLast = xlate( 'PROD_SPEC', PSNId, 'CON_MEAS_LAST_ALL', 'X' )
|
||
ConMeasFreq = xlate( 'PROD_SPEC', PSNId, 'CON_MEAS_FREQ_ALL', 'X' )
|
||
ConMeasTool = xlate( 'PROD_SPEC', PSNId, 'CON_MEAS_TOOL_ALL', 'X' )
|
||
ConMeasType = xlate( 'PROD_SPEC', PSNId, 'CON_MEAS_TYPE_ALL', 'X' )
|
||
ConMeasSPC = xlate( 'PROD_SPEC', PSNId, 'CON_MEAS_SPC_ALL', 'X' )
|
||
ConUnits = xlate( 'PROD_SPEC', PSNId, 'CON_UNITS_ALL', 'X' )
|
||
|
||
StressMin = xlate( 'PROD_SPEC', PSNId, 'STRESS_MIN', 'X' )
|
||
StressMax = xlate( 'PROD_SPEC', PSNId, 'STRESS_MAX', 'X' )
|
||
StressMeasFirst = xlate( 'PROD_SPEC', PSNId, 'STRESS_MEAS_FIRST', 'X' )
|
||
StressMeasLast = xlate( 'PROD_SPEC', PSNId, 'STRESS_MEAS_LAST', 'X' )
|
||
StressMeasFreq = xlate( 'PROD_SPEC', PSNId, 'STRESS_MEAS_FREQ', 'X' )
|
||
StressMeasTool = xlate( 'PROD_SPEC', PSNId, 'STRESS_MEAS_TOOL', 'X' )
|
||
StressMeasType = xlate( 'PROD_SPEC', PSNId, 'STRESS_MEAS_TYPE', 'X' )
|
||
StressMeasSPC = xlate( 'PROD_SPEC', PSNId, 'STRESS_MEAS_SPC', 'X' )
|
||
|
||
TransSpec = xlate( 'PROD_SPEC', PSNId, 'TRANS_SPEC', 'X' )
|
||
TransMeasFirst = xlate( 'PROD_SPEC', PSNId, 'TRANS_MEAS_FIRST', 'X' )
|
||
TransMeasLast = xlate( 'PROD_SPEC', PSNId, 'TRANS_MEAS_LAST', 'X' )
|
||
TransMeasFreq = xlate( 'PROD_SPEC', PSNId, 'TRANS_MEAS_FREQ', 'X' )
|
||
TransMeasTool = xlate( 'PROD_SPEC', PSNId, 'TRANS_MEAS_TOOL', 'X' )
|
||
TransMeasType = xlate( 'PROD_SPEC', PSNId, 'TRANS_MEAS_TYPE', 'X' )
|
||
TransMeasSPC = xlate( 'PROD_SPEC', PSNId, 'TRANS_MEAS_SPC', 'X' )
|
||
|
||
for i = 1 to Lcnt
|
||
StepNumber += 1
|
||
ThisThickMin = oconv( ThickMin<1,i>, 'MD2' )
|
||
ThisThickMax = oconv( ThickMax<1,i>, 'MD2' )
|
||
ThisThickTool = ThickMeasTool<1,i>
|
||
ThisThickFirst = ThickMeasFirst<1,i>
|
||
ThisThickLast = ThickMeasLast<1,i>
|
||
ThisThickFreq = ThickMeasFreq<1,i>
|
||
ThisThickType = ThickMeasType<1,i>
|
||
ThisThickUnit = ThickUnits<1,i>
|
||
ThisThickSPC = ThickMeasSPC<1,i>
|
||
|
||
swap 'æm' with 'um' in ThisThickUnit
|
||
swap 'ê-cm' with 'ohm.cm' in ThisThickUnit
|
||
swap 'ê/Ü' with 'ohm/sq' in ThisThickUnit
|
||
swap '' with 'A' in ThisThickUnit
|
||
|
||
ProcessName = 'Epitaxy Layer ':i ;* #16
|
||
Machine = ReactorTypes ;* #17
|
||
Product = 'Thickness' ;* #19
|
||
Process = 'Epi Growth';* #20
|
||
SpecTol = ThisThickMin:' - ':ThisThickMax:ThisThickUnit;*#22
|
||
EvalMeas = ThisThickTool;* #23
|
||
Size = ThisThickType;* #24a
|
||
Freq = ''
|
||
if ThisThickFirst then
|
||
Freq = '1st, '
|
||
end
|
||
if ThisThickFreq then
|
||
Freq:= ThisThickFreq:', '
|
||
end
|
||
if ThisThickLast then
|
||
Freq:= 'last, '
|
||
end
|
||
Freq[-2,2] = ''
|
||
if ThisThickSPC = '' then
|
||
ThisThickSPC = 0
|
||
end
|
||
CtrlMethod = oconv( ThisThickSPC, 'BSPC,WI' ) ;* #25
|
||
RPlan = 'OCAP' ;* #26
|
||
PrintTbl = StepNumber:@vm:ProcessName:@vm:Machine:@vm:PSNId:@vm:Product:@vm:Process:@vm:SpecTol:@vm
|
||
PrintTbl:= EvalMeas:@vm:Size:@vm:Freq:@vm:CtrlMethod:@vm:RPlan
|
||
Void = set_printer( 'ADDTABLE', TableColInfo, '', PrintTbl, '', '', 1, TB_ALL:@fm:'C' )
|
||
|
||
* RESISTIVITY
|
||
StepNumber += 1
|
||
ThisResMin = oconv( ResMin<1,i>, 'MD3' )
|
||
ThisResMax = oconv( ResMax<1,i>, 'MD3' )
|
||
ThisResTool = ResMeasTool<1,i>
|
||
ThisResFirst = ResMeasFirst<1,i>
|
||
ThisResLast = ResMeasLast<1,i>
|
||
ThisResFreq = ResMeasFreq<1,i>
|
||
ThisResType = ResMeasType<1,i>
|
||
ThisResUnit = ResUnits<1,i>
|
||
ThisResSPC = ResMeasSPC<1,i>
|
||
|
||
swap 'æm' with 'um' in ThisResUnit
|
||
swap 'ê-cm' with 'ohm.cm' in ThisResUnit
|
||
swap 'ê/Ü' with 'ohm/sq' in ThisResUnit
|
||
swap '' with 'A' in ThisResUnit
|
||
|
||
ProcessName = 'Epitaxy Layer ':i ;* #16
|
||
Machine = ReactorTypes ;* #17
|
||
Product = 'Resistivity' ;* #19
|
||
Process = 'Epi Growth';* #20
|
||
SpecTol = ThisResMin:' - ':ThisResMax:ThisResUnit ;*#22
|
||
EvalMeas = ThisResTool;* #23
|
||
Size = ThisResType;* #24a
|
||
Freq = ''
|
||
if ThisResFirst then
|
||
Freq: = '1st, '
|
||
end
|
||
if ThisResFreq then
|
||
Freq:= ThisResFreq:', '
|
||
end
|
||
if ThisResLast then
|
||
Freq:= 'last, '
|
||
end
|
||
Freq[-2,2] = '' ;* #24b
|
||
if ThisResSPC = '' then
|
||
ThisResSPC = 0
|
||
end
|
||
CtrlMethod = oconv( ThisResSPC, 'BSPC,WI' ) ;* #25
|
||
RPlan = 'OCAP' ;* #26
|
||
|
||
PrintTbl = StepNumber:@vm:ProcessName:@vm:Machine:@vm:PSNId:@vm:Product:@vm:Process:@vm:SpecTol:@vm
|
||
PrintTbl:= EvalMeas:@vm:Size:@vm:Freq:@vm:CtrlMethod:@vm:RPlan
|
||
Void = set_printer( 'ADDTABLE', TableColInfo, '', PrintTbl, '', '', 1, TB_ALL:@fm:'C' )
|
||
|
||
* CONCENTRATION
|
||
ThisConMin = oconv( ConMin<1,i>, 'MS21' )
|
||
if ( ThisConMin <> '' ) then
|
||
StepNumber += 1
|
||
ThisConMax = oconv( ConMax<1,i>, 'MS21' )
|
||
ThisConTool = ConMeasTool<1,i>
|
||
ThisConFirst = ConMeasFirst<1,i>
|
||
ThisConLast = ConMeasLast<1,i>
|
||
ThisConFreq = ConMeasFreq<1,i>
|
||
ThisConType = ConMeasType<1,i>
|
||
ThisConUnit = ConUnits<1,i>
|
||
ThisConSPC = ConMeasSPC<1,i>
|
||
|
||
swap 'æm' with 'um' in ThisConUnit
|
||
swap 'ê-cm' with 'ohm.cm' in ThisConUnit
|
||
swap 'ê/Ü' with 'ohm/sq' in ThisConUnit
|
||
swap '' with 'A' in ThisConUnit
|
||
|
||
ProcessName = 'Epitaxy Layer ':i ;* #16
|
||
Machine = ReactorTypes ;* #17
|
||
Product = 'Concentration' ;* #19
|
||
Process = 'Epi Growth';* #20
|
||
SpecTol = ThisConMin:' - ':ThisConMax:ThisConUnit ;*#22
|
||
EvalMeas = ThisConTool;* #23
|
||
Size = ThisConType;* #24a
|
||
Freq = ''
|
||
if ThisConFirst then
|
||
Freq: = '1st, '
|
||
end
|
||
if ThisConFreq then
|
||
Freq:= ThisResFreq:', '
|
||
end
|
||
if ThisConLast then
|
||
Freq:= 'last, '
|
||
end
|
||
Freq[-2,2] = '' ;* #24b
|
||
if ThisConSPC = '' then
|
||
ThisConSPC = 0
|
||
end
|
||
CtrlMethod = oconv( ThisConSPC, 'BSPC,WI' ) ;* #25
|
||
RPlan = 'OCAP' ;* #26
|
||
|
||
PrintTbl = StepNumber:@vm:ProcessName:@vm:Machine:@vm:PSNId:@vm:Product:@vm:Process:@vm:SpecTol:@vm
|
||
PrintTbl:= EvalMeas:@vm:Size:@vm:Freq:@vm:CtrlMethod:@vm:RPlan
|
||
Void = set_printer( 'ADDTABLE', TableColInfo, '', PrintTbl, '', '', 1, TB_ALL:@fm:'C' )
|
||
end
|
||
next i
|
||
|
||
* STRESS
|
||
StressMin = oconv( StressMin, 'MS21' )
|
||
if ( StressMin <> '' ) then
|
||
StepNumber += 1
|
||
StressMax = oconv( StressMax, 'MS21' )
|
||
StressTool = StressMeasTool
|
||
StressFirst = StressMeasFirst
|
||
StressLast = StressMeasLast
|
||
StressFreq = StressMeasFreq
|
||
StressType = StressMeasType
|
||
StressSPC = StressMeasSPC
|
||
|
||
ProcessName = 'Epitaxy Layer 1' ;* #16 ONLY ONE LAYER FOR STRESS
|
||
Machine = ReactorTypes ;* #17
|
||
Product = 'Stress' ;* #19
|
||
Process = 'Epi Growth';* #20
|
||
SpecTol = StressMin:' - ':StressMax ;*#22
|
||
EvalMeas = StressTool;* #23
|
||
Size = StressType;* #24a
|
||
Freq = ''
|
||
if StressFirst then
|
||
Freq: = '1st, '
|
||
end
|
||
if StressFreq then
|
||
Freq:= StressFreq:', '
|
||
end
|
||
if StressLast then
|
||
Freq:= 'last, '
|
||
end
|
||
Freq[-2,2] = '' ;* #24b
|
||
if StressSPC = '' then
|
||
StressSPC = 0
|
||
end
|
||
CtrlMethod = oconv( StressSPC, 'BSPC,WI' ) ;* #25
|
||
RPlan = 'OCAP' ;* #26
|
||
PrintTbl = StepNumber:@vm:ProcessName:@vm:Machine:@vm:PSNId:@vm:Product:@vm:Process:@vm:SpecTol:@vm
|
||
PrintTbl:= EvalMeas:@vm:Size:@vm:Freq:@vm:CtrlMethod:@vm:RPlan
|
||
Void = set_printer( 'ADDTABLE', TableColInfo, '', PrintTbl, '', '', 1, TB_ALL:@fm:'C' )
|
||
end
|
||
|
||
* TRANSITION
|
||
TransSpec = oconv( TransSpec, 'MD2' )
|
||
if ( TransSpec <> '' ) then
|
||
StepNumber += 1
|
||
TransTool = TransMeasTool
|
||
TransFirst = TransMeasFirst
|
||
TransLast = TransMeasLast
|
||
TransFreq = TransMeasFreq
|
||
TransType = TransMeasType
|
||
TransSPC = TransMeasSPC
|
||
|
||
ProcessName = 'Epitaxy Layer 1' ;* #16 ONLY ONE LAYER FOR TRANSITION
|
||
Machine = ReactorTypes ;* #17
|
||
Product = 'Transition' ;* #19
|
||
Process = 'Epi Growth';* #20
|
||
SpecTol = TransSpec ;*#22
|
||
EvalMeas = TransTool;* #23
|
||
Size = TransType;* #24a
|
||
Freq = ''
|
||
if TransFirst then
|
||
Freq: = '1st, '
|
||
end
|
||
if TransFreq then
|
||
Freq:= TransFreq:', '
|
||
end
|
||
if TransLast then
|
||
Freq:= 'last, '
|
||
end
|
||
Freq[-2,2] = '' ;* #24b
|
||
if TransSPC = '' then
|
||
TransSPC = 0
|
||
end
|
||
CtrlMethod = oconv( TransSPC, 'BSPC,WI' ) ;* #25
|
||
RPlan = 'OCAP' ;* #26
|
||
PrintTbl = StepNumber:@vm:ProcessName:@vm:Machine:@vm:PSNId:@vm:Product:@vm:Process:@vm:SpecTol:@vm
|
||
PrintTbl:= EvalMeas:@vm:Size:@vm:Freq:@vm:CtrlMethod:@vm:RPlan
|
||
Void = set_printer( 'ADDTABLE', TableColInfo, '', PrintTbl, '', '', 1, TB_ALL:@fm:'C' )
|
||
end
|
||
|
||
if FirstBrightLight then
|
||
* BRIGHTLIGHT FIRST WAFER INSPECTION
|
||
StepNumber += 1
|
||
ProcessName = 'First Wafer Insp' ;* #16
|
||
Machine = 'Brightlight' ;* #17
|
||
Product = 'LPDs' ;* #19
|
||
Process = 'Visual' ;* #20
|
||
SpecTol = '<':FirstLPDLimit;* #22
|
||
EvalMeas = 'Brightlight' ;* #23
|
||
Size = '1 Wafer' ;* #24a
|
||
Freq = 'Per Cass' ;* #24b
|
||
CtrlMethod = 'WI' ;* #25
|
||
RPlan = 'ORAP' ;* #26
|
||
|
||
PrintTbl = StepNumber:@vm:ProcessName:@vm:Machine:@vm:PSNId:@vm:Product:@vm:Process:@vm:SpecTol:@vm
|
||
PrintTbl:= EvalMeas:@vm:Size:@vm:Freq:@vm:CtrlMethod:@vm:RPlan
|
||
Void = set_printer( 'ADDTABLE', TableColInfo, '', PrintTbl, '', '', 1, TB_ALL:@fm:'C' )
|
||
end
|
||
|
||
if FirstMicroscope then
|
||
* FIRST MICROSCOPE
|
||
StepNumber += 1
|
||
ProcessName = 'First Wafer Insp' ;* #16
|
||
Machine = 'Microscope' ;* #17
|
||
Product = 'Surface Quality' ;* #19
|
||
Process = 'Visual' ;* #20
|
||
SpecTol = 'PSN#':PSNId:' - Surface Spec' ;*#22
|
||
EvalMeas = 'Microscope' ;* #23
|
||
Size = '1 Wafer' ;* #24a
|
||
Freq = 'Per Cass' ;* #24b
|
||
CtrlMethod = 'WI' ;* #25
|
||
RPlan = 'ORAP' ;* #26
|
||
|
||
PrintTbl = StepNumber:@vm:ProcessName:@vm:Machine:@vm:PSNId:@vm:Product:@vm:Process:@vm:SpecTol:@vm
|
||
PrintTbl:= EvalMeas:@vm:Size:@vm:Freq:@vm:CtrlMethod:@vm:RPlan
|
||
Void = set_printer( 'ADDTABLE', TableColInfo, '', PrintTbl, '', '', 1, TB_ALL:@fm:'C' )
|
||
end
|
||
|
||
if FirstSurfscan then
|
||
* FIRST SURFSCAN
|
||
StepNumber += 1
|
||
ProcessName = 'First Wafer Insp' ;* #16
|
||
Machine = 'Surf Scan' ;* #17
|
||
Product = 'LPDs' ;* #19
|
||
Process = FirstSurfscanRecipe ;* #20
|
||
SpecTol = 'See Hard Copy Spec' ;*#22
|
||
EvalMeas = 'Surf Scan' ;* #23
|
||
Size = '1 Wafer' ;* #24a
|
||
Freq = 'Per Cass' ;* #24b
|
||
CtrlMethod = 'WI' ;* #25
|
||
RPlan = 'ORAP' ;* #26
|
||
|
||
PrintTbl = StepNumber:@vm:ProcessName:@vm:Machine:@vm:PSNId:@vm:Product:@vm:Process:@vm:SpecTol:@vm
|
||
PrintTbl:= EvalMeas:@vm:Size:@vm:Freq:@vm:CtrlMethod:@vm:RPlan
|
||
Void = set_printer( 'ADDTABLE', TableColInfo, '', PrintTbl, '', '', 1, TB_ALL:@fm:'C' )
|
||
end
|
||
|
||
if ( PostClean <> 'No' ) and ( PostClean <> '' ) then
|
||
* POST CLEANING STEP
|
||
Process = ''
|
||
StepNumber += 1
|
||
ProcessName = 'Post-epi Clean' ;* #16
|
||
if PostClean = 'Semitool' then
|
||
Process = 'SC-1 Clean'
|
||
end
|
||
if PostClean = 'Megasonic' then
|
||
Process = field( SubstrInfo<1,QSSubWafersize$>, ' ', 3 ):'"'
|
||
end
|
||
Machine = PostClean ;* #17
|
||
Product = 'SC-1' ;* #19
|
||
Process = Process ;* #20
|
||
SpecTol = 'NA' ;*#22
|
||
EvalMeas = PostClean ;* #23
|
||
Size = '1 Cass' ;* #24a
|
||
Freq = 'All' ;* #24b
|
||
CtrlMethod = 'WI' ;* #25
|
||
RPlan = 'ORAP' ;* #26
|
||
|
||
PrintTbl = StepNumber:@vm:ProcessName:@vm:Machine:@vm:PSNId:@vm:Product:@vm:Process:@vm:SpecTol:@vm
|
||
PrintTbl:= EvalMeas:@vm:Size:@vm:Freq:@vm:CtrlMethod:@vm:RPlan
|
||
Void = set_printer( 'ADDTABLE', TableColInfo, '', PrintTbl, '', '', 1, TB_ALL:@fm:'C' )
|
||
end
|
||
|
||
if PostBrightLight then
|
||
* BRIGHTLIGHT POST EPI
|
||
StepNumber += 1
|
||
ProcessName = 'Post-epi Insp' ;* #16
|
||
Machine = 'Brightlight' ;* #17
|
||
Product = 'LPDs' ;* #19
|
||
Process = 'Visual' ;* #20
|
||
SpecTol = '<':FirstLPDLimit;* #22 ;* USING FIRST CAUSE THIS WOULD BE CONSIDERED POST EPI
|
||
EvalMeas = 'Brightlight' ;* #23
|
||
Size = '1 Wafer' ;* #24a
|
||
Freq = 'Per Cass' ;* #24b
|
||
CtrlMethod = 'WI' ;* #25
|
||
RPlan = 'ORAP' ;* #26
|
||
|
||
PrintTbl = StepNumber:@vm:ProcessName:@vm:Machine:@vm:PSNId:@vm:Product:@vm:Process:@vm:SpecTol:@vm
|
||
PrintTbl:= EvalMeas:@vm:Size:@vm:Freq:@vm:CtrlMethod:@vm:RPlan
|
||
Void = set_printer( 'ADDTABLE', TableColInfo, '', PrintTbl, '', '', 1, TB_ALL:@fm:'C' )
|
||
end
|
||
|
||
if PostSurfscan then
|
||
* POST SURFSCAN
|
||
StepNumber += 1
|
||
ProcessName = 'Post-epi Insp' ;* #16
|
||
Machine = 'Surf Scan' ;* #17
|
||
Product = 'LPDs' ;* #19
|
||
Process = PostSurfscanRecipe ;* #20
|
||
SpecTol = 'See Hard Copy Spec' ;*#22
|
||
EvalMeas = 'Surf Scan' ;* #23
|
||
Size = '100%' ;* #24a
|
||
Freq = 'Per Cass' ;* #24b
|
||
CtrlMethod = 'WI' ;* #25
|
||
RPlan = 'ORAP' ;* #26
|
||
|
||
PrintTbl = StepNumber:@vm:ProcessName:@vm:Machine:@vm:PSNId:@vm:Product:@vm:Process:@vm:SpecTol:@vm
|
||
PrintTbl:= EvalMeas:@vm:Size:@vm:Freq:@vm:CtrlMethod:@vm:RPlan
|
||
Void = set_printer( 'ADDTABLE', TableColInfo, '', PrintTbl, '', '', 1, TB_ALL:@fm:'C' )
|
||
end
|
||
|
||
* SHIPPING STEP WILL THE LAST STEP OF EACH CONTROL PLAN
|
||
StepNumber += 1
|
||
PrintTbl = StepNumber:@vm:'Shipping':@vm:'Paperwork':@vm:PSNId:@vm:'Paperwork':@vm:'Visual':@vm
|
||
PrintTbl:= 'Consistent Data':@vm:'Visual':@vm:'Shipment':@vm:'All':@vm:'WI':@vm:'Pass/Fail'
|
||
Void = set_printer( 'ADDTABLE', TableColInfo, '', PrintTbl, '', '', 1, TB_ALL:@fm:'C' )
|
||
|
||
* PRINT THE SPECIAL INSTRUCTIONS
|
||
Font<4> = 1
|
||
Void = set_printer( 'FONT', Font )
|
||
Void = set_printer( 'TEXT', '' )
|
||
Void = set_printer( 'TEXT', 'Special Instructions:' )
|
||
TableColInfo = '<_15120'
|
||
PrintTbl = SpecialInst
|
||
Font<4> = 0
|
||
Void = set_printer( 'FONT', Font )
|
||
Void = set_printer( 'ADDTABLE', TableColInfo, '', PrintTbl, '', '', 0, TB_BOX:@fm:'C' )
|
||
|
||
* PRINT THE PROVEIN INSTRUCTIONS
|
||
Font<4> = 1
|
||
Void = set_printer( 'FONT', Font )
|
||
Void = set_printer( 'TEXT', '' )
|
||
Void = set_printer( 'TEXT', 'Provein Instructions:' )
|
||
TableColInfo = '<_15120'
|
||
PrintTbl = ProveInInst
|
||
Font<4> = 0
|
||
Void = set_printer( 'FONT', Font )
|
||
Void = set_printer( 'ADDTABLE', TableColInfo, '', PrintTbl, '', '', 0, TB_BOX:@fm:'C' )
|
||
|
||
* PRINT THE SALES/CUST SERVICE NOTES
|
||
Font<4> = 1
|
||
Void = set_printer( 'FONT', Font )
|
||
Void = set_printer( 'TEXT', '' )
|
||
Void = set_printer( 'TEXT', 'Sales/Customer Service Notes:' )
|
||
TableColInfo = '<_15120'
|
||
PrintTbl = SalesNotes
|
||
Font<4> = 0
|
||
Void = set_printer( 'FONT', Font )
|
||
Void = set_printer( 'ADDTABLE', TableColInfo, '', PrintTbl, '', '', 0, TB_BOX:@fm:'C' )
|
||
|
||
stat = set_printer( 'TERM', 1 )
|
||
|
||
RETURN 0
|
||
*===========================================================================*
|
||
|