Introduction
Thermal phase shifter is one of the basic building blocks of many of the active components in a foundry PDK. Besides being the core component of an off-the-shelf Mach Zehnder modulator or a ring modulator in the PDK, it can also work as a stand-alone component enabling the designs of customized modulators, switches and complex systems like LiDARs. The first step in enabling these customized circuits and systems is to generate a compact model for this basic building block that can be used in a photonic circuit simulation.
The task of creating a compact model of a thermal phase shifter, however, can be daunting and time-consuming. It can involve a lot of experimental measurements as well as optical, thermal and electrical simulations to collect model data. Once the model data are ready, they must be combined and validated before creating a compact model. Here, we present an automated workflow that can be used to collect available experimental and/or simulation data, run multi-physics simulations using ANSYS Lumerical tools to extract data, combine them and generate input data files for CML Compiler to create a compact model for thermal phase shifter.
Overview
Workflow package
The workflow package consists of the following (see in "Associated Files" in the upper right corner):
- src: Folder that contains all the necessary encrypted files to run the workflow.
- templates: Folder that contains templates for a nominal thermal phase shifter element.
- ps_thermal_te_c: Nominal element template
- input_data: Folder that contains template input data to be updated.
- output_data: Folder that contains final data files for CML Compiler.
- working_dir: Folder that contains simulation project files and results.
- run_thermal_PS_collection.lsf: Configuration script to launch workflow.
- ps_thermal_te_c: Nominal element template
Requirements
- Required license: One Lumerical IDE (e.g. HEAT, CHARGE, MODE, etc)
- Optional (highly recommended) licenses: HEAT, CHARGE, MODE, INTERCONNECT, CML Compiler
- Required version: 2022 R1.3 or higher.
Run and Results
Step 1: Update template files with your data and run workflow
- Run templates/ps_thermal_te_c/run_thermal_PS_collection.lsf in any Ansys Lumerical solvers.
Once the workflow runs successfully, the data will be saved into json file in the “output_data” folder of the template directory. In the default template, the file is named “ps_thermal_te_c.json”. This is the file required by CML Compiler to generate a compact model for thermal phase shifter. The “output_data” folder will also contain a txt file containing the results from simulations.
Step 2: Verify data with diagnostics and visualization
- If you have configured the workflow to run simulations to extract modeling parameters for fundamental TE and TM modes, then it will create plots to show the key results.
- The first figure plots the transient response of the thermal phase shifter using a step shutter mode, and the second figure plot the corresponding frequency response of the thermal phase shifter. The thermal bandwidth value is extracted from the frequency response and saved in the output data file. However, the transient and frequency responses should be relatively smooth. If they are too noisy, it indicates that the default HEAT simulation project file needs to be reconfigured and refined.
- The third and fourth figures plot the perturbation to the effective indices of the active waveguide as a function of temperature for fundamental TE and TM modes. The thermal sensitivity is extracted from the slope of real part and saved in the output data file. Verify that the real and imaginary parts of the perturbation are physically accurate.
- The fifth and sixth figures plot the phase shift for the active waveguide as a function of applied electrical power for fundamental TE and TM modes. The corresponding phase shifter data are saved in the output data file. Verify that the perturbation is physically accurate.
- The seventh figure plots the current as a function of applied voltage for heater. The corresponding IV data are saved in the output data file. Verify that the electrical behavior is physically accurate.
- Besides making the those figures, the workflow generates texts in script prompt window to show data (simulation wavelength and temperature, and heater resistance) and results (thermal sensitivities, effective refractive indices, group indices, dispersions and propagation losses, Pi phase shift powers and insertion losses for fundamental TE and TM modes). Verify the data and results are correct and reasonable.
- the workflow also generates phase shifter data files in the “output_data” folder. These files record the perturbation to the phase shift of the active waveguide as a function of applied electrical power. The user can copy these files to the “input_data” folder and use them as input data files and avoid re-running the simulations (see “Updating the model with your parameters” section below for more detail).
Note:
Availability of the plots, data and results depend on user configuration and input. Please refer to the subsequent content for more details.
Step 3: Run CML Compiler to generate compact model
After the data required for the compact model is successfully collected by the workflow, you can use CML Compiler to easily generate the compact model needed for your design. Here we briefly describe the steps involved for compact model generation using CML Compiler. For more details about each step, please visit Creating a Custom CML with CML Compiler.
- Prepare the foundry directory. You can use the lumfoundry template if you don’t have an existing directory structure for your library.
- Create a sub folder within the “source” folder called “ps_thermal_te_c” and copy the output .json file generated by the workflow (in the “templates/ps_thermal_te_c/output_data” folder).
- [optional] Copy a .svg file into the “ps_thermal_te_c” folder to be used as the icon for your compact model. To keep things simple, name the .svg file “ps_thermal_te_c.svg”.
- Add the necessary lines in the element_list of the .XML file. You can simply copy the lines for the “ps_thermal_te_c” element from the lumfoundry_template.xml file. Note that you will have to change the file extension of the “parameter_filename” to .json from .lsf.
- Open the Lumerical launcher and Launch a new project with CML Compiler
- Follow steps in Building a Compact Model Library to have CML Compiler build your library.
- Once CML Compiler is done running, open INTERCONNECT and check the newly created and installed compact model library. It should contain the element you created in the previous steps.
Updating the model with your parameters
As a PDK designer, calibrating the compact model to your process is critical. The templates we provide contains generic data. You’ll need to update the template with your own input data, simulation files, and control settings before using the flow. It is recommended to make a separate copy of the template folder and its content for each use case within the “templates” directory of the workflow package rather than editing the template files. Below we describe the steps involved in updating the template "ps_thernal_te_c" with your own data and settings.
Step 1: Navigate to the folder with input data.
- Navigate to templates/ps_thermal_te_c/input_data. Here you will find the following files:
Type |
Template file |
Description |
Input data |
ps_thermal_te_c_input_data.lsf |
Ansys Lumerical script file containing all available modeling data and necessary parameters for the compact models (e.g. port information, notes, etc.). Note: The input data can be provided either as a lsf or json, or a mat file. |
Supporting data |
phase_shifter_data_[mode].txt |
Additional data files that are called from the lsf file to load the data from multiple sources. (mode: TE or TM) |
Step 2: Update the measurement data
- Open templates/ps_thermal_te_c/input_data/ps_thermal_te_c_input_data.lsf in any Ansys Lumerical tool. This file contains all the possible input data that can be provided to the workflow (and are necessary to build the compact model). Every parameter defined in the script file are optional and the user should update the file with available information and delete or comment out the scripts for the data that require simulations.
- The user can choose to use default data or extract data either from simulations. If some data cannot be extracted from simulations in the workflow, default data from the “ps_thermal_te_c” lumfoundry template will be used.
- For more information about all the parameters included in the input data file, please visit Thermal Phase Shifter – Lumfoundry Template and phase_shifter_thermal – CML Compiler Model.
Step 3: Update the HEAT project file for active waveguide simulation
- Open templates/ps_thermal_te_c/working_dir/Thermal_phase_shifter.ldev file in HEAT. Edit the geometry, material definitions, simulation objects and boundary conditions to match your design.
- Alternatively, you can create your own HEAT project file for the thermal simulation of active waveguide.
- When you are editing the project file in the template to meet your design or creating a project file from scratch, the following conditions must be met:
- The boundary conditions are called “sub” and “convection”.
- There is a temperature monitor in the object tree called “monitor_wg_2D” that records the temperature gradient around the entire waveguide.
- The “save data” option in the temperature monitor must be enabled and the filename should be set to “heat.mat”.
- There are two temperature monitors in the object tree called “monitor_wg_core_linear” and “monitor_wg_core_linear_transient” that record the temperature in the waveguide core. The “monitor_wg_core_linear” monitor records data for steady-state power sweep; the “monitor_wg_core_linear_transient” monitor record data for transient and frequency analyses to extract thermal bandwidth.
Note: This simulation file is needed if running simulations to extract phase shifter and/or active waveguide mode data. |
Step 4: Update the MODE project file for active waveguide simulation
- Open templates/ps_thermal_te_c/working_dir/Thermal_phase_shifter.lms file in MODE. Edit the geometry, material definitions, simulation objects, boundary conditions and parameter sweep to match your process.
- Alternatively, you can create your own MODE project file for the optical simulation of the active waveguide.
- Regardless of whether you are editing the project file in the template to meet your process or creating a project file from scratch, the following conditions must be met:
- The temperature grid attribute object is called “temperature”.
- The parameter sweep object name is consistent with the “mode_sweep_name” parameter defined in the “workflow driver file” as explained below in Step 6.
- The parameter sweep object is pointing towards the right temperature grid attribute object for its sweep parameter.
- The parameter sweep object has a result called neff1 to record the first mode and neff2 to record the second mode (the latter is required only if building the compact model for two modes).
Note: This simulation file is needed if running simulations to extract phase_shifter_data or active waveguide mode data. The material thermal sensitivity needs to be added or configured accordingly. |
Step 5: Update the MODE project file for passive waveguide simulation
- Open templates/ps_thermal_te_c/working_dir/Thermal_phase_shifter_passive_WG.lms file in MODE. Edit the geometry, material definitions, simulation objects and boundary conditions to match your process.
- Alternatively, you can create your own MODE project file for the optical simulation of the passive waveguide.
Notes: This simulation file is needed only if running simulations to extract passive waveguide mode data. The workflow is currently designed to take the first two modes from the calculated mode list as modes 1 and 2 (mode name "TE" corresponds to mode ID 1, and "TM" corresponds to mode ID 2). |
Step 6: Update the workflow driver file
- Open templates/ps_thermal_te_c/run_thermal_PS_collection.lsf in Ansys Lumerical HEAT. Note that if you do not intend to run any thermal simulations using the workflow then you can open the file in any Ansys Lumerical tool. However, if available, we recommend using HEAT to open the file to avoid any unexpected error.
- Start by defining the folder names for the input data, output data and simulation files (working directory) followed by the file names for the input and output data files along with the HEAT and MODE project files (if applicable).
- Update the data control flags to match your preferences. The flags are as follows:
config.control.WG: Control of the source of the waveguide data. Options are: 1 = default data, 2 = experimental or user provided data from the input data file, 3 = calculate using transient analysis.
config.control.PS: Controls the source of the index perturbation data of the active waveguide. Options are: 1 = default data, 2 = experimental or user provided data from the input data file, 3 = run simulations to get data.
config.control.BW: Control of the source of the thermal-optical bandwidth data of the phase shifter. Options are: 1 = default data, 2 = experimental or user provided data from the input data file, 3 = calculate using transient analysis.
config.control.IL: Controls the source of the insertion loss data of the phase shifter. Options are: 1 = default data, 2 = experimental or user provided data from the input data file, 3 = calculate using the waveguide loss data.
config.control.Ppi: Control of the source of the Pi phase shift power (Ppi) data of the phase shifter. Options are: 1 = default data, 2 = experimental or user provided data from the input data file, 3 = calculate using the index perturbation data of the active waveguide.
config.control.IV: Control of the source of the IV and R data of the phase shifter heater. Options are: 1 = default data, 2 = experimental or user provided data from the input data file. (electrical simulation is not supported at the moment.)
4. Update the simulation settings (if you are running simulations). Strip and rib/ridge waveguides are supported. The available settings are listed below:
config.simulation.core.width: Width of waveguide core for active and passive simulation in units of m. Waveguide core will be disabled if the value is 0. Providing this parameter is optional as the sweep can be directly defined in the HEAT project file as well. [optional]
config.simulation.core.height: Height of waveguide core for active and passive simulation in units of m. Waveguide core will be disabled if the value is 0. Providing this parameter is optional as the sweep can be directly defined in the HEAT project file as well. [optional]
config.simulation.slab.width: Width of waveguide slab for active and passive simulation in units of m. Waveguide slab will be disabled if the value is 0. Providing this parameter is optional as the sweep can be directly defined in the HEAT project file as well. [optional]
config.simulation.slab.height: Height of waveguide slab for active and passive simulation in units of m. Waveguide core will be disabled if the value is 0. Providing this parameter is optional as the sweep can be directly defined in the HEAT project file as well. [optional]
config.simulation.heater.width: Width of heater for active simulation in units of m. Providing this parameter is optional as the sweep can be directly defined in the HEAT project file as well. [optional]
config.simulation.heater.height: Height of heater for active simulation in units of m. Providing this parameter is optional as the sweep can be directly defined in the HEAT project file as well. [optional]
config.simulation.heater.length: Length of heater (as “norm length” and “equivalent length” in HEAT solver) for active simulation in units of m. Providing this parameter is optional as the sweep can be directly defined in the HEAT project file as well. [optional]
config.simulation.wg_excess_loss: Additional waveguide losses (e.g. loss due to surface roughness) to be added to the waveguide loss from MODE simulation in units of dB/m.
config.simulation.sweep_power.min: Minimum sweep power for active waveguide simulation and steady-state analysis in units of W.
config.simulation.sweep_power.max: Maximum sweep power for active waveguide simulation and steady-state analysis in units of W.
config.simulation.sweep_power.N: Number of sweep powers for active waveguide simulation and steady-state analysis. More than one different sweep power is required to extract thermal tuning efficiency (dneff_dT).
config.simulation.sweep_time: Sweep time for active waveguide simulation and transient analysis. Adjust the value if the rising time in transient response is insufficient for temperature to reach steady state. It is proportional to simulation time.
Note:
|
More background information
What data do I need for my compact model?
- Waveguide mode properties for the active and passive waveguide region.
- Effective index (neff), group index (ng), dispersion (D), propagation loss (loss).
- Thermal, Electrical and optical properties of the phase shifter.
- Variation in effective index as a function of temperature (dneff_dT).
- Variation in phase shift as a function of bias.
- Thermal-optical bandwidth.
- Figures of merit such as
- [optional] Insertion loss (IL).
- [optional] Bias for Pi phase shift (Ppi)
- Either Heater current-voltage (IV) curve or resistance (R).
How do I get this data?
- Ideally, most of these data should come from experimental measurements to ensure the accuracy of the compact model.
- Highly recommended for figures of merits such as IL and Ppi, thermal-optical bandwidth, and waveguide losses, and heater current-voltage (or resistance).
- It is challenging to extract all data from experiments and unavailable data can be calculated via simulation.
- Waveguide mode properties (neff, ng and D), the variations in phase shifter effective index as a function of temperature (dneff_dT) and the variation in phase shift as a function of bias.
Note: When building a compact model with CML Compiler, there is an option available to tune these parameters to match with experimentally measured FOMs. This allows users to choose to use placeholder or default data instead if they are unable to run simulations. For more information about the use of default data, check the control flags described in Step 6 of the Updating the model with your parameters section. |
How can the workflow help me with this?
- Collect all available experimental data in one place and determine what to simulate.
- Automatically run Multiphysics simulations to extract unavailable data.
- Easy visualization and access of simulated data.
- Combine simulation data with experimental data.
- Package data in CML Compiler compatible data files for quick and simple compact model generation.
- Enable version control of experimental and simulation data.