Introduction
Electrical phase shifters are the basic building blocks of many of the active components in a foundry PDK. Besides being the core components of an off-the-shelf Mach Zehnder modulator or a ring modulator in the PDK, they are also offered as stand-alone components enabling designs of customized modulators, switches and complex systems like LiDARs. The first step in enabling these custom-designed circuits and systems is generating a compact model of this basic building block that can be used in a photonic circuit simulation.
Creating a compact model of an electrical phase shifter, however, can be a daunting and time-consuming task. It involves a lot of experimental measurements as well as multiphysics simulations including optical, electrical and even thermal simulations. Once the experimental and simulation data are collected, they must be combined and validated against each other before using them to create the compact model. Here, we present an automated workflow that can be used to collect available experimental data, run multiphysics simulations using ANSYS Lumerical tools to extract any missing data, and combine them in a CML Compiler compatible file for compact model generation.
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 and a statistical electrical phase shifter element.
- ps_pn_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_electrical_PS_collection.lsf: Configuration script to launch workflow.
- ps_pn_stat_te_c: Statistical 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_electrical_PS_collection.lsf: Configuration script to launch workflow.
- ps_pn_te_c: Nominal element template
Requirements
- Required license: One Lumerical IDE (e.g. CHARGE, MODE, etc)
- Optional (highly recommended) licenses: CHARGE, MODE, INTERCONNECT, CML Compiler
- Required version: 2020 R2.4 or higher.
Run and Results
Step 1: Update template files with your data and run workflow
- Run templates/ps_pn_te_c/run_electrical_PS_collection.lsf in CHARGE.
Once the flow finishes running, the data will be saved in .json format in the “output_data” folder inside the template directory. In the default template, the file is named “ps_pn_te_c.json”. This is the file needed by CML Compiler in order to generate an electrical phase shifter compact model. The “output_data” folder will also contain a few .txt files containing results from the simulations.
Step 2: Verify data with diagnostics and visualization
-
If you have configured the workflow to run simulations to extract modeling parameters, then it will create plots to show the key results.
-
The first figure plots the junction capacitance as a function of applied voltage using both the electron and hole density variations. The final capacitance value saved in the output data file is the average of these. However, the two lines should be very close to each other. If they deviate a lot then it indicates that the simulation mesh has not been refined enough near the depletion region.
-
The second figure plots the perturbation to the effective index of the active waveguide as a function of applied voltage. Verify that both the real and imaginary parts of the perturbation are physically accurate.
-
Besides creating the two plots, the workflow also creates (up to) three text files in the “output_data” folder. These files record the electrical bandwidth, junction capacitance and the perturbation to the effective index of the active waveguide as a function of applied voltage. The user can copy these files to the “input_data” folder to be used an input data and skip re-running the simulations a second time (see “Updating the model with your parameters” section below for more detail).
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_pn_te_c” and copy the output .json file generated by the workflow (in the “templates/ps_pn_te_c/output_data” folder).
- [optional] Copy a .svg file into the “ps_pn_te_c” folder to be used as the icon for your compact model. To keep things simple, name the .svg file “ps_pn_te_c.svg”.
- Add the necessary lines in the element_list of the .XML file. You can simply copy the lines for the “ps_pn_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_pn-te_c" with your own data and settings.
Step 1: Navigate to the folder with input data.
- Navigate to templates/ps_pn_te_c/input_data. Here you will find the following files:
Type | Template file | Description |
---|---|---|
Input data | ps_pn_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 | bandwidth_data.txt, capacitance_data.txt, phase_shifter_data.txt | Additional data files that are called from the .lsf file to load the data from multiple sources. |
Step 2: Update the measurement data
- Open templates/ps_pn_te_c/input_data/ps_pn_te_c_input_data.lsf in any Ansys Lumerical tool. This one 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 whatever information is available and remove the rest (you can also simply choose to comment out missing data).
- The user can choose to get any missing data either from simulation or use default (dummy) data instead. If the missing data is something that cannot be achieved from simulation then the workflow uses dummy data from the “ps_pn_te_c” lumfoundry template by default.
- For a statistically enabled compact model, "stat_parameters" cell should be provided as described in Electrical Phase Shifter (Statistical) - Lumfoundry Template under the "Statistical Data" section. FOMs such as Vpi_Lpi and IL can be set as statistical parameters. For an example please see ps_pn_stat_te_c template. Also please see Statistical Data Collection for more information.
- For more information about all the parameters included in the input data file, please visit Electrical Phase Shifter – Lumfoundry Template and phase_shifter_electrical – CML Compiler Model.
Step 3: Update the CHARGE project file for active waveguide simulation
- Open templates/ps_pn_te_c/working_dir/PN_phase_shifter.ldev file in CHARGE. Edit the geometry, material definitions, simulation objects and boundary conditions to match your process.
- Alternatively, you can create your own CHARGE project file for the electrical simulation of the active waveguide.
- Irrespective 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 boundary conditions are called “anode” and “cathode” and the bias is always applied to “anode” with “cathode” grounded (set to zero Volt).
- There is a charge density monitor in the object tree called “charge_monitor” that records the charge density of the entire waveguide.
- The “save data” option in the charge monitor must be enabled and the filename should be set to “charge.mat”.
- The “integrate total charge” option in the charge density monitor must be enabled if simulating for junction capacitance. Note that the workflow uses the change in total charge as a function of bias voltage to calculate the DC capacitance of the pn junction.
- If simulating for slab resistance, a metallic geometry (called “wg_contact”) must be placed over the entire depletion region at zero bias. The mesh order must be such that if enabled, it takes priority over the overlapping silicon and gets included in the simulated geometry. A corresponding boundary condition named “wg_contact” must also be defined and assigned to the “wg_contact” geometry object.
Note: This simulation file is needed if running simulations to extract phase_shifter_data or junction capacitance (Cj) or active waveguide mode data. |
Step 4: Update the MODE project file for active waveguide simulation
- Open templates/ps_pn_te_c/working_dir/PN_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 np density grid attribute object is called “np”.
- 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 np density 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. |
Step 5: Update the MODE project file for passive waveguide simulation
- Open templates/ps_pn_te_c/working_dir/PN_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 (if using two modes). |
Step 6: Update the workflow driver file
- Open templates/ps_pn_te_c/run_electrical_PS_collection.lsf in Ansys Lumerical CHARGE. Note that if you do not intend to run any electrical simulations using the workflow then you can open the file in any Ansys Lumerical tool. However, if available, we recommend using CHARGE 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 CHARGE and MODE project files (if applicable).
- Update the data control flags to match your preferences. The flags are as follows:
ps_data_control: Controls the source of the index perturbation data of the active waveguide. Options are: 1 = dummy_data (from lumfoundry template), 2 = experimental or user provided data from the input data file, 3 = run simulations to get data.
Cj_data_control: Controls the source of the junction capacitance (Cj) data of the phase shifter. Options are: 1 = dummy_data (from lumfoundry template), 2 = experimental or user provided data from the input data file, 3 = run simulation to get data.
Rj_data_control: Controls the source of the slab resistance (Rj) data of the phase shifter. Options are: 1 = dummy_data (from lumfoundry template), 2 = experimental or user provided data from the input data file, 3 = run simulation to get data.
BW_data_control: Controls the source of the electro-optical bandwidth data of the phase shifter. Options are: 1 = experimental or user provided data from the input data file, 2 = calculate using the RC time constant from Rj and Cj.
IL_data_control: Controls the source of the insertion loss data of the phase shifter. Options are: 1 = experimental or user provided data from the input data file, 2 = calculate using the waveguide loss data.
VpiLpi_data_control: Controls the source of the pi phase shift voltage (VpiLpi) data of the phase shifter. Options are: 1 = experimental or user provided data from the input data file, 2 = calculate using the index perturbation data of the active waveguide.
active_wg_data_control: Controls the source of the waveguide data for the active waveguide. Options are: 1 = dummy_data (from lumfoundry template), 2 = experimental or user provided data from the input data file, 3 = run simulations to get data.
passive_wg_data_control: Controls the source of the waveguide data for the passive waveguides. Options are: 1 = dummy_data (from lumfoundry template), 2 = experimental or user provided data from the input data file, 3 = run simulations to get data. - Update the simulation settings (if you are running simulations). The available settings are listed below:
sim_wavelength: Wavelength value to run the MODE simulations for either the active or the passive waveguides in units of meter. Must match with the “wavelength_data” parameter provided in the input data file.
sim_temp: Simulation temperature for CHARGE and MODE simulations in units of Kelvin. Must match with the “temperature_data” parameter provided in the input data file.
bias_voltage: Vector defining the bias voltage sweep for active waveguide simulation. Providing this parameter is optional as the sweep can be directly defined in the CHARGE project file as well.
bias_sweep_type: If the bias sweep is directly defined in the CHARGE project file, the sweep type used in the file must be defined using this parameter. Options are “range” or “values”.
active_wg_excess_loss: Additional waveguide losses (e.g. loss due to surface roughness) to be added to the active waveguide loss from MODE simulation in units of dB/m.
passive_wg_excess_loss: Additional waveguide losses (e.g. loss due to surface roughness) to be added to the passive waveguide loss from MODE simulation in units of dB/m.
passive_wg_dneff_dT: Temperature dependence of passive waveguide effective index in units of 1/K. The workflow currently does not support simulations to extract this parameter. So if running simulations for passive waveguides, this parameter value has to be provided directly. If not provided, then this value will be set to zero in the output data file.
active_wg_dneff_dT: Temperature dependence of active waveguide effective index in units of 1/K. The workflow currently does not support simulations to extract this parameter. So if running simulations for active waveguides, this parameter value has to be provided directly. If not provided, then this value will be set to zero in the output data file.
mode_sweep_name: Name of the sweep object in the MODE project file for the active waveguide simulation.
VpiLpi_voltage: Bias range to calculate the large-signal VpiLpi (required if ‘VpiLpi_data_control’ is set to 2).
bias_R_slab: Bias voltage for slab resistance (Rj) simulation (required if ‘Rj_data_control’ is set to 3).
Note: Do not edit the last section labeled “data extraction and packaging”. This section calls the necessary script files from the source folder to drive the entire workflow. |
Statistical Data collection
The electrical phase shifter workflow can generate a data file to build a statistically enabled compact model using CML Compiler. VpiLpi and insertion loss can be added as statistical FOMs in the workflow. To do that "stat_parameters" cell should be present in input data file under "input_data" folder. This cell should be provided as described in Electrical Phase Shifter (Statistical) - Lumfoundry Template under the "Statistical Data" section. Statistical parameters should include sensitivity information from experimental data, eg. slope_Vpi-Lpi.
For an example please see templates/ps_pn_stat_te_c/input_file/templates/ps_pn_stat_te_c.lsf.
More background information
What data do I need for my compact model?
- Waveguide mode properties for the active and passive waveguide regions, as well as the transitions.
- Effective index (neff), group index (ng), dispersion (D), loss.
- Electrical and optical properties of the phase shifter.
- Variation in effective index as a function of bias.
- Slab resistance and junction capacitance.
- Electro-optical bandwidth.
- RF properties of traveling wave electrode (if present).
- Figures of merit such as
- Insertion loss (IL).
- Bias for pi phase shift (VpiLpi).
- Parasitic capacitances and resistances.
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 VpiLpi, electro-optical bandwidth, intrinsic and parasitic resistances and capacitances and waveguide losses.
- For some data, however, it might be difficult to extract experimental data and they can be calculated via simulation.
- Waveguide mode properties (neff, ng, D) or the variations in phase shifter effective index 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 sometimes choose to use placeholder or dummy data instead if they are unable to run simulations. For more information about the use of dummy data, check out the control flags described in Step 6 of the Updating the model with your parameters section. |
How can the workflow help me with this?
- Gather all available experimental data in one place and determine what is missing.
- Automatically run multiphysics simulations to extract missing data.
- Easy visualization and access of simulated data.
- Combine simulation data with experimental data.
- Package data in CML Compiler compatible format for easy compact model generation.
- Enable version control of experimental and simulation data.