diff --git a/LSL2/STPROC/NDW_WAFER_COUNTER_EVENTS.txt b/LSL2/STPROC/NDW_WAFER_COUNTER_EVENTS.txt index 59b6fd7..9f81547 100644 --- a/LSL2/STPROC/NDW_WAFER_COUNTER_EVENTS.txt +++ b/LSL2/STPROC/NDW_WAFER_COUNTER_EVENTS.txt @@ -97,17 +97,7 @@ Event WINDOW.CREATE(CreateParam) LogData<5> = ToolLoc LogData<6> = @Window:'.CREATE' Logging_Services('AppendLog', objLog, LogData, @RM, @FM) - QAMetComplete = '' - - If CassID NE '' then - If RowExists('WM_OUT', CassID) then - WOMatKey = Xlate('WM_OUT', CassID, 'WO_MAT_KEY', 'X') - end else - WOMatKey = Xlate('RDS', CassID, 'WO_MAT_KEY', 'X') - end - QAMetComplete = Wo_Mat_Qa_Services('GetQAMetComplete', WOMatKey) - end - + Convert '.' to '*' in CassID ExpectedQty = '' ExpectedWfrMap = '' @@ -115,8 +105,6 @@ Event WINDOW.CREATE(CreateParam) Set_Property(@Window:'.EDL_CASS_ID', 'TEXT', CassID) Begin Case - Case (CassID NE '' AND QAMetComplete EQ False$) - ErrorMsg = 'Wafer Counter Operation Not Allowed. QA Metrology Incomplete.' Case ( (CassID EQ '') and (ToolLoc EQ '') ) // Alternate workflow Set_Property(@Window:'.LBL_CASS_ID', 'TEXT', 'Cass ID') @@ -333,42 +321,32 @@ Event EDL_CASS_BARCODE.LOSTFOCUS(Flag, FocusID) Begin Case Case RowExists('RDS', CassetteID) WOMatKey = Xlate('RDS', CassetteID, 'WO_MAT_KEY', 'X') - QAMetComplete = Wo_Mat_Qa_Services('GetQAMetComplete', WOMatKey) - If QAMetComplete EQ True$ then - ExpectedQty = Xlate('RDS', CassetteID, 'WFRS_OUT', 'X') - Set_Property(@Window:'.EDL_EXPECTED_QTY', 'TEXT', ExpectedQty) - Set_Property(@Window:'.LBL_CASS_ID', 'TEXT', 'Cass RDS') - Set_Property(@Window:'.LBL_CASS_BARCODE', 'TEXT', 'Cass RDS 2D') - - WOMatKey = Xlate('RDS', CassetteID, 'WO_MAT_KEY', 'X') - CurrWfrMap = WO_Mat_Services('GetWaferMap', WOMatKey) - If Error_Services('NoError') then - ExpectedWfrMap = CurrWfrMap - end else - ErrorMsg = Error_Services('GetMessage') - end + ExpectedQty = Xlate('RDS', CassetteID, 'WFRS_OUT', 'X') + Set_Property(@Window:'.EDL_EXPECTED_QTY', 'TEXT', ExpectedQty) + Set_Property(@Window:'.LBL_CASS_ID', 'TEXT', 'Cass RDS') + Set_Property(@Window:'.LBL_CASS_BARCODE', 'TEXT', 'Cass RDS 2D') + + WOMatKey = Xlate('RDS', CassetteID, 'WO_MAT_KEY', 'X') + CurrWfrMap = WO_Mat_Services('GetWaferMap', WOMatKey) + If Error_Services('NoError') then + ExpectedWfrMap = CurrWfrMap end else - ErrorMsg = 'Wafer Counter Operation Not Allowed. A Metrology stage is incomplete.' + ErrorMsg = Error_Services('GetMessage') end Case RowExists('WM_OUT', CassetteID) WOMatKey = Xlate('WM_OUT', CassetteID, 'WO_MAT_KEY', 'X') - QAMetComplete = Wo_Mat_Qa_Services('GetQAMetComplete', WOMatKey) - If QAMetComplete EQ True$ then - ExpectedQty = Xlate('WM_OUT', CassetteID, 'WAFER_CNT', 'X') - Set_Property(@Window:'.EDL_EXPECTED_QTY', 'TEXT', ExpectedQty) - Set_Property(@Window:'.LBL_CASS_ID', 'TEXT', 'Cass WMO') - Set_Property(@Window:'.LBL_CASS_BARCODE', 'TEXT', 'Cass WMO 2D') - - CurrWfrMap = WM_Out_Services('GetWaferMap', CassetteID) - If Error_Services('NoError') then - ExpectedWfrMap = CurrWfrMap - end else - ErrorMsg = Error_Services('GetMessage') - end + ExpectedQty = Xlate('WM_OUT', CassetteID, 'WAFER_CNT', 'X') + Set_Property(@Window:'.EDL_EXPECTED_QTY', 'TEXT', ExpectedQty) + Set_Property(@Window:'.LBL_CASS_ID', 'TEXT', 'Cass WMO') + Set_Property(@Window:'.LBL_CASS_BARCODE', 'TEXT', 'Cass WMO 2D') + + CurrWfrMap = WM_Out_Services('GetWaferMap', CassetteID) + If Error_Services('NoError') then + ExpectedWfrMap = CurrWfrMap end else - ErrorMsg = 'Wafer Counter Operation Not Allowed. QA Metrology Incomplete.' - end + ErrorMsg = Error_Services('GetMessage') + end End Case If ErrorMsg EQ '' then @@ -423,7 +401,7 @@ end event Event EDL_TOOL_BARCODE.LOSTFOCUS(Flag, FocusID) - + If Flag EQ 1 then ErrorMsg = '' ScanData = Get_Property(CtrlEntID, 'TEXT') @@ -438,110 +416,155 @@ Event EDL_TOOL_BARCODE.LOSTFOCUS(Flag, FocusID) Cnt = DCount(ScanData, '|') If Cnt EQ 2 then WaferSize = Field(ScanData, '|', 1) - Area = Field(ScanData, '|', 2) - Def = "" - Def = "Retreiving Wafer Counter Data..." - Def = "U" - CassID = Get_Property(@Window:'.EDL_CASS_BARCODE', 'TEXT') - MsgUp = Msg(@window, Def) ;* display the processing message - WcJson = Wafer_Counter_Services('GetWaferCounterJSON', WaferSize, Area, CassID) - Msg(@window, MsgUp) ;* take down the processing message - If Error_Services('NoError') then - objJSON = '' - If SRP_JSON(objJSON, 'Parse', WcJson) EQ '' then - ScanDtm = SRP_JSON(objJSON, 'GetValue', 'dateTimeFormatted') - ToolID = SRP_JSON(objJSON, 'GetValue', 'equipmentId') - WaferCount = SRP_JSON(objJSON, 'GetValue', 'total') - SlotMap = SRP_JSON(objJSON, 'GetValue', 'slotMap') - SRP_JSON(objJSON, 'Release') - Wafer_Counter_Services('AddScan', CassID, WaferCount, ScanDtm, ToolID, @User4, Area, SlotMap) - If Error_Services('NoError') then - Set_Property(@Window:'.EDL_SCAN_DTM', 'TEXT', ScanDtm) - Set_Property(@Window:'.EDL_TOOL_ID', 'TEXT', ToolID) - Set_Property(@Window:'.EDL_WAFER_COUNT', 'TEXT', WaferCount) - EmptyColorArray = RED$ : @FM : '' : @FM : '' : @FM : '' - FilledColorArray = GREEN$ : @FM : '' : @FM : '' : @FM : '' - RowIndex = 1 - ResultArray = '' - ExpectedWfrMap = Get_Property(@Window, '@EXPECTED_WFR_MAP') - - For SlotIndex = 1 to 25 - SlotFilled = SlotMap[SlotIndex, 1] - - ExpectedVal = ExpectedWfrMap[SlotIndex, 1] - ResultArray<1, SlotIndex> = 26 - SlotIndex - If SlotFilled EQ ExpectedVal then - ResultArray<2, SlotIndex> = '' - end else - ResultArray<2, SlotIndex> = 'Error' - end - - RowIndex += 1 - Next SlotIndex - ExpectedQty = Get_Property(@Window:'.EDL_EXPECTED_QTY', 'TEXT') - Set_Property(@Window:'.EDT_WAFER_COUNTER', 'ARRAY', ResultArray) - - RowIndex = 1 - For SlotIndex = 1 to 25 - SlotFilled = SlotMap[SlotIndex, 1] - If SlotFilled then - CellColorArray = FilledColorArray - end else - CellColorArray = EmptyColorArray - end - Send_Message(@Window:'.EDT_WAFER_COUNTER', 'COLOR_BY_POS', 2, RowIndex, CellColorArray) - RowIndex += 1 - Next SlotIndex - - Begin Case - Case WaferCount NE ExpectedQty - ErrorMsg = 'Scanned wafer count "':WaferCount:'" does not match expected quantity "':ExpectedQty:'".' - Case SlotMap NE ExpectedWfrMap - ErrorMsg = 'Scanned wafer map does not match expected wafer map.' - Case Otherwise$ - SuccessMessage = 'Wafer count verification complete!' - - LogData = '' - LogData<1> = OConv(Datetime(), 'DT2/^H') - LogData<2> = @User4 - LogData<3> = SuccessMessage - Logging_Services('AppendLog', objLog, LogData, @RM, @FM) - - MsgStruct = "" - MsgStruct = MSG_WIDTH$ - MsgStruct = -300 - MsgStruct = 500 - MsgStruct = "T4" - Msg(@Window, MsgStruct, 'PROCESS_COMPLETE', '', SuccessMessage) - - AltFlow = Get_Property(@Window, '@ALTERNATE') - If AltFlow then - GoSub ClearForm - end else - End_Dialog(@Window, True$) - end - End Case - - end else - ErrorMsg = Error_Services('GetMessage') - end - end else - ErrorMsg = 'Error parsing tool scan data.' - end - end else - ErrorMsg = Error_Services('GetMessage') + Area = Field(ScanData, '|', 2) ; // This is a proxy for the operation being performed + + If Area EQ 'FQA' then + CassetteID = Get_Property(@Window:'.EDL_CASS_ID', 'TEXT') + Begin Case + Case RowExists('RDS', CassetteID) + WOMatKey = Xlate('RDS', CassetteID, 'WO_MAT_KEY', 'X') + QAMetComplete = Wo_Mat_Qa_Services('GetQAMetComplete', WOMatKey) + If QAMetComplete EQ True$ then + ExpectedQty = Xlate('RDS', CassetteID, 'WFRS_OUT', 'X') + Set_Property(@Window:'.EDL_EXPECTED_QTY', 'TEXT', ExpectedQty) + Set_Property(@Window:'.LBL_CASS_ID', 'TEXT', 'Cass RDS') + Set_Property(@Window:'.LBL_CASS_BARCODE', 'TEXT', 'Cass RDS 2D') + + WOMatKey = Xlate('RDS', CassetteID, 'WO_MAT_KEY', 'X') + CurrWfrMap = WO_Mat_Services('GetWaferMap', WOMatKey) + If Error_Services('NoError') then + ExpectedWfrMap = CurrWfrMap + end else + ErrorMsg = Error_Services('GetMessage') + end + end else + ErrorMsg = 'Wafer Counter Operation Not Allowed. A Metrology stage is incomplete.' + end + Case RowExists('WM_OUT', CassetteID) + WOMatKey = Xlate('WM_OUT', CassetteID, 'WO_MAT_KEY', 'X') + QAMetComplete = Wo_Mat_Qa_Services('GetQAMetComplete', WOMatKey) + If QAMetComplete EQ True$ then + ExpectedQty = Xlate('WM_OUT', CassetteID, 'WAFER_CNT', 'X') + Set_Property(@Window:'.EDL_EXPECTED_QTY', 'TEXT', ExpectedQty) + Set_Property(@Window:'.LBL_CASS_ID', 'TEXT', 'Cass WMO') + Set_Property(@Window:'.LBL_CASS_BARCODE', 'TEXT', 'Cass WMO 2D') + + CurrWfrMap = WM_Out_Services('GetWaferMap', CassetteID) + If Error_Services('NoError') then + ExpectedWfrMap = CurrWfrMap + end else + ErrorMsg = Error_Services('GetMessage') + end + end else + ErrorMsg = 'Wafer Counter Operation Not Allowed. QA Metrology Incomplete.' + end + End Case end + + If ErrorMsg EQ '' then + + Def = "" + Def = "Retreiving Wafer Counter Data..." + Def = "U" + CassID = Get_Property(@Window:'.EDL_CASS_BARCODE', 'TEXT') + MsgUp = Msg(@window, Def) ;* display the processing message + WcJson = Wafer_Counter_Services('GetWaferCounterJSON', WaferSize, Area, CassID) + Msg(@window, MsgUp) ;* take down the processing message + If Error_Services('NoError') then + objJSON = '' + If SRP_JSON(objJSON, 'Parse', WcJson) EQ '' then + ScanDtm = SRP_JSON(objJSON, 'GetValue', 'dateTimeFormatted') + ToolID = SRP_JSON(objJSON, 'GetValue', 'equipmentId') + WaferCount = SRP_JSON(objJSON, 'GetValue', 'total') + SlotMap = SRP_JSON(objJSON, 'GetValue', 'slotMap') + SRP_JSON(objJSON, 'Release') + Wafer_Counter_Services('AddScan', CassID, WaferCount, ScanDtm, ToolID, @User4, Area, SlotMap) + If Error_Services('NoError') then + Set_Property(@Window:'.EDL_SCAN_DTM', 'TEXT', ScanDtm) + Set_Property(@Window:'.EDL_TOOL_ID', 'TEXT', ToolID) + Set_Property(@Window:'.EDL_WAFER_COUNT', 'TEXT', WaferCount) + EmptyColorArray = RED$ : @FM : '' : @FM : '' : @FM : '' + FilledColorArray = GREEN$ : @FM : '' : @FM : '' : @FM : '' + RowIndex = 1 + ResultArray = '' + ExpectedWfrMap = Get_Property(@Window, '@EXPECTED_WFR_MAP') + + For SlotIndex = 1 to 25 + SlotFilled = SlotMap[SlotIndex, 1] + + ExpectedVal = ExpectedWfrMap[SlotIndex, 1] + ResultArray<1, SlotIndex> = 26 - SlotIndex + If SlotFilled EQ ExpectedVal then + ResultArray<2, SlotIndex> = '' + end else + ResultArray<2, SlotIndex> = 'Error' + end + + RowIndex += 1 + Next SlotIndex + ExpectedQty = Get_Property(@Window:'.EDL_EXPECTED_QTY', 'TEXT') + Set_Property(@Window:'.EDT_WAFER_COUNTER', 'ARRAY', ResultArray) + + RowIndex = 1 + For SlotIndex = 1 to 25 + SlotFilled = SlotMap[SlotIndex, 1] + If SlotFilled then + CellColorArray = FilledColorArray + end else + CellColorArray = EmptyColorArray + end + Send_Message(@Window:'.EDT_WAFER_COUNTER', 'COLOR_BY_POS', 2, RowIndex, CellColorArray) + RowIndex += 1 + Next SlotIndex + + Begin Case + Case WaferCount NE ExpectedQty + ErrorMsg = 'Scanned wafer count "':WaferCount:'" does not match expected quantity "':ExpectedQty:'".' + Case SlotMap NE ExpectedWfrMap + ErrorMsg = 'Scanned wafer map does not match expected wafer map.' + Case Otherwise$ + SuccessMessage = 'Wafer count verification complete!' + + LogData = '' + LogData<1> = OConv(Datetime(), 'DT2/^H') + LogData<2> = @User4 + LogData<3> = SuccessMessage + Logging_Services('AppendLog', objLog, LogData, @RM, @FM) + + MsgStruct = "" + MsgStruct = MSG_WIDTH$ + MsgStruct = -300 + MsgStruct = 500 + MsgStruct = "T4" + Msg(@Window, MsgStruct, 'PROCESS_COMPLETE', '', SuccessMessage) + + AltFlow = Get_Property(@Window, '@ALTERNATE') + If AltFlow then + GoSub ClearForm + end else + End_Dialog(@Window, True$) + end + End Case + + end else + ErrorMsg = Error_Services('GetMessage') + end + end else + ErrorMsg = 'Error parsing tool scan data.' + end + end else + ErrorMsg = Error_Services('GetMessage') + end + end end else ErrorMsg = 'Invalid Tool Barcode Scan.' end end else - LogData = '' LogData<1> = OConv(Datetime(), 'DT2/^H') LogData<2> = @User4 LogData<3> = 'Verification process canceled' Logging_Services('AppendLog', objLog, LogData, @RM, @FM) - End_Dialog(@Window, False$) end If ErrorMsg NE '' then @@ -624,9 +647,3 @@ ClearForm: return - - - - - -