pyoptics.litho.jones_pupil¶
Jones pupils: the polarization properties of a projection lens, their representations and decompositions.
A Jones pupil J(P) is a 2 x 2 complex matrix at every point P = (P_x, P_y) of the normalized pupil. It maps the Jones vector (E_x, E_y) of a plane wave entering the pupil to that leaving it. In LithoSimulation it acts on every diffraction order before the aplanatic rotation into the image space (Projector(jones_pupil=…)), on top of the scalar pupil (Zernike phase and apodization) of the Projector.
Representations from the literature¶
Eight real functions describe a Jones pupil. The literature uses these representations:
Jones-Zernike: each of the four complex elements J_jk expanded into Zernikes. Simple, but the elements mix physical effects and depend on the orientation of the coordinate system.
Pauli decomposition (McIntyre, Kye, Levinson and Neureuther, J. Micro/Nanolith. MEMS MOEMS 5(3), 033001 (2006)),
J = a_0*s_0 + a_1*s_1 + a_2*s_2 + a_3*s_3, a_k = tr(s_k J)/2,
with the Pauli matrices s_0 = I, s_1 = diag(1, -1), s_2 = [[0, 1], [1, 0]] and s_3 = [[0, -i], [i, 0]]. a_0 is the scalar part (apodization and wavefront), a_1 and a_2 are linear retardance (imaginary parts) and diattenuation (real parts) along x/y and +-45 degrees, and a_3 is circular retardance (rotation) and circular diattenuation. McIntyre et al. found this the most useful format for lithographers. Expanding each a_k into Zernikes gives the Pauli-Zernike representation (PauliZernikePupil).
Physical decomposition (e.g. Totzeck, Graeupner, Heil et al., “Polarization influence on imaging”, J. Micro/Nanolith. MEMS MOEMS 4(3), 031108 (2005); Geh et al.): the polar decomposition J = U H into a retarder U (unitary) and a diattenuator H (Hermitian, positive). It gives scalar transmission and phase, the magnitude and orientation of the retardance and of the diattenuation, and the circular retardance (rotation). decompose() does this; PhysicalJonesPupil builds a Jones pupil from these parts.
Orientation Zernike polynomials (OZP; Ruoff and Totzeck, “Orientation Zernike polynomials: a useful way to describe the polarization effects of optical imaging systems”, J. Micro/Nanolith. MEMS MOEMS 8(3), 031404 (2009); US patent 8,126,669). Retardance and diattenuation are orientation fields: an orientation psi is defined modulo 180 degrees, so it is described by an orientator a*(cos(2*psi), sin(2*psi)). OZPs are a complete set of vector polynomials for orientator fields: the Zernike radial polynomials times angular orientators. Like scalar Zernikes they separate the symmetries (a rotationally symmetric radial or tangential retardance, typical for coatings and stress, is a single OZP), and they serve for tolerancing via linear and quadratic sensitivities of CD and placement. They are used for lens specification and matching (Zeiss and ASML).
Orientation Zernike convention used here¶
An orientator field is written as the complex function o = o_1 + i*o_2. The OZPs are R_n^abs(m)(rho)*exp(i*m*phi) and i*R_n^abs(m)(rho)*exp(i*m*phi) for all (n, m) with n - abs(m) even. They are labelled by +-j with the Fringe Zernike index j of (n, abs(m)) such that the first component o_1 of OZ +j is the Fringe Zernike Z_j (the patent’s convention: the J_11 element corresponds to the scalar Zernike abs(OZ)), and OZ -j differs in the sign of the second component:
Z_j = R*cos(m*phi), m >= 0: OZ +j = R*exp(+i*m*phi), OZ -j = R*exp(-i*m*phi),
Z_j = R*sin(m*phi), m > 0: OZ +j = i*R*exp(-i*m*phi), OZ -j = -i*R*exp(+i*m*phi),
m = 0: OZ +j = R (along x/y), OZ -j = i*R (along +-45 degrees).
A rotation of the lens by alpha multiplies exp(i*m*phi) by exp(i*(2 - m)*alpha): the rotationally symmetric ones are OZ +5 = rho**2*exp(2*i*phi) (radial orientation; a negative coefficient is tangential) and OZ -6 = -i*rho**2*exp(2*i*phi) (a spiral orientation at -45 degrees to the radius: i*o rotates an orientator by 45 degrees). The patent writes the angular parts with half angles, (cos(m*phi/2), -sin(m*phi/2)); that is the same set of functions with m relabelled.
Physical Jones pupil used here¶
PhysicalJonesPupil is J = U H with
U = exp(-i*pi*(g_1*s_1 + g_2*s_2 + g_3*s_3)),
H = exp(e_1*s_1 + e_2*s_2 + e_3*s_3)/sqrt(cosh(2*abs(e))),
the retardance orientator (g_1, g_2) in waves (the retardance between the eigenpolarizations is 2*pi*abs(g) radians at the orientation psi of the fast axis, with g_1 + i*g_2 = abs(g)*exp(2*i*psi)), the circular retardance g_3 in waves (a rotation of the polarization by pi*g_3), and the diattenuation orientator d = tanh(2*abs(e))*e/abs(e), whose magnitude is (T_max - T_min)/(T_max + T_min). H is normalized to a mean intensity transmission of 1, so that the scalar transmission and phase stay with the Projector (apodization, Zernikes).
Convention: fields vary as exp(i(k.r - omega*t)).
References¶
G. R. McIntyre, J. Kye, H. Levinson and A. R. Neureuther, “Polarization aberrations in hyper-numerical-aperture projection printing: a comparison of various representations”, J. Micro/Nanolith. MEMS MOEMS 5, 033001 (2006).
M. Totzeck, P. Gräupner, T. Heil et al., “Polarization influence on imaging”, J. Microlith. Microfab. Microsyst. 4, 031108 (2005).
J. Ruoff and M. Totzeck, “Orientation Zernike polynomials: a useful way to describe the polarization effects of optical imaging systems”, J. Micro/Nanolith. MEMS MOEMS 8, 031404 (2009).
S.-Y. Lu and R. A. Chipman, “Interpretation of Mueller matrices based on polar decomposition”, J. Opt. Soc. Am. A 13, 1106-1113 (1996).
Classes
Base class: a callable J(P_x, P_y) returning Jones matrices of shape np.broadcast(P_x, P_y).shape + (2, 2). |
|
J = sum_k a_k s_k with Zernike expansions of the Pauli coefficients. |
|
Retarder times diattenuator, J = U H (see the module documentation). |
|
The Jones pupil first @ second (second acts first). |
Functions
Jones matrices from retardance, diattenuation, transmission and phase. |
|
Polar decomposition J = sqrt(T)*exp(i*phase)*U H of Jones matrices (shape (..., 2, 2)) as in PhysicalJonesPupil. |
|
Least squares fit of orientation Zernikes to an orientator field. |
|
Least squares fit of Fringe Zernikes to pupil samples. |
|
Orientation Zernike polynomial OZ_+-j as the complex orientator field. |
|
Orientator field of an orientation Zernike expansion. |
|
OZ indices +-1 . |
|
Pauli coefficients a_k = tr(s_k J)/2 of Jones matrices J (shape (..., 2, 2)); returns shape (4, ...). |
|
Jones matrices sum_k a[k]*s_k for Pauli coefficients a of shape (4,) + shape; returns shape + (2, 2). |
|
Jones matrices divided by their scalar part sqrt(T)*exp(i*phase) (the polarization part that PhysicalJonesPupil describes). |
|
Sum of Fringe Zernikes with complex coefficients allowed. |
- pyoptics.litho.jones_pupil.pauli_matrix(a)[source]¶
Jones matrices sum_k a[k]*s_k for Pauli coefficients a of shape (4,) + shape; returns shape + (2, 2).
- pyoptics.litho.jones_pupil.pauli_coefficients(J)[source]¶
Pauli coefficients a_k = tr(s_k J)/2 of Jones matrices J (shape (…, 2, 2)); returns shape (4, …).
- pyoptics.litho.jones_pupil.zernike(j, x, y)¶
Fringe Zernike Z_j at the points (x, y) of the unit disk (no mask is applied, peak value 1 on the unit circle).
- Parameters:
- jint
Fringe index.
- x, yarrays or numbers
Coordinates normalized to the radius of the disk.
- Returns:
- Z_jarray
- pyoptics.litho.jones_pupil.zernike_sum(coefficients, P_x, P_y)[source]¶
Sum of Fringe Zernikes with complex coefficients allowed.
- Parameters:
- coefficientsdict
{j: c_j}.
- P_x, P_ynumbers or arrays
Normalized pupil coordinates.
- Returns:
- valcomplex array
sum_j c_j Z_j.
- pyoptics.litho.jones_pupil.orientation_zernike(oz, P_x, P_y)[source]¶
Orientation Zernike polynomial OZ_+-j as the complex orientator field.
- Parameters:
- ozint
Index +-1, +-2, … (see the module documentation).
- P_x, P_ynumbers or arrays
Normalized pupil coordinates.
- Returns:
- ocomplex array
o_1 + i*o_2.
- Raises:
- ValueError
For oz = 0.
- pyoptics.litho.jones_pupil.orientation_zernike_sum(coefficients, P_x, P_y)[source]¶
Orientator field of an orientation Zernike expansion.
- Parameters:
- coefficientsdict
{oz: c} with real coefficients.
- P_x, P_ynumbers or arrays
Normalized pupil coordinates.
- Returns:
- ocomplex array
sum_oz c_oz OZ_oz as o_1 + i*o_2.
- pyoptics.litho.jones_pupil.oz_indices(n_terms)[source]¶
OZ indices +-1 … +-n_terms in the order +1, -1, +2, -2, …
- pyoptics.litho.jones_pupil.fit_zernikes(P_x, P_y, values, n_terms=36, start=1)[source]¶
Least squares fit of Fringe Zernikes to pupil samples.
- Parameters:
- P_x, P_y1d arrays
Pupil points inside the unit circle.
- values1d array
Real or complex samples.
- n_termsint, optional
Highest Fringe index.
- startint, optional
Lowest Fringe index.
- Returns:
- coefficientsdict
{j: c}, complex for complex values.
- pyoptics.litho.jones_pupil.fit_orientation_zernikes(P_x, P_y, orientator, n_terms=36)[source]¶
Least squares fit of orientation Zernikes to an orientator field.
- Parameters:
- P_x, P_y1d arrays
Pupil points inside the unit circle.
- orientator1d complex array
o_1 + i*o_2 at the pupil points.
- n_termsint, optional
Highest Fringe index of the orientation Zernikes.
- Returns:
- coefficientsdict
{+-j: c} with real coefficients.
- class pyoptics.litho.jones_pupil.JonesPupil[source]¶
Bases:
objectBase class: a callable J(P_x, P_y) returning Jones matrices of shape np.broadcast(P_x, P_y).shape + (2, 2). Any callable with this signature can serve as Projector(jones_pupil=…).
- class pyoptics.litho.jones_pupil.ProductPupil(first, second)[source]¶
Bases:
JonesPupilThe Jones pupil first @ second (second acts first).
- class pyoptics.litho.jones_pupil.PauliZernikePupil(a0=None, a1=None, a2=None, a3=None)[source]¶
Bases:
JonesPupilJ = sum_k a_k s_k with Zernike expansions of the Pauli coefficients.
- Parameters:
- a0, a1, a2, a3dict {j: complex}, optional
Fringe Zernike coefficients of the Pauli coefficients; a0 defaults to {1: 1} (identity), the others to 0.
- class pyoptics.litho.jones_pupil.PhysicalJonesPupil(retardance=None, diattenuation=None, circular_retardance=None, circular_diattenuation=None)[source]¶
Bases:
JonesPupilRetarder times diattenuator, J = U H (see the module documentation).
- Parameters:
- retardancedict {+-j: c}, optional
OZP coefficients of the linear retardance orientator (waves).
- diattenuationdict {+-j: c}, optional
OZP coefficients of the linear diattenuation orientator ((T_max - T_min)/(T_max + T_min)).
- circular_retardancedict {j: c}, optional
Fringe Zernike coefficients of the circular retardance (waves; a rotation by pi*g_3).
- circular_diattenuationdict {j: c}, optional
Fringe Zernike coefficients of the circular diattenuation.
- fields(P_x, P_y)[source]¶
Retardance generator and diattenuation vector on pupil points.
- Parameters:
- P_x, P_ynumbers or arrays
Normalized pupil coordinates.
- Returns:
- garray
Retardance generator in waves, shape (3,) + np.shape(P_x).
- darray
Diattenuation vector, magnitude (T_max - T_min)/(T_max + T_min).
- classmethod fit(P_x, P_y, J, n_terms=36)[source]¶
Fit to Jones matrices sampled at pupil points.
The polar decomposition of each J, then OZP fits of the orientators and Zernike fits of the circular parts.
- Parameters:
- P_x, P_y1d arrays
Pupil points inside the unit circle.
- J(N, 2, 2) array
Jones matrices at the points.
- n_termsint, optional
Terms per fit.
- Returns:
- pupilPhysicalJonesPupil
- scalardict
The scalar part of the decomposition: {“phase”: Zernikes in waves, “transmission”: Zernikes of the mean intensity transmission}.
- pyoptics.litho.jones_pupil.compose(g, d, transmission=1.0, phase=0.0)[source]¶
Jones matrices from retardance, diattenuation, transmission and phase.
J = sqrt(T)*exp(i*phase)*U H.
- Parameters:
- garray
Retardance generator in waves, shape (3, …).
- darray
Diattenuation vector, shape (3, …), magnitudes below 1.
- transmissionnumber or array, optional
Mean intensity transmission T.
- phasenumber or array, optional
Phase in radians.
- Returns:
- Jarray
Shape (…) + (2, 2).
- Raises:
- ValueError
For a diattenuation of 1 or more.
- pyoptics.litho.jones_pupil.decompose(J)[source]¶
Polar decomposition J = sqrt(T)*exp(i*phase)*U H of Jones matrices (shape (…, 2, 2)) as in PhysicalJonesPupil.
- Returns:
- dict
“transmission” T (mean intensity transmission, (s_1**2 + s_2**2)/2 with the singular values s), “phase” (radians, of det(U)/2), “retardance” g (3, …) in waves (linear: g[0] + i*g[1] is the orientator, circular: g[2]), “diattenuation” d (3, …), and “U” (unitary, including exp(i*phase)) and “H” (normalized as in PhysicalJonesPupil), J = sqrt(T)*U H.