Report Nanofabrication

Embed Size (px)

DESCRIPTION

Report of Nanofabrication course at UBC

Citation preview

1

UBC EECE 403 Report

Abstract description of the project; short summary; less than 100 words. INTRODUCTION

In class were introduced the concepts of photonics silicon based circuits. Some models were presented as the Michelson Mach Zehnder Interferometers (MZI), being this last one used in this project. Some important definitions were discussed, for example the effective index of refraction, the group index, the free spectral range (FSR), all of those figures are important to design the interferometer. The main idea of the device is to guide the light through a strip of silicon (waveguide), the light is divide in a Y-branch and follows two path where one is have its phase shifted. The two branches are connected again by another Y branch, the difference of phase create an interference that can be constructive or destructive (or in between), what can be used as an optical switch.In this project was used the software MODE, to design the waveguide, matlab, to develop the equations, and Mentor Graphics Pyxis CAD tool, to design the layout of the devices.

Design

Was first designed the waveguide in LUMERICAL software, where was used the dimensions of 500 width and 220 thickness, for a wavelength of 1.55um in TE polarization, the results are shown in figure 1.

Figure 1 Waveguide profile, effective index and group indexThrough the MODE software and using Matlab to calculate, was found the compact model of this waveguide, with the Effective index equals 2.447-1.129 ( 1.55) +0.038 ( 1.55)2.The MZI transfer function was plotted in Matlab and shown in the figure 2.

Figure 2 MZI transfer function for a waveguide of 500x220nm and 0=1.55.

With the compact model was possible to plot the group index x wavelength, as shown in figure 3.

Figure 3 Group index for a waveguide of 500x220nm and 0=1.55.Was done the corner analysis for 9 cases and plotted in the figures 4 and 5.

Figure 4 MZI transfer function for waveguides corner analysis

Figure 5 Variation of the FSR

Figure 6 Variation of the group index

This project was designed using Mach Zehnder Interferometers model. Was used the software MODE solutions to simulate the waveguide, and Mentor to design the device. The devices designed were located in the UBC linux server.(/ubc/ece/home/lc/ugrads/ee484proj/EECE403_2015_01/e1f0b/Ebeam_pedro_top).The floor plane was draw with the dimensions 1.5 mm width and 1.2 height, in the same floor plane was placed 2 rows of circuits, in the left row the circuit 0 is the control circuit that will be compared with the others. The first row there are modifications in the resistance to compare the thermal performance of each one of the designs. The second row was changed the waveguide only, to compare the light performance of each circuit.The circuits were named from 0 to 7, being the number 0 the control circuit.

Table 1 Design dimensions

DeviceLength1 (m)Length2 (m)L = L2 L1 (m)Width of Metal (m)

MZ0704884187

MZ1704884185

MZ27048841810

MZ3704884187

MZ4705084387

MZ516310388757

MZ6704884187

MZ7704884187

Figure 7 - Floor plane with all the eight devices placed.

Figure 8 - Device 0 control group, design following the rules with the objective to be used to comparison. The distance between the optical inputs and electrical inputs is 509 nm, the distance from the 2 electrical pads is 50 nm, the distance from the 2 optical pads is 127 nm, and all this values were kept in the others devices.

Figure 9 - Device 1 Was reduced the width of the metal to 5m to analyze the effect of higher resistance.

Figure 10 - Device 2- Was increased the width of the metal to 10m to analyze the effect of lower resistance.

Figure 11 - Device 3 The design of the resistance was draw inverted from the control design to analyze the effect of the geometry.

Figure 12 - Device 4 Was increase the radios bent to analyze the effect in the loss.

Figure 13 - Device 5 The number of turns of the waveguide was increased from the control device.

Figure 14 - Device 6 The design of the resistance was draw inverted from the control design to analyze the effect of the geometry.

Figure 15 - Device 7- The interferometer was drawn far from the grating coupler.ExperimentsThe chip with the devices designed was sent Seattle where it was manufactured without the SiO2 covering the waveguides.With the die returned from the foundry, the first results with air cladding of the circuits are shown in the following figures.

Figure 16 - Device 0

Figure 17 - Device 1

Figure 18 - Device 2

Figure 19 - Device 3

Figure 20 - Device 5

Figure 21 - Device 5

Figure 22 - Device 6 -

Figure 23 - Device 7

Data analysis

