Specific Process Knowledge/Lithography/EBeamLithography/Dose Testing
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.
Simple SDF sequencing
The most straightforward method is to create one SDF sequence per dose and simply vary the dose with the RESIST command in the SDF as illustrated below. Each instance must of course be offset with the OFFSET command such that they are not exposed on top of each other. The pattern information in the referenced JDF can contain a PEC modulation table with this method and hence it is suited for proximity corrected designs.
Benefits:
- Easy to set up
- Supports PEC modulation
Drawbacks:
- The system will perform initial calibration according to the PATH defined in the JDF for each sequence/dose. This will add several minutes of execution time to each sequence and for a large dose matrix it can cost a lot of additional time.
;SDF example MAGAZIN 'DOSES' ;--------Dose 1-------- #1 %4D JDF 'dosetest',1 ACC 100 CALPRM '6na_ap5' DEFMODE 2 RESIST 200 SHOT A,24 OFFSET(-100,0) ;--------Dose 2-------- #1 %4D JDF 'dosetest',1 ACC 100 CALPRM '6na_ap5' DEFMODE 2 RESIST 220 SHOT A,24 OFFSET(0,0) ;--------Dose 3-------- #1 %4D JDF 'dosetest',1 ACC 100 CALPRM '6na_ap5' DEFMODE 2 RESIST 240 SHOT A,24 OFFSET(100,0) END
Dose modulation without PEC
The MODULAT command can be used to modulate the base dose for a pattern and hence it can be used to generate a dose matrix. In this setup the SDF will contain a base dose defined by the RESIST command, this dose will then be modulated for different pattern instances defined in the JDF. In this setup the SDF will only contain a single sequence as below.
;SDF example MAGAZIN 'DOSES' #1 %4B JDF 'dosetest',1 ACC 100 CALPRM '6na_ap5' DEFMODE 2 RESIST 200 SHOT A,20 OFFSET(0,0) END 1
The arrray is setup with the ARRAY command in the JDF and at the end of the ASSIGN command a dose modulation can be applied. In this way each instance assignment can contain a different modulation. In the example below the pattern is instanced in a 10 x 1 matrix, each element has its own modulation table; SHOT1 to SHOT10. The definition of each modulation is stated at the end of the layer definition.
The MODULAT command takes two parameters as MODULAT(r,v), where r is the shot rank and v is the shot time modulation in %. The shot rank is defined during export from Beamer. For a simple design as used in this example that is not proximity corrected all elements of the pattern will be in shot rank 0. The shot time modulation is a simple percentage increase to the base dose defined by the RESIST command in the SDF. The modulation table in this example will thus expose with a base dose of 200 µC/cm2 in element (1,1) and a dose of 200 µC/cm2 + 45% = 290 µC/cm2 in element (10,1). The resulting pattern and modulation is visualised below.
Benefits:
- Easy to set up
Drawbacks:
- Does not support PEC modulation since we use the MODULAT option to define the dose variation
;JDF example JOB/W 'DOSES',4 PATH DRF5M ARRAY (50,10,50)/(50,1,0) ASSIGN P(1)->((1,1),SHOT1) ASSIGN P(1)->((2,1),SHOT2) ASSIGN P(1)->((3,1),SHOT3) ASSIGN P(1)->((4,1),SHOT4) ASSIGN P(1)->((5,1),SHOT5) ASSIGN P(1)->((6,1),SHOT6) ASSIGN P(1)->((7,1),SHOT7) ASSIGN P(1)->((8,1),SHOT8) ASSIGN P(1)->((9,1),SHOT9) ASSIGN P(1)->((10,1),SHOT10) AEND PEND LAYER 1 P(1) 'dtu_logo_um.v30' SPPRM 4.0,,,,1.0,1 STDCUR 6.6 ;nA SHOT1: MODULAT (( 0,0)) SHOT2: MODULAT (( 0,5)) SHOT3: MODULAT (( 0,10)) SHOT4: MODULAT (( 0,15)) SHOT5: MODULAT (( 0,20)) SHOT6: MODULAT (( 0,25)) SHOT7: MODULAT (( 0,30)) SHOT8: MODULAT (( 0,35)) SHOT9: MODULAT (( 0,40)) SHOT10: MODULAT (( 0,45)) END
Resulting setup from the example job. The pattern (DTU logo) is instanced 10 times with a pitch of 50 µm. The dose is modulated between 200 and 290 µC/cm2. |
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 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.
Example frome ChipPlace definine a 10 x 2 element dose matrix with relative doses from 1 to 2, ready for export to V30. Image: Thomas Pedersen. |
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 here. Since Labadviser does not allow upload of .m files, simply copy the script from below and save as a .m file.
Matlab script for modulation table expansion |
---|
%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-06 clearvars %Input variables for modulation table inputJDI = 'C:\Users\thope\Desktop\MODMOD\acmossingle.jdi'; outputJDI = 'acmosexpanded.jdi'; m = 9; %number of doses modulation = 10; %modulation between instances in percent, must be positive %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:n D(i,:) = D(1,:)*(1+modulation*(i-1)/100); end D = round(D,3); %round to 1 decimal for i = 1:n 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); 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 |
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/cm2 as base dose in steps of 10 µC/cm2 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.
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