Real-time dispatching is used to control the flow of WIP in a FAB.
The idea is to reduce WIP bubbles by spreading the WIP across the flow as evenly as possible.
Another goal is to do the best local optimization so we can maximize throughput across the various sections (photo, etch, diffusion….).
We can do this by combining global rules with local rules:
Global rules – looks at all the WIP that is running in the FAB and prioritizes the lots.
Local rules – looks at the WIP in a specific station and optimizes the throughput (for example by picking the same type of lots to run together)
Balancing the production line (global rules)
Problem illustration
- Suppose there are 3 lots that need the photo tool. The lots belong to layers: M1, M2, M3. Which lot should get priority?
- Looking at the WIP in the 3 layers it is clear that layer M3 is very low on WIP while layer M2 is very high on WIP.
- To make sure the the production line will keep a steady flow of WIP the lot in M2 must have priority so as to reduce the WIP in M2 and supply WIP to M3.
Local and global optimizations:
- By balancing the production line we achieve global optimization of the whole production line. However, we can also achieve local optimization on a specific tool/tool type by adding rules dedicated to the tool.
- The local optimization rules (like batching) must not contradict the global rule so the line balancing will not be disturbed.
- For example: the line balancing will point the lots that have priority as seen in the previous slide and the batching rule will make sure that the machine will run with the maximal lots in a batch.
Things to consider
- There is more than 1 flow running in the FAB.
- Not every flow has all the layers. So it is hard to define rules that apply to all layers.
- The rule should be easy since we want to use it with a local rule and because we want to apply it to all the different flows and the future one too.
There can be many ways to write a global rule (I will post some of them later), here is what i did:
The idea of the global rule is that it needs to balance the line to have WIP spread across the flow in order to avoid bubbles. How do we do it? I will start with the algorithm and then explain it.
Preparation
- For every flow there’re defined names of layers that are similar in context. For example: diffusion 01, etch 01, etch 02, photo 01, photo 02. The name gives you the section and tools needed and the number is the number of times it is repeated. Etch 01 will be the first etch layer, Etch 02 will be the second time we have an etch layer.
- For every flow look for the 1X cycle time in each layer. 1X will be the actual time the lot should spend on each tool if the lot was the only lot in the Fab and shouldn’t wait for anything (the figure should be in the capacity model).
- For each layer define the target percentage of WIP by dividing layer 1X by the entire flow 1X. That will give us the weight of each layer in the flow. That is the% target of the layer. By multiplying it by the number of lots on that flow we will get the target WIP of the layer (for each flow).
Online dispatch
- For every flow calculate the target WIP of the layer by multiplying the current number of lots / number of wafers by the % target of the layer.
- For each layer and each flow divide the actual number of lots/wafers by the target WIP of the layer. The result is the % load of the layer.
- Sort the layers into 5 categories using predefined parameters (I will use my parameters, but you can do it according to the weight we want the global rules to have):
- Extreme loading: % load of the layer > 180%
- High loading: 120% < % load of the layer < 180%
- Normal loading: 80% < % load of the layer < 120%
- Low loading: 40% < % load of the layer < 80%
- Extremely low loading: % load of the layer < 40%
- The priority we will give to the lot will be based on the layer the lot is leaving and the layer it enters.
- Each lot gets priority. We will call it Line balance priority, by associating it to one of the cases sorted from top priority to low priority:
- Going fromExtreme loading layer to Extremely low loading layer
- Going from Extreme loading layer to Low loadinglayer
- Going from Extreme loadinglayer to Normal loading layer
- Going from High loading layerto Extremely low loading layer
- Going from High loading layerto Low loading layer
- Going from High loading layerto Normal loading layer
- Going from Normal loading layerto Extremely low loading layer
- Going from Normal loadinglayer to Low loading layer
- Going fromLow loading layer to Extremely low loading layer
- The rest of the combination can get the same low priority.
- Now that each lot has global priority, we introduce another global rule: the critical ratio
- The critical ratiois calculated by taking the expected number of days to reach the end of the flow and dividing it by the number of days between now and the due date. The bigger the number, the higher the priority.
- Sort first by Line balance priority, then bycritical ratio.
Local dispatch rules
The idea behind a local rule is to get the best local optimization. Get the maximum moves by batching lots with similar processes.
Local rules examples
Implant
- We would like to have lots running the same gas one after the other.
- We would like to have lots with the same energy levels running one after the other.
- We would change gas if the number of wafers waiting in the implant station is more than 100 and 50%-60% of the lots needs a different gas.
Diffusion
- Largest batch first.
- Running test wafers as part of a production batch if possible.
Photo
- Using masks already on the photo magazine.
- Promote lots in different processes that needs this masks, to increase batching on the photo tool.
- Changing mask will be done if the number of wafers waiting for different maks is more than 100 and 50%-60% of the lots needs different mask.
CMP+thin films
- Maximum cascading
Wet
- Maximum batching: Waiting for upstream lots that suppose to arrive in a specific time frame, to increase the batch size.
Combining local and global rules
Local and global rules usually conterdict each other. If we run by priorities (global) we will not maximize the number of moves possible. If we run by local optimization we will create WIP bubles and hold down the speed of important lots.
So, we combine both rules and get a good mix of priorities and optimization.
How to mix global and local rules?
Run the global rule and see which process is needed most. Then run this lot and all the lots that can follow it using the local rules for optimiztaion.
How it will look like?
Suppose we are looking on the implant station:
Global rule sorts the lots based on their priorities. Global rule tell us we need to run a specific lot that uses the XXX gas. So we will run this lot first and then all the lots that uses the same XXX gas, although the rest of the lots don’t have priorites. We will change the gas when we will done processing all the lots that uses this gas, or if we have to many lots waiting for a different gas (for example in the above local rule, if we have more than 60% lots waiting for a different gas and at least 100 wafers in queue).
When changing gas we will use the global rule again to pick the next gas we need to run. There are many algorithms that we can use to improve this processes and every dispatch planner should use what works for his/her fab.
Compliance
In order for the dispatching to give the best results we need to follow up on the compliance of the fab supervisors. The SV, usually, will look for maximum moves at all cost because that what they are measured on. So we need to introduce a compliance KPI.
As a compliance KPI i measured the percentage of times that the SV picked the first 5 lots in the dispatch list. That was a good enough compliance, since we need to remember that he/she might have other parameters that make his choice better, and that we can not predict.
When we compare compliance between SV we can see if there is a problem with the dispatch process (all SV have low compliance) or there is a problem with a specific SV that prefer local optimization over teh global optimiztaion.
Summery
On this article we introduce the global rule, that allow us to balance the production line and the local rule that optimize the moves in every station.
There are many other methods that we can combine into the dispatch such us critical ratio and RND lots in the global rules and many more in the local rules.
Please let me know if you want to know more about this subject (please leave a comment).