Created temporary workarounds to QA Metrology not getting set correctly.

This commit is contained in:
Infineon\Ouellette
2025-08-06 16:20:43 -07:00
parent f54331eb0e
commit 3125225639
3 changed files with 107 additions and 43 deletions

View File

@ -501,7 +501,7 @@ AddQAMet:
//Record is blank, create new from spec. //Record is blank, create new from spec.
PSN_Services('UpdateAllQAMetrologyRecord', WOMatKey) PSN_Services('UpdateAllQAMetrologyRecord', WOMatKey)
end end
Database_Services('ReleaseKeyIDLock', 'WO_MAT_QA', WOMatKey)
end else end else
LogData = '' LogData = ''
LogData<1> = LoggingDTM;//Defined at entry of subroutine LogData<1> = LoggingDTM;//Defined at entry of subroutine
@ -756,3 +756,4 @@ RETURN

View File

@ -18,6 +18,7 @@ COMPILE FUNCTION obj_WO_React(Method,Parms)
DECLARE FUNCTION Get_Status, Msg, Utility, obj_Tables, NextKey, obj_Prod_Spec, obj_WO_Mat_QA, GetTickCount DECLARE FUNCTION Get_Status, Msg, Utility, obj_Tables, NextKey, obj_Prod_Spec, obj_WO_Mat_QA, GetTickCount
Declare function Environment_Services Declare function Environment_Services
DECLARE SUBROUTINE Set_Status, Msg, obj_Tables, RList, ErrMsg, Btree.Extract, obj_WO_Mat_QA, Mona_Services DECLARE SUBROUTINE Set_Status, Msg, obj_Tables, RList, ErrMsg, Btree.Extract, obj_WO_Mat_QA, Mona_Services
Declare subroutine RDS_Services
$INSERT MSG_EQUATES $INSERT MSG_EQUATES
$INSERT WO_REACT_EQUATES $INSERT WO_REACT_EQUATES
@ -303,46 +304,8 @@ RETURN
AddSchedQA: AddSchedQA:
* * * * * * * * * * * * * *
chgCnt = COUNT(ChangePosList,@VM) + (ChangePosList NE '') //Redirect to this service as a fallback because the below logic doesn't work
RDS_Services('ProcessMetQA', RDSNo)
FOR I = 1 TO chgCnt
AddCassNo = CassNos<1,ChangePoslist<1,I>>
Log:= 'AddSched on CassNo: ':AddCassNo:@FM
owmParms = WONo:@RM
owmParms := StepNo:@RM
owmParms := AddCassNo:@RM
owmParms := QAMetData<COL$QA_MET_STAGE>:@RM
owmParms := QAMetData<COL$QA_MET_TEST>:@RM
owmParms := QAMetData<COL$QA_MET_PROP>:@RM
owmParms := QAMetData<COL$QA_MET_TOOL_CLASS>:@RM
owmParms := QAMetData<COL$QA_MET_MIN>:@RM
owmParms := QAMetData<COL$QA_MET_MAX>:@RM
owmParms := QAMetData<COL$QA_MET_SLOT>:@RM
owmParms := QAMetData<COL$QA_MET_RECIPE>:@RM
owmParms := QAMetData<COL$QA_MET_RECIPE_PATTERN>:@RM
owmParms := QAMetData<COL$QA_MET_WFR_QTY>:@RM
owmParms := QAMetData<COL$QA_MET_WFR_TYPE>:@RM
owmParms := QAMetData<COL$QA_MET_REACT_SCHED>:@RM
owmParms := QAMetData<COL$QA_MET_SHIP_DOC>:@RM
owmParms := QAMetData<COL$QA_MET_PHASE_MIN> ; // 10/15/18 - djs - Added Phase Min Spec for HgCV
obj_WO_Mat_QA('AddQAMet', owmParms) ;* Schedule test boxes after list change
IF Get_Status(errCode) THEN
ErrMsg(errCode)
END
*obj_WO_Mat('AddQAMet',owmParms) ;* Dead 6/5/2015 JCH - remove after a few days
*IF Get_Status(errCode) THEN
* ErrMsg(errCode)
*END
NEXT I
RETURN RETURN

View File

