Specific Process Knowledge/Lithography/EBeamLithography/Dose Testing: Difference between revisions
Appearance
No edit summary |
|||
| (18 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 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> | |||
|- | |||
|} | |||