pyoptics.litho.plot¶
Plots for lithography simulations (needs matplotlib).
plot_source(): source points in the sigma plane with their polarization,
plot_mask(): mask transmission (one or more periods),
plot_pupil_fill(): diffraction orders of the mask in the pupil for the whole source (the classic “pupil fill” diagram),
plot_image(): 1D cut with the mask and the threshold, or 2D image with feature outlines and the printed contour,
plot_bossung(): CD vs. focus for several doses,
plot_process_window(): focus-dose plane with the CD spec contours and exposure latitude vs. depth of focus,
plot_orientation(): orientation fields on the pupil (retardance, diattenuation, orientation Zernikes of a Jones pupil).
Functions
Plot Bossung curves: CD vs. focus, one curve per dose. |
|
Plot a 1D or 2D image. |
|
Plot the transmission amplitude of a layout. |
|
Orientation field on the pupil, such as a retardance or diattenuation (see jones_pupil): color = magnitude, ticks along the orientation psi ( |
|
Plot the process window and exposure latitude vs. depth of focus. |
|
Plot the diffraction orders in the pupil for all source points. |
|
Plot source points (marker area ~ weight) and polarization ticks. |
- pyoptics.litho.plot.plot_source(illumination, ax=None, show_polarization=True, every=1, color='C0', title=None)[source]¶
Plot source points (marker area ~ weight) and polarization ticks.
Polarization ticks show the Jones vector of the dominant state of each point (real part of the components); unpolarized points get none.
- Parameters:
- illuminationIllumination
- axmatplotlib axis, optional
- show_polarizationbool, optional
- everyint, optional
Draw a tick for every n-th point only.
- colorcolor, optional
- titlestr, optional
Default: the name of the source.
- Returns:
- axmatplotlib axis
- pyoptics.litho.plot.plot_mask(layout, ax=None, periods=2, N=400, t_absorber=0.0, cmap='gray', title=None)[source]¶
Plot the transmission amplitude of a layout.
- Parameters:
- layoutMaskLayout
- axmatplotlib axis, optional
- periodsnumber, optional
Periods shown in each direction.
- Nint, optional
Samples per direction.
- t_absorbercomplex, optional
Transmission of the absorber.
- cmapstr, optional
- titlestr, optional
- Returns:
- axmatplotlib axis
- pyoptics.litho.plot.plot_pupil_fill(sim, ax=None, max_points=2000, title=None)[source]¶
Plot the diffraction orders in the pupil for all source points.
Orders that pass the pupil are shown in normalized pupil coordinates, colored by order, with marker area ~
|c|**2*sourceweight.- Parameters:
- simLithoSimulation
- axmatplotlib axis, optional
- max_pointsint, optional
Largest number of source points shown (thinned out above).
- titlestr, optional
- Returns:
- axmatplotlib axis
- pyoptics.litho.plot.plot_image(sim, x, I, y=None, ax=None, threshold=None, dose=1.0, show_mask=True, label=None, cmap='inferno', colorbar=True, **kwargs)[source]¶
Plot a 1D or 2D image.
A 1D image gets shaded features and the threshold, a 2D image the feature outlines and the printed contour at threshold/dose.
- Parameters:
- simLithoSimulation
For the layout.
- xarray
x coordinates.
- Iarray
Intensity, 1D (cut) or 2D.
- yarray, optional
y coordinates of a 2D image.
- axmatplotlib axis, optional
- thresholdnumber, optional
Printing threshold.
- dosenumber, optional
Relative dose.
- show_maskbool, optional
- labelstr, optional
- cmapstr, optional
- colorbarbool, optional
- **kwargs
Passed to plot() (1D) or imshow() (2D).
- Returns:
- artistmatplotlib Line2D or AxesImage
- pyoptics.litho.plot.plot_bossung(foci, doses, cd, ax=None, cd_target=None, tolerance=0.1, cmap='viridis', every=1, colorbar=True)[source]¶
Plot Bossung curves: CD vs. focus, one curve per dose.
- Parameters:
- foci, dosesarrays
Axes of the focus-exposure matrix.
- cdarray
Shape (len(doses), len(foci)).
- axmatplotlib axis, optional
- cd_targetnumber, optional
Target CD, drawn with its tolerance band.
- tolerancenumber, optional
Relative CD tolerance.
- cmapstr, optional
Color map for the doses.
- everyint, optional
Plot every n-th dose only.
- colorbarbool, optional
- Returns:
- axmatplotlib axis
- pyoptics.litho.plot.plot_process_window(foci, doses, cd, cd_target, tolerance=0.1, axes=None, el_min=None, color='C0', label=None)[source]¶
Plot the process window and exposure latitude vs. depth of focus.
The left axis shows the CD spec contours and the in-spec doses in the focus-dose plane, the right one EL vs. DOF.
- Parameters:
- foci, dosesarrays
Axes of the focus-exposure matrix.
- cdarray
Shape (len(doses), len(foci)).
- cd_targetnumber
Target CD.
- tolerancenumber, optional
Relative CD tolerance.
- axespair of matplotlib axes, optional
- el_minnumber, optional
Exposure latitude to mark.
- colorcolor, optional
- labelstr, optional
- Returns:
- dof, elarrays
See
metrics.el_dof().
- pyoptics.litho.plot.plot_orientation(orientator, ax=None, N=41, n_ticks=13, scale=None, cmap='viridis', title=None, colorbar=True, label=None)[source]¶
Orientation field on the pupil, such as a retardance or diattenuation (see jones_pupil): color = magnitude, ticks along the orientation psi (
o = |o|*exp(2*i*psi)) with lengths ~ magnitude.- Parameters:
- orientatorcallable or tuple
orientator(P_x, P_y) returning o_1 + i*o_2, e.g. lambda P_x, P_y: jp.orientation_zernike(5, P_x, P_y); or samples (P_x, P_y, o) on scattered pupil points.
- N, n_ticksint, optional
Grid for the color map and the number of ticks across the pupil.
- scalenumber, optional
Magnitude of a full length tick; default: the maximum.