@ -85,6 +85,7 @@ $Insert DICT_EQUATES
$Insert COMPANY_EQUATES $Insert COMPANY_EQUATES
$Insert RETURN_TO_FAB_LOTS_EQUATES $Insert RETURN_TO_FAB_LOTS_EQUATES
$Insert TEST_RUN_EQUATES $Insert TEST_RUN_EQUATES
$Insert QA_MET_EQUATES
EQU COL$LSID TO 1 EQU COL$LSID TO 1
EQU COL$RECIPE TO 2 EQU COL$RECIPE TO 2
@ -119,7 +120,7 @@ AutoDisplayErrors = FALSE$ ; // Set this to True$ when debugging so all erro
Declare subroutine SRP_Stopwatch, Error_Services, obj_Tables, Metrology_Services, obj_RDS_Test, SRP_JSON, Logging_Services Declare subroutine SRP_Stopwatch, Error_Services, obj_Tables, Metrology_Services, obj_RDS_Test, SRP_JSON, Logging_Services
Declare subroutine RTI_Set_Debugger, Database_Services, Btree.Extract, Extract_SI_Keys, Obj_WO_Mat, Obj_WO_Mat_Log Declare subroutine RTI_Set_Debugger, Database_Services, Btree.Extract, Extract_SI_Keys, Obj_WO_Mat, Obj_WO_Mat_Log
Declare subroutine Dialog_Box, Obj_Notes, RList, Set_Status, Errmsg, Obj_React_Status , Reactor_Services Declare subroutine Dialog_Box, Obj_Notes, RList, Set_Status, Errmsg, Obj_React_Status , Reactor_Services
Declare subroutine Rds_Services, Obj_Post_Log, Mona_Services, Transaction_Services, Reduce Declare subroutine Rds_Services, Obj_Post_Log, Mona_Services, Transaction_Services, Reduce, obj_wo_mat_qa
Declare function SRP_Sort_Array, Metrology_Services, obj_RDS_Test, obj_Test_Point_Map, Database_Services Declare function SRP_Sort_Array, Metrology_Services, obj_RDS_Test, obj_Test_Point_Map, Database_Services
Declare function Work_Order_Services, SRP_JSON, Logging_Services, Environment_Services, SRP_Trim, Error_Services Declare function Work_Order_Services, SRP_JSON, Logging_Services, Environment_Services, SRP_Trim, Error_Services
Declare function Memberof, Obj_WO_Mat, Obj_WO_Mat_Log, SRP_Array, DateTime, Dialog_Box, obj_Prod_Spec Declare function Memberof, Obj_WO_Mat, Obj_WO_Mat_Log, SRP_Array, DateTime, Dialog_Box, obj_Prod_Spec
@ -809,6 +810,104 @@ Service GetRDSRunHistoryByReactorAndWO(ReactorNo, WO)
end service end service
Service ProcessMetQA(RDSNo)
RDSRec = Database_Services('ReadDataRow', 'RDS', RDSNo)
WONo = RDSRec<RDS_WO$>
CassNo = RDSRec<RDS_CASS_NO$>
StepNo = 1
PSNos = XLATE('WO_LOG',WoNo,'PROD_VER_STEP_PSN','X')
PSNo = PSNos<1,StepNo>
QAMetData = obj_Prod_Spec('GetQAMet',PSNo:@RM:@RM:1) ;* * * Get Reactor Scheduled QA Metrology * * *
If QAMetData NE '' then
for each Stage in QAMetData<COL$QA_MET_STAGE> using @VM setting StagePos
Start = QAMetData<COL$QA_MET_START, StagePos>
Interval = QAMetData<COL$QA_MET_INTERVAL, StagePos>
Stage = QAMetData<COL$QA_MET_STAGE, StagePos>
MetPropCd = QAMetData<COL$QA_MET_PROP, StagePos>
IsProdTestReqd = RDS_Services('IsProdTestReqd', RDSNo, MetPropCd)
If IsProdTestReqd then
owmParms = WONo:@RM
owmParms := StepNo:@RM
owmParms := CassNo:@RM
owmParms := QAMetData<COL$QA_MET_STAGE, StagePos>:@RM
owmParms := QAMetData<COL$QA_MET_TEST, StagePos>:@RM
owmParms := QAMetData<COL$QA_MET_PROP, StagePos>:@RM
owmParms := QAMetData<COL$QA_MET_TOOL_CLASS, StagePos>:@RM
owmParms := QAMetData<COL$QA_MET_MIN, StagePos>:@RM
owmParms := QAMetData<COL$QA_MET_MAX, StagePos>:@RM
owmParms := QAMetData<COL$QA_MET_SLOT, StagePos>:@RM
owmParms := QAMetData<COL$QA_MET_RECIPE, StagePos>:@RM
owmParms := QAMetData<COL$QA_MET_RECIPE_PATTERN, StagePos>:@RM
owmParms := QAMetData<COL$QA_MET_WFR_QTY, StagePos>:@RM
owmParms := QAMetData<COL$QA_MET_WFR_TYPE, StagePos>:@RM
owmParms := QAMetData<COL$QA_MET_REACT_SCHED, StagePos>:@RM
owmParms := QAMetData<COL$QA_MET_SHIP_DOC, StagePos>:@RM
owmParms := QAMetData<COL$QA_MET_PHASE_MIN, StagePos> ; // 10/15/18 - djs - Added Phase Min Spec for HgCV
obj_WO_Mat_QA('AddQAMet', owmParms) ;* Schedule test boxes after list change
IF Get_Status(errCode) THEN
ErrMsg(errCode)
END
end
Next Stage
end
end service
Service IsProdTestReqd(RDSNo, PropCd)
ProdTestReqd = False$
RDSRec = Database_Services('ReadDataRow', 'RDS', RDSNo)
WONo = RDSRec<RDS_WO$>
ReactNo = RDSRec<RDS_REACTOR$>
ReactorType = Database_Services('ReadDataColumn', 'REACTOR', ReactNo, REACTOR_REACT_TYPE$, True$, 0, False$)
ThisReactorRunOrder = 0
ReactRDSNos = RDS_Services('GetRDSRunHistoryByReactorAndWO', ReactNo, WONo)
LOCATE RDSNo IN ReactRDSNos USING @VM SETTING ThisReactorRunOrder else
//Add it to the end of the RDS List assuming that it's next to run.
LastIndex = DCount(ReactRDSNos, @VM)
ThisReactorRunOrder = LastIndex + 1
ReactRDSNos<1, ThisReactorRunOrder> = RDSNo
end
PSNo = RDSRec<RDS_PROD_SPEC_ID$>
PSRec = Database_Services('ReadDataRow', 'PROD_SPEC', PSNo)
PRSLayerKeys = PSRec<PROD_SPEC_PRS_LAYER_KEY$>
for each PRSLayerKey in PRSLayerKeys using @VM
PRSPropKeys = Database_Services('ReadDataColumn', 'PRS_LAYER', PRSLayerKey, 5)
for each PRSPropKey in PRSPropKeys using @VM
PRSPropRec = Database_Services('ReadDataRow', 'PRS_PROP', PRSPropKey)
ReqdPropCd = Field(PRSPropKey, '*', 3)
If PropCd EQ ReqdPropCd then
WaferType = PRSPropRec<6>
TestType = Field(PRSPropKey, '*', 3)
Layer = Field(PRSPropKey, '*', 2)
MeasureFreq = PRSPropRec<PRS_PROP_FREQ$>
Start = PRSPropRec<PRS_PROP_MET_START$>
If WaferType EQ 'Product' OR WaferType EQ 'Prod' then
BEGIN CASE
CASE MeasureFreq = 'F' AND ThisReactorRunOrder = 1 ; ProdTestReqd = 1
CASE ThisReactorRunOrder = Start ; ProdTestReqd = 1
CASE NUM(MeasureFreq)
If MOD(ThisReactorRunOrder,MeasureFreq) - Start = 0 then
ProdTestReqd = 1
end
END CASE
end
end
Until ProdTestReqd EQ True$
Next PRSPropKey
Until ProdTestReqd EQ True$
Next PRSLayerKey
Response = ProdTestReqd
end service
Service IsTWLoggingReqd(RDSNo) Service IsTWLoggingReqd(RDSNo)
@ -2298,3 +2397,4 @@ ClearCursors:
return return