You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
132 lines
3.3 KiB
C++
132 lines
3.3 KiB
C++
// Wafer.h: interface for the CWafer class.
|
|
//
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
#pragma once
|
|
|
|
#include <vector>
|
|
|
|
#include "DllDefines.h"
|
|
#include "Die.h"
|
|
|
|
|
|
class MCCTRDLLCLASS CWafer
|
|
{
|
|
public:
|
|
// Default constructor
|
|
CWafer();
|
|
|
|
// Constructor to init wafer parameters
|
|
CWafer(double dWaferDiameter, double dWaferEdgeClearance, int iNumOfDiePerWafer,
|
|
int iRow, int iCol);
|
|
|
|
// Default Destructor
|
|
virtual ~CWafer();
|
|
|
|
// Set number of die per wafer. Returns true if sucessful
|
|
bool SetNumOfDiePerWafer(int iDiePerWafer);
|
|
|
|
// allocate die array size. Returns true if sucessful
|
|
bool SetDieArray();
|
|
|
|
// set wafer diameter. Returns true if sucessful
|
|
bool SetWaferDiameter(double dWaferDiameter);
|
|
|
|
// set wafer edge clearance. Returns true if sucessful
|
|
bool SetWaferEdgeClearance(double dWaferEdgeClearance);
|
|
|
|
// set Die bin code. Returns true if sucessful
|
|
bool SetDieBinCode(int iRow, int iCol, char cDieBinCode);
|
|
|
|
// set num of row
|
|
bool SetNumRow(int iRow);
|
|
|
|
// set num of col
|
|
bool SetNumCol(int iCol);
|
|
|
|
// set die grap x in mm. Returns true if successful
|
|
bool SetDieGrapX(double dGrapX);
|
|
|
|
// set die grap y in mm. Returns true if successful
|
|
bool SetDieGrapY(double dGrapY);
|
|
|
|
// Set Die Size Y in mm. Return true if sucessful
|
|
bool SetDieSizeY(double dDieSizeY);
|
|
|
|
// Set Die Size X in mm. Return true if sucessful
|
|
bool SetDieSizeX(double dDieSizeX);
|
|
|
|
// get wafer diameter
|
|
double GetWaferDiameter();
|
|
|
|
// get wafer edge clearance
|
|
double GetWaferEdgeClearance();
|
|
|
|
// get wafer diameter - edge clearance
|
|
double GetEffectiveWaferDiameter();
|
|
|
|
// get die per wafer
|
|
int GetDiePerWafer();
|
|
|
|
// get die bin code
|
|
char GetDieBinCode(int iRow, int iCol);
|
|
|
|
// get die grap x in mm
|
|
double GetDieGrapX();
|
|
|
|
// get die grap y in mm
|
|
double GetDieGrapY();
|
|
|
|
// Get Die Size Y in mm
|
|
double GetDieSizeY();
|
|
|
|
// Get Die Size X in mm
|
|
double GetDieSizeX();
|
|
|
|
// get num of wafer col
|
|
int GetNumCol() const;
|
|
|
|
// get num of wafer row
|
|
int GetNumRow() const;
|
|
|
|
// get wafer x working area
|
|
double GetXWorkingWaferDiameter();
|
|
|
|
// get wafer y working area
|
|
double GetYWorkingWaferDiameter();
|
|
|
|
// initialised wafer diameter, Edge clearance, number of die per wafer and die bin code array
|
|
// Return true if sucessful
|
|
bool InitWaferPara(double dWaferDiameter, double dWaferEdgeClearance,
|
|
int iNumOfDiePerWafer, int iRow, int iCol);
|
|
|
|
// rotate wafer map by 90 degree CW
|
|
void RotateWafer90();
|
|
|
|
// rotate wafer map by 180 degree CW
|
|
void RotateWafer180();
|
|
|
|
// rotate wafer map by 270 degree CW
|
|
void RotateWafer270();
|
|
|
|
/// set the rotation angle of the wafer in CW
|
|
bool SetDegreeRotated(int iDegree);
|
|
|
|
/// Get the rotation angle of the wafer in cw
|
|
double GetDegreeRotated();
|
|
|
|
protected:
|
|
std::vector<char> m_cWafer; // store bin code info
|
|
|
|
private:
|
|
int m_iDiePerWafer{ 0 }; // number of die per wafer
|
|
int m_iCol{ 0 }; // number of col
|
|
int m_iRow{ 0 }; // number of row
|
|
int m_iDegreeRotated{ 0 }; // rotated degree in angle
|
|
|
|
double m_dWaferDiameter{ 0. }; // wafer diameter
|
|
double m_dWaferEdgeClearance{ 0. }; // wafer edge clearance
|
|
|
|
CDie m_Die; // store die info
|
|
};
|