In this example we model the effect of thermal crosstalk in a 4-channel WDM (wavelength division multiplexing) circuit using INTERCONNECT. We explore two different workflows to model the thermal crosstalk. Method-1 uses data from multiple 3D thermal simulations of the photonic circuit using HEAT (or other thermal solvers like Synopsys RedHawk-SC Electrothermal - RHSC ET) and calculates a thermal coupling matrix. INTERCONNECT uses this matrix to accurately model the thermal crosstalk in the circuit and runs thermally aware circuit simulation. This accurate, but computationally demanding method is best suited at the sign-off stage of the design process. Method-2 uses simplified 3D HEAT simulations for the heaters in the circuit and calculates the temperature distribution function. INTERCONNECT uses this information along with the layout position of each component in the circuit to calculate the thermal coupling matrix and then runs a thermally aware circuit simulation to capture the effects of thermal crosstalk. This method compromises accuracy for speed, and offers predictive simulation capabilities, making it attractive for the early design stage.
Overview
Understand the simulation workflow and key results
Photonic integrated circuits use photonic components to manipulate and guide optical signals through waveguides for a variety of applications. A lot of these photonic components generate heat, either intentionally or unintentionally. Components like thermal phase shifters or ring resonators intentionally use heaters to tune their optical properties. Components like lasers or carrier injection-type electrical phase shifters on the other hand can generate heat unintentionally due to ohmic loss. The heat from these components can heat up any nearby photonic components and alter their behaviour, affecting the performance of the entire photonic integrated circuit. Designers need to account for this thermal crosstalk during the design process to ensure robust circuit performance.
INTERCONNECT provides two different approaches to model thermal crosstalk in photonic integrated circuits. Method 1 is applicable to circuits with a fixed layout (i.e., the components have already been laid out in the layout, and the waveguides have been routed). Method 2 is applicable to circuits where the layout has not been defined yet. In both cases, the user needs to provide a few additional inputs (explained later in the important model settings section) in the form of a thermal configuration file and a thermal coupling matrix (for Method 1 only) to INTERCONNECT so it can model the thermal crosstalk. Both methods require general steps shown below.
Step 1: Thermal simulation in HEAT
The first step is to conduct thermal simulations either for the entire photonic circuit (Method 1), or for each individual heater (Method 2). This step generates the necessary information for INTERCONNECT to conduct simulations with thermal crosstalk.
When using Method 1, a fixed layout must be available for the photonic circuit. In this case, the 3D geometry of the circuit is first created in HEAT or in other thermal solvers like RHSC ET and thermal simulations are done on the entire circuit. To extract information for use in INTERCONNECT, multiple simulations are required. In each simulation, one heater in the circuit is activated, and the temperature of all photonic components are recorded. Once the component temperature values are collected for all heater contributions, a script is used to calculate the thermal coupling matrix. This thermal coupling matrix is then provided to INTERCONNECT in Step 2.
When using Method 2, the layout of the entire circuit does not need to be defined. In this case, a thermal simulation is set up for each unique element that has a heater (e.g., if there are multiple identical ring resonators then a single simulation covers them all). Then, a single simulation is run for each unique element. For each simulation, a script is used to extract the temperature profile around the heater and turn it into a 1D profile that provides temperature as a function of distance. Finally, this temperature profile is fitted with an exponential model and the fitted coefficients are provided to INTERCONNECT in Step 2.
Step 2: Circuit simulation in INTERCONNECT
The second step is to leverage a scripted workflow in INTERCONNECT to simulate the circuit with thermal crosstalk effects. This step requires either the thermal coupling matrix (Method 1), or the fitted coefficients (Method 2), along with a thermal configuration file.
Using these input data, a script first finds the voltages applied to each elements’ heaters and calculates the thermal power being generated by them using the information in a thermal config file. For Method 2, the script additionally calculates the thermal coupling matrix using the heater temperature profiles and the x, y coordinates of different components. Then, the script uses the thermal power with the thermal coupling matrix to calculate the rise in temperature (dT) for each element due to thermal crosstalk and applies that to each element (by increasing the temperature by dT). At this point, the user can then run a standard INTERCONNECT simulation and analyze how the performance of the circuit is affected by thermal crosstalk.
Run and Results
Instructions for running the model and discussion of key results
Method 1
Step 1: Thermal simulation in HEAT
- Open the file [[wdm_for_coupling_matrix.ldev]]
- Load and run the script file [[extract_thermal_coupling_matrix.lsf]]
The [[wdm_for_coupling_matrix.ldev]] file is set up to represent the 3D geometry of the transmitter of a 4 channel WDM circuit. The geometry contains 4 ring modulators, each with their own Nichrome heater. Boundary conditions are set up to apply voltage sweeps to each heater between 0 to 2.5 V. A 2D temperature monitor is placed on the silicon layer to record the temperature profile on the different ring waveguides.
The [[extract_thermal_coupling_matrix.lsf]] script file is set up to run 4 simulations. In each simulation, the script sweeps the voltage for one of the heaters and records the temperature on the silicon waveguides. By sampling the temperature on 4 different points on each ring waveguide, the script calculates the average temperature rise in each ring corresponding to each heater. It then normalizes the temperature rise in each ring waveguide by the thermal power in each active heater and formulates the thermal coupling matrix. The matrix is then saved in the [[wdm_thermal_coupling_matrix.json]] JSON file. The script also saves the thermal config file used in Step 2, the contents of which are described in the next section.
Images above show the temperature profile on the silicon layer with the heater of the ring modulator in channel 4 turned on with a voltage of 2.5 V (left) and the calculated thermal coupling matrix printed on the script prompt (right). Note that the matrix should be symmetric. In the image above, a relatively coarse mesh is selected to run the HEAT simulation to improve speed and causes a small the small discrepancy to appear in the matrix. This can be improved by using a more refined mesh.
Step 2: Circuit simulation in INTERCONNECT
- Install the included [[lumfoundry_rm.cml]] compact model library in INTERCONNECT
- Open and check the [[lumfoundry_rm_thermal_config_1.json]] file
- Open the file [[wdm_freq_spectrum.icp]] and run the simulation
- Load and run the script file [[thermal_crosstalk_calculator.lsf]]
- Run the saved [[wdm_freq_spectrum_therm_xtalk.icp]] file
To install the [[lumfoundry_rm.cml]] library in INTERCONNECT, navigate to the Element Library, right click on Design Kits, and choose Install. In the new pop-up window, select the [[lumfoundry_rm.cml]] file as the Compact Model Library Package, and select a Destination Folder where the library will be installed. The design kit must be installed prior to opening the ICP file, otherwise, it may be necessary to reload the file to ensure that custom elements properly appear.
The [[lumfoundry_rm_thermal_config_1.json]] file contains the heater information of the ring modulators. It provides the current-voltage characteristics for the lum_rm_strip_te_c model. It also provides the name of the two electrical ports of the heater as well as the bias convention (V_scheme) using Lumerical script notation so that INTERCONNECT can calculate the voltages applied to the heaters of the different ring modulators in the circuit. It optionally can also contain segment information for the waveguide for added accuracy. In this example, the ring waveguide is broken into 4 segments and the center coordinates of each segment is recorded in the thermal config file.
The [[wdm_freq_spectrum.icp]] file is set up to drive the 4 channel WDM transmitter with an ONA to perform a frequency domain simulation. The 4 ring modulators are thermally tuned to 4 different channel wavelengths with a spacing of 0.8 nm by applying appropriate voltages to the heaters. After running the simulation for the first time (at room temperature), the ONA measures the frequency spectrum of the transmitter, showing the resonances of the 4 rings at the desired channel wavelengths. The plot below can be generated by navigating to the Result View window for the ONA (ONA_1 needs to be selected to see the available results), and then right clicking on the mode1/gain result, and clicking Visualize.
The [[thermal_crosstalk_calculator.lsf]] file is set up to run for the fixed layout. This is done by setting the load_thermal_coupling_matrix flag to true. The two other user inputs provide the name of the thermal configuration file and the thermal coupling matrix file. When the script is run, it calculates the thermal power applied to each of the 4 heaters and multiplies it with the thermal coupling matrix to find the total temperature rise in each ring (dT). It then creates a copy of the current INTERCONNECT project file, adding a _therm_xtalk suffix to the filename, and updates current file with temperature of each ring including the effects of thermal crosstalk.
Running the simulation and plotting the spectrum of the transmitter from the ONA shows the shift in the resonance of the different rings sue to the thermal crosstalk. The plot below can be generated by navigating to the Result View window for the ONA (ONA_1 needs to be selected to see the available results), right clicking on the mode1/gain result, and then choose Add to Visualizer 1 from the Visualize option.
Method 2
Step 1: Thermal simulation in HEAT
- Open and run the file [[ring_heater_Tprofile.ldev]]
- Load and run the script file [[get_temp_profile_ring.lsf]]
- Open and run [[fit_Tprofile.py]] in the script editor
The [[ring_heater_temp_profile.ldev]] project file contains the ring modulator for channel 2 only. The other heaters have been removed. The boundary condition for the channel 2 heater is set up to run a voltage sweep from 0 to 2 V. The 2D temperature monitor is set up to capture the temperature profile of the silicon layer for an area covering at least 50 microns from the heater in all direction.
The [[get_temp_profile_ring.lsf]] script file is set up to read the temperature profile from the 2D temperature monitor and use it to find the radial temperature distribution around the ring heater starting from the edge of the ring up to 70 microns from it. The radial profile was calculated with a grid of 18 degrees resulting in 20 profiles in different directions from the heater. The resulting 1D profiles show that the temperature distribution is almost uniform in all direction except for the negative y directions (between 252 to 288 degrees). This is due to the metal prongs in the heater also heats up and therefore results in deeper penetration of the elevated temperature in that direction. For simplicity, we ignore this variation as the probability of having components in this small window is quite small and we pick the 1D profile in the 36 degrees direction as a representative temperature profile for the heater. This gets saved in the [[Tprofile_ring_heater.txt]] file.
The [[fit_Tprofile.py]] file fits the 1D profile from the HEAT simulation to an exponential curve and provides the four fitting parameters. These parameters go into the thermal config file used in Step 2.
$$T(x)= c_1 e^{c_2 x^2-c_3 x}+c_4$$
Note: The Python script requires Python modules numpy, scipy, and matplotlib to run.
Here, T(x) is the temperature at the highest bias (2 V in this case) at a distance x from the center of the heater (which is assumed to be the center coordinate of the element in layout as well) and c1, c2, c3, and c4 are the fitting coefficients.
The fitting coefficients get saved in the thermal config file to enable the INTERCONNECT simulation for Method 2. To do this, open the [[lumfoundry_rm_thermal_config_1.json]] file, and add a struct named temp_profile as a field under heater_data. This struct will contain three fields. Q_0 records the heater power (W) used in the simulation to get the temperature profile as a number, T_0 records the ambient temperature (K) as a number, and T_coeff records the 4 coefficients (c1, c2, c3, c4) as a 4x1 matrix. Note that the heater power is needed to normalize the temperature and calculate the temperature distribution of the heater at different power values when running the circuit simulation in INTERCONNECT. A linear relationship between heater power and temperature is assumed in this case which holds true for most use cases. Save the file as [[lumfoundry_rm_thermal_config_2.json]]. Note that this example already comes with this file so you can also skip creating it yourself. Please refer to this page Using JSON files with Lumerical's software for more details on the Lumerical JSON file notation.
Step 2: Circuit simulation in INTERCONNECT
- Install the included [[lumfoundry_rm.cml]] compact model library in INTERCONNECT
- Open and check the [[lumfoundry_rm_thermal_config_2.json]] file
- Open the file [[wdm_freq_spectrum.icp]] and run the simulation
- Load the script file [[thermal_crosstalk_calculator.lsf]], set the load_thermal_coupling_matrix flag to false
- Update the [[thermal_config_filename]] to [[lumfoundry_rm_thermal_config_2.json]] and run the script
- Run the saved [[wdm_freq_spectrum_therm_xtalk.icp]] file
To install the [[lumfoundry_rm.cml]] library in INTERCONNECT, navigate to the Element Library, right click on Design Kits, and choose Install. In the new pop-up window, select the [[lumfoundry_rm.cml]] file as the Compact Model Library Package, and select a Destination Folder where the library will be installed. The design kit must be installed prior to opening the ICP file, otherwise, it may be necessary to reload the file to ensure that custom elements properly appear.
The [[lumfoundry_rm_thermal_config_2.json]] file contains the heater information of the ring modulators. It provides the current-voltage characteristics for the lum_rm_strip_te_c model, the name of the two electrical ports of the heater, and the bias convention using Lumerical script notation so that INTERCONNECT can calculate the voltages applied to the heaters of the different ring modulators in the circuit. It also contains the coefficients for the 1D heater temperature profile along with the temperature and heater power at which it was recorded.
The [[wdm_freq_spectrum.icp]] file is set up to drive the 4 channel WDM transmitter with an ONA to perform a frequency domain simulation. The 4 ring modulators are tuned to 4 different channel wavelengths with a spacing of 0.8 nm by applying appropriate voltages to the heaters. After running the simulation for the first time (at room temperature), the ONA measures the frequency spectrum of the transmitter showing the resonances of the 4 rings at the desired channel wavelengths.
The [[thermal_crosstalk_calculator.lsf]] file has three user inputs. The load_thermal_coupling_matrix flag is set to false so that INTERCONNECT uses Method 2 and calculates the thermal coupling matrix using the temperature profile of the heaters in the thermal configuration file. The thermal_config_filename sets the name of the thermal configuration file. The thermal_coupling_matrix_filename is only needed for Method 1 to provide the name of the thermal coupling matrix file. When the script is run, it calculates the thermal power applied to each of the 4 heaters and multiplies it with the calculated thermal coupling matrix to find the total temperature rise in each ring (dT). It then creates a copy of the current INTERCONNECT project file, adding a _therm_xtalk suffix to the filename and updates the temperature of each ring by the corresponding dT values.
Running the simulation and plotting the spectrum of the transmitter from the ONA shows the shift in the resonance of the different rings sue to the thermal crosstalk.
The table below shows the temperatures of the 4 rings due to thermal crosstalk calculated using Method 1 and Method 2, versus the temperatures calculated from direct HEAT simulation of the circuit. As can be seen, the accuracy of Method 1 is high as expected, within 3% of the result from the HEAT simulation; while the accuracy of Method 2 is slightly lower, within 5 – 8% of the result from HEAT simulation. This lack of accuracy comes from (i) the simplification of the simulated geometry (ignoring the layout around the heater) and (ii) the fitting of the temperature profile. By improving the fit, the accuracy of Method 2 can potentially be improved to 5% or lower. Note that the ring temperature with crosstalk using HEAT simulation was calculated using the [[wdm_for_crosstalk.ldev]] project file along with the [[wdm_crosstalk.lsf]] script file.
| Ring | Temperature rise (K) | ||
| Method 1 | Method 2 | HEAT simulation | |
| RM_1 | 0.186 | 0.207 | 0.182 |
| RM_2 | 0.372 | 0.387 | 0.363 |
| RM_3 | 0.742 | 0.762 | 0.716 |
| RM_4 | 0.370 | 0.383 | 0.361 |
Important Model Settings
Description of important objects and settings used in this model
The workflow diagram above shows the flow used by INTERCONNECT to model thermal crosstalk. It also identifies the different inputs requires for Method 1 and 2 with further details provided below:
- Thermal config file: For both Method 1 and 2, this JSON file provides heater information about all elements with a heater. This includes the current-voltage characteristic of the heater and the port names for the electrical ports that are used to supply voltages to the heater are provided. For Method 2, the file also provides the temperature profile for the heaters using coefficient values for the fitted exponential curve. Optionally, the file can also contain segment information for the waveguides for all elements so that INTERCONNECT can accurately calculate the temperature change in the waveguides due to thermal crosstalk. When using this option, the user breaks the element (waveguide) into one or more equally sized segments and provides the center (x, y) coordinate for each segment.
- Thermal Coupling Matrix (Method 1 only): This is an NxN matrix saved in a JSON file where N is the number of elements in the circuit. By running multiple thermal simulations of the protonic circuit where one heater is turned on at a time, the user can extract this matrix. When multiplied by a vector of thermal power applied to each element, the thermal coupling matrix can provide the change in temperature (dT) due to thermal corsstalk. For more information about thermal coupling matrix see the Important model settings section.
- Layout Coordinates (Method 2 only): When using method 2, the user needs to set the x / y coordinates for all the elements when setting up the circuit in INTERCONNECT.
The [[thermal_crosstalk_calculator.lsf]] file is used to calculate the thermal crosstalk and apply to temperature rise due to crosstalk to each element. It requires three user inputs:
-
load_thermal_coupling_matrix: This is flag that chooses whether the thermal coupling matrix for the circuit is available (Method 1) or not (Method 2). -
thermal_coupling_matrix_filename: The name of the JSON file with the thermal coupling matrix, this is only needed when using Method 1. -
thermal_config_filename: The name of the thermal configuration JSON file.
Updating the Model With Your Parameters
Instructions for updating the model based on your device parameters
- The thermal configuration file can be updated to include as many elements as needed. The file contains a cell named elements where each entry corresponds to different elements/models in the circuit. Each cell entry is a struct with fields
heater_data,modelandsegments. - For each element in the circuit with a heater, add an entry in the elements cell. Run HEAT simulations for the heaters to get the current-voltage characteristics. Provide the port names and the bias convention using the Lumerical script notation.
- If using Method 2, run HEAT simulations for each heater type and use the [[get_temp_profile_ring.lsf]] and [[fit_Tprofile.py]] files to get the coefficients for the temperature profile and add them to the thermal config file. Provide the ambient temperature and heater power used in the simulation.
Taking the Model Further
Information and tips for users that want to further customize the model
- In this example we only used 4 segments for the ring waveguides. The number of segments can be increased for more accurate average temperature calculation. The [[extract_thermal_coupling_matrix.lsf]] script file shows how waveguide segments are saved in the thermal config file and can be modified to use more segments.
- The HEAT simulations were set up using reasonably coarse mesh, so they run quickly. The mesh override objects can be enabled to use a finer mesh to get more accurate thermal coupling matrix or more accurate heater temperature profile.
- The thermal simulation of the circuits in this example was done using HEAT for demonstration purposes. However, for large circuits, these simulations can be done in other solvers like RHSC ET.
Additional resources
Additional documentation, examples and training material

