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.
mitlib.pub/MITLIB/mcctrdll/Wafer.h

145 lines
3.8 KiB
C++

// Wafer.h: interface for the CWafer class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_WAFER_H__9EF8D45E_528F_4C48_A7B0_B6B4E59969DA__INCLUDED_)
#define AFX_WAFER_H__9EF8D45E_528F_4C48_A7B0_B6B4E59969DA__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#ifdef BUILD_MCCTRDLL
#define MCCTRDLLCLASS __declspec(dllexport)
#else
#define MCCTRDLLCLASS __declspec(dllimport)
#endif
#include "Die.h"
const int MAP_DEGREE = -1;
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();
// get num of wafer row
int GetNumRow();
// 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:
char *m_cWafer; // store bin code info
//CMutex m_CritSection;
private:
int m_iDiePerWafer; // number of die per wafer
int m_iCol; // number of col
int m_iRow; // number of row
int m_iDegreeRotated; // rotated degree in angle
double m_dWaferDiameter; // wafer diameter
double m_dWaferEdgeClearance; // wafer edge clearance
CDie m_Die; // store die info
};
#endif // !defined(AFX_WAFER_H__9EF8D45E_528F_4C48_A7B0_B6B4E59969DA__INCLUDED_)