Introduction
Waveguides are a fundamental element in photonic integrated circuits. They are used for routing, creating resonant and interferometric devices, and many other roles. This makes them ubiquitous in foundry process design kits (PDKs), which can offer an assortment of waveguide types, including straight, arc and s-bend shapes. The waveguides may be parameterized to provide additional flexibility to the circuit designer.
The waveguide workflow presented here, offers an automated flow designed for parameterized and back-annotation waveguide data collection which covers automated simulation and automated experimental and simulation data integration. The data generated by the flow is ready to be used by CML Compiler to generate straight, s-bend and arc parameterized waveguides or layout geometry-specific waveguides that have back annotation with third party layout tools, to help speed up your CML release time. Here, we describe the basic steps of running the waveguide workflow with an example. To find more information on this workflow (eg. different templates, data requirement, data processing, etc.), please refer to Waveguide workflow guide.
Overview
Understand the simulation workflow and key results
Requirements
- Required license: One Lumerical IDE (e.g. MODE, INTERCONNECT, etc)
- Optional (highly recommended) licenses: MODE, INTERCONNECT, CML Compiler
- Required version: 2020 R2.4 or higher.
Run and Results
Instructions for running the model and discussion of key results
Step 1: Update template files with your data and run workflow
- Copy and paste templates\example_1_wg_parameterized_experimental_loss input folder and rename it wg_example.
- In templates\wg_example\input_data \Si_Strip_Loss.csv update the loss values for both bands as follows:
- In templates\wg_example\input_data\ change the names of the wg_strip_X_parameterized _model_config.lsf files to wg_example_X<type>_model_config.lsf (X<type> is straight, arc or sbend).
- In wg_example_X_model_config.lsf change “model” name to “wg_example_X” (X is straight, arc or sbend).
- In templates\wg_example\run_waveguide_collection.lsf change config.element_names to the updates names in step 4: “wg_example_X”.
- Set the config.simulation.run to True.
Step 2: Verify data with diagnostics and visualization
- Run the script run_waveguide_collection.lsf. in MODE.
NOTE: This workflow performs read/write actions on multiple files during the execution. As such, before running the flow, it is required that the “safe mode” being disabled for any Ansys Lumerical products used.
Once the workflow finishes running, the data will be saved in .json format in the “output_data” folder inside the template directory for all desired waveguide types. Also, plots will be created to show the key results to help with diagnostics and validating the results.
In the figure below you can see that the loss has been calculated for the LC and O bands and has been calibrated to the measured loss data points across all bands.
Below you can also see the plots for mode properties, ng, neff and D, that have been calculated using the automated simulation for the parameters specified in the [[run_waveguide_collection.lsf]] file. According to the visualization settings these values have been plotted vs width of the waveguide, but can be plotted for wavelength, curvature an temperature if desired.
Step 3: Run CML Compiler to generate compact model
- In your foundry directory or lumfoundry template, create sub folders within the “source” folder called “wg_ example_straight”, “wg_example_arc” and “wg_example_sbend”.
Note: For your convenience, you can find an example foundry folder attached. Simply run CML Compiler to generate the compact model library. - In templates/wg_example/output_data copy the workflow generated json source data for different types of waveguide and copy them to the respective folders you created in your foundry directory source folder in previous step. (eg. copy templates/wg_example/output_data/ wg_example_arc.json file to foundry_directory/source/wg_example_arc folder).
- Copy .svg files into the sub folders created in your source folder in previous steps for different waveguides, to be used as the icon for your compact model. To keep things simple, name the .svg file same as the name of the folder. (eg. add wg_example_arc.svg to foundry_directory/source/wg_example_arc folder)
- Add the necessary lines in the element_list of the .XML file. You can simply copy the lines for the “wg_strip_straight_parameterized”, “wg_strip_arc_parameterized” and “wg_strip_sbend_parameterized” elements from the lumfoundry_template.xml file. Please make sure the format of the “parameter_filename” is .json. For example for “wg _example_arc” we will have:
<element>
<name>wg_example_arc</name>
<photonic_model>wg_parameterized</photonic_model>
<svg_filename>source/wg_example_arc/wg_example_arc.svg</svg_filename>
<parameter_filename>source/wg_example_arc/wg_example_arc.json</parameter_filename>
<datafile_directory>source/wg_example_arc</datafile_directory>
</element> - 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.
Running this command, the library is compiled and installed to INTERCONNECT. You can open INTERCONNECT and check the newly created and installed compact model library. It should contain compact models for all the desired waveguide types.
Taking the model further
Important model settings
- Two photonic models are supported by the waveguide workflow. In run_waveguide_collection.lsf, config.photonic_model needs to set to either "wg_parameterized" or "waveguide_back_annotation" for parameterized waveguide photonic model or back-annotation waveguide photonic model, respectively.
- In run_waveguide_collection.lsf, config.simulation.run is set to True to run the simulation results of which will be saved in the templates/wg_example/working_dir/ folder. For consecutive runs where simulation does not need to be repeated, config.simulation.run can be set to False and previous simulation results will be used.
- In run_waveguide_collection.lsf, config.override.loss_type is set to “sum” and the loss value recorded in output json files will be the sum of the user provided loss and loss calculated from automated simulation.
- In run_waveguide_collection.lsf, config.override.type is set to “prioritize_simulation” and optical index information (neff/ng/D) are captured from the automated simulation.
- In run_waveguide_collection.lsf, config.visualization.dimension_to_plot is set to “width” and mode information vs width is visualized with every run.
Updating the model with your parameters
Instructions for updating the model based on your device parameters
As a PDK designer, calibrating the compact model to your process is critical. The templates we provide contains generic data. Please update the template that best matches your process, device specifications and measured data. To update the model with your parameters and know about all the capabilities of the waveguide workflow please see Waveguide Workflow Guide.
Also for more detail on running CML Compiler please visit Creating a Custom CML with CML Compiler.