Common ResourceID and IsViewerFile

Enable process-data-standard-format for HgCV and Tencor
This commit is contained in:
Mike Phares 2025-06-03 13:26:49 -07:00
parent dcb61e220c
commit bf82640ed2

View File

@ -398,10 +398,10 @@ Service ImportMetrologyFiles(Machine)
Begin Case Begin Case
Case Machine _EQC 'Tencor' Case Machine _EQC 'Tencor'
SearchPattern = '*.txt'; SearchPattern = '*.pdsf';
DataPath = Environment_Services('GetApplicationRootPath') : '\Metrology\MET08DDUPSFS6420\Source\MET08DDUPSFS6420\' DataPath = Environment_Services('GetApplicationRootPath') : '\Metrology\MET08DDUPSFS6420\Source\MET08DDUPSFS6420\'
Case Machine _EQC 'HgCV' Case Machine _EQC 'HgCV'
SearchPattern = '*.txt'; SearchPattern = '*.pdsf';
DataPath = Environment_Services('GetApplicationRootPath') : '\Metrology\MET08RESIHGCV\Source\MET08RESIHGCV\' DataPath = Environment_Services('GetApplicationRootPath') : '\Metrology\MET08RESIHGCV\Source\MET08RESIHGCV\'
Case Machine _EQC 'CDE' Case Machine _EQC 'CDE'
SearchPattern = '*.pdsf'; SearchPattern = '*.pdsf';
@ -647,21 +647,42 @@ Service ImportMetrologyRunData(Machine, DataPath, FileName, RunData)
// Scan the run data for machine specific information. Then call the relevant update service for the specific // Scan the run data for machine specific information. Then call the relevant update service for the specific
// machine. // machine.
ResourceID = Field(FileName, ' ', 1, 1)
IsViewerFile = Index(FileName, 'Viewer', 1)
Begin Case Begin Case
Case Machine _EQC 'Stratus' Case Machine _EQC 'Stratus'
Metrology_Services('ImportStratusData', RunData) PSN = RunData<9>
Metrology_Services('ImportStratusData', RunData, ResourceID, PSN)
MachineType@ = 'Stratus' MachineType@ = 'Stratus'
Case Machine _EQC 'Biorad' Case Machine _EQC 'Biorad'
Metrology_Services('ImportBioRadData', RunData, FileName) PSN = RunData<7>
QualFile = ( (PSN EQ 'T-Low') or (PSN EQ 'T-Mid') or (PSN EQ 'T-High') or (PSN EQ 'T_LOW') or (PSN EQ 'T_MID') or (PSN EQ 'T_HIGH') )
IF QualFile THEN
Metrology_Services('ImportBioRadQualData', RunData, ResourceID, PSN)
END ELSE
Metrology_Services('ImportBioRadData', RunData, ResourceID, IsViewerFile, PSN, FileName)
END
MachineType@ = 'Bio-Rad' MachineType@ = 'Bio-Rad'
Case Machine _EQC 'CDE' Case Machine _EQC 'CDE'
Metrology_Services('ImportCDEData', RunData, FileName) PSN = RunData<8>
QualFile = ( (PSN EQ 'RLOW_STD') or (PSN EQ 'RMID_STD') or (PSN EQ 'RHI_STD') or (PSN EQ 'THINSPC') )
IF QualFile THEN
Metrology_Services('ImportCDEQualData', RunData, ResourceID, PSN)
END ELSE
Metrology_Services('ImportCDEData', RunData, ResourceID, IsViewerFile, PSN)
END
MachineType@ = 'CDE' MachineType@ = 'CDE'
Case Machine _EQC 'HgCV' Case Machine _EQC 'HgCV'
Metrology_Services('ImportHgCVData', RunData, FileName) PSN = RunData<5>
QualFile = ( (PSN EQ 'Low') or (PSN EQ 'Mid') or (PSN EQ 'High') or (PSN EQ 'Thin') )
IF QualFile THEN
Metrology_Services('ImportHgCVQualData', RunData, ResourceID, PSN)
END ELSE
Metrology_Services('ImportHgCVData', RunData, ResourceID, IsViewerFile, PSN)
END
MachineType@ = 'HgProbe' MachineType@ = 'HgProbe'
Case Machine _EQC 'SP1' Case Machine _EQC 'SP1'
@ -692,7 +713,7 @@ Service ImportMetrologyRunData(Machine, DataPath, FileName, RunData)
end service end service
Service ImportStratusData(RunData) Service ImportStratusData(RunData, ResourceID, PSN)
Machine = 'Stratus' Machine = 'Stratus'
ParseArray = '' ParseArray = ''
@ -707,7 +728,6 @@ Service ImportStratusData(RunData)
Recipe = RunData<6> Recipe = RunData<6>
Reactor = RunData<7> Reactor = RunData<7>
RDSNo = RunData<8> ; // If Non-EpiPro this will be an RDS Key, otherwise it will be a work order key. RDSNo = RunData<8> ; // If Non-EpiPro this will be an RDS Key, otherwise it will be a work order key.
PSN = RunData<9>
BatchID = RunData<10> BatchID = RunData<10>
Cassette = RunData<11> Cassette = RunData<11>
ThickAvg = RunData<12> ThickAvg = RunData<12>
@ -866,18 +886,9 @@ Service ImportStratusData(RunData)
end service end service
Service ImportBioRadData(RunData, FileName) Service ImportBioRadQualData(RunData, ResourceID, PSN)
Machine = 'BioRad' Machine = 'BioRad'
IsProdTest = False$
ParseArray = ''
FieldPos = 13
FieldPosIncrement = 2
Offset = 1
Decimals = 2
PSN = RunData<7>
QualFile = ( (PSN EQ 'T-Low') or (PSN EQ 'T-Mid') or (PSN EQ 'T-High') or (PSN EQ 'T_LOW') or (PSN EQ 'T_MID') or (PSN EQ 'T_HIGH') )
If QualFile then
ResourceID = Field(FileName, ' ', 1, 1)
URL = "https://oi-metrology-viewer-prod.mes.infineon.com/api/InfinityQSV3/":ResourceID:"/header" URL = "https://oi-metrology-viewer-prod.mes.infineon.com/api/InfinityQSV3/":ResourceID:"/header"
TimeoutDuration = HTTPClient_Services('GetTimeoutDuration') TimeoutDuration = HTTPClient_Services('GetTimeoutDuration')
If TimeoutDuration NE 30 then Httpclient_Services('SetTimeoutDuration', 30) If TimeoutDuration NE 30 then Httpclient_Services('SetTimeoutDuration', 30)
@ -908,9 +919,20 @@ Service ImportBioRadData(RunData, FileName)
end else end else
Metrology_Services('LogResults', PSN, Machine, 'UID002', Service : ' : ' : 'Null response from IQS API.') Metrology_Services('LogResults', PSN, Machine, 'UID002', Service : ' : ' : 'Null response from IQS API.')
end end
end else
end service
Service ImportBioRadData(RunData, ResourceID, IsViewerFile, PSN, FileName)
Machine = 'BioRad'
IsProdTest = False$
ParseArray = ''
FieldPos = 13
FieldPosIncrement = 2
Offset = 1
Decimals = 2
// RDS Biorad metrology file // RDS Biorad metrology file
IsViewerFile = Index(FileName, 'Viewer', 1)
Timestamp = RunData<2> Timestamp = RunData<2>
RDSKeyID = RunData<6> RDSKeyID = RunData<6>
RunDataLayer = RunData<8> RunDataLayer = RunData<8>
@ -1226,28 +1248,13 @@ Service ImportBioRadData(RunData, FileName)
Metrology_Services('LogResults', RDSKeyID, Machine, 'UID001', Service : ' : ' : Error_Services('GetMessage')) Metrology_Services('LogResults', RDSKeyID, Machine, 'UID001', Service : ' : ' : Error_Services('GetMessage'))
end end
end end
end
end service end service
Service ImportCDEData(RunData, FileName) Service ImportCDEQualData(RunData, ResourceID, PSN)
Machine = 'CDE' Machine = 'CDE'
ParseArray = ''
FieldPos = 23
FieldPosIncrement = 5
Offset = 3
Decimals = 3
Timestamp = RunData<3>
RDSKeyID = RunData<7>
RunDataLayer = RunData<9>
RunDataZone = RunData<10>
ReactorID = RunData<6>
ScanRecipe = RunData<5>
PSN = RunData<8>
QualFile = ( (PSN EQ 'RLOW_STD') or (PSN EQ 'RMID_STD') or (PSN EQ 'RHI_STD') or (PSN EQ 'THINSPC') )
If QualFile then
ResourceID = Field(FileName, ' ', 1, 1) ResourceID = Field(FileName, ' ', 1, 1)
URL = "https://oi-metrology-viewer-prod.mes.infineon.com/api/InfinityQSV3/":ResourceID:"/header" URL = "https://oi-metrology-viewer-prod.mes.infineon.com/api/InfinityQSV3/":ResourceID:"/header"
TimeoutDuration = HTTPClient_Services('GetTimeoutDuration') TimeoutDuration = HTTPClient_Services('GetTimeoutDuration')
@ -1276,9 +1283,24 @@ Service ImportCDEData(RunData, FileName)
Metrology_Services('LogResults', PSN, Machine, 'UID002', Service : ' : ' : 'Null response from IQS API.') Metrology_Services('LogResults', PSN, Machine, 'UID002', Service : ' : ' : 'Null response from IQS API.')
end end
end else end service
Service ImportCDEData(RunData, ResourceID, IsViewerFile, PSN)
Machine = 'CDE'
ParseArray = ''
FieldPos = 23
FieldPosIncrement = 5
Offset = 3
Decimals = 3
Timestamp = RunData<3>
RDSKeyID = RunData<7>
RunDataLayer = RunData<9>
RunDataZone = RunData<10>
ReactorID = RunData<6>
ScanRecipe = RunData<5>
// Regular metrology file // Regular metrology file
IsViewerFile = Index(FileName, 'Viewer', 1)
ToolClassID = '4PP' ToolClassID = '4PP'
PatternNameIndex = RDS_TEST_SPEC_RES_MPATTERN$ PatternNameIndex = RDS_TEST_SPEC_RES_MPATTERN$
ToolClassIndex = RDS_TEST_SPEC_RES_MTOOL$ ToolClassIndex = RDS_TEST_SPEC_RES_MTOOL$
@ -1473,27 +1495,13 @@ Service ImportCDEData(RunData, FileName)
end else end else
Metrology_Services('LogResults', RDSKeyID, Machine, 'UID001', Service : ' : ' : Error_Services('GetMessage')) Metrology_Services('LogResults', RDSKeyID, Machine, 'UID001', Service : ' : ' : Error_Services('GetMessage'))
end end
end
end service end service
Service ImportHgCVData(RunData, FileName) Service ImportHgCVQualData(RunData, ResourceID, PSN)
Machine = 'HgCV' /* Resistivity */ Machine = 'HgCV' /* Resistivity */
FieldPos = 53
FieldPosIncrement = 9
Offset = 5
PhaseOffset = 7
Decimals = 3
Timestamp = RunData<11>
RDSKeyID = RunData<4>
LayerZonePair = RunData<8>
ReactorID = RunData<3>
PSN = RunData<5>
QualFile = ( (PSN EQ 'Low') or (PSN EQ 'Mid') or (PSN EQ 'High') or (PSN EQ 'Thin') )
If QualFile then
ResourceID = Field(FileName, ' ', 1, 1)
URL = "https://oi-metrology-viewer-prod.mes.infineon.com/api/InfinityQSV3/":ResourceID:"/header" URL = "https://oi-metrology-viewer-prod.mes.infineon.com/api/InfinityQSV3/":ResourceID:"/header"
TimeoutDuration = HTTPClient_Services('GetTimeoutDuration') TimeoutDuration = HTTPClient_Services('GetTimeoutDuration')
If TimeoutDuration NE 30 then Httpclient_Services('SetTimeoutDuration', 30) If TimeoutDuration NE 30 then Httpclient_Services('SetTimeoutDuration', 30)
@ -1520,9 +1528,23 @@ Service ImportHgCVData(RunData, FileName)
end else end else
Metrology_Services('LogResults', PSN, Machine, 'UID002', Service : ' : ' : 'Null response from IQS API.') Metrology_Services('LogResults', PSN, Machine, 'UID002', Service : ' : ' : 'Null response from IQS API.')
end end
end else
end service
Service ImportHgCVData(RunData, ResourceID, IsViewerFile, PSN)
Machine = 'HgCV' /* Resistivity */
FieldPos = 53
FieldPosIncrement = 9
Offset = 5
PhaseOffset = 7
Decimals = 3
Timestamp = RunData<11>
RDSKeyID = RunData<4>
LayerZonePair = RunData<8>
ReactorID = RunData<3>
// Regular metrology file // Regular metrology file
IsViewerFile = Index(FileName, 'Viewer', 1)
ToolClassID = 'HGCV' ToolClassID = 'HGCV'
PatternNameIndex = RDS_TEST_SPEC_RES_MPATTERN$ PatternNameIndex = RDS_TEST_SPEC_RES_MPATTERN$
ToolClassIndex = RDS_TEST_SPEC_RES_MTOOL$ ToolClassIndex = RDS_TEST_SPEC_RES_MTOOL$
@ -1816,7 +1838,6 @@ Service ImportHgCVData(RunData, FileName)
end else end else
Metrology_Services('LogResults', RDSKeyID, Machine, 'UID001', Service : ' : ' : Error_Services('GetMessage')) Metrology_Services('LogResults', RDSKeyID, Machine, 'UID001', Service : ' : ' : Error_Services('GetMessage'))
end end
end
end service end service