In this example, we study a binary phase grating mask suitable for MOEMS (Micro-Opto-Electro-Mechanical Systems) processing, or any lithographic process where an analog intensity profile is required on the wafer. This example is based on the paper by Sung et al., "Refractive micro-optics fabrication with a 1-D binary phase grating mask applicable to MOEMS processing".
The concept for this mask is to use a periodic pattern where the period has been chosen to be sufficiently small that only the 0th order is captured in the imaging system. Instead of controlling the intensity at the object plane, we simply have to control the transmission to the 0th order. This gives a great deal more flexibility since the 0th order transmission can be modified between about 0% and 100% by changing the duty cycle of the grating. By modifying the duty cycle in a continuous manner across the surface of the mask, we can therefore create an analog variation in the transmission to the 0th order. Since the 0th order is the only order that will be imaged, we can create an analog intensity pattern at the image plane, on the wafer.
By modifying the duty cycle across the grating, we break the periodicity of the grating. However, if the modification of the period is sufficiently slow, the grating remains locally periodic. The validity of this approximation can be tested by performing full 2D and 3D FDTD simulations to compare the image at the wafer.
Mask design
The file binary_phase_mask_duty_cycle_sweep.fsp contains a grating structure design for a 436nm stepper with 420nm thick PMMA (n=1.52) on sapphire. The structure is parameterized in an analysis group called "structure" which makes it easy to change the period and duty cycle. For this design, the period is set to be 3 microns which is below the cutoff period of the stepper, meaning that only the 0th diffracted order will be imaged.
There is an analysis group called "0th" order which calculates the 0th order efficiency and, more importantly, the normalized transmission to the 0th order. This is important because the total transmission of the grating can change for different duty cycles so the normalized transmission to the 0th order measures the actual power in the 0th order for different duty cycles.
There is parameter sweep object called "polarization". It contains a child parameter sweep element called "duty_cycle". This object will sweep both duty cycle and polarization to calculate the normalized transmission to the 0th order and the 0th order efficiency as a function of both duty cycle and polarization. The polarization is either 0 degrees or 90 degrees which allows us to calculate all results for unpolarized light.
After running the sweep, the transmission to the 0th order, T0, can be visualized by right clicking on the parameter sweep object. To see both polarizations on the same curve, as well as the unpolarized results, the following lines of script can be pasted into the script prompt.
T0 = getsweepresult("polarization","T0"); T0_0 = pinch(T0.T0,2,1); T0_90 = pinch(T0.T0,2,2); T0_unpolarized = (T0_0+T0_90)/2; plot(T0.duty_cycle,T0_0,T0_90,T0_unpolarized,"duty cycle","T0"); legend("polarization 0","polarization 90","unpolarized");
which will create the following figure of the normalized transmission to the 0th order (rather than the 0th order efficiency). This figure is very similar to the figure 4 of Sung et al. but there are some differences because it is based on a fully vectorial calculation. In particular, it shows some polarization dependent effects. Overall, these effects are quite small but could be expected to be much more significant if a metal mask were used.
To compare with the publication, we want to design a mask with a target intensity pattern that is similar to the pattern shown in figure 5. For this, we set the target intensity to be I(x) = x^2/L^2, where L=45 microns. To create the mask, we sample x every period (3 microns). To achieve the target intensity, we can use a duty cycle that is either larger or smaller than 0.5, and here we choose to use a duty cycle smaller than 0.5. For each value of the target intensity, we need to look up the duty cycle that yields that target intensity. The script file binary_phase_mask_design.lsf will do this. It first loads the fsp file binary_phase_mask_duty_cycle_sweep.fsp to extract the unpolarized 0th order transmission as a function of duty cycle. It then calculates the duty cycle as a function of x (sampled at every period) required to meet the target intensity pattern. It saves this result to a matlab file target_profile.mat.
Verification of the design
We can first verify the design in 2D. The fsp file binary_phase_mask_design_verification_2D.fsp contains the target design. If changes are desired, the script file construct_2d_verification_mask.lsf will load the target profile from target_profile.mat and recreate the design. If we run the simulation (which takes a few seconds) we can look at the far field projection of the monitor analysis::field. We can clearly see the diffracted orders, and this would help ensure that we have correctly chosen the period to prevent capturing of anything but the 0th order in the imaging system.
The parameter sweep object called "polarization" will sweep both polarizations and calculate the unpolarized image intensity. After running it, we can visualize the result in the visualizer. This is using a magnification factor of 4, an NA of 0.4, and a defocus (specified in global coordinates) of 0.5 microns. It is important to note that the NA is applied after magnification because it comes from the pupil aperture inside the stepper. To compare with the target intensity, we use the following lines of script
E2_image = getsweepresult("polarization","image_intensity_unpolarized"); matlabload("target_profile"); plotxy(E2_image.x*1e6,E2_image.E2/max(E2_image.E2),x_mask*1e6/4,Itarget,"x (microns)","Image intensity (a.u.)"); legend("simulated","target");
which creates the following plot
and we can see that our image profile is very close to the target intensity profile.
Finally, we can create a design similar to the 3D design shown in the paper. If we open the fsp file called binary_phase_mask_design_verification_3D.fsp and run the script file construct_3d_verification_mask.lsf it will construct the figure shown below. This simulation region is 91x91x0.6 microns3 so we use symmetric and antisymmetric boundaries to reduce the simulation time and memory. In addition, we use a mesh override to increase the size of dx and dy which is acceptable since the light is propagating primarily along the z axis. The total memory required for the simulation is then 6GB to mesh and about 3GB to run. It runs in about 15 minutes on a good workstation. Only one simulation is required to fully characterize the polarization dependence because of the cylindrical symmetry of the structure.
After running the simulation, we can run the analysis script (which can take a few seconds due to the 3D near to far field calculations required) and visualize the image intensity with the visualizer. The result for a magnification of 4, an NA of 0.4, and a defocus (specified in global coordinates) of 0.5 microns can be immediately visualized from the "analysis" analysis group.
To construct the unpolarized result, consider polarization effects and compare with the target intensity profile we can use the following lines of script:
E2_image = getresult("analysis","image_intensity"); x = E2_image.x; y = E2_image.y; E2_0 = pinch(E2_image.E2); E2_0 = E2_0/max(E2_0); E2_90 = transpose(E2_0); E2_unpolarized = (E2_0+E2_90)/2; image(x*1e6,y*1e6,E2_unpolarized,"x (microns)","y (microns)","image intensity"); p0 = find(y,0); nx = length(x); plot(x*1e6,E2_unpolarized(1:nx,p0),E2_0(1:nx,p0),E2_90(1:nx,p0),"x (microns)","image intensity (a.u.)"); legend("unpolarized","0 degrees","90 degrees"); matlabload("target_pprofile"); plotxy(x*1e6,E2_unpolarized(1:nx,p0),x_mask*1e6/4,Itarget,"x (microns)","image intensity (a.u.)"); legend("unpolarized","target");
which will create the following 3 figures
We can actually get closer to target by reducing the NA of the stepper. This reduces the amount of light collected at angles other than 0 degrees which occurs because the structure is not truly periodic. We can repeat the analysis with a different NA and defocus without having to repeat the FDTD simulation. For example, with an NA of 0.3 instead of 0.4 we find much smoother results that are closer to the target intensity profile.
Related publications
- Sung J, Hockel H, Brown J, Johnson EG, "Refractive micro-optics fabrication with a 1-D binary phase grating mask applicable to MOEMS processing", J. Micro/Nanolith. MEMS MOEMS. 0001;4(4):041603-041603-7