How to build a model of thermal phase shifter?

Hi,
I want to build an interconnect model of Thermal phase shifter? I could not find a related topic. Where should I start ?

Hi,
This thermally tunable waveguide model is built based on MODE Solutions ans DEVICE simulation results.
image
Here is an example test file:thermally_tuned_waveguide.icp (470.6 KB)
Model Development

Parameter extraction
Please refer to the [Thermally Tuned Waveguide] (https://kb.lumerical.com/en/index.html?thermal_thermally_tuned_waveguide.html ) page for detailed information on the component level simulations using DEVICE and MODE Solutions. All the files mentioned below can be found in the LCML_resource folder in the download page.

  1. Open the project file thermal_tuning_waveguide_2D.ldev in DEVICE and run with the default settings. The temperature distribution profile will be saved to T.mat .
  2. Open the project file thermal_tuning_waveguide_2D.lms in MODE Solutions and disable the “temperature” object. Run a frequency sweep and export the mode data to `thermal_tuning_waveguide.ldf" for INTERCONNECT.
  3. Run the script file thermal_tuning_waveguide_sweep.lsf . This will extract the effective index changes vs. temperature (input power) and save the data in thermally_tuned_wg_neff_power.dat .

INTERCONNECT
The thermally tunable waveguide has an internal circuit that is very similar to that of the [PN phase shifter] (LCML - Phase shifter based on PN junction | lcml_ps_pn_1550), except that the Optical Modulator Measured element now uses the effective index perturbations as a function of the heating power ( thermally_tuned_wg_neff_power.dat ). The electrical input is voltage, and assuming the resistance is 50 ohm, the voltage is converted to power through an Electrical Multiplier and an Electrical Constant Multiplier (gain = 0.02).
image

Test

Download the simulation file thermally_tuned_waveguide.icp from the top of this page. In this simulation file, the thermally tuned waveguide is measured by an Optical Network Analyzer (ONA). Run the sweep object “sweep_voltage” defined in the file. The following plot is the phase shift in the waveguide under different heating power (represented by driving voltage) at 193.1 THz.

Test

image
Hope this helps!

Thank you very much!

I am glad that it was helpful!

Hi, I have some question about this example.
Why the phase is a negative value at voltage=0V. In the thermally tuned waveguide case, the phase-power curve is like as follows,
https://apps.lumerical.com/thermal_thermally_tuned_waveguide.html

I think it’s reasonable to have a positive phase value when the applied voltage is zero.
Is there anything I missed?

Hi @lishifeng,

The phase value is wrapped in the range of [-pi, pi]. You can transfer this to positive phases by adding 2*pi to the result.

Dear all,

I ran the “thermal_tuning_waveguide_sweep.lsf” as was stated in step 3; however, it did not create “thermally_tuned_wg_neff_power.dat” file.

Also, I dont find any option in lumerical interconnect file (“thermally_tuned_waveguide.icp” ) to import the .dat file to interconnect.

I would be grateful if you please explain it more.

Thanks

Hi @hatef.shiran,

Which example page are you referring to?

Hello @gwang ,

I’ve downloaded the example files from “https://apps.lumerical.com/thermal_thermally_tuned_waveguide.html” (FDE method).

I guess this post says we have to create .dat file from the the example page simulation files and then use the .lcp file from this post and import the .dat file to interconnect file.

In fact I could not find a way to give a model file(.dat) to the component (wave guide+metal heater) here.

Thank you very much for your help in advance.

Thanks in advance for your help.

1 Like

Hi @hatef.shiran,

There is no .icp file in the linked page. But you can get the effective index perturbation data and waveguide propagation parameter data (frequency sweep) from MODE and load to INTERCONNECT. Here is a page talks about the process: https://kb.lumerical.com/ref_primitive_elements_mode_waveguide_create.html

Hi @gwang,

  1. What about a way to generate the .dat file that has the information for power vs d_neff? I can’t find the “thermal_tuning_waveguide_sweep.lsf” file mentioned above.

  2. On a related note, I recall there being a generic library of compact models (LCML) with lots of example components that helped me previously, including a waveguide heater. the LCML I found now that it only has two simple components (https://support.lumerical.com/hc/en-us/articles/360036620273-Custom-Library-amp-Design-Kit). Can you refer me where I can find the older CML file?

Thanks!

Hello @mustafa.sh,

I believe that the example has been changed slightly, the sweep is now done in the file “thermal_tuning_waveguide_2D_mode_sweep.lsf”. To generate the .dat file you can use the write command to create a text file that can be imported into the optical modulator element in Interconnect. This text file is in a three column format, with columns 1) applied signal, 2) change in real part of effective index, and 3) change in imaginary refractive index.

I believe that the CML you are referring to is available on this page:

1 Like

Hi @kjohnson

.dat generation: works! thanks

Thanks for the update on the LCML.

for future reference:

To create a waveguide compact model

  1. Create a thermal_tuning_waveguide_2D.ldev file in DEVICE with the heater properties and waveguide geometry.

  2. Run the project sweep in the DEVICE project and export the sweep results to the ‘T.mat’ file as instructed in the app note, using

    • temperature=getsweepresult("sweep","T");
    • matlabsave("T.mat",temperature);
  3. Opent the thermal_tuning_waveguide_2D.lms project in MODE, generate a waveguide .ldf compact model as instructed in the app note.

  4. Run the script thermal_tuning_waveguide_2D_mode_sweep.lsf in MODE. Make sure to adjust the values for the power sweep and number of points accordingly.

Execute the following lines at the end to export the compact model to be used in the waveguide modulator element:

neff_imag = matrix(length(power)) * 0;
CML_export = [power, neff, neff_imag];
write('thermal.dat', CML_export);

Thanks!

1 Like

Hello @mustafa.sh,

That looks like a good approach, thanks for sharing!