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
Case Machine _EQC 'Tencor'
SearchPattern = '*.txt';
SearchPattern = '*.pdsf';
DataPath = Environment_Services('GetApplicationRootPath') : '\Metrology\MET08DDUPSFS6420\Source\MET08DDUPSFS6420\'
Case Machine _EQC 'HgCV'
SearchPattern = '*.txt';
SearchPattern = '*.pdsf';
DataPath = Environment_Services('GetApplicationRootPath') : '\Metrology\MET08RESIHGCV\Source\MET08RESIHGCV\'
Case Machine _EQC 'CDE'
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
// machine.
ResourceID = Field(FileName, ' ', 1, 1)
IsViewerFile = Index(FileName, 'Viewer', 1)
Begin Case
Case Machine _EQC 'Stratus'
Metrology_Services('ImportStratusData', RunData)
PSN = RunData<9>
Metrology_Services('ImportStratusData', RunData, ResourceID, PSN)
MachineType@ = 'Stratus'
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'
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'
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'
Case Machine _EQC 'SP1'
@ -692,7 +713,7 @@ Service ImportMetrologyRunData(Machine, DataPath, FileName, RunData)
end service
Service ImportStratusData(RunData)
Service ImportStratusData(RunData, ResourceID, PSN)
Machine = 'Stratus'
ParseArray = ''
@ -707,7 +728,6 @@ Service ImportStratusData(RunData)
Recipe = RunData<6>
Reactor = RunData<7>
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>
Cassette = RunData<11>
ThickAvg = RunData<12>
@ -866,18 +886,9 @@ Service ImportStratusData(RunData)
end service
Service ImportBioRadData(RunData, FileName)
Service ImportBioRadQualData(RunData, ResourceID, PSN)
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"
TimeoutDuration = HTTPClient_Services('GetTimeoutDuration')
If TimeoutDuration NE 30 then Httpclient_Services('SetTimeoutDuration', 30)
@ -908,9 +919,20 @@ Service ImportBioRadData(RunData, FileName)
end else
Metrology_Services('LogResults', PSN, Machine, 'UID002', Service : ' : ' : 'Null response from IQS API.')
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
IsViewerFile = Index(FileName, 'Viewer', 1)
Timestamp = RunData<2>
RDSKeyID = RunData<6>
RunDataLayer = RunData<8>
@ -1226,28 +1248,13 @@ Service ImportBioRadData(RunData, FileName)
Metrology_Services('LogResults', RDSKeyID, Machine, 'UID001', Service : ' : ' : Error_Services('GetMessage'))
end
end
end
end service
Service ImportCDEData(RunData, FileName)
Service ImportCDEQualData(RunData, ResourceID, 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>
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)
URL = "https://oi-metrology-viewer-prod.mes.infineon.com/api/InfinityQSV3/":ResourceID:"/header"
TimeoutDuration = HTTPClient_Services('GetTimeoutDuration')
@ -1276,9 +1283,24 @@ Service ImportCDEData(RunData, FileName)
Metrology_Services('LogResults', PSN, Machine, 'UID002', Service : ' : ' : 'Null response from IQS API.')
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
IsViewerFile = Index(FileName, 'Viewer', 1)
ToolClassID = '4PP'
PatternNameIndex = RDS_TEST_SPEC_RES_MPATTERN$
ToolClassIndex = RDS_TEST_SPEC_RES_MTOOL$
@ -1473,27 +1495,13 @@ Service ImportCDEData(RunData, FileName)
end else
Metrology_Services('LogResults', RDSKeyID, Machine, 'UID001', Service : ' : ' : Error_Services('GetMessage'))
end
end
end service
Service ImportHgCVData(RunData, FileName)
Service ImportHgCVQualData(RunData, ResourceID, 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>
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"
TimeoutDuration = HTTPClient_Services('GetTimeoutDuration')
If TimeoutDuration NE 30 then Httpclient_Services('SetTimeoutDuration', 30)
@ -1520,9 +1528,23 @@ Service ImportHgCVData(RunData, FileName)
end else
Metrology_Services('LogResults', PSN, Machine, 'UID002', Service : ' : ' : 'Null response from IQS API.')
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
IsViewerFile = Index(FileName, 'Viewer', 1)
ToolClassID = 'HGCV'
PatternNameIndex = RDS_TEST_SPEC_RES_MPATTERN$
ToolClassIndex = RDS_TEST_SPEC_RES_MTOOL$
@ -1816,7 +1838,6 @@ Service ImportHgCVData(RunData, FileName)
end else
Metrology_Services('LogResults', RDSKeyID, Machine, 'UID001', Service : ' : ' : Error_Services('GetMessage'))
end
end
end service