Specific Process Knowledge/Lithography/EBeamLithography/Dose Testing: Difference between revisions
Appearance
| Line 167: | Line 167: | ||
| | | | ||
<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-06 | %THOPE 2023-11-06 | ||
%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 211: | ||
[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 244: | ||
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) | ||