Browse Source

Enhance throughput while not pass by aligner.

sangwq 11 months ago
parent
commit
57281fce55
1 changed files with 16 additions and 5 deletions
  1. 16 5
      Venus/Venus_RT/Modules/SystemDispatcher.cs

+ 16 - 5
Venus/Venus_RT/Modules/SystemDispatcher.cs

@@ -2272,12 +2272,23 @@ namespace Venus_RT.Modules
                         return;
                 }
 
-                // 有两片processed wafer 时且, 不需要align wafer 时, 不要预期
-                if((atmWaferCount == 0 && (outLLWaferStatus.outSlot.Count() < 2 || _lstWaferTasks.Exists(wt => ModuleHelper.IsLoadPort(wt.currentMod) && !wt.IsAligned))) || 
-                   (atmWaferCount == 1 && inLLWaferStatus.emptySlot.Count == 2 && _efemRobotSingleArmOption == 0 && (outLLWaferStatus.outSlot.Count < 2 || _dictModuleTask[outLL].TimeToReady > 20)))
+                // need pass by aligner
+                if(_lstProcessJobs.Exists(pj => pj.State == EnumProcessJobState.Processing && IsSequenceNeedAlign(pj.Sequence)))
                 {
-                    if (ForwardATMWafers(inLL))
-                        return;
+                    if (atmWaferCount == 0 || (atmWaferCount == 1 && inLLWaferStatus.emptySlot.Count == 2 && _efemRobotSingleArmOption == 0 && (outLLWaferStatus.outSlot.Count < 2)))
+                    {
+                        if (ForwardATMWafers(inLL))
+                            return;
+                    }    
+                }
+                // don need pass by aligner
+                else
+                {
+                    if (_lstWaferTasks.Count(wt => wt.currentMod == outLL || (wt.currentMod == ModuleName.TMRobot && ModuleHelper.IsLoadPort(wt.destMod))) == 0 && _lstWaferTasks.Count(wt => wt.currentMod == inLL || wt.currentMod == ModuleName.EfemRobot) < (_efemRobotSingleArmOption == 0 ? 2 : 1))
+                    {
+                        if (ForwardATMWafers(inLL))
+                            return;
+                    }
                 }
 
                 if((inLLWaferStatus.emptySlot.Count == 2 || (inLLWaferStatus.emptySlot.Count == 1 && _efemRobotSingleArmOption != 0) && _dictModuleTask[inLL].TimeToReady < 2))