In this example, Lumerical and HFSS capabilities in modeling a travelling waveguide modulator are combined with optiSLang to provide powerful optimization capabilities for finding designs with the best performance.
Overview
Understand the simulation workflow and key results
This article is built on the existing example of modeling an Si waveguide, phase modulated by a reversed bias pn junction, driven by an Al coplanar transmission line. Here we aim to find the designs with best figures of merit, specifically phase shift, loss, and velocity mismatch as a function of selected inputs, applied doping and electrodes geometry. For this the individual component level simulations, charge, optical, and RF modeling are tied into optiSLang. There a metamodel of the design is created and optimization over a vast number of inputs are performed to find the best designs. INTERCONNECT can be added to optiSLang to also find the BER of the selected design.
Step 1:
This step provides quick instructions for running each of the individual simulations. This includes CHARGE, MODE, HFSS, and INTERCONNECT project files. For a detailed description of the component level and circuit level analysis of the device in Lumerical, please refer to the original Travelling Wave Modulator example .
Step 2:
The optiSLang optimization file consists of three main modules. First, the Parametric solver system which relates the individual simulations with each other and is needed for creating a metamodel. This is where project files and corresponding script files are loaded into each block, and inputs and responses are identified.
Afterwards a sensitivity wizard is applied to the system to create the metamodel module (here named AMOP). Running this module will run the component level simulations as many times as specified in its settings and will obtain the results for the corresponding inputs.
Step 3:
Finally, the optimization wizard is used to find the best results as a function of chosen inputs. This relies on the created metamodel, and is therefore able to find the best designs over a wide range of inputs very quickly. Here the corresponding module is named Evolutionary Algorithm.
Additional tips for working with the project files and handling the prompts in optiSLang is provided in Appendix .
Run and results
Instructions for running the model and discussion of key results
Step 1: Component level simulations
CHARGE, MODE, HFSS, and INTERCONNECT
- Open and run the file tw_modulator_DEVICE_par.ldev. The simulation calculates and exports the charge profile across the waveguide as a function of bias voltage. The model object is set up to include and apply the input CHARGE parameters. This is needed for optiSLang to read the inputs and apply them in next steps.
- Open and run the file tw_modulator_optical_MODE.lms. The model object is set up for results such as loss, group index, and effective to be accessible by optiSLang.
- Open and run file "RF Transmission Line.aedt". To run go to the Simulation tab and click on Analyze All. The file is set up to calculate the RF properties of the transmission line including impedance, effective index, and loss. Once run the results can be accessed and visualized in the objects tree under RF Transmission Line > transmission line (DrivenModal) > Results . These are also used by optiSLang later on.
Step 2: optiSLang - Creating the metamodel
- Open the file TWMZM_optimization.opf; if given a prompt about locating files, you can choose the option to relocate automatically (more information in Appendix). This is the optimization file that uses the input parameters from component level simulations (CHARGE, MODE, and HFSS) to create the initial sample set (meta model) and then extensively optimize and visualize the results.
- Load the script tw_modulator_DEVICE_cac.lsf in optiSLang. For this double click on CHARGE in the AMOP module. If given a prompt about reference values, choose the first option (more information in Appendix). In the settings tab, click on Change settings and select the script file in the Custom script section. The script is already setup to calculate the slab resistance and junction capacitance when used by optiSLang (running the file is not needed). The script follows a specific template in order to work with optiSLang which is described in Updating the model with your parameters section.
- Load the script tw_modulator_optical_MODE_par.lsf in optiSLang which is set up to calculate the optical properties of the waveguide as a function of voltage. For this similar to step 2, select the script in settings of FDE in the AMOP module.
- Double click on the AMOP module itself. This is the created metamodel sampler which specifies settings such as optimization parameters, criteria, and number of samples.
- Go back to Scenery, right click on AMOP and select show post processing. The file already contains the results for this metamodel and the visualizations indicates results such the loss against specified inputs, n and p doping. This is the basis for next step which allows a quick assessment over a vast range of inputs.
The metamodel optimization focuses on three figures of merit: minimization of velocity mismatch, minimization of loss, and increasing the phase shift with regards to voltage (minimizing Vpi/Lpi). These are specified in the Criteria tab:
The optimization is done over the doping value of waveguide n and p implants and their position (CHARGE), and the electrodes gap and width (HFSS):
These inputs are selected in the Parameter tab of the module.
Finding the appropriate number of samples is important. The component level simulations are run as many times as specified in the Adaption tab. Increasing this number improves the probability of reaching a good representation of the model, while increasing the time needed for completion. You can set the sampling options by checking the 'show advanced setting' button. For this project we chose the Advanced Latin Hypercube Sampling option with 60 initial samples and a 70-30 split between the importance of local CoP (Coefficient of Prognosis) and optimization criteria. We also chose 12 samples per iteration with a minimum of 6 iterations to generate the metamodel. Once run the individual results for each design is reported in the Result designs tab (below) and the metamodel is generated.
In the post-processing results (step 2.3) the model quality is reported in the CoP matrix. The total effectivity for each input is reported in red. Clicking on each of these values also updates the 3D surface plot, representing the dependency of the output on the specified inputs. Below Vpi_Lpi as a function of n and p doping values is shown as an example:
With the metamodel created, we can proceed to the optimization step for identifying the best designs.
Step 3: optiSLang - Optimization and best designs
- Double click on the Evolutionary Algorithm module. Settings including the optimization method, maximum number of samples, and criteria are set up for this module.
- Go back to Scenery, right click on the module and select show post processing. The overview of all individual designs are shown in a Pareto plot (2D or 3D). Best designs with their input values can be selected here.
Here we are aiming for best outputs for phase shift, loss, and velocity mismatch. In the post processing page, you can drag the 3D Cloud plot from the Visuals section to get the overview of all designs for these three figures of merit. The best design are all the points located at the edge of the plot also referred to as the Pareto frontier. To be able to better visualize these designs, click on Select best design(s), click on Invert selection, and then on the plot right click and select deactivate:
As mentioned there are several designs reported as the best, since there will be inevitable compromise between the figures of merit. Depending on the model requirements or optimization priorities the final selection could be different. You can click on any of the points, which will update the plots for corresponding input values and results:
For example, here we can see the exact values for doping concentration, offsets, and electrode specifics to obtain the results for the selected best design.
The analysis can be furthered by including INTERCONNECT in the parametric solver system to also obtain BER. The values found in this step can be used to update the model and monitor the reduction in BER compared to an initial design. For detailed instructions on this refer to "Taking the model further section".
Updating the model with your parameters
Instructions for updating the model based on your device parameters
Running the project: Currently in optiSLang, the metamodel and optimization results for the given settings are stored in the project file. To apply any changes you make and obtain new optimization results, click on the run button located at top.
Using new input parameters: The inputs in CHARGE and FDE are defined in the model object in order to be accessible by optiSLang. To use new inputs in your optimization, make sure they are defined in the model object. You would then need to add them as Parameters in their AMOP block (drag the input from the Inputs column to Parameter column on the left).
Optimizing for other results: For this make sure the figure of merit is accessible from CHARGE (defined in the script tw_modulator_DEVICE_cac.lsf) and FDE (defined in the model object and script tw_modulator_optical_MODE_par.lsf), and the results is used as a response in optiSLang (by dragging them from the Outputs section to Responses). Then update the criteria for optimization in steps 2 and 3 (AMOP and Evolutionary Algorithm settings) with the figure of merit of interest.
Updating script files: Here the script files are used for post-processing (e.g. calculating capacitance and resistance) and exposing the results (e.g. Vpi_Lpi). When updating the files it is important to follow the existing template. The files consist of three functions; the first two define the results and inputs for optiSLang. The third function can be used for post processing and it's where the calculated results are returned by assigning them to the defined outputs in the first function.
Taking the model further
Information and tips for users that want to further customize the model
A separate optiSLang project file is provided with INTERCONNECT included in the parametric solver system, enabling the calculation of BER for the modulator. Parameters related to the waveguide, optical modulator, and travelling wave electrode are gathered from CHARGE, MODE, and HFSS to create the compact model. The inputs can be updated with values found from step 3 to monitor the improvements to this figure of merit.
- Open tw_modulator_INTC_eye.icp and make sure the file is run.
- Open TWMZM_single_run.opf. Double click on Parametric System and specify the values for each input in the Parameter tab.
- Run the project. The results including the BER can be accessed in the Result designs tab of the Parametric system.
Additional resources
Additional documentation, examples, and training material
Related publications
- Hao Xu et al., "Demonstration and Characterization of High-Speed Silicon Depletion-Mode Mach–Zehnder Modulators", IEEE Journal of Selected Topics in Quantum Electronics, Vol. 20, No. 4 (2014)
Related Ansys Innovation Courses
Appendix
This section provides additional information about working with the OptiSLang project files, including some of the prompts when opening the project.
Updating the launcher directories: The directory for the Lumerical and HFSS launcher can be different for each user for example depending on the installed version. For each block in the AMOP module (CHARGE, FDE, and HFSS) make sure the directory is selected correctly. For this go to the Settings tab and check the executable path.
Relocating the files: When opening optiSLang you might get a prompt related to finding the associated files from other simulations. You might decide to use one of the three options (e.g. automatic or custom relocating) depending on your preferences.
Referenced values: If the initial input values are different between the saved component level simulation and the one specified in optiSLang, you will get a prompt asking you to choose the value of interest. Choose either of the two options depending on which values you want to proceed with.
Newer Versions: You might receive a prompt stating the file has been created with a former version of optiSLang. This shouldn't pose any issues as long as you keep using the newer release of the software.