Specific Process Knowledge/Lithography/EBeamLithography/Dose Testing: Difference between revisions
Appearance
No edit summary |
|||
| (22 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
'''Feedback to this page''': '''[mailto:labadviser@nanolab.dtu.dk?Subject=Feed%20back%20from%20page%20http://labadviser.nanolab.dtu.dk/index.php/Specific_Process_Knowledge/Lithography/EBeamLithography/Dose Testing click here]''' | |||
Content and illustration by Thomas Pedersen, DTU Nanolab unless otherwise noted. | |||
=Introduction= | =Introduction= | ||
In E-beam lithography it is often necesarry to do a dose test in order to get the required result. In a dose test one will expose critical parts of a pattern with various doses and determine the best dose by SEM analysis of the final pattern. There are several ways to set up a dose test array on the JEOL system, in this section we will describe four different setups, each with their own benefits and drawbacks. | In E-beam lithography it is often necesarry to do a dose test in order to get the required result. In a dose test one will expose critical parts of a pattern with various doses and determine the best dose by SEM analysis of the final pattern. There are several ways to set up a dose test array on the JEOL system, in this section we will describe four different setups, each with their own benefits and drawbacks. | ||
| Line 130: | Line 134: | ||
|} | |} | ||
=Using | =Using ChipPlace in Beamer - recommended for most cases= | ||
ChipPlace is part of Beamer and offers a graphical user interface to layout exposure jobs. In ChipPlace one can create arrays of pattern elements and assign doses to each pattern element. The output is a single design file and a single modulation table. The design file will contain all pattern elements and can be exported to V30. The modulation table is exported as JDI and will contain any PEC modulation applied to the design as well as modulation from the chosen dose range. Please refer to [https://labadviser.nanolab.dtu.dk/index.php?title=Specific%20Process%20Knowledge/Lithography/EBeamLithography/BEAMER#ChipPlace the Beamer page for a guide on how to set this up.] This method supports PEC modulation and is recommendable for most users. | |||
Benefits: | |||
*Collects all pattern elements in a single V30 and a single JDI | |||
*Supports PEC modulation | |||
*Can easily generate dose labels written next to the array elements such that the user does not have to remember how the matrix is set up | |||
Drawbacks | |||
*A bit more time consuming to set up | |||
*Can generate very large V30 files since the design is repeated once per dose. For small designs this is no problem, for large (1 GB) designs this becomes a problem. | |||
{| style="border: none; border-spacing: 0; margin: 1em auto; text-align: center;" | |||
|- | |||
| [[image:BEAMER_5.png|800px]] | |||
|- | |||
| colspan="1" style="text-align: center;| | |||
Example frome ChipPlace definine a 10 x 2 element dose matrix with relative doses from 1 to 2, ready for export to V30. | |||
|} | |||
=Scripted expansion of a PEC modulation table= | =Scripted expansion of a PEC modulation table= | ||
The last method is basically the same as the second method above but with support for PEC modulation. This is achieved by expanding the dose modulation table into a set of tables, one for each dose of the dose test. Each modulation table is a scaled version of the initial modulation table, scaled simply by the dose test scaling between each dose. The scaling is done through a Matlab script which can be found below. Since Labadviser does not allow upload of .m files, simply copy the script from below and save as a .m file. | |||
Benefits: | |||
*Supports PEC modulation | |||
*Faster execution since it is a single SDF sequence | |||
*Works with large V30 files | |||
Drawbacks: | |||
*A bit tricky for first time use | |||
{| class = "collapsible" width=65% style = "border-radius: 10px; border: 1px solid #CE002D;" | |||
! width=100% | Matlab script for modulation table expansion | |||
|- | |||
| | |||
<pre> | |||
clearvars | |||
%Modulation table modding for dose test of PEC'ed V30's, see Labadviser for further information | |||
%https://labadviser.nanolab.dtu.dk/index.php?title=Specific_Process_Knowledge/Lithography/EBeamLithography/Dose_Testing | |||
%THOPE 2023-11-13 | |||
%Input variables for modulation table | |||
inputJDI = 'C:\Users\thope\Desktop\thope231113\withcross.jdi'; | |||
outputJDI = 'C:\Users\thope\Desktop\thope231113\thope231113.jdi'; | |||
m = 9; %number of doses | |||
modulation = 5; %modulation between instances in percent, must be positive | |||
%shot time calculation | |||
Base = 220; %Base dose, only for indication, not used for modulation | |||
I = 2e-9; %beam current | |||
pitch = 12; %steps of 0.25 nm | |||
dp = pitch*0.25*1e-9; %beam step in m | |||
%Base dose calculation | |||
Doses = (0:1:m-1); | |||
Doses = (Doses*modulation/100+1)*Base; | |||
%Read file | |||
fileID=fopen(inputJDI,'r'); | |||
A = fscanf(fileID,'%c'); | |||
fclose(fileID); | |||
%Find start of modulation table by searching for '(' | |||
k1 = strfind(A, '('); | |||
k1 = k1(2:end-1); | |||
%Find end of modulation table by searching for ')' | |||
k2 = strfind(A, ')'); | |||
k2 = k2(1:end-2); | |||
n = numel(k1); | |||
%Display input table | |||
disp('Input table:') | |||
disp(A(1:k2(end)+1)) | |||
%Define zero matrix | |||
class = zeros(n,1); | |||
D = zeros(m,n); | |||
%Read base modulation | |||
for i = 1:n | |||
[class(i),D(1,i)] = readMOD(A,k1(i),k2(i)); | |||
end | |||
%Calculate tables | |||
D(1,:) = 1 + D(1,:)./100 ; %convert from MOD to percent | |||
for i = 2:m | |||
D(i,:) = D(1,:)*(1+modulation*(i-1)/100); | |||
end | |||
D = round(D,3); %round to 1 decimal | |||
for i = 1:m | |||
D(i,:) = 100*(D(i,:)-1); %convert to MOD from percent | |||
end | |||
%Write modulated tables to file | |||
fileID = fopen(outputJDI,'w'); | |||
for i = 1:m | |||
fprintf(fileID,['MOD' num2str(i) ': MODULAT (']); | |||
for k = 1:size(D,2) | |||
if k==1 | |||
fprintf(fileID,['( ' num2str(k-1) ', ' num2str(D(i,k)) ' )']); | |||
else | |||
if mod(k,3) | |||
fprintf(fileID,[' , ( ' num2str(k-1) ', ' num2str(D(i,k)) ' )']); | |||
else | |||
fprintf(fileID,[' , ( ' num2str(k-1) ', ' num2str(D(i,k)) ' )']); | |||
fprintf(fileID,['\n' '- ']); | |||
end | |||
end | |||
end | |||
fprintf(fileID,')'); | |||
fprintf(fileID,['\n\n']); | |||
end | |||
fclose(fileID); | |||
%Modulation table range | |||
range = zeros(m,2); | |||
for i = 1:m | |||
range(i,1) = D(i,1); %minimum dose | |||
range(i,2) = D(i,end); %maximum dose | |||
end | |||
range = (range/100+1)*Base; | |||
%Frequency range | |||
F = zeros(m,2); | |||
for i = 1:m | |||
F(i,1) = I./(range(i,1)*dp^2); %minimum dose | |||
F(i,2) = I./(range(i,2)*dp^2); %maximum dose | |||
end | |||
F = F/1e4; | |||
%Display output | |||
disp(newline) | |||
disp('Modulation table | Base dose [µC/cm2] | Modulation range [µC/cm2] | Frequency range [MHz]') | |||
for i = 1:m | |||
disp(['MOD' num2str(i) ' | ' num2str(Doses(i)) ' | ' num2str(range(i,1),'%.0f')... | |||
' - ' num2str(range(i,2),'%.0f') ' | ' num2str(F(i,1),'%.0f') ' - ' num2str(F(i,2),'%.0f')]) | |||
end | |||
function [a,b] = readMOD(str,k1,k2) | |||
str = str(k1:k2); | |||
x = regexp(str,','); | |||
a = str2double(str(2:x-1)); | |||
b = str2double(str(x+1:end-1)); | |||
end | |||
</pre> | |||
|- | |||
|} | |||
<br clear="all"> | |||
The number of doses for dose testing is controlled by the parameter '''m''' while the increase in dose between doses is defined by '''modulation''', it is a percentwise change relative to the base dose. For instance, if one wants to do a dose test with 200 µC/cm<sup>2</sup> as base dose in steps of 10 µC/cm<sup>2</sup> one would set '''modulation = 5'''. | |||
The output is a single JDI file containing all modulation tables named '''MODx''', where x is a running number from 1 to '''m'''. The array and reference to each modulation table can then be set up in the JDF file as seen below. It is convenient to use the include command '''@''' to reference the JDI file itself rather than copy-paste the tables into the JDF. | |||
{| class = "collapsible" width=65% style = "border-radius: 10px; border: 1px solid #CE002D;" | |||
! width=100% | Example JDF with a dose test setup defined by the '''ARRAY''' command and reference to individual modulation tables. | |||
|- | |||
| | |||
<pre> | |||
JOB/W 'THOPE',4 | |||
PATH DRF5M | |||
ARRAY (-4000,5,2000)/(0,1,0) | |||
ASSIGN P(1) -> ((1,1),MOD1) | |||
ASSIGN P(1) -> ((2,1),MOD2) | |||
ASSIGN P(1) -> ((3,1),MOD3) | |||
ASSIGN P(1) -> ((4,1),MOD4) | |||
ASSIGN P(1) -> ((5,1),MOD5) | |||
AEND | |||
PEND | |||
LAYER 1 | |||
P(1) 'mypattern.v30' | |||
SPPRM 4.0,,,,1.0,1 | |||
STDCUR 2.0 ;nA | |||
@'thopeExpanded.jdi' | |||
END | |||
</pre> | |||
|- | |||
|} | |||
{| class = "collapsible" width=65% style = "border-radius: 10px; border: 1px solid #CE002D;" | |||
! width=100% | Example JDI file as output by the Matlab script. | |||
|- | |||
| | |||
<pre> | |||
MOD1: MODULAT (( 0, -23.6 ) , ( 1, -22.8 ) , ( 2, -22 ) | |||
- , ( 3, -21.2 ) , ( 4, -20.5 ) , ( 5, -19.7 ) | |||
- , ( 6, -18.9 ) , ( 7, -18 ) , ( 8, -17.2 ) | |||
- , ( 9, -16.4 ) , ( 10, -15.6 ) , ( 11, -14.7 ) | |||
- , ( 12, -13.9 ) , ( 13, -13 ) , ( 14, -12.1 ) | |||
- , ( 15, -11.3 ) , ( 16, -10.4 ) , ( 17, -9.5 ) | |||
- , ( 18, -8.6 ) , ( 19, -7.7 ) , ( 20, -6.7 ) | |||
- , ( 21, -5.8 ) , ( 22, -4.8 ) , ( 23, -3.9 ) | |||
- , ( 24, -2.9 ) , ( 25, -2 ) , ( 26, -1 ) | |||
- , ( 27, 0 ) , ( 28, 1 ) , ( 29, 2 ) | |||
- , ( 30, 3 ) , ( 31, 4.1 ) , ( 32, 5.1 ) | |||
- , ( 33, 6.2 ) , ( 34, 7.2 ) , ( 35, 8.3 ) | |||
- , ( 36, 9.4 ) , ( 37, 10.5 ) , ( 38, 11.6 ) | |||
- , ( 39, 12.7 ) , ( 40, 13.8 ) , ( 41, 14.9 ) | |||
- , ( 42, 16.1 ) , ( 43, 17.3 ) , ( 44, 18.4 ) | |||
- , ( 45, 19.6 ) , ( 46, 20.8 ) , ( 47, 22 ) | |||
- , ( 48, 23.2 ) , ( 49, 24.5 ) , ( 50, 25.7 ) | |||
- , ( 51, 27 ) , ( 52, 28.2 ) , ( 53, 29.5 ) | |||
- , ( 54, 30.8 ) , ( 55, 32.1 ) , ( 56, 33.5 ) | |||
- , ( 57, 34.8 ) , ( 58, 36.1 ) , ( 59, 37.5 ) | |||
- , ( 60, 38.9 ) , ( 61, 40.3 ) , ( 62, 41.7 ) | |||
- , ( 63, 43.1 ) , ( 64, 44.5 ) , ( 65, 46 ) | |||
- , ( 66, 47.4 ) , ( 67, 48.9 ) , ( 68, 50.4 ) | |||
- ) | |||
MOD2: MODULAT (( 0, -16 ) , ( 1, -15.1 ) , ( 2, -14.2 ) | |||
- , ( 3, -13.3 ) , ( 4, -12.5 ) , ( 5, -11.7 ) | |||
- , ( 6, -10.8 ) , ( 7, -9.8 ) , ( 8, -8.9 ) | |||
- , ( 9, -8 ) , ( 10, -7.2 ) , ( 11, -6.2 ) | |||
- , ( 12, -5.3 ) , ( 13, -4.3 ) , ( 14, -3.3 ) | |||
- , ( 15, -2.4 ) , ( 16, -1.4 ) , ( 17, -0.4 ) | |||
- , ( 18, 0.5 ) , ( 19, 1.5 ) , ( 20, 2.6 ) | |||
- , ( 21, 3.6 ) , ( 22, 4.7 ) , ( 23, 5.7 ) | |||
- , ( 24, 6.8 ) , ( 25, 7.8 ) , ( 26, 8.9 ) | |||
- , ( 27, 10 ) , ( 28, 11.1 ) , ( 29, 12.2 ) | |||
- , ( 30, 13.3 ) , ( 31, 14.5 ) , ( 32, 15.6 ) | |||
- , ( 33, 16.8 ) , ( 34, 17.9 ) , ( 35, 19.1 ) | |||
- , ( 36, 20.3 ) , ( 37, 21.6 ) , ( 38, 22.8 ) | |||
- , ( 39, 24 ) , ( 40, 25.2 ) , ( 41, 26.4 ) | |||
- , ( 42, 27.7 ) , ( 43, 29 ) , ( 44, 30.2 ) | |||
- , ( 45, 31.6 ) , ( 46, 32.9 ) , ( 47, 34.2 ) | |||
- , ( 48, 35.5 ) , ( 49, 37 ) , ( 50, 38.3 ) | |||
- , ( 51, 39.7 ) , ( 52, 41 ) , ( 53, 42.5 ) | |||
- , ( 54, 43.9 ) , ( 55, 45.3 ) , ( 56, 46.9 ) | |||
- , ( 57, 48.3 ) , ( 58, 49.7 ) , ( 59, 51.3 ) | |||
- , ( 60, 52.8 ) , ( 61, 54.3 ) , ( 62, 55.9 ) | |||
- , ( 63, 57.4 ) , ( 64, 59 ) , ( 65, 60.6 ) | |||
- , ( 66, 62.1 ) , ( 67, 63.8 ) , ( 68, 65.4 ) | |||
- ) | |||
MOD3: MODULAT (( 0, -8.3 ) , ( 1, -7.4 ) , ( 2, -6.4 ) | |||
- , ( 3, -5.4 ) , ( 4, -4.6 ) , ( 5, -3.6 ) | |||
- , ( 6, -2.7 ) , ( 7, -1.6 ) , ( 8, -0.6 ) | |||
- , ( 9, 0.3 ) , ( 10, 1.3 ) , ( 11, 2.4 ) | |||
- , ( 12, 3.3 ) , ( 13, 4.4 ) , ( 14, 5.5 ) | |||
- , ( 15, 6.4 ) , ( 16, 7.5 ) , ( 17, 8.6 ) | |||
- , ( 18, 9.7 ) , ( 19, 10.8 ) , ( 20, 12 ) | |||
- , ( 21, 13 ) , ( 22, 14.2 ) , ( 23, 15.3 ) | |||
- , ( 24, 16.5 ) , ( 25, 17.6 ) , ( 26, 18.8 ) | |||
- , ( 27, 20 ) , ( 28, 21.2 ) , ( 29, 22.4 ) | |||
- , ( 30, 23.6 ) , ( 31, 24.9 ) , ( 32, 26.1 ) | |||
- , ( 33, 27.4 ) , ( 34, 28.6 ) , ( 35, 30 ) | |||
- , ( 36, 31.3 ) , ( 37, 32.6 ) , ( 38, 33.9 ) | |||
- , ( 39, 35.2 ) , ( 40, 36.6 ) , ( 41, 37.9 ) | |||
- , ( 42, 39.3 ) , ( 43, 40.8 ) , ( 44, 42.1 ) | |||
- , ( 45, 43.5 ) , ( 46, 45 ) , ( 47, 46.4 ) | |||
- , ( 48, 47.8 ) , ( 49, 49.4 ) , ( 50, 50.8 ) | |||
- , ( 51, 52.4 ) , ( 52, 53.8 ) , ( 53, 55.4 ) | |||
- , ( 54, 57 ) , ( 55, 58.5 ) , ( 56, 60.2 ) | |||
- , ( 57, 61.8 ) , ( 58, 63.3 ) , ( 59, 65 ) | |||
- , ( 60, 66.7 ) , ( 61, 68.4 ) , ( 62, 70 ) | |||
- , ( 63, 71.7 ) , ( 64, 73.4 ) , ( 65, 75.2 ) | |||
- , ( 66, 76.9 ) , ( 67, 78.7 ) , ( 68, 80.5 ) | |||
- ) | |||
MOD4: MODULAT (( 0, -0.7 ) , ( 1, 0.4 ) , ( 2, 1.4 ) | |||
- , ( 3, 2.4 ) , ( 4, 3.4 ) , ( 5, 4.4 ) | |||
- , ( 6, 5.4 ) , ( 7, 6.6 ) , ( 8, 7.6 ) | |||
- , ( 9, 8.7 ) , ( 10, 9.7 ) , ( 11, 10.9 ) | |||
- , ( 12, 11.9 ) , ( 13, 13.1 ) , ( 14, 14.3 ) | |||
- , ( 15, 15.3 ) , ( 16, 16.5 ) , ( 17, 17.7 ) | |||
- , ( 18, 18.8 ) , ( 19, 20 ) , ( 20, 21.3 ) | |||
- , ( 21, 22.5 ) , ( 22, 23.8 ) , ( 23, 24.9 ) | |||
- , ( 24, 26.2 ) , ( 25, 27.4 ) , ( 26, 28.7 ) | |||
- , ( 27, 30 ) , ( 28, 31.3 ) , ( 29, 32.6 ) | |||
- , ( 30, 33.9 ) , ( 31, 35.3 ) , ( 32, 36.6 ) | |||
- , ( 33, 38.1 ) , ( 34, 39.4 ) , ( 35, 40.8 ) | |||
- , ( 36, 42.2 ) , ( 37, 43.7 ) , ( 38, 45.1 ) | |||
- , ( 39, 46.5 ) , ( 40, 47.9 ) , ( 41, 49.4 ) | |||
- , ( 42, 50.9 ) , ( 43, 52.5 ) , ( 44, 53.9 ) | |||
- , ( 45, 55.5 ) , ( 46, 57 ) , ( 47, 58.6 ) | |||
- , ( 48, 60.2 ) , ( 49, 61.9 ) , ( 50, 63.4 ) | |||
- , ( 51, 65.1 ) , ( 52, 66.7 ) , ( 53, 68.4 ) | |||
- , ( 54, 70 ) , ( 55, 71.7 ) , ( 56, 73.6 ) | |||
- , ( 57, 75.2 ) , ( 58, 76.9 ) , ( 59, 78.8 ) | |||
- , ( 60, 80.6 ) , ( 61, 82.4 ) , ( 62, 84.2 ) | |||
- , ( 63, 86 ) , ( 64, 87.9 ) , ( 65, 89.8 ) | |||
- , ( 66, 91.6 ) , ( 67, 93.6 ) , ( 68, 95.5 ) | |||
- ) | |||
MOD5: MODULAT (( 0, 7 ) , ( 1, 8.1 ) , ( 2, 9.2 ) | |||
- , ( 3, 10.3 ) , ( 4, 11.3 ) , ( 5, 12.4 ) | |||
- , ( 6, 13.5 ) , ( 7, 14.8 ) , ( 8, 15.9 ) | |||
- , ( 9, 17 ) , ( 10, 18.2 ) , ( 11, 19.4 ) | |||
- , ( 12, 20.5 ) , ( 13, 21.8 ) , ( 14, 23.1 ) | |||
- , ( 15, 24.2 ) , ( 16, 25.4 ) , ( 17, 26.7 ) | |||
- , ( 18, 28 ) , ( 19, 29.2 ) , ( 20, 30.6 ) | |||
- , ( 21, 31.9 ) , ( 22, 33.3 ) , ( 23, 34.5 ) | |||
- , ( 24, 35.9 ) , ( 25, 37.2 ) , ( 26, 38.6 ) | |||
- , ( 27, 40 ) , ( 28, 41.4 ) , ( 29, 42.8 ) | |||
- , ( 30, 44.2 ) , ( 31, 45.7 ) , ( 32, 47.1 ) | |||
- , ( 33, 48.7 ) , ( 34, 50.1 ) , ( 35, 51.6 ) | |||
- , ( 36, 53.2 ) , ( 37, 54.7 ) , ( 38, 56.2 ) | |||
- , ( 39, 57.8 ) , ( 40, 59.3 ) , ( 41, 60.9 ) | |||
- , ( 42, 62.5 ) , ( 43, 64.2 ) , ( 44, 65.8 ) | |||
- , ( 45, 67.4 ) , ( 46, 69.1 ) , ( 47, 70.8 ) | |||
- , ( 48, 72.5 ) , ( 49, 74.3 ) , ( 50, 76 ) | |||
- , ( 51, 77.8 ) , ( 52, 79.5 ) , ( 53, 81.3 ) | |||
- , ( 54, 83.1 ) , ( 55, 84.9 ) , ( 56, 86.9 ) | |||
- , ( 57, 88.7 ) , ( 58, 90.5 ) , ( 59, 92.5 ) | |||
- , ( 60, 94.5 ) , ( 61, 96.4 ) , ( 62, 98.4 ) | |||
- , ( 63, 100.3 ) , ( 64, 102.3 ) , ( 65, 104.4 ) | |||
- , ( 66, 106.4 ) , ( 67, 108.5 ) , ( 68, 110.6 ) | |||
- ) | |||
</pre> | |||
|- | |||
|} | |||