|
|
|
@ -89,6 +89,7 @@ void CSubRecipe::IntiRecipeParVec()
|
|
|
|
|
RecipePar.m_ParDoubleVal = 1000;//默认值
|
|
|
|
|
RecipePar.m_DoubleMinVal = 0;
|
|
|
|
|
RecipePar.m_DoubleMaxVal = gCommonParaMgr->GetCommonParaVal(RECIPE_PAR_MAX_LASER_FRE);
|
|
|
|
|
RecipePar.m_DetailInfo = "激光1频率:一秒内激光脉冲个数";
|
|
|
|
|
m_RecipeParVec.push_back(RecipePar);
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
@ -100,6 +101,7 @@ void CSubRecipe::IntiRecipeParVec()
|
|
|
|
|
RecipePar.m_ParDoubleVal = 1000;//默认值
|
|
|
|
|
RecipePar.m_DoubleMinVal = 0;
|
|
|
|
|
RecipePar.m_DoubleMaxVal = gCommonParaMgr->GetCommonParaVal(RECIPE_PAR_MAX_LASER_FRE);
|
|
|
|
|
RecipePar.m_DetailInfo = "激光2频率:一秒内激光脉冲个数";
|
|
|
|
|
m_RecipeParVec.push_back(RecipePar);
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
@ -111,6 +113,7 @@ void CSubRecipe::IntiRecipeParVec()
|
|
|
|
|
RecipePar.m_ParDoubleVal = 0;
|
|
|
|
|
RecipePar.m_DoubleMinVal = 0;
|
|
|
|
|
RecipePar.m_DoubleMaxVal = gCommonParaMgr->GetCommonParaVal(RECIPE_PAR_MAX_LASER_PULSE_DELAY);
|
|
|
|
|
RecipePar.m_DetailInfo = "双脉冲延时:激光器脉冲延时时间";
|
|
|
|
|
m_RecipeParVec.push_back(RecipePar);
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
@ -122,6 +125,7 @@ void CSubRecipe::IntiRecipeParVec()
|
|
|
|
|
RecipePar.m_ParDoubleVal = 0;
|
|
|
|
|
RecipePar.m_DoubleMinVal = 0;
|
|
|
|
|
RecipePar.m_DoubleMaxVal = gCommonParaMgr->GetCommonParaVal(RECIPE_PAR_MAX_LASER_CURR_1);
|
|
|
|
|
RecipePar.m_DetailInfo = "Laser1电流值:工艺设置电流值";
|
|
|
|
|
m_RecipeParVec.push_back(RecipePar);
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
@ -133,6 +137,7 @@ void CSubRecipe::IntiRecipeParVec()
|
|
|
|
|
RecipePar.m_ParDoubleVal = 0;
|
|
|
|
|
RecipePar.m_DoubleMinVal = 0;
|
|
|
|
|
RecipePar.m_DoubleMaxVal = gCommonParaMgr->GetCommonParaVal(RECIPE_PAR_MAX_LASER_CURR_2);
|
|
|
|
|
RecipePar.m_DetailInfo = "Laser2电流值:工艺设置电流值";
|
|
|
|
|
m_RecipeParVec.push_back(RecipePar);
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
@ -144,6 +149,7 @@ void CSubRecipe::IntiRecipeParVec()
|
|
|
|
|
RecipePar.m_ParDoubleVal = 0;
|
|
|
|
|
RecipePar.m_DoubleMinVal = 0;
|
|
|
|
|
RecipePar.m_DoubleMaxVal = gCommonParaMgr->GetCommonParaVal(RECIPE_PAR_MAX_LASER_EDI_1);
|
|
|
|
|
RecipePar.m_DetailInfo = "Laser1目标功率密度 :最终的edi还要加上Laser Edi Offset和补偿表中的Laser Edi Offset值";
|
|
|
|
|
m_RecipeParVec.push_back(RecipePar);
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
@ -155,6 +161,7 @@ void CSubRecipe::IntiRecipeParVec()
|
|
|
|
|
RecipePar.m_ParDoubleVal = 0;
|
|
|
|
|
RecipePar.m_DoubleMinVal = 0;
|
|
|
|
|
RecipePar.m_DoubleMaxVal = gCommonParaMgr->GetCommonParaVal(RECIPE_PAR_MAX_LASER_EDI_2);
|
|
|
|
|
RecipePar.m_DetailInfo = "Laser2目标功率密度 :最终的edi还要加上Laser Edi Offset和补偿表中的Laser Edi Offset值";
|
|
|
|
|
m_RecipeParVec.push_back(RecipePar);
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
@ -166,6 +173,7 @@ void CSubRecipe::IntiRecipeParVec()
|
|
|
|
|
RecipePar.m_ParDoubleVal = 0;
|
|
|
|
|
RecipePar.m_DoubleMinVal = -2;
|
|
|
|
|
RecipePar.m_DoubleMaxVal = 2;
|
|
|
|
|
RecipePar.m_DetailInfo = "Laser1目标功率密度补偿";
|
|
|
|
|
m_RecipeParVec.push_back(RecipePar);
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
@ -177,6 +185,7 @@ void CSubRecipe::IntiRecipeParVec()
|
|
|
|
|
RecipePar.m_ParDoubleVal = 0;
|
|
|
|
|
RecipePar.m_DoubleMinVal = -2;
|
|
|
|
|
RecipePar.m_DoubleMaxVal = 2;
|
|
|
|
|
RecipePar.m_DetailInfo = "Laser2目标功率密度补偿";
|
|
|
|
|
m_RecipeParVec.push_back(RecipePar);
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
@ -188,6 +197,7 @@ void CSubRecipe::IntiRecipeParVec()
|
|
|
|
|
RecipePar.m_ParDoubleVal = 0;
|
|
|
|
|
RecipePar.m_DoubleMinVal = 0;
|
|
|
|
|
RecipePar.m_DoubleMaxVal = 5;
|
|
|
|
|
RecipePar.m_DetailInfo = "功率密度复检卡控范围:等于0表示不进行复检,大于表示要进行复检且复检调整后的功率密度在这个误差范围之内";
|
|
|
|
|
m_RecipeParVec.push_back(RecipePar);
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
@ -199,6 +209,7 @@ void CSubRecipe::IntiRecipeParVec()
|
|
|
|
|
RecipePar.m_ParDoubleVal = 0;
|
|
|
|
|
RecipePar.m_DoubleMinVal = 0;
|
|
|
|
|
RecipePar.m_DoubleMaxVal = 99;
|
|
|
|
|
RecipePar.m_DetailInfo = "X方向光斑重叠率:会影响X方向扫描速度的计算值";
|
|
|
|
|
m_RecipeParVec.push_back(RecipePar);
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
@ -210,6 +221,7 @@ void CSubRecipe::IntiRecipeParVec()
|
|
|
|
|
RecipePar.m_ParDoubleVal = 0;
|
|
|
|
|
RecipePar.m_DoubleMinVal = 0;
|
|
|
|
|
RecipePar.m_DoubleMaxVal = 99;
|
|
|
|
|
RecipePar.m_DetailInfo = "Y方向光斑重叠率:会影响Y方向移动间隔";
|
|
|
|
|
m_RecipeParVec.push_back(RecipePar);
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
@ -221,6 +233,7 @@ void CSubRecipe::IntiRecipeParVec()
|
|
|
|
|
RecipePar.m_ParDoubleVal = 0;
|
|
|
|
|
RecipePar.m_DoubleMinVal = gCommonParaMgr->GetCommonParaVal(RECIPE_PAR_MIN_FOCUS_ADJUST);
|
|
|
|
|
RecipePar.m_DoubleMaxVal = gCommonParaMgr->GetCommonParaVal(RECIPE_PAR_MAX_FOCUS_ADJUST);
|
|
|
|
|
RecipePar.m_DetailInfo = "Z轴焦距微调值:用于工艺前Z轴在目前设置的激光焦距点上下进行微调";
|
|
|
|
|
m_RecipeParVec.push_back(RecipePar);
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
@ -232,6 +245,7 @@ void CSubRecipe::IntiRecipeParVec()
|
|
|
|
|
RecipePar.m_ParDoubleVal = 0;
|
|
|
|
|
RecipePar.m_DoubleMinVal = gCommonParaMgr->GetCommonParaVal(RECIPE_PAR_MIN_SCAN_SPEED);
|
|
|
|
|
RecipePar.m_DoubleMaxVal = gCommonParaMgr->GetCommonParaVal(RECIPE_PAR_MAX_SCAN_SPEED);
|
|
|
|
|
RecipePar.m_DetailInfo = "固定扫描速度:等于0时无效,大于0时X方向光斑重叠率无效,工艺过程中将使用这个速度值作为X方向的扫描速度";
|
|
|
|
|
m_RecipeParVec.push_back(RecipePar);
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
@ -243,6 +257,7 @@ void CSubRecipe::IntiRecipeParVec()
|
|
|
|
|
RecipePar.m_ParDoubleVal = 0;
|
|
|
|
|
RecipePar.m_DoubleMinVal = 0;
|
|
|
|
|
RecipePar.m_DoubleMaxVal = gCommonParaMgr->GetCommonParaVal(RECIPE_PAR_MAX_FIX_SCAN_LINE_GAP);
|
|
|
|
|
RecipePar.m_DetailInfo = "固定扫描间隔:等于0时无效,大于0时Y方向光斑重叠率无效,工艺过程中将使用这个值作为Y方向的扫描移动间隔";
|
|
|
|
|
m_RecipeParVec.push_back(RecipePar);
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
@ -254,6 +269,7 @@ void CSubRecipe::IntiRecipeParVec()
|
|
|
|
|
RecipePar.m_ParDoubleVal = 0;
|
|
|
|
|
RecipePar.m_DoubleMinVal = 0;
|
|
|
|
|
RecipePar.m_DoubleMaxVal = 100000;
|
|
|
|
|
RecipePar.m_DetailInfo = "扫描线的起始索引值:表示从第几根线开始扫描,用于补打wafer";
|
|
|
|
|
m_RecipeParVec.push_back(RecipePar);
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
@ -265,6 +281,7 @@ void CSubRecipe::IntiRecipeParVec()
|
|
|
|
|
RecipePar.m_ParDoubleVal = 270;
|
|
|
|
|
RecipePar.m_DoubleMinVal = 0;
|
|
|
|
|
RecipePar.m_DoubleMaxVal = 360;
|
|
|
|
|
RecipePar.m_DetailInfo = "wafer准直角度:用于控制wafer放到stage上的notch方向,多subrcp的情况第一个sub的值为有效值";
|
|
|
|
|
m_RecipeParVec.push_back(RecipePar);
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
@ -284,6 +301,7 @@ void CSubRecipe::IntiRecipeParVec()
|
|
|
|
|
RecipePar.m_ParDoubleVal = m_MinVal;
|
|
|
|
|
RecipePar.m_DoubleMinVal = m_MinVal;
|
|
|
|
|
RecipePar.m_DoubleMaxVal = m_MaxVal;
|
|
|
|
|
RecipePar.m_DetailInfo = "MFC流量控制值:MFC控制N2流量值";
|
|
|
|
|
m_RecipeParVec.push_back(RecipePar);
|
|
|
|
|
}
|
|
|
|
|
//下拉框参数------------------------------------------------
|
|
|
|
@ -292,6 +310,7 @@ void CSubRecipe::IntiRecipeParVec()
|
|
|
|
|
RecipePar.m_ParName = RECIPE_PAR_NAME_SCAN_AREA;
|
|
|
|
|
RecipePar.m_ParShowName = "Scan Area";
|
|
|
|
|
RecipePar.m_ParType = _RecipeParType_CString;//参数的类型
|
|
|
|
|
RecipePar.m_DetailInfo = "扫描区域文件名称:用于指定扫描区域的图形文件,确定扫描的范围";
|
|
|
|
|
m_RecipeParVec.push_back(RecipePar);
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
@ -300,6 +319,7 @@ void CSubRecipe::IntiRecipeParVec()
|
|
|
|
|
RecipePar.m_ParShowName = "Area Idx";
|
|
|
|
|
RecipePar.m_ParType = _RecipeParType_Int;//参数的类型
|
|
|
|
|
RecipePar.m_ParIntVal = 1;
|
|
|
|
|
RecipePar.m_DetailInfo = "扫描区域编号:扫描区域文件中包含多个扫描区域时,每个sub rcp只能选择一个区域编号进行工艺";
|
|
|
|
|
m_RecipeParVec.push_back(RecipePar);
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
@ -308,6 +328,7 @@ void CSubRecipe::IntiRecipeParVec()
|
|
|
|
|
RecipePar.m_ParShowName = "N2";
|
|
|
|
|
RecipePar.m_ParType = _RecipeParType_Bool;//参数的类型
|
|
|
|
|
RecipePar.m_ParBoolVal = true;
|
|
|
|
|
RecipePar.m_DetailInfo = "N2开关控制,退火过程中是否自动打开N2";
|
|
|
|
|
m_RecipeParVec.push_back(RecipePar);
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
@ -316,6 +337,7 @@ void CSubRecipe::IntiRecipeParVec()
|
|
|
|
|
RecipePar.m_ParShowName = "Use CurN2Val";
|
|
|
|
|
RecipePar.m_ParType = _RecipeParType_Bool;//参数的类型
|
|
|
|
|
RecipePar.m_ParBoolVal = false;
|
|
|
|
|
RecipePar.m_DetailInfo = "MFC控制开关:是否使用recipe的MFC流量控制值";
|
|
|
|
|
m_RecipeParVec.push_back(RecipePar);
|
|
|
|
|
}
|
|
|
|
|
#ifdef __OFFSET_TABLE__
|
|
|
|
@ -325,6 +347,7 @@ void CSubRecipe::IntiRecipeParVec()
|
|
|
|
|
RecipePar.m_ParShowName = "Offset Table";
|
|
|
|
|
RecipePar.m_ParType = _RecipeParType_CString;//参数的类型
|
|
|
|
|
RecipePar.m_ParStrVal = RECIPE_OFFSET_TBL_NULL;
|
|
|
|
|
RecipePar.m_DetailInfo = "补偿表的名称:用于link指定的补偿表,可以补偿edi和激光电流值";
|
|
|
|
|
m_RecipeParVec.push_back(RecipePar);
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
@ -335,6 +358,7 @@ void CSubRecipe::IntiRecipeParVec()
|
|
|
|
|
RecipePar.m_ParShowName = "Run Times";
|
|
|
|
|
RecipePar.m_ParType = _RecipeParType_Int;//参数的类型
|
|
|
|
|
RecipePar.m_ParIntVal = 1;//默认值
|
|
|
|
|
RecipePar.m_DetailInfo = "工艺运行次数:正常设置为1,大于1时表示跑cycle,多subrcp的情况第一个sub的值为有效值";
|
|
|
|
|
m_RecipeParVec.push_back(RecipePar);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -350,6 +374,8 @@ void CSubRecipe::IntiRecipeParVec()
|
|
|
|
|
RecipePar.m_DoubleMinVal = 0;
|
|
|
|
|
RecipePar.m_DoubleMaxVal = gCommonParaMgr->GetCommonParaVal(RECIPE_PAR_MAX_LASER_POW_1);
|
|
|
|
|
RecipePar.m_bRcpInfoPar = true;//是否为计算参数(不能被编辑)
|
|
|
|
|
//RecipePar.m_DetailInfo = "Laser1功率值:1.Laser固定电流为0时,根据edi自动计算 2.Laser固定电流大于0时,在功率点检表中查找对应的功率值,用于计算衰减角度";
|
|
|
|
|
RecipePar.m_DetailInfo = "Laser1功率值:在功率点检表中查找对应的功率值,用于计算衰减角度";
|
|
|
|
|
m_RecipeParVec.push_back(RecipePar);
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
@ -362,6 +388,8 @@ void CSubRecipe::IntiRecipeParVec()
|
|
|
|
|
RecipePar.m_DoubleMinVal = 0;
|
|
|
|
|
RecipePar.m_DoubleMaxVal = gCommonParaMgr->GetCommonParaVal(RECIPE_PAR_MAX_LASER_POW_2);
|
|
|
|
|
RecipePar.m_bRcpInfoPar = true;//是否为计算参数(不能被编辑)
|
|
|
|
|
//RecipePar.m_DetailInfo = "Laser2功率值:1.Laser固定电流为0时,根据edi自动计算 2.Laser固定电流大于0时,在功率点检表中查找对应的功率值,用于计算衰减角度";
|
|
|
|
|
RecipePar.m_DetailInfo = "Laser2功率值:在功率点检表中查找对应的功率值,用于计算衰减角度";
|
|
|
|
|
m_RecipeParVec.push_back(RecipePar);
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
@ -374,6 +402,7 @@ void CSubRecipe::IntiRecipeParVec()
|
|
|
|
|
RecipePar.m_DoubleMinVal = gCommonParaMgr->GetCommonParaVal(RECIPE_PAR_MIN_SCAN_SPEED);
|
|
|
|
|
RecipePar.m_DoubleMaxVal = gCommonParaMgr->GetCommonParaVal(RECIPE_PAR_MAX_SCAN_SPEED);
|
|
|
|
|
RecipePar.m_bRcpInfoPar = true;//是否为计算参数(不能被编辑)
|
|
|
|
|
RecipePar.m_DetailInfo = "X方向扫描速度:固定扫描速度等于0时,由X方向重叠率计算得出,固定扫描速度大于0时,等于固定扫描速度";
|
|
|
|
|
m_RecipeParVec.push_back(RecipePar);
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
@ -386,6 +415,7 @@ void CSubRecipe::IntiRecipeParVec()
|
|
|
|
|
RecipePar.m_DoubleMinVal = 0;
|
|
|
|
|
RecipePar.m_DoubleMaxVal = gCommonParaMgr->GetCommonParaVal(RECIPE_PAR_MAX_DIMMER_ANG_1);
|
|
|
|
|
RecipePar.m_bRcpInfoPar = true;//是否为计算参数(不能被编辑)
|
|
|
|
|
RecipePar.m_DetailInfo = "Laser1衰减角度:由edi,频率,功率计算得出的衰减器角度,固定电流值大于0才会生效";
|
|
|
|
|
m_RecipeParVec.push_back(RecipePar);
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
@ -398,6 +428,7 @@ void CSubRecipe::IntiRecipeParVec()
|
|
|
|
|
RecipePar.m_DoubleMinVal = 0;
|
|
|
|
|
RecipePar.m_DoubleMaxVal = gCommonParaMgr->GetCommonParaVal(RECIPE_PAR_MAX_DIMMER_ANG_2);
|
|
|
|
|
RecipePar.m_bRcpInfoPar = true;//是否为计算参数(不能被编辑)
|
|
|
|
|
RecipePar.m_DetailInfo = "Laser2衰减角度:由edi,频率,功率计算得出的衰减器角度,固定电流值大于0才会生效";
|
|
|
|
|
m_RecipeParVec.push_back(RecipePar);
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
@ -2467,4 +2498,17 @@ CString CRecipeMgr::GetOffsetTablePath(CString TabName)
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
CString CRecipeMgr::GetShowParText(int Row)
|
|
|
|
|
{
|
|
|
|
|
CString str = "";
|
|
|
|
|
vector<CSubRecipe> &SubRecipeVec = m_CurEditRecipe.GetSubRecipeVec();
|
|
|
|
|
int size = SubRecipeVec.size();
|
|
|
|
|
if (size <= 0)
|
|
|
|
|
{
|
|
|
|
|
str = "无有效Recipe";
|
|
|
|
|
}
|
|
|
|
|
str = SubRecipeVec[0].m_RecipeParVec[Row].m_DetailInfo;
|
|
|
|
|
return str;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|