Specific Process Knowledge/Lithography/EBeamLithography/Dose Testing: Difference between revisions
Appearance
No edit summary |
|||
| (3 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 147: | Line 151: | ||
|- | |- | ||
| colspan="1" style="text-align: center;| | | 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 | 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 | 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: | Benefits: | ||
| Line 167: | Line 171: | ||
| | | | ||
<pre> | <pre> | ||
clearvars | |||
%Modulation table modding for dose test of PEC'ed V30's, see Labadviser for further information | %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 | %https://labadviser.nanolab.dtu.dk/index.php?title=Specific_Process_Knowledge/Lithography/EBeamLithography/Dose_Testing | ||
%THOPE 2023-11- | %THOPE 2023-11-13 | ||
%Input variables for modulation table | %Input variables for modulation table | ||
inputJDI = 'C:\Users\thope\Desktop\ | inputJDI = 'C:\Users\thope\Desktop\thope231113\withcross.jdi'; | ||
outputJDI = ' | outputJDI = 'C:\Users\thope\Desktop\thope231113\thope231113.jdi'; | ||
m = 9; %number of doses | m = 9; %number of doses | ||
modulation = | 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 | %Read file | ||
| Line 201: | Line 215: | ||
[class(i),D(1,i)] = readMOD(A,k1(i),k2(i)); | [class(i),D(1,i)] = readMOD(A,k1(i),k2(i)); | ||
end | end | ||
%Calculate tables | %Calculate tables | ||
D(1,:) = 1 + D(1,:)./100 ; %convert from MOD to percent | D(1,:) = 1 + D(1,:)./100 ; %convert from MOD to percent | ||
for i = 2: | for i = 2:m | ||
D(i,:) = D(1,:)*(1+modulation*(i-1)/100); | D(i,:) = D(1,:)*(1+modulation*(i-1)/100); | ||
end | end | ||
D = round(D,3); %round to 1 decimal | D = round(D,3); %round to 1 decimal | ||
for i = 1: | for i = 1:m | ||
D(i,:) = 100*(D(i,:)-1); %convert to MOD from percent | D(i,:) = 100*(D(i,:)-1); %convert to MOD from percent | ||
end | end | ||
%Write modulated tables to file | %Write modulated tables to file | ||
| Line 232: | Line 248: | ||
end | end | ||
fclose(fileID); | 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) | function [a,b] = readMOD(str,k1,k2) | ||