updated 100% stratus to auto calculate std dev

This commit is contained in:
Infineon\StieberD
2024-09-19 11:43:27 -07:00
committed by Stieber Daniel (IT FI MES)
parent b0b127cd87
commit 2dc8a264c2
8 changed files with 24560 additions and 3666 deletions

View File

@ -95,7 +95,7 @@ Declare subroutine Tool_Services, Mona_Services
Declare function SRP_Sort_Array, Metrology_Services, obj_RDS_Test, obj_Test_Point_Map, Database_Services, UCase
Declare function Work_Order_Services, SRP_JSON, Logging_Services, Environment_Services, SRP_Trim, Min, Max
Declare function QA_Services, SRP_Join_Arrays, Get_Status, Obj_Clean_Insp, Datetime, SRP_Datetime
Declare function Httpclient_Services, PM_Services, Signature_Services
Declare function Httpclient_Services, PM_Services, Signature_Services, SRP_Array, Math_Services
LogPath = Environment_Services('GetApplicationRootPath') : '\LogFiles\Metrology'
LogDate = Oconv(Date(), 'D4/')
@ -494,16 +494,32 @@ Service ImportStratusData(RunData)
Case Otherwise$
Error_Services('Add', 'Unrecognized cassette ID ':Cassette:'.')
End Case
// Update WO_MAT record
If Error_Services('NoError') then
WOMatKey = WorkOrderNo : '*' : CassNo
WOMatRec = Database_Services('ReadDataRow', 'WO_MAT', WOMatKey)
// Update WO_MAT record
StdDev = ''
WOMatKey = WorkOrderNo : '*' : CassNo
WOMatRec = Database_Services('ReadDataRow', 'WO_MAT', WOMatKey)
If Error_Services('NoError') then
NumVals = 0
For each Position in Positions using @VM setting vPos
If Position NE '' then
WOMatRec<WO_MAT_MU_WAFER_THK_RESULT$, Position> = DataPoints<0, vPos>
WOMatRec<WO_MAT_MU_WAFER_THK_RESULT$, Position> = DataPoints<0, vPos>
NumVals += 1
end
Next Position
If NumVals EQ 25 then
StdDevType = 'POPULATION'
end else
StdDevType = 'SAMPLE'
end
If NumVals GT 0 then
Vals = WOMatRec<WO_MAT_MU_WAFER_THK_RESULT$>
Vals = SRP_Array('Clean', Vals, 'Trim', @VM)
StdDev = Math_Services('GetStdDev', Vals, StdDevType)
StdDev = OConv(IConv(StdDev, 'MD3'), 'MD3')
end
Database_Services('WriteDataRow', 'WO_MAT', WOMatKey, WOMatRec, True$, False$, True$)
If Error_Services('HasError') then
Metrology_Services('LogResults', RDSNo@, Machine, 'UID001', Service : ' : ' : Error_Services('GetMessage'))
@ -511,17 +527,34 @@ Service ImportStratusData(RunData)
end else
Metrology_Services('LogResults', RDSNo@, Machine, 'UID001', Service : ' : ' : Error_Services('GetMessage'))
end
//Update the WM_OUT record for EpiPro
if IsEpiPro then
WMORec = Database_Services('ReadDataRow', 'WM_OUT', RDSNo@)
for each wafer in Positions using @VM setting dPos
WMORec<WM_OUT_MU_WAFER_THK_RESULT$, wafer> = DataPoints<0, dPos>
Next wafer
// Update the WM_OUT record for EpiPro
If IsEpiPro then
NumVals = 0
WMORec = Database_Services('ReadDataRow', 'WM_OUT', RDSNo@)
For each Wafer in Positions using @VM setting dPos
If Wafer NE '' then
WMORec<WM_OUT_MU_WAFER_THK_RESULT$, Wafer> = DataPoints<0, dPos>
NumVals += 1
end
Next Wafer
If NumVals EQ 25 then
StdDevType = 'POPULATION'
end else
StdDevType = 'SAMPLE'
end
If NumVals GT 0 then
Vals = WMORec<WM_OUT_MU_WAFER_THK_RESULT$>
Vals = SRP_Array('Clean', Vals, 'Trim', @VM)
StdDev = Math_Services('GetStdDev', Vals, StdDevType)
StdDev = OConv(IConv(StdDev, 'MD3'), 'MD3')
end
Database_Services('WriteDataRow', 'WM_OUT', RDSNo@, WMORec, True$, False$, True$)
end
end
// Update WO_MAT_QA record
WOMatQAID = WorkOrderNo : '*' : CassNo
WOMatQARec = Database_Services('ReadDataRow', 'WO_MAT_QA', WOMatQAID)
StdDevMax = ''
WOMatQAID = WorkOrderNo : '*' : CassNo
WOMatQARec = Database_Services('ReadDataRow', 'WO_MAT_QA', WOMatQAID)
If Error_Services('NoError') then
SpecRecipes = WOMatQARec<WO_MAT_QA_RECIPE$>
ProfSteps = ''
@ -529,11 +562,20 @@ Service ImportStratusData(RunData)
ProfileCnt = DCount(WOMatQARec<WO_MAT_QA_PROFILE$>, @VM)
Stages = WOMatQARec<WO_MAT_QA_STAGE$>
Slots = WOMatQARec<WO_MAT_QA_SLOT$>
SpecQty = WOMatQARec<WO_MAT_QA_WFR_QTY$>
pPos = ''
For each Profile in Profiles using @VM setting pPos
Stage = Stages<0, pPos>
If ( (Profile EQ '1ADE') and ( (Stage EQ 'QA') or (Stage EQ 'MO_QA') ) ) then
Slot = Slots<0, pPos>
If ( (Slot EQ 'A') or (SpecQty EQ 'A') or (SpecQty GT 5) ) then
MetMin = WOMatQARec<WO_MAT_QA_MIN$, pPos>
MetMax = WOMatQARec<WO_MAT_QA_MAX$, pPos>
StdDevMax = ((MetMin + MetMax) / 2) * (0.02)
StdDevMax = IConv(StdDevMax,'MD3')
WOMatQARec<WO_MAT_QA_STD_RESULT$, pPos> = StdDev
WOMatQARec<WO_MAT_QA_STD_MAX$, pPos> = StdDevMax
end
Begin Case
Case Slot EQ '1'
WaferIndex = 1
@ -544,10 +586,6 @@ Service ImportStratusData(RunData)
Case Otherwise$
WaferIndex = Slot
End Case
* If Slot EQ '1' then WaferIndex = 1
* If Slot EQ 'L' then WaferIndex = 25
* //Running into Slot "A" in some PSN's and QA records. Translating slot "A" to slot 1
* If Slot EQ 'A' then WaferIndex = 1
Locate WaferIndex in Positions using @VM setting dPos then
WOMatQARec<WO_MAT_QA_RESULT$, pPos> = DataPoints<0, dPos>
end
@ -561,10 +599,11 @@ Service ImportStratusData(RunData)
end
end else
Metrology_Services('LogResults', RDSNo@, Machine, 'UID001', Service : ' : ' : Error_Services('GetMessage'))
end
end
end else
Metrology_Services('LogResults', RDSNo@, Machine, 'UID001', Service : ' : ' : Error_Services('GetMessage'))
end
end service
@ -2819,20 +2858,3 @@ LoadRunDataToDatabase:
return