pyoptics.litho.illuminator¶
Ray traced KrF illuminator: from the secondary source to the reticle.
The illuminator sets the pupil fill (sigma, annular) of a projection lens
and illuminates its field uniformly and telecentrically. KrFIlluminator
follows the architecture of the Zeiss illuminators of the 1990s (US
5,675,401 and US 5,982,558) and fits the Caldwell lens
(raytrace.caldwell_krf_lens(): NA 0.56, 4x, a 66 mm square of its 46.8 mm
object field radius):
Secondary source (plane 130 of US 5,675,401): a disk of radius source_radius that emits uniformly into the direction sines up to source_na. For a laser it stands for the beam shaper with a diffuser or diffractive element; for a lamp, for the image of the arc. (Invented.)
Zoom-axicon objective (raytrace.zeiss_zoom_axicon(), US 5,675,401 Table 2, adapted to fused silica at 248 nm): maps the source directions onto positions in the pupil plane 30; the zoom sets the size of the illuminated disk (sigma), the gap between its axicons turns the disk into a ring (annular). Ray traced.
Diffuser in plane 30 (the “diffracting component 8” of US 5,675,401, Fig. 4d): adds directions uniformly within +-diffuser_angle (tangents, square) so that the rod entrance is filled. Without it the small spot on the rod entrance shows up as a grid of separate spots in the pupil (the mirror images of the spot that the rod makes, w/L apart). (Invented.)
Coupling lens: an ideal lens of focal length coupling_focal_length with plane 30 in its front and the rod entrance in its back focal plane, so that positions in plane 30 become directions in the rod. (Invented, the “objective 4” of US 5,675,401.)
Glass rod: a fused silica bar of square cross section rod_width and length rod_length; total internal reflection at its sides mixes the light (uniform field) and mirrors the directions (the pupil fill becomes symmetric under x -> -x and y -> -y). Traced exactly by unfolding the reflections. Its exit face carries the masking blades. (Invented: the patents use a rod of about 0.5 m.)
REMA objective (raytrace.zeiss_krf_rema(), US 5,982,558 Table 1): images the rod exit onto the reticle at -4.457x. Ray traced.
The default source NA (0.185) and coupling focal length (60 mm) give sigma (radius with 95% of the energy) from 0.32 (zoom 0) to 0.83 (zoom 1) at the reticle side NA 0.14 of the Caldwell lens; the REMA passes up to sigma 0.96. The axicons give rings from narrow ones near sigma 0.8 down to inner radii of about 0.5 of the outer one.
Coordinates: field points are image (wafer) coordinates in mm, as in pyoptics.litho.lens; the reticle point is field/magnification (magnification -0.25 for Caldwell). Sigma coordinates follow pyoptics.litho.illumination: a source point s illuminates the wafer with the transverse wave vector k_0*NA*s, i.e. s = -d_xy/(NA*|magnification|) with the reticle side ray directions d of the (inverting) projection lens.
References¶
J. Wangler and J. Liegel, “Illuminating arrangement including a zoom objective incorporating two axicons”, US 5,675,401 (1997).
G. Fürter, J. Wangler, U. Dinger and G. Ittner, “REMA objective for microlithographic projection exposure systems”, US 5,982,558 (1999).
J. B. Caldwell, “All-fused-silica 248-nm lithographic projection lens”, Optics & Photonics News 9(11), 40-41 (1998).
Classes
Ray traced KrF illuminator with zoom-axicon, glass rod and REMA objective, see the module docstring. |
|
Rays of the illuminator at the reticle. |
- class pyoptics.litho.illuminator.ReticleRays(points, directions, sigma)¶
Bases:
tupleRays of the illuminator at the reticle.
- points(N, 2) array
Positions in the reticle plane (mm).
- directions(N, 3) array
Unit directions behind the reticle plane.
- sigma(N, 2) array
Sigma coordinates (see the module docstring).
- directions¶
Alias for field number 1
- points¶
Alias for field number 0
- sigma¶
Alias for field number 2
- class pyoptics.litho.illuminator.KrFIlluminator(zoom=1.0, axicon_gap=0.0, source_radius=1.0, source_na=0.185, diffuser_angle=None, coupling_focal_length=60.0, rod_width=14.8, rod_length=500.0, NA=0.56, magnification=-0.25, wavelength=0.00024838, n_rays=400000, seed=0)[source]¶
Bases:
objectRay traced KrF illuminator with zoom-axicon, glass rod and REMA objective, see the module docstring.
- Parameters:
- zoomnumber or pair, optional
Zoom position(s) of the zoom-axicon in [0, 1] (0: small sigma).
- axicon_gapnumber, optional
Distance of the axicons in mm (0: conventional illumination).
- source_radiusnumber, optional
Radius of the secondary source in mm.
- source_nanumber, optional
Largest direction sine of the secondary source.
- diffuser_anglenumber, optional
Half width of the diffuser in plane 30 (tangent of the direction added in x and y); default: rod_width/(2*coupling_focal_length), the rod entrance just filled. 0: no diffuser.
- coupling_focal_lengthnumber, optional
Focal length of the coupling lens in mm.
- rod_width, rod_lengthnumbers, optional
Square cross section and length of the glass rod in mm.
- NAnumber, optional
Image side NA of the projection lens (sigma = 1).
- magnificationnumber, optional
Magnification of the projection lens (reticle to wafer).
- wavelengthnumber, optional
Vacuum wavelength in mm.
- n_raysint, optional
Rays traced from the source (the pupil fill at a field point uses those that arrive within a window around it).
- seedint, optional
Seed of the random rays.
- property zoom_axicon¶
The zoom-axicon objective (raytrace.System) of the current setting.
- property NA_reticle¶
Reticle side NA of the projection lens (sigma = 1).
- set(zoom=None, axicon_gap=None)[source]¶
Change the zoom and/or the axicon gap.
- Parameters:
- zoomnumber or pair, optional
- axicon_gapnumber, optional
- Returns:
- KrFIlluminator
self
- pupil_plane_rays(n_rays=None)[source]¶
Rays in the pupil plane 30 behind the zoom-axicon.
- Parameters:
- n_raysint, optional
Default: self.n_rays.
- Returns:
- points, directions(N, 3) arrays
Of the rays that pass (the zoom-axicon has no clear apertures).
- rod_exit_rays(n_rays=None)[source]¶
Rays at the exit face of the rod (the object plane of the REMA).
- Parameters:
- n_raysint, optional
Default: self.n_rays.
- Returns:
- points(N, 2) array
Positions on the exit face (mm, centre of the rod at 0).
- directions(N, 3) array
Directions in air behind the exit face.
- transmissionfloat
Fraction of the source rays that enter the rod.
- reticle_rays(field=None, window=1.0, n_rays=None)[source]¶
Rays at the reticle, traced through the REMA objective.
- Parameters:
- fieldpair, optional
Image (wafer) field point in mm; None: the whole field.
- windownumber, optional
Half width (wafer scale, mm) of the square around the field point within which the rays are taken.
- n_raysint, optional
Rays from the source; default self.n_rays.
- Returns:
- ReticleRays
- pupil_fill(field=(0.0, 0.0), window=1.0, n_samples=41, polarization='unpolarized', n_rays=None)[source]¶
Pupil fill at a field point as an
Illumination(histogram of the sigma coordinates of the rays on an n_samples grid across the unit circle).- Parameters:
- fieldpair, optional
Image (wafer) field point in mm.
- windownumber, optional
Half width (wafer scale, mm) of the field window, see reticle_rays().
- n_samplesint, optional
Grid points across the sigma range [-1, 1].
- polarizationoptional
See pyoptics.litho.illumination.
- n_raysint, optional
Rays from the source; default self.n_rays.
- Returns:
- Illumination
- sigma(field=None, fractions=(0.05, 0.95), window=1.0, n_rays=None)[source]¶
Radii of the pupil fill that enclose the given fractions of the energy, e.g. (sigma_in, sigma_out).
- Parameters:
- fieldpair, optional
Image field point in mm; None (default): all rays of the field.
- fractionssequence, optional
Energy fractions.
- windownumber, optional
See reticle_rays().
- n_raysint, optional
- Returns:
- array
- centroid(field=(0.0, 0.0), window=1.0, n_rays=None)[source]¶
Centroid of the reticle side ray directions at a field point (the energetic telecentricity of the illumination), direction sines (d_x, d_y).
- Parameters:
- fieldpair, optional
- windownumber, optional
- n_raysint, optional
- Returns:
- array (2,)
- telecentricity(lens, field=(0.0, 0.0), window=1.0, n_rays=None)[source]¶
Mismatch between the illumination and a projection lens: the centroid of the illumination directions at the reticle minus the direction of the lens’ object side chief ray, in direction sines (radians for small values). In sigma units it is the shift of the pupil fill relative to the pupil of the lens, divided by NA_reticle.
- Parameters:
- lenspyoptics.raytrace.System
Projection lens (object = reticle), e.g. caldwell_krf_lens().
- fieldpair, optional
Image field point in mm.
- windownumber, optional
- n_raysint, optional
- Returns:
- array (2,)
- uniformity(n_bins=8, n_rays=None)[source]¶
Illumination of the field: ray counts on n_bins x n_bins cells of the reticle image of the rod and the non uniformity (max - min)/(max + min).
- Parameters:
- n_binsint, optional
- n_raysint, optional
- Returns:
- counts(n_bins, n_bins) array
- non_uniformityfloat
- for_sigma(sigma_out, sigma_in=None, fractions=(0.05, 0.95), n_rays=40000)[source]¶
Set zoom and axicon gap for a pupil fill.
Conventional (sigma_in None): the zoom (both elements together) for sigma_out at gap 0; annular: zoom and gap. sigma_in and sigma_out are the radii that enclose the energy fractions.
- Parameters:
- sigma_outnumber
- sigma_innumber, optional
- fractionspair, optional
- n_raysint, optional
Rays per trial (sigma from the rod exit directions).
- Returns:
- KrFIlluminator
self, with the new setting.