With these results was possible to analyze the data, to do this was used the method of fitting the MZI spectrum using the loopback calibration for the device 1.

Figure 24 Calibration loopback fitting air cladding device

Figure 25 Data before the calibration air cladding device Figure 26 Data after calibration air cladding device

Figure 27 Fitted model in green, experimental data in blue air cladding device

Figure 28 MZI transfer functions of the simulated waveguide (red),the fitted transfer function (blue), and the obtained data (green) air cladding device

Figure 29 Group index simulated (green) experimental (blue) air cladding device

Was plotted the group index vs wavelengths of the corner analysis and the experimental data.

Figure 30 Group index simulated corner analyze (green) vs experimental (blue) air cladding device

After the first experiments, the die was subjected to others steps of fabrication with objective to grow the SiO2 that covers the waveguide. All the process was done in the UBC AMPEL Nanofab lab, the first step was to grow the SiO2 layer, and it was consisted of:1. Cleaning the die: The die was first submerged in acetone and placed in an ultrasonic cleaner (Branson 3200) for 5 minutes, where the small vibrations of the machine clean the sample. Then the die is submerged in isopropanol and applied to the same machine for more 5 minutes. After this time the sample is cleaned with water2. Deposition of SiO2: The sample then is placed in the PECVD chamber that was previously cleaned with isopropanol and the following parameters:Table 2 PECVD set parameters

Pressure500mTorr

Temp.200C

Forward Power200W

Process Time3000s

CF450sccm

O210sccm

N2100sccm

After cleaned the chamber the plasma was established inside the chamber with diethylsilane (DES) at 4sccm and N2O at 71sccm.Then apply nitrogen-100sccm three times and place a simple sample to define the processing time. After that the die was placed in the chamber, with a simple sample for measurement of the thickness, with the processing time of 1000s.The parameters of the process were:Table 2 PECVD read parameters

Pressure478mTorr

Temp.190C

Forward Power212W

Process Time300 - 1000s

Des4sccm

N271sccm

3. Measure of thickness: The measure of the thickness was made using an optical system based on interference, where a light beam hits the surface of the sample and a sensor read the reflected light and based on the difference between the reflection of the SiO2 and the silicon, it knows the thickness of the layer.The measure of pure silicon had an error of 25nm and the measurement of the SiO2 was 1.6m.Again the experiment was done, now if the oxide cladding in the chip, the results as follows:

Figure 31 Calibration loopback fitting oxide cladding device

Just like before was used the device 1, with the calibration of the loopback and fitting the approximated curve to the experimental data.

Figure 32 Data before the calibration oxide cladding device

Figure 33 Data after calibration oxide cladding device

Figure 34 Model in blue experimental data in green oxide cladding device

Figure 35 Group index for experimental oxide cladding device.

The next step was the photolithography that was done using the maskless photolithography machine (SF.100 Xpress). This process consisted of:1. Cleaning the die: Again was needed to clean the chip in the same way as before. Submerge the chip in acetone for 5 minutes, place on the ultrasonic cleaner, submerge in isopropanol for more 5 minutes, and finish cleaning with water.2. Defining the exposure time: A sample chip with an array of different exposure times was used to define the best exposure time. The sample was analyzed in microscope and the exposure of 1.3s presented an underdeveloped pattern while the exposure of 1.7s presented an overdeveloped pattern, the exposure chosen was 1.6s.3. Applying photoresist: The die was placed in the spinning machine to spread the photoresist smoothly over the surface of the chip. First the sample without the photoresist was placed to rotate and check if it wouldnt fly. After the checking, the parameters were set as follows:Spin 3000rpm for 45s with acceleration of 10rpm/s.And then the photoresist (AZ4110) was dropped in the center of the chip. After the end of the spinning the die was placed in a hot plate to bake the photoresist for 4 minutes. In the end of the process was necessary to clean the spinning machine with acetone, taking care to not touch the rings.4. Maskless photolithography: The chip was placed in the machine that has an automatic tray, but still has to be aligned manually; a light over the chip helps to do the rough alignment .The fine alignment was done using the crosses on the chip. The crosses give a good feedback of the alignment. The alignment process is very time consuming because every time that a corner is aligned, is necessary to check and realign the others corners. After the alignment of the lenses was necessary the alignment of the light. Then the die was exposed to 1.6s of light.5. Development of the photoresist: For last the die was submerged in the photoresist developer(AZ400k diluted 1.4) for 25 seconds, then in water to stop the development. Cleaning that way the unwanted photoresist areas.

