|
@@ -4494,6 +4494,21 @@ namespace Venus_RT.Modules
|
|
|
return (lstWafers, lstEmptySlots);
|
|
|
}
|
|
|
|
|
|
+ private bool NeedPairingForNexWafer()
|
|
|
+ {
|
|
|
+ if (_lstWaferTasks.Exists(wt => ModuleHelper.IsLoadPort(wt.destMod) && (ModuleHelper.IsPm(wt.currentMod) || ModuleHelper.IsTMRobot(wt.currentMod))))
|
|
|
+ return true;
|
|
|
+
|
|
|
+ var processingPMs = _dictModuleTask.Where(mod => ModuleHelper.IsPm(mod.Key) && mod.Value.HasWafer && mod.Value.Scheduler.IsOnline).OrderBy(wt => wt.Value.TimeToReady);
|
|
|
+ if(processingPMs.Count() > 0)
|
|
|
+ {
|
|
|
+ int maxWaitingTime = SC.GetValue<int>("TM.MaxWaitTimePairingOutWafer");
|
|
|
+ return processingPMs.First().Value.TimeToReady < maxWaitingTime;
|
|
|
+ }
|
|
|
+
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
private void PrepareLLPressure()
|
|
|
{
|
|
|
if (RouteManager.IsATMMode)
|
|
@@ -4547,7 +4562,7 @@ namespace Venus_RT.Modules
|
|
|
schdPumpingLLs.Add(ModuleName.LLB);
|
|
|
}
|
|
|
else if ((llbWaferStatus.outSlot.Count == _LLBSlotNumber) ||
|
|
|
- (llbWaferStatus.outSlot.Count > 0 && llbWaferStatus.outSlot.Count < _LLBSlotNumber && _lstWaferTasks.Count(wt => ModuleHelper.IsPm(wt.currentMod) || ModuleHelper.IsTMRobot(wt.currentMod)) == 0))
|
|
|
+ (llbWaferStatus.outSlot.Count > 0 && llbWaferStatus.outSlot.Count < _LLBSlotNumber && !NeedPairingForNexWafer()))
|
|
|
{
|
|
|
schdCoolingLLs.Add(ModuleName.LLB);
|
|
|
}
|
|
@@ -4572,7 +4587,7 @@ namespace Venus_RT.Modules
|
|
|
schdPumpingLLs.Add(ModuleName.LLA);
|
|
|
}
|
|
|
else if ((llaWaferStatus.outSlot.Count == _LLASlotNumber) ||
|
|
|
- (llaWaferStatus.outSlot.Count > 0 && llaWaferStatus.outSlot.Count < _LLASlotNumber && _lstWaferTasks.Count(wt => ModuleHelper.IsPm(wt.currentMod)) == 0))
|
|
|
+ (llaWaferStatus.outSlot.Count > 0 && llaWaferStatus.outSlot.Count < _LLASlotNumber && !NeedPairingForNexWafer()))
|
|
|
{
|
|
|
schdCoolingLLs.Add(ModuleName.LLA);
|
|
|
}
|
|
@@ -4586,7 +4601,7 @@ namespace Venus_RT.Modules
|
|
|
schdPumpingLLs.Add(ModuleName.LLA);
|
|
|
}
|
|
|
else if ((llaWaferStatus.outSlot.Count == _LLASlotNumber) ||
|
|
|
- (llaWaferStatus.outSlot.Count > 0 && llaWaferStatus.outSlot.Count < _LLASlotNumber && _lstWaferTasks.Count(wt => ModuleHelper.IsPm(wt.currentMod)) == 0))
|
|
|
+ (llaWaferStatus.outSlot.Count > 0 && llaWaferStatus.outSlot.Count < _LLASlotNumber && !NeedPairingForNexWafer()))
|
|
|
{
|
|
|
if (!schdVentingLLs.Contains(ModuleName.LLA))
|
|
|
schdCoolingLLs.Add(ModuleName.LLA);
|
|
@@ -4599,7 +4614,7 @@ namespace Venus_RT.Modules
|
|
|
schdPumpingLLs.Add(ModuleName.LLB);
|
|
|
}
|
|
|
else if ((llbWaferStatus.outSlot.Count == _LLBSlotNumber) ||
|
|
|
- (llbWaferStatus.outSlot.Count > 0 && llbWaferStatus.outSlot.Count < _LLBSlotNumber && _lstWaferTasks.Count(wt => ModuleHelper.IsPm(wt.currentMod)) == 0))
|
|
|
+ (llbWaferStatus.outSlot.Count > 0 && llbWaferStatus.outSlot.Count < _LLBSlotNumber && !NeedPairingForNexWafer()))
|
|
|
{
|
|
|
if (!schdVentingLLs.Contains(ModuleName.LLB))
|
|
|
schdCoolingLLs.Add(ModuleName.LLB);
|