## 2 Virtual Wafer-Based Method  
### Robot Tasks  
Assume that there are \(n\) Steps in an SACT. Each Step may have parallel PMs that are configured to perform the same operation. Raw wafers in cassettes are loaded into the tool through LLs one by one. Then, each wafer in a cassette should sequentially visit Steps 1-\(n\) for being processed. After all operations are completed, they are returned to the cassette where they come from. Let N\({}_{\text{n}}\) = {0, 1, 2,..., \(n\)} and N\({}^{*}\)n = N\({}_{\text{n}}\setminus\){0}. The wafer flow pattern in the tool can be defined as (\(n_{1}\), \(n_{2}\),..., \(n_{n}\)), where \(n_{i}\) denotes the number of parallel PMs at Step \(i\), \(i\in\)N\({}^{*}\)n.  
The wafer sojourn time in a PM at a step is defined as the time duration that starts from the time point when the robot completes loading a wafer into the PM and ends at the time point when the robot starts unloading the wafer from the PM. The wafer sojourn time consists of the wafer processing time and the time for staying there after being processed, named the wafer delay time. Let \(\tau_{i}\) and \(\rho_{i}\), \(i\in\)N\({}^{*}\)n, denote the wafer sojourn time and the processing time in a PM at Step \(i\), respectively. WRTCs require that the wafer delay time should be within a permitted time window. Let \(\delta_{ij}\), \(i\in\)N\({}^{*}\)n, denote the upper bound of the wafer delay time in a PM at Step \(i\). Thus, it is important to schedule the robot tasks such that WRTCs are met for each step, i.e., \(0\leq\tau_{i}-\rho_{i}\), \(\leq\delta_{i}\), \(i\in\)N\({}^{*}\)n.  
The robot tasks include wafer unloading and loading, moving, and waiting. In this work, \(U_{i}\) and \(L_{i}\) are used to denote the robot tasks of unloading and loading a wafer from and into a PM at Step \(i\), \(i\in\)N\({}_{\text{n}}\), respectively. Note that we use Step 0 to represent LLs. \(M_{\bar{i}}\) is used to denote the robot task of moving from a PM/LL at Step \(i\) to a PM/LL at Step \(j\). \(W_{i}\), \(i\in\)N\({}_{\text{n}}\), is used to denote the robot waiting before unloading a wafer from a PM at Step \(i\). Robot tasks take time, and the time needed for robot unloading/loading at all steps is same. Then, \(\alpha\) and \(\beta\) are used to denote the time needed for \(U_{i}\) and \(L_{i}\), \(i\in\)N\({}_{\text{n}}\), respectively. The robot moving time between any two steps can be treated as the same, and \(\mu\) is used to denote the time needed for \(M_{\bar{i}}\) with or without carrying a wafer. \(\omega_{i}\) is used to denote the time needed for \(W_{i}\), \(i\in\)N\({}_{\text{n}}\).  
For process-bound SACTs, the backward strategy is proved to be optimal in terms of cycle time. Thus, in this work, it is supposed that the backward strategy is adopted for operating an SACT. Assume that in each PM in an SACT there is a wafer being processed. Then, by the backward strategy, a robot task sequence named \(\sigma\) is performed as follows: \(U_{n}\)\(\rightarrow\)\(M_{n0}\)\(\rightarrow\)\(L_{0}\)\(\rightarrow\)\(M_{0(n-1)}\)\(\rightarrow\)\(U_{n-1}\)\(\rightarrow\)\(M_{(n-1)n}\)\(\rightarrow\)\(L_{n}\)\(\rightarrow\)\(M_{n(n-2)}\)\(\rightarrow\)\(\ldots\)\(\ldots\)\(\rightarrow\)\(U_{1}\)\(\rightarrow\)\(M_{12}\)\(\rightarrow\)\(L_{2}\)\(\rightarrow\)\(M_{20}\)\(\rightarrow\)\(U_{0}\)\(\rightarrow\)\(M_{01}\)\(\rightarrow\)\(L_{1}\)\(\rightarrow\)\(M_{1n}\). In fact, \(\sigma\) forms a robot task cycle and it is repeatedly performed in the following operations.