-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwaferdatabase.h
96 lines (69 loc) · 2.46 KB
/
waferdatabase.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
// waferdatabase.h
#pragma once
#include <string>
#include "chipdatabase.h"
class CWaferDataBase
{
CChip *first;
CChip *last;
unsigned int chipCount;
void Swap(CChip *entry);
bool WriteXML_File(const std::string &pathname, CChip &chip);
void SortPicOrder();
void SetPicGroups();
void GenerateFailStrings();
void CalcMulti();
void CalculatePhase1Unsorted();
void CalculatePhase1();
void CalculatePhase2();
public:
CWaferDataBase() : first(0), last(0), chipCount(0) {}
~CWaferDataBase() { DeleteAllChips(); }
// Iterates through all ROCs
CChip* GetFirstM() { return first; }
static CChip* GetPrevM(CChip *chip) { return chip ? chip->prev : 0; }
static CChip* GetNextM(CChip *chip) { return chip ? chip->next : 0; }
// Iterates through ROCs and skips multiple tests of the same ROC
CChip* GetFirst();
static CChip* GetPrev(CChip *chip);
static CChip* GetNext(CChip *chip);
// Iterates through good ROCs (skips multiple tests)
CChip* GetFirstGood();
static CChip* GetPrevGood(CChip *chip);
static CChip* GetNextGood(CChip *chip);
// Iterates through bad ROCs (skips multiple tests)
CChip* GetFirstBad();
static CChip* GetPrevBad(CChip *chip);
static CChip* GetNextBad(CChip *chip);
// Iterates through multiple tests
static CChip* GetPrevTest(CChip *chip);
static CChip* GetNextTest(CChip *chip);
bool Add(CChip *chip);
void DeleteAllChips();
unsigned int GetChipCount() { return chipCount; }
bool GeneratePickFile(const std::string &filename);
bool GenerateJSONfile(const std::string &filename);
bool GenerateXML(const std::string &pathname);
bool GenerateErrorReport(const std::string &filename);
bool GenerateClassList(const std::string &filename);
bool GenerateDataTable(const std::string &filename);
bool GenerateStatistics(const std::string &filename);
bool GenerateWaferMap(const std::string &filename, unsigned int mode);
bool GenerateYieldsFile(const std::string &filename, const std::string &batchname);
bool GenerateReportPSI(const std::string &filename);
void Clear();
void Calculate();
// === log file entries =====================================================
Cdtime logTime;
std::string logVersion;
std::string center;
std::string productId;
std::string waferId;
std::string waferNr;
// === calculated values (phase 1) ==========================================
Cdtime startTime;
int ICount;
double IdigInitMean;
double IanaInitMean;
// === calculated values (phase 2) ==========================================
};