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):

  1. 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.)

  2. 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.

  3. 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.)

  4. 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.)

  5. 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.)

  6. 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

KrFIlluminator

Ray traced KrF illuminator with zoom-axicon, glass rod and REMA objective, see the module docstring.

ReticleRays

Rays of the illuminator at the reticle.

class pyoptics.litho.illuminator.ReticleRays(points, directions, sigma)

Bases: tuple

Rays 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: object

Ray 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.