Figure 36 Devices after the photolithography process. The following step was the deposition of metal in the electrical portion of the device, this process consisted of:1. EBeam evaporator: The chip was placed inside the Vacuum chamber where the metal was evaporated and deposited on the surface of the die. Before the evaporation process began, the parameters were set as follows:Pressure5.5Torr

Temp.11K

MetalTitanium

Z-Ratio0.628

Deposition rate0.8k/s

It is necessary to inform the density of the metal to the sensor for it measure the thickness of the deposition, the metal used was the Titanium so its density is 4.5g/cm of the deposition, the metal used was the Titanium so its density is 4.5g/cm.In the ebeam process, first the chamber of the metal is separated from the chamber of the die, then the process starts, the pressure increases and then starts to decrease when the evaporation starts. With the evaporation happening, the disc the separates the two chambers is open and the deposition starts.As the deposition rate is low (0.8k/s) the deposition is low quality but more resistant. During the process some photoresist started to peel of the chip. To avoid compromise more the devices, the process was finished prematurely.The final thickness of the titanium was 82nm measured in the sensor of the Ebeam evaporator. Then after turned off the cooling system and broke the vacuum, the die was checked in the microscope for some damage.

Figure 37 Chip after the deposition.

2. Cleaning the photoresistor: In order to take off the photoresistor, the chip was emerged in acetone and applied for some instants the sonicator, then checked again at the microscope.

Figure 38 Devices after cleaning the photoresistor.

For last, was done the measures of the devices using the electric part of the circuit. The results are shown as follows:

Figure 39 Peaks difference for 2.06mW (green), 8.3mW (red), and 18.6mW (blue).

Figure 40 Lambda Shift for the difference of 6.218mW (8.3mW 2.06mW)

Figure 41 Lambda Shift for the difference of 16.57mW (18.6mW 2.06mW)The final value found for the was 15.142mW/FSR

Figure 42 Lambda shift fixing the highest value of power.

conclusionThe step by step of the process of make a chip was extremely interesting and could teach a lot of all the process, since the design flow, design tools, manufacturing tools, and challenges in every stage of the process.The focus in optronics was also interesting for being a relatively new area. The difficulty to produce an exactly device as design caused by all the variations in the process was one of the most important lessons being a real challenge for designers in the nano/microelectronics industry.

References

L. Chrostowski, M. Hochberg Silicon Photonic Design, Cambridge 2005

Appendix

%%%%%%%%%%%%code of the corner analysis

clcclear% the wavelength range of interest.lambda_min = 1.545; % Units [m, microns]lambda_max = 1.555;lambda_step = 0.01e-3; % wavelength step [microns] % Typical minimum step for a tunable laser is 1-10 pm.lambda=lambda_min:lambda_step:lambda_max;load('neffs.mat'); % Define the MZI transfer function% use Matlab anonymous functions % Effective index:% - as a Taylor expansion around the central wavelength, lambda0 %2.447629374949186 -1.129159719828981 -0.037801538243233 lambda0 = 1.55; n1=2.447629374949186; n2=-1.129159719828981; n3=-0.037801538243233; % these are constants from the waveguide model.for i = 1 : 9 n1 = neffs(i,1); n2 = neffs(i,2); n3 = neffs(i,3); neff = @(lambda) ... (n1 + n2.*(lambda-lambda0) + n3.*(lambda-lambda0).^2); % plot, and check if this is as expected:% figure;% plot(lambda, neff(lambda),'LineWidth',3); % Complex propagation constant alpha = 1e-3; % propagation loss [micron^-1]; constant beta = @(lambda) ... (2*pi*neff(lambda)./lambda - 1i*alpha/2*ones(1,length(lambda)) ); % MZI transfer function T_MZI = @(L1, L2, lambda) ... ( 0.25* abs(exp(-1i*beta(lambda)*L1)+exp(-1i*beta(lambda)*L2)).^2); % plot, and check if this is as expected: L1=70; L2=500; % Units [m, microns], variable% figure; plot(lambda, T_MZI(L1, L2, lambda),'LineWidth',2); hold on; xlabel ('Wavelength [\mum]'); ylabel ('Transmission'); axis tight title ('MZI transfer function'); [pks,locs] = findpeaks(T_MZI(L1, L2, lambda)); pk1 = lambda(locs(3)); pk2 = lambda(locs(4)); FSR(i) = pk2 - pk1; % % figure;% T_MZI_dB = 10*log10(T_MZI(L1, L2, lambda));% plot(lambda, T_MZI_dB,'LineWidth',3);% xlabel ('Wavelength [\mum]');% ylabel ('Transmission [dB]');% axis tight% title ('MZI transfer function');endfigurehist(FSR)title ('FSR histogram');

