Photolithography: Printing with a Low-Pass Filter
Semiconductors
What you need to know first 1 concepts, 1 layers
The requisite-knowledge inventory for this page, bottom-up: the primitives at the base, combined upward until you reach what this page assumes. Skim the layers you already own; start wherever the ground gets unfamiliar.
- base
- The Fourier transformconcept
- ↳you are here
1 of these are concepts without a dedicated page yet — the grey chips. Following the linked ones first makes the rest land.
Every feature on every chip you own was printed with light whose wavelength is larger than the feature. The machine that does it — a projection scanner — is optically just a very good camera, and a camera obeys diffraction: its lens accepts only the spatial frequencies that fit through the pupil. That makes the whole of photolithography one sentence long. A projection lens is a low-pass filter on the mask's spatial-frequency content. Fourier transform the mask, delete everything with , transform back, square: that is the image the resist sees. This page runs that model — fifteen lines of numpy — and gets the resolution limit, the death of sharp corners, phase-shift masks, and the reason OPC exists, each validated against a number known in advance.
def image_1d(mask, dx, na, lam=193.0):
"""Coherent aerial image of a mask amplitude. The entire imaging model."""
E = np.fft.fft(mask)
f = np.fft.fftfreq(mask.size, d=dx)
E[np.abs(f) > na / lam] = 0.0 # the pupil: a hard low-pass filter
return np.abs(np.fft.ifft(E)) ** 2
def image_2d(mask, dx, na, lam=193.0):
E = np.fft.fft2(mask)
fx = np.fft.fftfreq(mask.shape[1], d=dx)
fy = np.fft.fftfreq(mask.shape[0], d=dx)
FX, FY = np.meshgrid(fx, fy)
E[np.sqrt(FX**2 + FY**2) > na / lam] = 0.0
return np.abs(np.fft.ifft2(E)) ** 2 Numbers used throughout: ArF excimer laser, nm; numerical aperture (dry) and 1.35 (water immersion — the fluid's is what lets NA exceed 1). One scope statement before anything else: this is coherent imaging (illumination coherence , a single plane wave). Real scanners use partially coherent illumination — Hopkins (1953) is the standard formulation — which raises the ultimate grating cutoff by a factor and softens every hard edge in the story below. The structure of the physics is unchanged; the coherent case is the one you can hold in your head.
The resolution limit, measured
A line/space grating of pitch has diffraction orders at spatial frequencies . Coherent imaging needs the orders to interfere with the zeroth: the moment , they fall off the pupil and the image goes uniformly gray. Not gradually — exactly:
== binary grating cutoff ==
NA = 0.9: theoretical cutoff pitch = 214.4 nm, measured collapse at 216 nm (grid step 2 nm)
NA = 1.35: theoretical cutoff pitch = 143.0 nm, measured collapse at 144 nm (grid step 2 nm)
== alternating phase-shift mask ==
NA = 1.35 PSM: theoretical cutoff pitch = 71.5 nm, measured collapse at 72 nm
-> 2.00x below the binary cutoff
half-pitch k1: binary 0.50, alternating PSM 0.250 The all-or-nothing step is itself the signature of coherent illumination: a grating prints at essentially full contrast or not at all. (Partial coherence turns the cliff into a slope — that is most of what it does.) The measured collapse pitches sit within one 2-nm grid step of , and immersion buys exactly its advertised factor: 216 nm → 144 nm is to three digits.
The green curve is the trick worth the whole page. Levenson's alternating phase-shift mask (1982) etches every other transmitting slot to add a half-wave of path — multiplying that slot's amplitude by . The mask's average transmission is now zero: the DC order vanishes, the fundamental moves to , and the two surviving orders interfere to print the pattern at half the binary cutoff — measured 72 nm against a theoretical 71.5, a factor of 2.00 below the binary mask through the same lens. In half-pitch terms, drops from 0.50 to 0.25 — the hard floor. Nothing about the lens changed; the mask stopped wasting an order on carrying zero information.
What the filter does to corners
A sharp corner is made of arbitrarily high spatial frequencies, and the pupil discards all of them past the cutoff. So corners round — not from any imperfection, but from information that provably never reached the wafer. The same L-shaped elbow at three linewidths, imaged at NA = 1.35:
At nm the print is faithful, down to the faint standing-wave ripple along the arms (interference of edge diffraction — real, not an artifact). At 200 nm the outer corner has visibly melted. At 120 nm — still above the 72 nm half-pitch limit! — the elbow is a rounded glow. Resolution limits and pattern fidelity are different budgets: you run out of corner long before you run out of pitch.
Neighbors matter: proximity
== contacts (130 nm holes, NA = 1.35) ==
isolated hole peak intensity 1.659, center of 5x5 dense array (pitch 170 nm) 1.568
saddle between adjacent dense holes = 0.341 (22% of peak - resist threshold decides merge) The same 130-nm contact hole prints differently alone and in a crowd — each hole's diffracted field overlaps its neighbors'. The number to watch is the saddle: midway between adjacent dense holes the intensity reaches 22% of the peak, and the resist threshold below sits at 35%. The holes stay separated — with a margin of 0.017 in normalized dose. Every layout rule that forbids certain pitches is this calculation, run in reverse.
The resist is a threshold detector
To first order, chemically amplified resist develops wherever the delivered dose crosses a threshold — so the printed pattern is the aerial image binarized at a level set by exposure dose. Slide the threshold and the printed linewidth slides with it:
== dose latitude (elbow arm drawn 160 nm) ==
threshold 0.25: printed CD = 156 nm
threshold 0.35: printed CD = 142 nm
threshold 0.45: printed CD = 130 nm A 160-nm drawn line prints at 156, 142, or 130 nm as the threshold moves from 0.25 to 0.45 — about 13 nm of critical dimension per 10% of dose. That sensitivity is dose latitude, one axis of the process window every fab lives inside; the steeper the aerial image's sidewalls, the less the CD cares about dose, which is why image contrast — not just resolution — is the currency of the whole field.
Why OPC exists
If the lens is a known filter, you can pre-distort the mask so the filtered result lands closer to the intent — optical proximity correction. The classic hand moves: serifs on outer corners and hammerheads on line ends. Here is a one-parameter version: scan the serif size, keep the best.
== OPC (w = 120 nm, threshold 0.35) ==
naive mask IoU = 0.859
serif = 0.10 w: IoU = 0.867
serif = 0.20 w: IoU = 0.858
serif = 0.30 w: IoU = 0.837
serif = 0.50 w: IoU = 0.750
best serif 0.10 w: IoU 0.859 -> 0.867
line-end pullback: naive 10 nm -> with hammerheads -4 nm Two lessons in one table. First, the wins are local: global pattern fidelity (intersection-over-union against the drawn target) barely moves, because corners and ends are slivers of total area — but the line-end pullback, which is the actual electrical failure mode (a via missing its landing), goes from 10 nm short to 4 nm long. Hammerheads do exactly the job they were invented for. Second, more correction is not better: serifs past 0.2 w actively hurt, overprinting more than they fix. Greedy hand-tuning saturates within a percent — which is why production OPC is an inverse problem solved by optimization over every edge segment of the layout (inverse lithography technique treats the mask itself as the unknown in exactly the sense of gradient descent). The forward model being differentiable — it's an FFT and a mask — is what makes that industry possible.
The k₁ ladder: forty years on one axis
The whole history of lithography compresses into the Rayleigh scaling : shrink the wavelength, grow the aperture, and grind down with mask and illumination tricks. Representative production points:
| Generation | (nm) | NA | half-pitch |
|---|---|---|---|
| g-line (Hg lamp) | 436 | ~0.5 | ~500 nm |
| i-line (Hg lamp) | 365 | ~0.6 | ~350 nm |
| KrF excimer | 248 | ~0.8 | ~130 nm |
| ArF dry | 193 | 0.93 | ~90 nm |
| ArF immersion | 193 | 1.35 | ~38 nm |
| EUV | 13.5 | 0.33 | ~13 nm |
Check the last ArF row against this page: 38 nm half-pitch at NA 1.35 and 193 nm is — below our coherent limit of 0.5 and a hair above the absolute floor of 0.25. Production got there by stacking exactly the tricks demonstrated above: partial coherence and off-axis illumination for the factor, phase shifting, aggressive OPC, and finally printing one layer as two interleaved exposures when a single pass could not. EUV at 13.5 nm reset by 14× so could relax again — at the price of an optical system with no transparent materials left (see the probes).
Try First
Each prompt asks a checkable question about the working code or math above — predict an output, derive a sign, state an invariant, find a bug. Commit to an answer before clicking "reveal." That commitment is the whole point: if your answer matched, you understand the piece you were looking at; if it didn't, that's the part worth re-reading.
Extensions
- Partial coherence — Hopkins (1953): integrate the coherent image over the source's angular extent; the cutoff stretches by and the contrast cliff becomes a slope. Off-axis (annular, dipole) illumination is source engineering in the same model.
- Defocus — multiply the pupil by and watch the process window shrink into the dose-focus ellipse every fab plots.
- Inverse lithography — treat every mask pixel as a parameter and descend on pattern error through the differentiable forward model; connects to gradient descent and the continuous-relaxation theme.
- Where the wafer goes next — the printed pattern masks the dopant diffusion and etches that build the junctions in the PN junction page; the gates those junctions form are the subject of the computer architecture section. This page is how those gates get drawn.
Reproduce it
scripts/gen_photolithography.py regenerates every figure and
number in seconds — the model really is a handful of FFTs. The script's
history is worth a sentence: its first version reported gratings printing
25% past the diffraction limit, because non-commensurate grating
periods leaked spectral sidelobes under the pupil. The fix (integer-pixel
periods, windows an exact multiple) is documented in the source — a
reminder that in Fourier-based simulation, the leakage you forgot about
is always the physics you think you discovered.