Semiconductor Manufacturing Process: Layout Mathematical Modeling
1. Problem Context
A modern semiconductor fabrication facility (fab) involves:
Process Complexity
- 500–1000+ individual process steps per wafer
- Multiple product types with different process routes
- Strict process sequencing and timing requirements
Re-entrant Flow Characteristics
- Wafers revisit the same tool types (e.g., lithography) 30–80 times
- Creates complex dependencies between process stages
- Traditional flow-shop models are inadequate
Stochastic Elements
- Tool failures and unplanned maintenance
- Variable processing times
- Yield loss at various process steps
- Operator availability fluctuations
Economic Scale
- Leading-edge fab costs: $15–20+ billion
- Equipment costs: $50M–$150M per lithography tool
- High cost of WIP (work-in-process) inventory
2. Core Mathematical Formulations
2.1 Quadratic Assignment Problem (QAP)
The foundational model for facility layout optimization:
Subject to:
Variables:
| Symbol | Description |
|---|---|
| $f_{ij}$ | Material flow frequency between tool groups $i$ and $j$ |
| $d_{kl}$ | Distance between locations $k$ and $l$ |
| $x_{ik}$ | Binary: 1 if tool group $i$ assigned to location $k$, 0 otherwise |
| $n$ | Number of departments/locations |
Complexity Analysis:
- Problem Class: NP-hard
- Practical Limit: Exact solutions feasible for $n \leq 30$
- Large Instances: Require heuristic/metaheuristic approaches
2.2 Mixed-Integer Linear Programming (MILP) Extension
For realistic industrial constraints:
Capacity Constraint:
Space Constraint:
Adjacency Requirement (linearized):
Variables:
| Symbol | Description |
|---|---|
| $c_{ij}$ | Unit transport cost between $i$ and $j$ |
| $z_{ij}$ | Distance variable (linearized) |
| $y_k$ | Binary: tool purchase decision for type $k$ |
| $F_k$ | Fixed cost for tool type $k$ |
| $d_p$ | Demand for product $p$ |
| $t_{pk}$ | Processing time for product $p$ on tool $k$ |
| $C_k$ | Capacity of tool type $k$ |
| $A_k$ | Availability factor for tool $k$ |
| $a_i$ | Floor area required by department $i$ |
| $S_k$ | Available space in zone $k$ |
| $M$ | Big-M constant |
| $\mathcal{R}$ | Set of required adjacency pairs |
2.3 Network Flow Formulation
Wafer flow modeled as a multi-commodity network flow problem:
Flow Conservation Constraint:
Arc Capacity Constraint:
Variables:
| Symbol | Description |
|---|---|
| $E$ | Set of arcs (edges) in the network |
| $V$ | Set of nodes (vertices) |
| $\mathcal{P}$ | Set of product types (commodities) |
| $x_{ij}^p$ | Flow of product $p$ on arc $(i,j)$ |
| $c_{ij}$ | Cost per unit flow on arc $(i,j)$ |
| $b_i^p$ | Net supply/demand of product $p$ at node $i$ |
| $u_{ij}$ | Capacity of arc $(i,j)$ |
3. Queuing Network Models 3.1 Fundamental Performance Metrics
Little's Law (fundamental relationship):
Equivalently:
Station Utilization:
Definitions:
- $L$ — Average number in system (WIP)
- $\lambda$ — Arrival rate (throughput)
- $W$ — Average time in system (cycle time)
- $\rho_k$ — Utilization of station $k$
- $v_k$ — Average number of visits to station $k$ per wafer
- $\mu_k$ — Service rate at station $k$
- $m_k$ — Number of parallel tools at station $k$
3.2 Cycle Time Approximation
Kingman's Formula (GI/G/1 approximation):
Extended GI/G/m Approximation:
Total Cycle Time:
Variables:
| Symbol | Description |
|---|---|
| $W_q$ | Average waiting time in queue |
| $C_a^2$ | Squared coefficient of variation of inter-arrival times |
| $C_s^2$ | Squared coefficient of variation of service times |
| $\bar{s}$ | Mean service time |
| $t_k$ | Mean processing time at station $k$ |
| $CT_k$ | Cycle time at station $k$ |
| $\mathcal{K}$ | Set of all stations |
| $T_{\text{transport}}$ | Transport time between stations |
3.3 Re-entrant Flow Complexity
Characteristics of Re-entrant Systems:
- Variability Propagation: Variance accumulates through network
- Correlation Effects: Successive visits to same station are correlated
- Priority Inversions: Lots at different stages compete for same resources
Variability Propagation (Linking Equation):
Departure Variability:
Where:
- $p_{ij}$ — Routing probability from station $i$ to $j$
- $C_{d,k}^2$ — Squared CV of departures from station $k$
4. Stochastic Modeling
4.1 Random Variable Distributions
| Element | Typical Distribution | Parameters |
|---|---|---|
| Processing time | Log-normal | $\mu, \sigma$ (log-scale) |
| Tool failure (TTF) | Exponential / Weibull | $\lambda$ or $(\eta, \beta)$ |
| Repair time (TTR) | Log-normal | $\mu, \sigma$ |
| Yield | Beta / Truncated Normal | $(\alpha, \beta)$ or $(\mu, \sigma, a, b)$ |
| Batch size | Discrete (Poisson) | $\lambda$ |
Log-normal PDF:
Weibull PDF (for reliability):
4.2 Markov Decision Process (MDP) Formulation
For sequential decision-making under uncertainty:
Bellman Equation:
Optimal Policy:
MDP Components:
| Component | Description | Example in Fab Context | |
|---|---|---|---|
| $\mathcal{S}$ | State space | Queue lengths, tool status, lot positions | |
| $\mathcal{A}(s)$ | Action set at state $s$ | Dispatch rules, maintenance decisions | |
| $P(s' \ | s, a)$ | Transition probability | Probability of tool failure/repair |
| $R(s, a)$ | Immediate reward | Negative cycle time, throughput | |
| $\gamma$ | Discount factor | $\gamma \in [0, 1)$ |
5. Hierarchical Layout Structure
5.1 Bay Layout Architecture
Modern fabs use a hierarchical bay layout:
<svg viewBox="0 0 760 470" xmlns="http://www.w3.org/2000/svg" font-family="-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif">
<rect width="760" height="470" fill="#0d1117" rx="8"/>
<text x="380" y="28" fill="#e6edf3" font-size="21" font-weight="700" text-anchor="middle">Layout Mathematics & Constructive Solid Geometry</text>
<text x="380" y="48" fill="#8b98a5" font-size="12" text-anchor="middle">Polygon Operations, Spatial Indexing (R-Trees), and Layout Compaction Solvers</text>
<!-- Section 1: Boolean Polygon Operations -->
<g transform="translate(30, 70)">
<rect width="220" height="350" fill="#161b22" stroke="#30363d" stroke-width="1.5" rx="6"/>
<text x="110" y="24" fill="#58a6ff" font-size="14" font-weight="600" text-anchor="middle">Polygon Boolean Ops</text>
<rect x="25" y="45" width="80" height="70" fill="none" stroke="#79c0ff" stroke-width="2" stroke-dasharray="4"/>
<rect x="65" y="75" width="80" height="70" fill="none" stroke="#d2a8ff" stroke-width="2" stroke-dasharray="4"/>
<text x="65" y="60" fill="#8b98a5" font-size="11">A ∪ B</text>
<!-- Result of Union -->
<path d="M 25 155 L 105 155 L 105 185 L 145 185 L 145 225 L 65 225 L 65 195 L 25 195 Z" fill="#238636" opacity="0.4" stroke="#3fb950" stroke-width="2"/>
<text x="110" y="245" fill="#e6edf3" font-size="11" text-anchor="middle">Weiler-Atherton Clipping</text>
<rect x="20" y="265" width="180" height="65" fill="#0d1117" stroke="#30363d" rx="4"/>
<text x="110" y="285" fill="#8b98a5" font-size="10" text-anchor="middle">Sweep-Line Algorithm</text>
<text x="110" y="302" fill="#79c0ff" font-size="11" font-weight="600" text-anchor="middle">O((N + K) log N)</text>
<text x="110" y="318" fill="#8b98a5" font-size="10" text-anchor="middle">Bentley-Ottmann Intersections</text>
</g>
<!-- Section 2: Spatial Indexing & R-Trees -->
<g transform="translate(270, 70)">
<rect width="220" height="350" fill="#161b22" stroke="#30363d" stroke-width="1.5" rx="6"/>
<text x="110" y="24" fill="#58a6ff" font-size="14" font-weight="600" text-anchor="middle">Spatial Hierarchy (R-Tree)</text>
<!-- MBR diagram -->
<rect x="20" y="45" width="180" height="110" fill="#0d1117" stroke="#30363d" rx="4"/>
<rect x="30" y="55" width="70" height="45" stroke="#f0883e" stroke-width="1.5" fill="none"/>
<rect x="115" y="85" width="75" height="55" stroke="#d2a8ff" stroke-width="1.5" fill="none"/>
<rect x="35" y="60" width="30" height="20" fill="#79c0ff" opacity="0.5"/>
<rect x="130" y="100" width="40" height="25" fill="#3fb950" opacity="0.5"/>
<text x="110" y="172" fill="#e6edf3" font-size="11" text-anchor="middle">Bounding Box Hierarchy (MBR)</text>
<!-- Tree graph -->
<g transform="translate(20, 185)">
<circle cx="90" cy="15" r="10" fill="#1f6feb" stroke="#58a6ff"/>
<text x="90" y="19" fill="#ffffff" font-size="10" text-anchor="middle">R</text>
<line x1="82" y1="23" x2="45" y2="45" stroke="#8b98a5" stroke-width="1.5"/>
<line x1="98" y1="23" x2="135" y2="45" stroke="#8b98a5" stroke-width="1.5"/>
<circle cx="45" cy="50" r="10" fill="#d2a8ff" stroke="#a371f7"/>
<circle cx="135" cy="50" r="10" fill="#f0883e" stroke="#f0883e"/>
<text x="45" y="54" fill="#0d1117" font-size="9" font-weight="700" text-anchor="middle">N1</text>
<text x="135" y="54" fill="#0d1117" font-size="9" font-weight="700" text-anchor="middle">N2</text>
<text x="90" y="85" fill="#79c0ff" font-size="11" font-weight="600" text-anchor="middle">O(log N) Query</text>
<text x="90" y="102" fill="#8b98a5" font-size="10" text-anchor="middle">DRC Window Queries</text>
<text x="90" y="118" fill="#8b98a5" font-size="10" text-anchor="middle">& Overlap Detection</text>
</g>
</g>
<!-- Section 3: Layout Compaction Solvers -->
<g transform="translate(510, 70)">
<rect width="220" height="350" fill="#161b22" stroke="#30363d" stroke-width="1.5" rx="6"/>
<text x="110" y="24" fill="#58a6ff" font-size="14" font-weight="600" text-anchor="middle">Graph-Based Compaction</text>
<g transform="translate(20, 45)">
<rect width="180" height="120" fill="#0d1117" stroke="#30363d" rx="4"/>
<!-- Constraint Graph -->
<circle cx="40" cy="40" r="12" fill="#238636" stroke="#3fb950"/>
<text x="40" y="44" fill="#fff" font-size="10" text-anchor="middle">x₁</text>
<circle cx="140" cy="40" r="12" fill="#238636" stroke="#3fb950"/>
<text x="140" y="44" fill="#fff" font-size="10" text-anchor="middle">x₂</text>
<circle cx="90" cy="90" r="12" fill="#238636" stroke="#3fb950"/>
<text x="90" y="94" fill="#fff" font-size="10" text-anchor="middle">x₃</text>
<line x1="52" y1="40" x2="128" y2="40" stroke="#f0883e" stroke-width="1.5" marker-end="url(#arrow)"/>
<text x="90" y="32" fill="#f0883e" font-size="10" text-anchor="middle">x₂ - x₁ ≥ d_min</text>
<line x1="48" y1="48" x2="80" y2="82" stroke="#f0883e" stroke-width="1.5"/>
<line x1="132" y1="48" x2="100" y2="82" stroke="#f0883e" stroke-width="1.5"/>
</g>
<text x="110" y="185" fill="#e6edf3" font-size="11" text-anchor="middle">DAG Longest Path LP Solver</text>
<rect x="20" y="205" width="180" height="125" fill="#0d1117" stroke="#30363d" rx="4"/>
<text x="110" y="225" fill="#d2a8ff" font-size="11" font-weight="600" text-anchor="middle">Linear Programming (LP)</text>
<text x="110" y="245" fill="#8b98a5" font-size="10" text-anchor="middle">Minimize: Total Area (W × H)</text>
<text x="110" y="265" fill="#8b98a5" font-size="10" text-anchor="middle">Subject to: DRC Distance Constraints</text>
<text x="110" y="285" fill="#3fb950" font-size="11" font-weight="600" text-anchor="middle">Simplex / Interior Point</text>
<text x="110" y="305" fill="#8b98a5" font-size="10" text-anchor="middle">Optimal Wire Stretching</text>
</g>
<text x="380" y="452" fill="#6b7684" font-size="11" text-anchor="middle">Mathematical Foundations of Computer-Aided Design (CAD) & Physical Verification Layout Engines</text>
</svg>
Two-Level Optimization:
1. Macro Level: Assign tool groups to bays
- Objective: Minimize interbay transport
- Constraints: Bay capacity, cleanroom class requirements
2. Micro Level: Arrange tools within each bay
- Objective: Minimize within-bay movement
- Constraints: Tool footprint, utility access
5.2 Distance Metrics
Rectilinear (Manhattan) Distance:
Euclidean Distance:
Actual AMHS Path Distance:
Where $(x_k, y_k)$ and $(x_l, y_l)$ are coordinates of locations $k$ and $l$.
6. Objective Functions
6.1 Multi-Objective Formulation
6.2 Individual Objective Functions
Material Handling Cost:
Cycle Time:
Work-in-Process:
Throughput (bottleneck-constrained):
Variables:
| Symbol | Description |
|---|---|
| $\pi(i)$ | Location assigned to department $i$ |
| $c_{\text{transport}}$ | Unit transport cost |
| $W_{q,k}$ | Waiting time at station $k$ |
| $L_k$ | Average queue length at station $k$ |
| $X$ | System throughput |
6.3 Weighted-Sum Scalarization
Where:
- $w_i$ — Weight for objective $i$ (with $\sum_i w_i = 1$)
- $f_i^{\min}, f_i^{\max}$ — Normalization bounds for objective $i$
7. Constraint Categories
7.1 Constraint Summary Table
| Category | Mathematical Form | Description | ||
|---|---|---|---|---|
| Space | $\sum_i A_i \cdot x_{ik} \leq S_k$ | Total area in zone $k$ | ||
| Adjacency (required) | $\ | \text{loc}(i) - \text{loc}(j) \ | \leq \delta_{ij}$ | Tools must be close |
| Separation (forbidden) | $\ | \text{loc}(i) - \text{loc}(j) \ | \geq \Delta_{ij}$ | Tools must be apart |
| Cleanroom class | $\text{class}(\text{loc}(i)) \geq \text{req}_i$ | Cleanliness requirement | ||
| Utility access | $\sum_{i \in \text{zone}} \text{power}_i \leq P_{\text{zone}}$ | Power budget | ||
| Aspect ratio | $L/W \in [r_{\min}, r_{\max}]$ | Layout shape |
7.2 Detailed Constraint Formulations
Non-Overlapping Constraint (for unequal areas):
With:
Cleanroom Zone Assignment:
Where $\mathcal{Z}_c$ is the set of locations with cleanroom class $c$.
8. Solution Methods
8.1 Exact Methods
Applicable for small instances ($n \leq 30$):
- Branch and Bound:
- Uses Gilmore-Lawler bound for pruning
- Lower bound: $\text{LB} = \sum_{i} \min_k \{ \text{flow}_i \cdot \text{dist}_k \}$
- Dynamic Programming:
- For special structures (e.g., single-row layout)
- Complexity: $O(n^2 \cdot 2^n)$ for general case
- Cutting Plane Methods:
- Linearize QAP using reformulation-linearization technique (RLT)
8.2 Construction Heuristics
CRAFT (Computerized Relative Allocation of Facilities Technique):
<svg viewBox="0 0 569 188" xmlns="http://www.w3.org/2000/svg" style="max-width:100%;height:auto" role="img"><rect x="0" y="0" width="569" height="188" rx="12" fill="#0d1117"/><g font-family="ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace" font-size="14"><text xml:space="preserve" x="20" y="31.7"><tspan fill="#6e7681">│─────────────────────────────────────────────────────────────│</tspan></text><text xml:space="preserve" x="20" y="50.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> Algorithm CRAFT: </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="69.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> 1. Start with initial layout </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="88.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> 2. Evaluate all pairwise exchanges </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="107.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> 3. Select exchange with maximum cost reduction </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="126.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> 4. If improvement found, goto step 2 </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="145.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> 5. Return final layout </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="164.7"><tspan fill="#6e7681">│─────────────────────────────────────────────────────────────│</tspan></text></g></svg>
CORELAP (Computerized Relationship Layout Planning):
<svg viewBox="0 0 561 207" xmlns="http://www.w3.org/2000/svg" style="max-width:100%;height:auto" role="img"><rect x="0" y="0" width="561" height="207" rx="12" fill="#0d1117"/><g font-family="ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace" font-size="14"><text xml:space="preserve" x="20" y="31.7"><tspan fill="#6e7681">│────────────────────────────────────────────────────────────│</tspan></text><text xml:space="preserve" x="20" y="50.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> Algorithm CORELAP: </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="69.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> 1. Calculate Total Closeness Rating (TCR) for each dept </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="88.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> 2. Place department with highest TCR at center </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="107.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> 3. For remaining departments: </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="126.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> a. Calculate placement score for candidate locations </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="145.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> b. Place dept at location maximizing adjacency </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="164.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> 4. Return layout </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="183.7"><tspan fill="#6e7681">│────────────────────────────────────────────────────────────│</tspan></text></g></svg>
ALDEP (Automated Layout Design Program):
<svg viewBox="0 0 569 188" xmlns="http://www.w3.org/2000/svg" style="max-width:100%;height:auto" role="img"><rect x="0" y="0" width="569" height="188" rx="12" fill="#0d1117"/><g font-family="ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace" font-size="14"><text xml:space="preserve" x="20" y="31.7"><tspan fill="#6e7681">│─────────────────────────────────────────────────────────────│</tspan></text><text xml:space="preserve" x="20" y="50.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> Algorithm ALDEP: </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="69.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> 1. Randomly select first department </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="88.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> 2. Scan relationship matrix for high-rated pairs </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="107.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> 3. Place related departments in sequence </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="126.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> 4. Repeat until all departments placed </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="145.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> 5. Evaluate layout; repeat for multiple random starts </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="164.7"><tspan fill="#6e7681">│─────────────────────────────────────────────────────────────│</tspan></text></g></svg>
8.3 Metaheuristics
Genetic Algorithm (GA):
<svg viewBox="0 0 561 397" xmlns="http://www.w3.org/2000/svg" style="max-width:100%;height:auto" role="img"><rect x="0" y="0" width="561" height="397" rx="12" fill="#0d1117"/><g font-family="ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace" font-size="14"><text xml:space="preserve" x="20" y="31.7"><tspan fill="#6e7681">│────────────────────────────────────────────────────────────│</tspan></text><text xml:space="preserve" x="20" y="50.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> Algorithm GA_for_Layout: </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="69.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> Initialize population P of size N (random permutations) </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="88.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> Evaluate fitness f(x) for all x in P </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="107.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="126.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> While not converged: </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="145.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> Selection: </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="164.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> Parents = TournamentSelect(P, k=3) </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="183.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> Crossover (PMX or OX for permutations): </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="202.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> Offspring = PMX_Crossover(Parents, p_c=0.8) </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="221.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> Mutation (swap or insertion): </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="240.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> Offspring = SwapMutation(Offspring, p_m=0.1) </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="259.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> Evaluation: </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="278.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> Evaluate fitness for Offspring </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="297.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> Replacement: </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="316.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> P = ElitistReplacement(P, Offspring) </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="335.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="354.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> Return best solution in P </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="373.7"><tspan fill="#6e7681">│────────────────────────────────────────────────────────────│</tspan></text></g></svg>
Simulated Annealing (SA):
<svg viewBox="0 0 561 397" xmlns="http://www.w3.org/2000/svg" style="max-width:100%;height:auto" role="img"><rect x="0" y="0" width="561" height="397" rx="12" fill="#0d1117"/><g font-family="ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace" font-size="14"><text xml:space="preserve" x="20" y="31.7"><tspan fill="#6e7681">│────────────────────────────────────────────────────────────│</tspan></text><text xml:space="preserve" x="20" y="50.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> Algorithm SA_for_Layout: </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="69.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> x = initial_solution() </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="88.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> T = T_initial </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="107.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="126.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> While T > T_final: </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="145.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> For i = 1 to iterations_per_temp: </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="164.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> x' = neighbor(x) (e.g., swap two departments) </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="183.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> Δf = f(x') - f(x) </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="202.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="221.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> If Δf < 0: </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="240.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> x = x' </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="259.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> Else If random() < exp(-Δf / T): </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="278.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> x = x' </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="297.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="316.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> T = α × T (Cooling, α ≈ 0.95) </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="335.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="354.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> Return x </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="373.7"><tspan fill="#6e7681">│────────────────────────────────────────────────────────────│</tspan></text></g></svg>
Cooling Schedule:
8.4 Simulation-Optimization Framework
<svg viewBox="0 0 578 226" xmlns="http://www.w3.org/2000/svg" style="max-width:100%;height:auto" role="img"><rect x="0" y="0" width="578" height="226" rx="12" fill="#0d1117"/><g font-family="ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace" font-size="14"><text xml:space="preserve" x="20" y="31.7"><tspan fill="#6e7681">│─────────────│</tspan><tspan fill="#c9d1d9"> </tspan><tspan fill="#6e7681">│──────────────────│</tspan><tspan fill="#c9d1d9"> </tspan><tspan fill="#6e7681">│─────────────────│</tspan></text><text xml:space="preserve" x="20" y="50.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> Layout </tspan><tspan fill="#6e7681">│────</tspan><tspan fill="#c9d1d9">▶</tspan><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> Discrete-Event </tspan><tspan fill="#6e7681">│────</tspan><tspan fill="#c9d1d9">▶</tspan><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> Performance </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="69.7"><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> Solution </tspan><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> </tspan><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> Simulation </tspan><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> </tspan><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> Metrics </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="88.7"><tspan fill="#6e7681">│─────────────│</tspan><tspan fill="#c9d1d9"> </tspan><tspan fill="#6e7681">│──────────────────│</tspan><tspan fill="#c9d1d9"> </tspan><tspan fill="#6e7681">│────────┬────────│</tspan></text><text xml:space="preserve" x="20" y="107.7"><tspan fill="#c9d1d9"> </tspan><tspan fill="#6e7681">▲</tspan><tspan fill="#c9d1d9"> </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="126.7"><tspan fill="#c9d1d9"> </tspan><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="145.7"><tspan fill="#c9d1d9"> </tspan><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> </tspan><tspan fill="#6e7681">│──────────────────│</tspan><tspan fill="#c9d1d9"> </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="164.7"><tspan fill="#c9d1d9"> </tspan><tspan fill="#6e7681">│─────────│</tspan><tspan fill="#c9d1d9"> Optimization </tspan><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9">◀</tspan><tspan fill="#6e7681">────────────────│</tspan></text><text xml:space="preserve" x="20" y="183.7"><tspan fill="#c9d1d9"> </tspan><tspan fill="#6e7681">│</tspan><tspan fill="#c9d1d9"> Algorithm </tspan><tspan fill="#6e7681">│</tspan></text><text xml:space="preserve" x="20" y="202.7"><tspan fill="#c9d1d9"> </tspan><tspan fill="#6e7681">│──────────────────│</tspan></text></g></svg>
Surrogate-Assisted Optimization:
Where $\hat{f}$ is a surrogate model (e.g., Gaussian Process, Neural Network) trained on simulation evaluations.
9. Advanced Topics
9.1 Digital Twin Integration
Real-Time Layout Performance:
Where:
- $\mathbf{s}(t)$ — System state at time $t$
- $\boldsymbol{\theta}(t)$ — Real-time parameter estimates
Applications:
- Real-time cycle time prediction
- Predictive maintenance scheduling
- Dynamic dispatching optimization
9.2 Machine Learning Hybridization
Graph Neural Network (GNN) for Layout:
Reinforcement Learning for Dispatching:
Surrogate Model (Neural Network):
9.3 Robust Optimization
Min-Max Formulation:
Uncertainty Set (Polyhedral):
Chance-Constrained Formulation:
Where:
- $\boldsymbol{\xi}$ — Uncertain parameters (demand, yield, tool availability)
- $\mathcal{U}$ — Uncertainty set
- $\Gamma$ — Budget of uncertainty
- $\epsilon$ — Acceptable violation probability
9.4 Multi-Objective Optimization
Pareto Optimality:
Solution $\mathbf{x}^*$ is Pareto optimal if there exists no $\mathbf{x}$ such that:
NSGA-II Crowding Distance:
10. Key Insights
10.1 Fundamental Observations
1. Multi-Scale Nature:
- Nanometer-scale process physics
- Meter-scale equipment layout
- Kilometer-scale supply chain
2. Re-entrant Flow Complexity:
- Traditional queuing theory requires significant adaptation
- Correlation effects are significant
- Scheduling and layout are tightly coupled
3. Simulation Necessity:
- Analytical models sacrifice too much fidelity
- High-fidelity simulation essential for validation
- Surrogate models bridge the gap
4. Layout-Scheduling Interaction:
- Optimal layout depends on dispatch policy
- Optimal dispatch depends on layout
- Joint optimization is active research area
5. Industry Trends Impact Modeling:
- EUV lithography changes bottleneck structure
- 3D integration (chiplets, stacking) changes flow patterns
- High-mix low-volume increases variability
10.2 Practical Recommendations
- Start with QAP formulation for initial layout
- Use queuing models for performance estimation
- Validate with discrete-event simulation
- Apply metaheuristics for large-scale instances
- Consider multi-objective formulation for trade-off analysis
- Integrate digital twin for real-time optimization
Symbol Reference
| Symbol | Description | Typical Units |
|---|---|---|
| $n$ | Number of departments/tools | — |
| $f_{ij}$ | Flow frequency | lots/hour |
| $d_{kl}$ | Distance | meters |
| $\lambda$ | Arrival rate | lots/hour |
| $\mu$ | Service rate | lots/hour |
| $\rho$ | Utilization | — |
| $CT$ | Cycle time | hours |
| $WIP$ | Work-in-process | lots |
| $X$ | Throughput | lots/hour |
| $C^2$ | Squared coefficient of variation | — |
| $m$ | Number of parallel servers | — |
Explore 500+ Semiconductor & AI Topics
From EUV lithography to CUDA optimization — search the full knowledge base or chat with our AI assistant.