%%%%%%%%%%%%%%%%%%%%%%%%% code of the e MZI transfer function program

clf% the wavelength range of interest.lambda_min_sim = 1.535; % Units [m, microns]lambda_max_sim = 1.575;lambda_step_sim = 0.01e-3; % wavelength step [microns] % Typical minimum step for a tunable laser is 1-10 pm.lambda_sim=lambda_min_sim:lambda_step_sim:lambda_max_sim; % Define the MZI transfer function% use Matlab anonymous functions % Effective index:% - as a Taylor expansion around the central wavelength, lambda0%2.447629110745169 -1.129195305378686 -0.038532116464539lambda0_sim = 1.55; n1_sim=2.447629110745169; n2_sim=-1.129195305378686; n3_sim=-0.038532116464539; % these are constants from the waveguide model.neff_sim = @(lambda) ... (n1_sim + n2_sim.*(lambda-lambda0_sim) + n3_sim.*(lambda-lambda0_sim).^2); % plot, and check if this is as expected:figure(1);plot(lambda_sim, neff_sim(lambda_sim),'LineWidth',3); %ng=(neff_sim(lambda_sim) - lambda_sim .* dndlambda_sim); % Complex propagation constantalpha_sim = 1e-3; % propagation loss [micron^-1]; constantbeta_sim = @(lambda) ... (2*pi*neff_sim(lambda)./lambda - 1i*alpha_sim/2*ones(1,length(lambda)) ); % MZI transfer functionT_MZI = @(L1, L2, lambda) ... ( 0.25* abs(exp(-1i*beta_sim(lambda)*L1)+exp(-1i*beta_sim(lambda)*L2)).^2); % plot, and check if this is as expected:L1=70;L2=488; % Units [m, microns], variablefigure(2);plot(lambda_sim, T_MZI(L1, L2, lambda_sim),'LineWidth',3);xlabel ('Wavelength [\mum]');ylabel ('Transmission');axis tighttitle ('MZI transfer function');[pks,locs] = findpeaks(T_MZI(L1, L2, lambda_sim));pk1 = lambda_sim(locs(10));pk2 = lambda_sim(locs(11));FSR = pk2 - pk1 figure(3);T_MZI_dB = 10*log10(T_MZI(L1, L2, lambda_sim));plot(lambda_sim, T_MZI_dB,'LineWidth',3);xlabel ('Wavelength [\mum]');ylabel ('Transmission [dB]');axis tighttitle ('MZI transfer function'); figure(4); neff_fit_sim = neff_sim(lambda*1e6); dndlambda_sim=diff(neff_fit_sim)./diff(lambda); dndlambda_sim=[dndlambda_sim, dndlambda_sim(end)]; ng_sim=(neff_fit_sim - lambda .* dndlambda_sim); plot(lambda*1e6, ng_sim,'g', 'LineWidth',3); xlabel ('Wavelength [\mum]'); ylabel ('Group index, n_g'); axis tight title ('Group index');

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% code of the data analysis programclf% Enter the Dropbox URL here. Make sure it has a =1 at the end:url = 'https://www.dropbox.com/sh/lqo7348gkunvboc/AADk739hMnu7wwFNfHRKcIDOa/Data/Q1/pedro_MZI0_236_Scan1.mat?dl=1';dL = 418; % [micron] Path length difference in the MZI PORT=2; % Which Fibre array port is the output connected to? % %a=websave('mzi.mat',url); % get data from Dropbox% %load('mzi.mat');% load('pedro_MZI3_249_Scan1');% % Data is stored in variable "scanResults".% % There are two columns - wavelength (1), and amplitude (2)% lambda=scanResults(1,PORT).Data(:,1)/1e9;% amplitude=scanResults(1,PORT).Data(:,2);% % % Curve fit data to a polynomial for baseline correction% p=polyfit((lambda-mean(lambda))*1e6, amplitude, 4);% amplitude_baseline=polyval(p,(lambda-mean(lambda))*1e6); % % % Perform baseline correction to flatten the spectrum% % Use the curve polynomial, and subtract from original data% amplitude_corrected = amplitude - amplitude_baseline;% amplitude_corrected = amplitude_corrected + max(amplitude_baseline) - max(amplitude);% figure(1);% plot (lambda*1e6, amplitude_corrected);% xlabel ('Wavelength [\mum]');% ylabel ('Transmission [dB]');% axis tight% title ('Experimental data (baseline corrected)');% % % data only within the wavelength range of interest.% lambda_min = min(lambda); % Can limit the analysis to a range of wavelengths% lambda_max = max(lambda); % if the data on the edges is noisy% lambda_max = 1.57e-6;% lambda1=lambda_min:min(diff(lambda)):lambda_max;% amplitude=interp1(lambda, amplitude_corrected, lambda1,'linear');% lambda=lambda1;% amplitude(find(amplitude==-inf))=-50; % check if there are -infinity data points% figure(2);% plot (lambda*1e6, amplitude);% xlabel ('Wavelength [\mum]');% ylabel ('Transmission [dB]');% axis tight% title ('Experimental data (baseline corrected, wavelength range)'); PORT=2; % Which Fibre array port is the output connected to?FONTSIZE=20; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Loopback data:%a=websave('loopback.mat',url_loopback); % get data from Dropbox%load('loopback.mat');load('pedro_calibrate3_244_Scan1');% Data is stored in variable "scanResults".% There are two columns - wavelength (1), and amplitude (2)lambda=scanResults(1,PORT).Data(:,1)/1e9;amplitude=scanResults(1,PORT).Data(:,2);figure(1);plot (lambda*1e6, amplitude);title ('Calibration loopback'); xlabel ('Wavelength [\mum]','FontSize',FONTSIZE)ylabel ('Insertion Loss [dB]','FontSize',FONTSIZE)hold all; % Fit the data with a polynomialp=polyfit((lambda-mean(lambda))*1e6, amplitude, 5);amplitude_LOOPBACK=polyval(p,(lambda-mean(lambda))*1e6);plot (lambda*1e6, amplitude_LOOPBACK);% find wavelength range with usable data, in the loopbackloopback_IL = max(amplitude);new_lambda_i=find(amplitude>loopback_IL-10);lambda=lambda(new_lambda_i);lambda_min = min(lambda);lambda_max = max(lambda);amplitude=amplitude(new_lambda_i);% refit the loopbackLOOPBACK=polyfit((lambda-mean(lambda))*1e6, amplitude, 4);amplitude_LOOPBACK=polyval(LOOPBACK,(lambda-mean(lambda))*1e6);plot (lambda*1e6, [amplitude_LOOPBACK],'r-','Linewidth',5);axis tight; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% MZI data:%a=websave('mzi.mat',url_mzi); % get data from Dropbox%load('mzi.mat');load('pedro_MZI0_236_Scan1.mat');lambda1=scanResults(1,PORT).Data(:,1)/1e9;amplitude=scanResults(1,PORT).Data(:,2);figure(2);plot (lambda1*1e6, amplitude);title ('MZI (raw data)'); xlabel ('Wavelength [\mum]','FontSize',FONTSIZE)ylabel ('Insertion Loss [dB]','FontSize',FONTSIZE) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% MZI data - calibrated%% data only within the bandwidth of interest.lambda=lambda_min:min(diff(lambda1)):lambda_max;amplitude=interp1(lambda1, amplitude, lambda,'linear');amplitude(find(amplitude==-inf))=-50;% calibrate dataamplitude_cal=amplitude-polyval(LOOPBACK,(lambda-mean(lambda))*1e6);figure(3);plot (lambda*1e6, amplitude_cal);title ('MZI (calibrated with loopback)'); xlabel ('Wavelength [\mum]','FontSize',FONTSIZE)ylabel ('Insertion Loss [dB]','FontSize',FONTSIZE) % Define the MZI transfer function% - as a Taylor expansion around the central wavelength% - Use units of [microns] keeps the variables closer to 1.% - These make the curve fitting easier.lambda0 = mean(lambda)*1e6; % use Matlab anonymous functions% effective index:neff = @(nx, lambda) ... (nx(1) + nx(2).*(lambda-lambda0) + nx(3).*(lambda-lambda0).^2); % neff([2.4, -1, 0], 1.56) % test it.% alpha = 1e-3; % propagation loss [micron^-1]% complex propagation constantbeta = @(nx, alpha, lambda) ... (2*pi*neff(nx, lambda)./lambda - 1i*alpha/2*ones(1,length(lambda)) );% beta([2.4, -1, 0], 1e-3, [1.56, 1.57]) % test it.% MZI transfer functionT_MZI = @(X, lambda) ... (10*log10( 0.25* abs(1+exp(-1i*beta(X(1:3), X(4), lambda)*dL)).^2) +X(5) );% T_MZI([2.4, -1, 0, 1e-3], [1.56, 1.57]) % test it. % initial function for fitting%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%nx_init = [2.96, -1, 0]; %%%%%%%%%%%% CHANGE THE FIRST PARAMETER%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%alpha_init = 1e-3; % propagation loss [micron^-1]x0=[nx_init, alpha_init, 0];figure(4);plot (lambda*1e6, amplitude);hold all;plot(lambda*1e6, T_MZI(x0, lambda*1e6),'LineWidth',3);xlabel ('Wavelength [\mum]');ylabel ('Transmission [dB]');axis tighttitle ('MZI model (initial parameters)'); % Curve fit: [xfit,resnorm] = lsqcurvefit(T_MZI,x0,lambda*1e6,amplitude);xfitr=corrcoef(amplitude,T_MZI(xfit, lambda*1e6));r2=r(1,2).^2 figure(5);%%%%%%%%%%%%%%%%%%%%%%%%%%%5% the wavelength range of interest.lambda_min_sim = 1.535; % Units [m, microns]lambda_max_sim = 1.575;lambda_step_sim = 0.01e-3; % wavelength step [microns] % Typical minimum step for a tunable laser is 1-10 pm.lambda_sim=lambda_min_sim:lambda_step_sim:lambda_max_sim; % Effective index:% - as a Taylor expansion around the central wavelength, lambda0%2.447629110745169 -1.129195305378686 -0.038532116464539lambda0_sim = 1.55; n1_sim=2.447629110745169; n2_sim=-1.129195305378686; n3_sim=-0.038532116464539; % these are constants from the waveguide model.neff_sim = @(lambda) ... (n1_sim + n2_sim.*(lambda-lambda0_sim) + n3_sim.*(lambda-lambda0_sim).^2); % Complex propagation constantalpha_sim = 1e-3; % propagation loss [micron^-1]; constantbeta_sim = @(lambda) ... (2*pi*neff_sim(lambda)./lambda - 1i*alpha_sim/2*ones(1,length(lambda)) ); % MZI transfer functionT_MZI_sim = @(L1, L2, lambda) ... ( 0.25* abs(exp(-1i*beta_sim(lambda)*L1)+exp(-1i*beta_sim(lambda)*L2)).^2); % plot, and check if this is as expected:L1=70;L2=488; % Units [m, microns], variableT_MZI_dB = 10*log10(T_MZI_sim(L1, L2, lambda_sim));plot(lambda_sim, T_MZI_dB,'LineWidth',3);hold on; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%plot (lambda*1e6, amplitude);hold all;plot(lambda*1e6, T_MZI(xfit, lambda*1e6),'LineWidth',3); xlabel ('Wavelength [\mum]');ylabel ('Transmission [dB]');axis tighttitle ('MZI model (fit parameters)'); % Check if the fit is good. If so, find ngif (ge(r2,0.8)) % plot ng curve figure(6); neff_fit = neff(xfit(1:3),lambda*1e6); dndlambda=diff(neff_fit)./diff(lambda); dndlambda=[dndlambda, dndlambda(end)]; ng=(neff_fit - lambda .* dndlambda); plot(lambda*1e6, ng, 'LineWidth',4); hold on; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% neff_fit_sim = neff_sim(lambda*1e6); dndlambda_sim=diff(neff_fit_sim)./diff(lambda); dndlambda_sim=[dndlambda_sim, dndlambda_sim(end)]; ng_sim=(neff_fit_sim - lambda .* dndlambda_sim); plot(lambda*1e6, ng_sim,'g', 'LineWidth',3); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% xlabel ('Wavelength [\mum]'); ylabel ('Group index, n_g'); axis tight title ('Group index (from MZI fit)'); % waveguide parameters at lambda0 ng0 = xfit(1) - lambda0*xfit(2)end