Specific Process Knowledge/Lithography/EBeamLithography/JEOL 9500 User Guide: Difference between revisions
Appearance
| Line 141: | Line 141: | ||
*Press '''Carry in''' | *Press '''Carry in''' | ||
*The system will be ready after about 15 min | *The system will be ready after about 15 min | ||
<br> | |||
=System calibration= | |||
After cassette transfer the system has to be calibrated with the chosen beam current profile. This is done in a mostly automated sequence with only minute input from the user. The sequence is explained in detail in the following but in overview it is | |||
*Select and restore the system to the chosen beam current profile | |||
*System self check | |||
**Execute a current measurement | |||
**Execute absorbed electron mark detection | |||
**Execute backscatter electron mark detection | |||
*Execute self calibration routine '''daily''' | |||
*Verify drift is low | |||
*Map height profile of sample | |||
*Save data into calibration profile | |||
*Execute pattern writing | |||
==Select and restore the system to the chosen beam current profile== | |||
The SDF specifies which system condition file to use for the exposure, this determines the beam current. In this tutorial the chosen condition file is '''6nA_ap5'''. Thus we restore the system and cloumn to this condition file. This is done from the '''Calibration''' window, if it is not open it can be opened from the '''EBX Menu'''. | |||
*Select the '''RESTOR''' subprogram in the '''Calibration''' window | |||
*Click '''Select condition file...''' | |||
*Browse and select the 6nA_ap5 condition and click '''OK''' | |||
*Click '''Edit parameter...''' | |||
*Click '''Execute''' in the '''RESTOR''' window | |||
The bottom line of the '''Calibration''' window will now display ''Received an intermediate result RESTOR(DEMAG)'' to indicate it is working. Setting up for the new condition file takes about 1 minute and the bottom line will say ''Finished subprogram RESTOR'' when done. | |||
{| style="border: none; border-spacing: 0; margin: 1em auto; text-align: center;" | |||
|- | |||
| [[image:9500calib1.png|600px]] || [[image:9500restor1.png|400px]] | |||
|- | |||
| colspan="2" style="text-align:center;| | |||
'''Calibration''' and '''RESTOR''' windows. Image: Thomas Pedersen. | |||
|} | |||
==System self check== | |||
With the correct condition file restored the next step is to measure beam current and verify that it is close to the expected value (within 5%). | |||
*Select the '''Current''' subprogram and click '''Execute''' in the '''Calibration''' window | |||
The stage moves to the faraday cup to measure beam current. This takes 15 seconds and the '''Calibration''' window will display the measured beam current. Note this down for the Labmanager usage log. If the value is more than 5% of the expected beam current call the e-beam responsible for assistance. | |||
{| style="border: none; border-spacing: 0; margin: 1em auto; text-align: center;" | |||
|- | |||
| [[image:9500current1.png|600px]] | |||
|- | |||
| colspan="1" style="text-align:center;| | |||
Result display of current measurement. Image: Thomas Pedersen. | |||
|} | |||
The next self check is to see if the machine can find the Absorbed Electron (AE) mark and the Backscatter Electron (BE) mark. The procedure is | |||
*Select the '''INITAE''' subprogram and click '''Execute''' | |||
*Verify that the graph in the SSP window shows the characteristic step function centered at 0 on the x-axis | |||
*Select the '''INITBE''' subprogram and click '''Execute''' | |||
*Verify that the graph in the SSP window shows the characteristic step function centered at 0 on the x-axis | |||
{| style="border: none; border-spacing: 0; margin: 1em auto; text-align: center;" | |||
|- | |||
| [[image:JEOLSSP1.jpg|400px]] || [[image:JEOLSSP2.jpg|400px]] | |||
|- | |||
| colspan="2" style="text-align:center;| | |||
Correct result of '''INITAE''' (left) and '''INITBE''' (right). Image: Thomas Pedersen. | |||
|} | |||
Correct execution will look like above. '''INITAE''' uses the beam to scan a PN-junction which the system uses to determine beam position and shape. '''INITBE''' uses the beam to scan a gold marker on the stage which the system uses for position and distortion correction of the beam placement within the writing field. The top row shows the signal, the following rows shows the 1st and 2nd derivative, respectively. | |||
== Auto calibration == | |||
The system can auto calibrate itself using the AE and BE stage marks. The system will automatically measure beam position at various locations of the writing field to determine position errors. A correction matrix will be applied and the beam position will be remeasured to validate the result. The sequence takes about 8 minutes to execute. This should be done every time beam current is changed, i.e. a new condition file is restored. The procedure is | |||
*From the '''Calibration''' window choose '''Commands''' at the top of the window and click '''Batch''' | |||
*From the '''BATCH parameter''' window click '''Condition file...''' | |||
*Browse for the '''daily''' file and click '''OK''' | |||
*Click '''Execute''' | |||
{| style="border: none; border-spacing: 0; margin: 1em auto; text-align: center;" | |||
|- | |||
| [[image:9500dayli1.png|600px]] | |||
|- | |||
| colspan="1" style="text-align:center;| | |||
Load the '''daily''' batch command and execute it. Image: Thomas Pedersen. | |||
|} | |||
During calibration the system will measure and display the beam position at 49 location of the writing field. The position error (in nm) can be read of the matrices during execution, an example is shown below. At the end of the process the '''Calibration''' window will display '''Finished BATCH CALIB'''. | |||
{| style="border: none; border-spacing: 0; margin: 1em auto; text-align: center;" | |||
|- | |||
| [[image:9500dist1.png|600px]] | |||
|- | |||
| colspan="1" style="text-align:center;| | |||
Example of beam offset matrix shown during auto calibration. Average beam offset is below 1 nm within the 1000 x 1000 µm<sup>2</sup> writing field in this example. Image: Thomas Pedersen. | |||
|} | |||
==Measure stage drift== | |||
The next step is to measure stage drift. This is done from the '''Calibration''' window. | |||
*Select the '''Drift''' subprogram and click '''Execute''' | |||
The system will scan the drift mark (BE mark) to determine drift since last drift reset. The absolute value is not important since it is unknown when the drift subprogram was last reset. The time variation of the drift measurements is however important thus one should compare two drift measurements taken 1-2 minutes apart. Luckily the '''dayli''' batch command ended with a drift measurement, having made one manually we can now compare the result, see the example below. | |||
{| style="border: none; border-spacing: 0; margin: 1em auto; text-align: center;" | |||
|- | |||
| [[image:9500drift1.png|600px]] | |||
|- | |||
| colspan="1" style="text-align:center;| | |||
Comparison of two drift measurements. Image: Thomas Pedersen. | |||
|} | |||
In this example the two drift measurements are made a bit more than 1 minute apart (look at timestamps). The x-axis drift has changed from 65.4 nm to 64.2 nm, i.e. a change of 1.2 nm in about 1 minute. The y-axis drift has changed from 85.3 nm to 86.8 nm, a shift of 1.5 nm in about 1 minute. Thus the drift is about 1-1.5 nm/min in this particular example. This is a typical value. If you experience drift of 5-10 nm/min, give the system 10 min to thermally equilibrate and try again. If drift is above 10 nm/min please call the e-beam personnel. | |||
==Measure height profile of sample== | |||
The height of the sample surface must be known to focus the electron beam properly at the surface. This can be done using the '''HEIMAP''' subprogram. | |||
*Select on the '''HEIMAP''' subprogram in the '''Calibration''' window | |||
*Click '''Edit Parameter...''' | |||
*This opens the '''HEIMAP''' parameters window, make sure to edit the following parameters | |||
**Check '''Wafer''' and not '''Mask''' | |||
**Choose correct '''Material size''' in the dropdown | |||
**Choose the correct slot ID in '''Multi-piece window''' | |||
**Set a reasonable number in x and y '''Number of height measurement points''' | |||
**Set a reasonable x- and y-axis pitch in the '''Height data measurement pitch''' fields | |||
**Set '''Offset''' fields to zero | |||
*Click '''Save''' in order to save the setup for execution during exposure | |||
*Click '''Execute''' to execute and verify result | |||
{| style="border: none; border-spacing: 0; margin: 1em auto; text-align: center;" | |||
|- | |||
| [[image:9500heimap1.png|500px]] | |||
|- | |||
| colspan="1" style="text-align:center;| | |||
Parameters of the '''HEIMAP''' subprogram used for the tutorial exposure. Image: Thomas Pedersen. | |||
|} | |||
The pattern used in this example is very small and centred around (0,0). The example above will create a 3x3 matrix of height data with a pitch of 1 mm in x and y. After execution the system will display a matrix with height measurement data in µm. Verify that there are no outliers and that variation is less than 100 µm. | |||
==Save condition file== | |||
For the calibration data to have effect during exposure the data must be saved into the calibration profile. This is done via the '''SAVE''' subprogram from the '''Calibration''' window. | |||
*Select the '''SAVE''' subprogram | |||
*Click '''Edit Parameter...''' | |||
*From the '''SAVE''' window click '''Acquisition of latest status''' | |||
*Wait 5 seconds for the window to populate with data | |||
*Click '''Apply''' and '''Save''' | |||
{| style="border: none; border-spacing: 0; margin: 1em auto; text-align: center;" | |||
|- | |||
| [[image:9500save1.png|500px]] | |||
|- | |||
| colspan="1" style="text-align:center;| | |||
Acquire the calibration data and then apply the data to save. Image: Thomas Pedersen. | |||
|} | |||
All of the calibration data is now saved and the system is ready for exposure. | |||
==Job execution== | |||
The job and the system is now ready to execute the exposure. | |||
*Open the '''Expose''' program from the '''EBX Menu''' | |||
*In the '''Expose''' program click '''File''' and '''Magazine File...''' | |||
*Browse for and select the correct file and click '''OK''' | |||
*The '''Expose''' window is now updated with the file loaded into the '''Magazine filename:''' field | |||
*Click '''Execute''' | |||
*This opens the '''Pattern writing execution check''' window where one can check that the cassette number execution time is as expected before hitting '''Yes''' | |||
{| style="border: none; border-spacing: 0; margin: 1em auto; text-align: center;" | |||
|- | |||
| [[image:9500exposure1.png|500px]] | |||
|- | |||
| colspan="1" style="text-align:center;| | |||
'''Expose''' window with .mgn file loaded for exposure. Notice that the '''Progress''' part of the window still shows the previous exposure information. This field will not update until exposure is started. Image: Thomas Pedersen. | |||
|} | |||
{| style="border: none; border-spacing: 0; margin: 1em auto; text-align: center;" | |||
|- | |||
| [[image:9500expose2.png|400px]] | |||
|- | |||
| colspan="1" style="text-align:center;| | |||
Use the '''Pattern writing execution check''' window to verify the cassette number and estimated execution time. Image: Thomas Pedersen. | |||
|} | |||
The system will now carry out initial and cyclic calibration as defined by the path in the JDF file and then exposure will start. The pattern writing can be observed in the SSP window (top left) once it starts. Progress can be monitored in the '''Expose''' window which will give a percentage completion and completion time for the current sequence. Once exposure is completed the system will confirm this with the '''Pattern writing completed''' window. | |||