Jump to content

Specific Process Knowledge/Lithography/EBeamLithography/Dose Testing: Difference between revisions

Thope (talk | contribs)
Thope (talk | contribs)
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
clearvars


%Input variables for modulation table
%Input variables for modulation table
inputJDI = 'C:\Users\thope\Desktop\MODMOD\acmossingle.jdi';
inputJDI = 'C:\Users\thope\Desktop\thope231113\withcross.jdi';
outputJDI = 'thopeExpanded.jdi';
outputJDI = 'C:\Users\thope\Desktop\thope231113\thope231113.jdi';
m = 9; %number of doses
m = 9; %number of doses
modulation = 10; %modulation between instances in percent, must be positive
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:n
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:n
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)