open-insight/LSL2/STPROC/MOVE_PROD_SPEC.txt
Infineon\StieberD 7762b129af pre cutover push
2024-09-04 20:33:41 -07:00

312 lines
10 KiB
Plaintext

COMPILE ROUTINE MOVE_PROD_SPEC(Dummy)
ROWDEF (CHARSTR)
DECLARE SUBROUTINE SEND_INFO, SEND_DYN, Utility, msg
$INSERT PR_SPEC_EQU
$INSERT PRS_LAYER_EQU
$INSERT PRS_SURFACE_EQU
$INSERT PRS_SUBSTRATE_EQU
OPEN 'PROD_SPEC' TO FileIn ELSE
DEBUG
GOTO Bail
END
OPEN 'PR_SPEC' TO PRSpec ELSE
DEBUG
GOTO Bail
END
OPEN 'PRS_LAYER' TO PRSLayer ELSE
debug
GOTO Bail
END
OPEN 'PRS_SURFACE' TO PRSSurface ELSE
debug
GOTO Bail
END
OPEN 'PRS_SUBSTRATE' TO PRSSubstrate ELSE
debug
GOTO Bail
END
SELECT FileIn
RecCnt = 0
Done = 0
LOOP
ReadNext PS_No ELSE Done = 1
UNTIL Done
READ ProdSpecRec FROM FileIn,PS_No THEN
PRSpecRec = ''
PRSpecRec<PR_SPEC_ENTER_BY$> = ProdSpecRec<1>
PRSpecRec<PR_SPEC_ENTER_DT$> = ProdSpecRec<2>
PRSpecRec<PR_SPEC_ACT_STATUS$> = ProdSpecRec<9>
PRSpecRec<PR_SPEC_CUST_NO$> = ProdSpecRec<8>
PRSpecRec<PR_SPEC_CUST_SPEC$> = ProdSpecRec<3>
PRSpecRec<PR_SPEC_CUST_SPEC_HARDCOPY$> = ProdSpecRec<49>
PRSpecRec<PR_SPEC_CUST_SPEC_REV$> = ProdSpecRec<4>
PRSpecRec<PR_SPEC_CUST_SPEC_REV_DT$> = ProdSpecRec<6>
PRSpecRec<PR_SPEC_CUST_PART_NO$> = ProdSpecRec<5>
PRSpecRec<PR_SPEC_MOD_DESC$> = ProdSpecRec<7>
PRSpecRec<PR_SPEC_MOD_BY$> = ProdSpecRec<47>
PRSpecRec<PR_SPEC_MOD_DTM$> = ProdSpecRec<48>
PRSpecRec<PR_SPEC_LAYER_TYPE$> = ProdSpecRec<93>
PRSpecRec<PR_SPEC_SUPPLIER_CD$> = ProdSpecRec<85>
PRSpecRec<PR_SPEC_GENERIC_RECIPE$> = ProdSpecRec<17>
PRSpecRec<PR_SPEC_CUST_SVC_NOTES$> = ProdSpecRec<22>
PRSpecRec<PR_SPEC_SCHED_NOTES$> = ProdSpecRec<20>
PRSpecRec<PR_SPEC_WAFER_PART_NO$> = ProdSpecRec<97>
PRSpecRec<PR_SPEC_WAFER_MFG$> = ProdSpecRec<98>
PRSpecRec<PR_SPEC_SCANNED_IMG_PATH$> = ProdSpecRec<88>
PRSpecRec<PR_SPEC_SURF_SPEC_NOTES$> = ProdSpecRec<68>
PRSpecRec<PR_SPEC_LAYER_KEYS$> = ''
PRSpecRec<PR_SPEC_SURFACE_KEYS$> = ''
SpecAddtl = ProdSpecRec<25>
PRSpecRec<PR_SPEC_PREQUAL_SIG$> = SpecAddtl<1,10>
IF SpecAddtl<1,10> = '' THEN
PRSpecRec<PR_SPEC_PREQUAL_DTM$> = ''
END ELSE
PRSpecRec<PR_SPEC_PREQUAL_DTM$> = ICONV(OCONV(SpecAddtl<1,17>,'D'):' ':OCONV(SpecAddtl<1,18>,'MTS'),'DT')
END
PRSpecRec<PR_SPEC_QUAL_SIG$> = SpecAddtl<1,2>
IF SpecAddtl<1,2> = '' THEN
PRSpecRec<PR_SPEC_QUAL_DTM$> = ''
END ELSE
PRSpecRec<PR_SPEC_QUAL_DTM$> = ICONV(OCONV(SpecAddtl<1,13>,'D'):' ':OCONV(SpecAddtl<1,14>,'MTS'),'DT')
END
PRSpecRec<PR_SPEC_PREPROD_SIG$> = SpecAddtl<1,9>
IF SpecAddtl<1,9> = '' THEN
PRSpecRec<PR_SPEC_PREPROD_DTM$> = ''
END ELSE
PRSpecRec<PR_SPEC_PREPROD_DTM$> = ICONV(OCONV(SpecAddtl<1,15>,'D'):' ':OCONV(SpecAddtl<1,16>,'MTS'),'DT')
END
PRSpecRec<PR_SPEC_PROD_SIG$> = SpecAddtl<1,1>
IF SpecAddtl<1,1> = '' THEN
PRSpecRec<PR_SPEC_PROD_DTM$> = ''
END ELSE
PRSpecRec<PR_SPEC_PROD_DTM$> = ICONV(OCONV(SpecAddtl<1,11>,'D'):' ':OCONV(SpecAddtl<1,12>,'MTS'),'DT')
END
WRITE PRSpecRec ON PRSpec,PS_No THEN
RecCnt += 1
Send_Info(RecCnt)
END
EpiLayers = ProdSpecRec<15>
CONVERT CHAR(248) TO @RM IN EpiLayers
CONVERT @VM TO @FM IN EpiLayers
CONVERT @SVM TO @VM IN EpiLayers
CONVERT '~' TO @VM IN EpiLayers
FOR I = 1 TO COUNT(EpiLayers,@RM) + (EpiLayers NE '')
EpiLayer = FIELD(EpiLayers,@RM,I,1)
PRSLayerRec = ''
BEGIN CASE
CASE I = 1
Layer = 'L1'
PRSLayerRec<PRS_LAYER_STRESS_MIN$> = SpecAddtl<1,6>
PRSLayerRec<PRS_LAYER_STRESS_MAX$> = SpecAddtl<1,7>
PRSLayerRec<PRS_LAYER_STRESS_MEASUREMENT$> = SpecAddtl<1,4>
PRSLayerRec<PRS_LAYER_TRANS_SPEC$> = SpecAddtl<1,8>
PRSLayerRec<PRS_LAYER_TRANS_MEASUREMENT$> = SpecAddtl<1,5>
CASE I = 2 ; Layer = 'L2'
CASE I = 3 ; Layer = '2'
CASE 1 ; Layer = I-1
END CASE
PRSLayerRec<1> = EpiLayer<10>
PRSLayerRec<2> = EpiLayer<11>
PRSLayerRec<3> = EpiLayer<12>
PRSLayerRec<4> = EpiLayer<1>
PRSLayerRec<5> = EpiLayer<2>
PRSLayerRec<6> = EpiLayer<3>
PRSLayerRec<7> = EpiLayer<15>
PRSLayerRec<8> = ICONV(OCONV(EpiLayer<4>,'MD3'),'MD5')
PRSLayerRec<9> = ICONV(OCONV(EpiLayer<5>,'MD3'),'MD5')
PRSLayerRec<10> = EpiLayer<6>
PRSLayerRec<11> = EpiLayer<14>
PRSLayerRec<12> = ICONV(OCONV(EpiLayer<7>,'MD2'),'MD3')
PRSLayerRec<13> = ICONV(OCONV(EpiLayer<8>,'MD2'),'MD3')
PRSLayerRec<14> = EpiLayer<9>
PRSLayerRec<15> = EpiLayer<13>
PRSLayerKey = PS_No:'*':Layer
WRITE PRSLayerRec ON PRSLayer,PRSLayerKey THEN
Send_Info(RecCnt:' - ':PRSLayerKey)
END
NEXT I
* PreEpi surface
Stage = 'PE' ;* Pre EPI
SurfRec = ''
SurfRec<PRS_SURFACE_PITS$> = ProdSpecRec<50>
SurfRec<PRS_SURFACE_MOUNDS$> = ProdSpecRec<51>
SurfRec<PRS_SURFACE_BL_DEFECTS$> = ProdSpecRec<52>
SurfRec<PRS_SURFACE_SPOTS$> = ProdSpecRec<53>
SurfRec<PRS_SURFACE_FOV$> = ProdSpecRec<54>
SurfRec<PRS_SURFACE_SCRATCHES$> = ProdSpecRec<55>
SurfRec<PRS_SURFACE_SCRATCH_LEN$> = ProdSpecRec<56>
SurfRec<PRS_SURFACE_LPD$> = ProdSpecRec<57>
*SurfRec<PRS_SURFACE_STACK_FAULTS$> = ProdSpecRec<
*SurfRec<PRS_SURFACE_SPIKES$> = ProdSpecRec<
SurfRec<PRS_SURFACE_BRIGHTLIGHT$> = ProdSpecRec<69>
SurfRec<PRS_SURFACE_SURFSCAN$> = ProdSpecRec<70>
SurfRec<PRS_SURFACE_MICROSCOPE$> = ProdSpecRec<71>
SurfRec<PRS_SURFACE_SURFSCAN_RECIPE$> = ProdSpecRec<77>
SurfRec<PRS_SURFACE_SURF_DEFECTS$> = ProdSpecRec<100>
SurfRec<PRS_SURFACE_SURF_HAZE$> = ProdSpecRec<101>
StageKey = PS_No:'*':Stage
WRITE SurfRec ON PRSSurface,StageKey THEN
NULL
END ELSE
debug
END
Stage = 'PSE' ;* Post EPI
SurfRec = ''
SurfRec<PRS_SURFACE_PITS$> = ProdSpecRec<58>
SurfRec<PRS_SURFACE_MOUNDS$> = ProdSpecRec<59>
SurfRec<PRS_SURFACE_BL_DEFECTS$> = ProdSpecRec<60>
SurfRec<PRS_SURFACE_SPOTS$> = ProdSpecRec<62>
SurfRec<PRS_SURFACE_FOV$> = ProdSpecRec<63>
SurfRec<PRS_SURFACE_SCRATCHES$> = ProdSpecRec<65>
SurfRec<PRS_SURFACE_SCRATCH_LEN$> = ProdSpecRec<66>
SurfRec<PRS_SURFACE_LPD$> = ProdSpecRec<67>
SurfRec<PRS_SURFACE_STACK_FAULTS$> = ProdSpecRec<61>
*SurfRec<PRS_SURFACE_SPIKES$> = ProdSpecRec<
*SurfRec<PRS_SURFACE_BRIGHTLIGHT$> = ProdSpecRec<
*SurfRec<PRS_SURFACE_SURFSCAN$> = ProdSpecRec<
*SurfRec<PRS_SURFACE_MICROSCOPE$> = ProdSpecRec<
*SurfRec<PRS_SURFACE_SURFSCAN_RECIPE$> = ProdSpecRec<
SurfRec<PRS_SURFACE_SURF_DEFECTS$> = ProdSpecRec<102>
SurfRec<PRS_SURFACE_SURF_HAZE$> = ProdSpecRec<103>
StageKey = PS_No:'*':Stage
WRITE SurfRec ON PRSSurface,StageKey THEN
NULL
END ELSE
debug
END
Stage = 'FW' ;* First Wafer
SurfRec = ''
*SurfRec<PRS_SURFACE_PITS$> = ProdSpecRec<
*SurfRec<PRS_SURFACE_MOUNDS$> = ProdSpecRec<
*SurfRec<PRS_SURFACE_BL_DEFECTS$> = ProdSpecRec<
*SurfRec<PRS_SURFACE_SPOTS$> = ProdSpecRec<
*SurfRec<PRS_SURFACE_FOV$> = ProdSpecRec<
*SurfRec<PRS_SURFACE_SCRATCHES$> = ProdSpecRec<
*SurfRec<PRS_SURFACE_SCRATCH_LEN$> = ProdSpecRec<
*SurfRec<PRS_SURFACE_LPD$> = ProdSpecRec<
*SurfRec<PRS_SURFACE_STACK_FAULTS$> = ProdSpecRec<
*SurfRec<PRS_SURFACE_SPIKES$> = ProdSpecRec<
SurfRec<PRS_SURFACE_BRIGHTLIGHT$> = ProdSpecRec<72>
SurfRec<PRS_SURFACE_SURFSCAN$> = ProdSpecRec<73>
SurfRec<PRS_SURFACE_MICROSCOPE$> = ProdSpecRec<74>
SurfRec<PRS_SURFACE_SURFSCAN_RECIPE$> = ProdSpecRec<78>
*SurfRec<PRS_SURFACE_SURF_DEFECTS$> = ProdSpecRec<
*SurfRec<PRS_SURFACE_SURF_HAZE$> = ProdSpecRec<
StageKey = PS_No:'*':Stage
WRITE SurfRec ON PRSSurface,StageKey THEN
NULL
END ELSE
debug
END
Stage = 'PC' ;* Post Clean
SurfRec = ''
*SurfRec<PRS_SURFACE_PITS$> = ProdSpecRec<
*SurfRec<PRS_SURFACE_MOUNDS$> = ProdSpecRec<
*SurfRec<PRS_SURFACE_BL_DEFECTS$> = ProdSpecRec<
*SurfRec<PRS_SURFACE_SPOTS$> = ProdSpecRec<
*SurfRec<PRS_SURFACE_FOV$> = ProdSpecRec<
*SurfRec<PRS_SURFACE_SCRATCHES$> = ProdSpecRec<
*SurfRec<PRS_SURFACE_SCRATCH_LEN$> = ProdSpecRec<
*SurfRec<PRS_SURFACE_LPD$> = ProdSpecRec<
*SurfRec<PRS_SURFACE_STACK_FAULTS$> = ProdSpecRec<
*SurfRec<PRS_SURFACE_SPIKES$> = ProdSpecRec<
SurfRec<PRS_SURFACE_BRIGHTLIGHT$> = ProdSpecRec<75>
SurfRec<PRS_SURFACE_SURFSCAN$> = ProdSpecRec<76>
*SurfRec<PRS_SURFACE_MICROSCOPE$> = ProdSpecRec<
SurfRec<PRS_SURFACE_SURFSCAN_RECIPE$> = ProdSpecRec<79>
SurfRec<PRS_SURFACE_SURF_DEFECTS$> = ProdSpecRec<104>
SurfRec<PRS_SURFACE_SURF_HAZE$> = ProdSpecRec<105>
StageKey = PS_No:'*':Stage
WRITE SurfRec ON PRSSurface,StageKey THEN
NULL
END ELSE
debug
END
SubStrate = ProdSpecRec<14>
SubRec = ''
SubRec<PRS_SUBSTRATE_WAFER_TYPE$> = SubStrate<1,2>
SubRec<PRS_SUBSTRATE_WAFER_SIZE$> = SubStrate<1,3>
SubRec<PRS_SUBSTRATE_WAFER_SUP_BY$> = SubStrate<1,17>
SubRec<PRS_SUBSTRATE_ORIENTATION$> = SubStrate<1,1>
SubRec<PRS_SUBSTRATE_RESISTIVITY$> = ICONV(OCONV(SubStrate<1,4>,'MD2'),'MD5')
SubRec<PRS_SUBSTRATE_RES_UNITS$> = SubStrate<1,5>
SubRec<PRS_SUBSTRATE_DOPANT$> = SubStrate<1,6>
SubRec<PRS_SUBSTRATE_PRE_CLEAN$> = SubStrate<1,7>
SubRec<PRS_SUBSTRATE_POST_CLEAN$> = SubStrate<1,11>
SubRec<PRS_SUBSTRATE_OXIDE_STRIP$> = SubStrate<1,10>
SubRec<PRS_SUBSTRATE_OXIDE_ANGSTROMS$> = SubStrate<1,22>
SubRec<PRS_SUBSTRATE_SUBSTRATE$> = SubStrate<1,14>
SubRec<PRS_SUBSTRATE_BACK_SEAL$> = SubStrate<1,12>
SubRec<PRS_SUBSTRATE_BL_DOPANT$> = SubStrate<1,8>:@VM:Substrate<1,9>:@VM:Substrate<1,21>
*SubRec<PRS_SUBSTRATE_INSTRUCTIONS$> = SubStrate<1,15> ;**** This is the missing processing instructions
SubRec<PRS_SUBSTRATE_SPEC_TYPE$> = SubStrate<1,18>
SubRec<PRS_SUBSTRATE_POLISH$> = SubStrate<1,19>
SubRec<PRS_SUBSTRATE_PRODUCT$> = SubStrate<1,20>
SubRec<PRS_SUBSTRATE_PRE_AKRION_RECIPE$> = SubStrate<1,23>
SubRec<PRS_SUBSTRATE_POST_AKRION_RECIPE$> = SubStrate<1,24>
WRITE SubRec ON PRSSubstrate,PS_No THEN
NULL
END ELSE
debug
END
END
REPEAT
*UNLOCK All
* * * * * * *
Bail:
* * * * * * *
END