added LSL2 stored procedures
This commit is contained in:
91
LSL2/STPROC/GETNEWSCANDATAAVG.txt
Normal file
91
LSL2/STPROC/GETNEWSCANDATAAVG.txt
Normal file
@ -0,0 +1,91 @@
|
||||
function GetNewScanDataAvg(CINo, CurrentMax, NCRNo, CurrentAvg)
|
||||
/*
|
||||
This function will return the defect data while excluding data for wafers that were NCR'ed out.
|
||||
*/
|
||||
#pragma precomp SRP_PreCompiler
|
||||
$INSERT REACT_RUN_EQUATES
|
||||
|
||||
Declare function DCount
|
||||
Declare function SRP_Math
|
||||
*Some wafers must get a reclean and thus they're read twice. We'll take the last number and assign it as the max.
|
||||
CurrentMax = CurrentMax<1,1>
|
||||
CurrentAvg = CurrentAvg<1,1>
|
||||
OldMax = CurrentMax
|
||||
|
||||
*Pulls in the values of all slots read
|
||||
Reads = XLATE('CLEAN_INSP',CINo,86,'X')
|
||||
|
||||
slots = 25
|
||||
|
||||
*Pulls up the NCR Records and looks for what failed wafers exist in each NCR
|
||||
FailedSlots = ''
|
||||
failedCount = 0
|
||||
|
||||
FailedSlots = FailedSlots:XLATE('NCR', NCRNo, 57, 'X')
|
||||
|
||||
|
||||
failedCount = Count(FailedSlots, @VM)
|
||||
|
||||
|
||||
swap @SVM with @VM in Reads
|
||||
ReadsCount = DCOUNT(Reads,@VM)
|
||||
NewMax = 0
|
||||
DefSpecs = XLATE('CLEAN_INSP',CINo, 15, 'X')
|
||||
DefSpec = DefSpecs<1,1>
|
||||
|
||||
NewReads = 0
|
||||
TotalWafers = 0
|
||||
if FailedCount GT 0 Then
|
||||
For slot = 1 to slots
|
||||
|
||||
IF Reads<1,slot> NE '' then
|
||||
If Reads<1,slot> LE DefSpec then
|
||||
NewReads += Reads<1,slot>
|
||||
TotalWafers += 1
|
||||
If Reads<1,slot> GE NewMax then
|
||||
NewMax = Reads<1,slot>
|
||||
end
|
||||
end
|
||||
/*
|
||||
failed = 0
|
||||
Loop
|
||||
For failedWafers = 1 to failedCount
|
||||
if FailedSlots<1, failedWafers> EQ slot then
|
||||
failed = 1
|
||||
end else
|
||||
failed = failed + 0
|
||||
end
|
||||
|
||||
Next failedWafers
|
||||
Until failed = 1 OR failedWafers GE failedCount
|
||||
Repeat
|
||||
|
||||
if failed = 0 AND Reads<1,slot> LE DefSpec then
|
||||
IF Reads<1,slot> GE NewMax AND Reads<1,slot> NE OldMax then
|
||||
NewMax = Reads<1,slot>
|
||||
|
||||
end
|
||||
NewReads += Reads<1,slot>
|
||||
TotalWafers = TotalWafers + 1
|
||||
end
|
||||
*/
|
||||
|
||||
end
|
||||
|
||||
Next slot
|
||||
|
||||
|
||||
RecalcCount = ReadsCount - FailedCount
|
||||
|
||||
//Catches a possible division by zero JRO 5/28/2020
|
||||
if (NewReads EQ 0) OR (TotalWafers EQ 0) then
|
||||
Ans = 0
|
||||
end else
|
||||
Ans = SRP_Math("ROUND", NewReads / TotalWafers, 3)
|
||||
end
|
||||
|
||||
end else
|
||||
Ans = OCONV(CurrentAvg,'MD3')
|
||||
end
|
||||
|
||||
Return Ans
|
Reference in New Issue
Block a user