"use strict"; // getValue($('gv.thicknessPoints', ''), $('dcp.BIORAD2/csv/Index', '0')); function getCollectionParseFloat(collection) { let result = []; let value; for (let i = 0; i < collection.length; i++) { value = parseFloat(collection[i]); result.push(value); } return result; } function getSum(collection) { let result = 0; if (!collection || collection.length === 0) { result = 0; } else { for (let i = 0; i < collection.length; i++) { result += collection[i]; } } return result; } function getAverage(collection) { let result = null; if (collection == null || collection.length === 0) result = 0; else { let sum = getSum(collection); result = sum / collection.length; } return result; } function getValue39(thicknessPoints, index) { let result = null; if (index === 13) { if (thicknessPoints != undefined && thicknessPoints.length > 1) { let collection = thicknessPoints[0] === '|' ? thicknessPoints.substring(1).split('|') : thicknessPoints.split('|'); let collectionParseFloat = getCollectionParseFloat(collection); let thicknessFourteen3mmEdgeMean = getAverage([[collectionParseFloat[10], collectionParseFloat[11], collectionParseFloat[12], collectionParseFloat[13]]]); let thicknessFourteenMeanFrom = getAverage([[collectionParseFloat[1], collectionParseFloat[2], collectionParseFloat[6], collectionParseFloat[7]]]); result = (thicknessFourteen3mmEdgeMean - thicknessFourteenMeanFrom) / thicknessFourteenMeanFrom * 100; } } return result; } function getVariance(collection) { let result = null; if (collection == null || collection.length === 0) result = null; else { let variance = 0; let t = collection[0]; for (let i = 1; i < collection.length; i++) { t += collection[i]; const diff = ((i + 1) * collection[i]) - t; variance += diff * diff / ((i + 1.0) * i); } result = variance / (collection.length - 1); } return result; } // $('gv.thicknessPoints', '') + '|' + $('dcp.BIORAD2/csv/Thickness', '') // $('gv.thicknessPoints', '') + '|' + $('dcp.BIORAD3/csv/Thickness', '') // $('gv.thicknessPoints', '') + '|' + $('dcp.BIORAD4/csv/Thickness', '') // $('gv.thicknessPoints', '') + '|' + $('dcp.BIORAD5/b-csv/Thickness', '') // \\mesfs.infineon.com\EC_Characterization_Si\Archive\BIORAD2\2025_Week_08\2025-02-20\64-659712-4626_2025-02-20_11;50_AM_5144331401\638756490128318288 // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 // 1 2 3 4 5 6 7 8 9 10 11 12 13 14 const thicknessPoints = getCollectionParseFloat('|4.022|3.952|3.936|3.971|3.954|3.976|3.949|3.906|3.967|3.995|3.997|3.932|3.766|3.890'.substring(1).split('|')); const thicknessTenPoints = thicknessPoints.slice(0, 10); const thicknessFourteenCriticalPointsAverage = getAverage(thicknessTenPoints); // 15 // *3.962799999999999 const thicknessFourteenCriticalPointsStdDev = Math.sqrt(getVariance(thicknessTenPoints)); // 16 // *0.0318496467798311 const thicknessFourteenCenterMean = thicknessPoints[4]; // 17 // 3.954 const thicknessFourteenMeanFrom = getAverage([thicknessPoints[1], thicknessPoints[2], thicknessPoints[6], thicknessPoints[7]]); // 18 // *3.954 const thicknessFourteen5mmEdgeMean = getAverage([thicknessPoints[0], thicknessPoints[9]]); // 19 // *4.0085 const thicknessFourteen3mmEdgeMean = getAverage([thicknessPoints[10], thicknessPoints[11], thicknessPoints[12], thicknessPoints[13]]); // 20 // *3.89625 const thicknessFourteen5mmEdgePercent = (thicknessFourteen5mmEdgeMean - thicknessFourteenMeanFrom) / thicknessFourteenMeanFrom * 100; // 21 // *1.848440576764267 const thicknessFourteen3mmEdgePercent = (thicknessFourteen3mmEdgeMean - thicknessFourteenMeanFrom) / thicknessFourteenMeanFrom * 100; // 22 // *-1.0036206567998442 console.log(thicknessFourteenCriticalPointsAverage); // getValue($('dcp.BIORAD2/csv/Batch', ''), $('dcp.BIORAD2/csv/Wafer', '')); function getSlot92(wafer) { let result = null; if (wafer.length !== 1 && wafer.length !== 2) result = null; else { let slot = parseInt(wafer); if (slot < 1 || slot > 27) result = null; else result = slot < 10 ? '0' + slot : slot; } return result; } function getBatch(batch, jobId, wafer) { let result = null; const slot = getSlot92(wafer); result = slot == null ? jobId : batch; return result; } function getWafer(wafer) { let result = null; const slot = getSlot92(wafer); result = slot == null ? wafer : slot; return result; } function getValue120(batch, wafer) { let result = null; const slot = getSlot92(wafer); const value = slot == null ? wafer : batch; result = value.replace(/[\{\}\\\/\:\*\?\"\<\>\|]/g, '_'); return result; } const values128 = [ { wafer: '11', jobId: 'BIORAD2', batch: 'O172068.1.60', waferCheck: '11', batchCheck: 'O172068.1.60', mid: 'O172068.1.60' }, { wafer: '27-588493-5008', jobId: 'BIORAD2', batch: 'BIORAD#2', waferCheck: '27-588493-5008', batchCheck: 'BIORAD2', mid: '27-588493-5008' }, { wafer: '27-588493-5"008', jobId: 'BIORAD2', batch: 'BIORAD#2', waferCheck: '27-588493-5008', batchCheck: 'BIORAD2', mid: '27-588493-5_008' }, ]; const wafer = "11"; const jobId = "BIORAD2"; const batch = "O172068.1.60"; const waferCheck = getWafer(wafer); const batchCheck = getBatch(batch, jobId, wafer); const mid = getValue120(batch, wafer); console.log(mid); values128.forEach(element => { let mid = getValue120(element.batch, element.wafer); if (mid != element.mid) console.error("MID doesn't match!"); else console.info('Match'); }); // '{"Area": "' + // 'Si' + // '", "EquipmentType": "' + // 'MET08THFTIRQS408M' + // '", "MesEntity": "' + // $('dcp.BIORAD2/csv/MesEntity', '') + // '", "Sequence": "' + // $('dcp.BIORAD2/csv/Sequence', '') + // '", "MID": "' + // getValue($('dcp.BIORAD2/csv/Batch', ''), $('dcp.BIORAD2/csv/Wafer', '')) + // '", "Recipe": "' + // $('dcp.BIORAD2/csv/Recipe', '').split('"')[0].split('\\')[0] + // '"}'; function getSlot164(wafer) { let result = null; if (wafer.length !== 1 && wafer.length !== 2) result = null; else { let slot = parseInt(wafer); if (slot < 1 || slot > 27) result = null; else result = slot < 10 ? '0' + slot : slot; } return result; } function getValue178(batch, wafer) { let result = null; const slot = getSlot164(wafer); const value = slot == null ? wafer : batch; result = value.replace(/[\{\}\\\/\:\*\?\"\<\>\|]/g, '_'); return result; } // getValue(self, $('dcp.BIORAD2/csv/Wafer', ''), getContextData('2', 'cds.MID', '')); function getSlot188(wafer) { let result = null; if (wafer.length !== 1 && wafer.length !== 2) result = null; else { let slot = parseInt(wafer); if (slot < 1 || slot > 27) result = null; else result = slot < 10 ? '0' + slot : slot; } return result; } function getValue202(batch, wafer, mid) { let result = null; const slot = getSlot188(wafer); result = slot == null ? batch : mid; return result; } const values210 = [ { wafer: '11', jobId: 'BIORAD2', batch: 'O172068.1.60', mid: '*O172068.1.60', result: '*O172068.1.60' }, { wafer: '27-588493-5008', jobId: 'BIORAD2', batch: 'BIORAD#2', mid: '*588493', result: 'BIORAD#2' }, { wafer: '27-588493-5"008', jobId: 'BIORAD2', batch: 'BIORAD#2', mid: '*588493', result: 'BIORAD#2' }, ]; values210.forEach(element => { let result = getValue202(element.batch, element.wafer, element.mid); if (result != element.result) console.error("result doesn't match!"); else console.info('Match'); }); // getValue(self, getContextData('2', 'cds.MID', '')); function getSlot(wafer) { let result = null; if (wafer.length !== 1 && wafer.length !== 2) result = null; else { let slot = parseInt(wafer); if (slot < 1 || slot > 27) result = null; else result = slot < 10 ? '0' + slot : slot; } return result; } function getValue(wafer, mid) { let result = null; const slot = getSlot(wafer); result = slot == null ? mid : wafer; return result; } const values246 = [ { wafer: '11', jobId: 'BIORAD2', batch: 'O172068.1.60', mid: '*O172068.1.60', result: '11' }, { wafer: '27-588493-5008', jobId: 'BIORAD2', batch: 'BIORAD#2', mid: '*588493', result: '*588493' }, { wafer: '27-588493-5"008', jobId: 'BIORAD2', batch: 'BIORAD#2', mid: '*588493', result: '*588493' }, ]; values246.forEach(element => { let result = getValue(element.wafer, element.mid); if (result != element.result) console.error("result doesn't match!"); else console.info('Match'); });