## 1 Introduction  
Cluster tools have been demonstrated to be adaptable, reconfigurable, and efficient for wafer fabrication in semiconductor manufacturing [1, 2], resulting in increased productivity [3], reduced cycle time [3, 4, 5], high space utilization [2, 4], and decreased capital costs. As illustrated in Figure 1, cluster tools are generally composed of several process modules (PMs), a wafer-handling robot, and two loadocks (LLs) for loading and unloading wafer cassettes, usually holding 25 wafers with the same recipe [6, 7]. Wafer processing in PMs adopts single-water processing technology, such that each PM can process only one wafer at a time. A raw wafer in a cassette is delivered to PMs for processing by the robot in a pre-specified order and finally returned to the cassette after all operations are completed. To increase the productivity, more sophisticated cluster tools are developed. One of the methods of cluster-tool development is to increase the number of spaces in a PM and the number of fingers on a robot arm to form a cluster tool with multi-space PMs and a multi-finger-arm robot. As shown in Figure 2, the cluster tools discussed in this article are a typical type of cluster tool adopted in modern fabs and are different from the ones with single-space PMs illustrated in Figure 1. The discussed cluster tool shown in Figure 2 consists of several four-space PMs, a dual-arm-dual-finger robot, and several LLs. As shown in Figure 2, in a four-space PM, at a time, two spaces face the door, such that the robot can load wafers into them or unload wafers from them, while the other two spaces are located at the opposite position. The internal chamber can then rotate to exchange the positions taken by the spaces so that the robot can access the other two spaces. In this way, the robot can access all the spaces in the PMs according to a certain order. For the dual-arm-dual-finger robot, each arm has two fingers. Although both fingers in an arm can hold a wafer, they cannot work independently. Also, the two arms are structurally tightly coupled so that only one of them can load/unload at a time. Thus, when one of the robot arms performs an unloading or loading task at a PM or an LL, the two fingers on it should enter the PM or LL together to pick up or place two wafers (or one wafer if there is only one wafer in the spaces at the door of the PM or there is only one wafer held by one of the fingers). After the robot loads four wafers into a PM, a rotation operation of the internal chamber of the PM is required before starting the processing so that the two wafers that are loaded into the PM earlier can be unloaded before the other two upon their completion. This first-in-first-out rule minimizes the difference in sojourn time between the wafers loaded earlier and those loaded later. Moreover, there are several LLs (normally four) to make sure that raw wafers can enter the tool for processing in time. Thus, LLs are not the bottleneck such that the throughput of a tool is not determined by them. Also, this implies that once the robot comes to an LL to perform an unloading/loading task, it can do so immediately without waiting. As the wafer circuit shrinks down to several nanometers, in wafer fabrication, contamination should be avoided by meeting various requirements. One of such requirements is the strict wafer residency time constraints (RTCs) [8; 9]. With RTCs, once a wafer is processed in a PM, it should be removed from the PM within a limited time; otherwise, high temperature and chemical gas would contaminate or damage the wafer in it. Another  
Figure 1: A cluster tool with single-space PMs. Figure 2: A cluster tool with four-space PMs. requirement is the right use of fingers for wafer grasping. To realize this requirement, robot fingers are classified into two types: clean and dirty ones. The fingers dedicated to grasping raw wafers (called dirty wafers as well) are called dirty fingers, while fingers employed to grasp processed wafers are called clean fingers. By doing so, cross-contamination can be avoided.