In this example, we use the Inverse Design Toolbox (lumopt) to optimize a 3D SOI grating coupler. For this optimization, we will use the results of the Inverse design of grating coupler (2D) example as a starting point, but other initial guesses can be used.
Overview
Understand the simulation workflow and key results
Lumerical's inverse design capability provides unparalleled optimization performance by combining the power of gradient-based optimization routine with efficiencies found in fundamental properties of Maxwell equations. This example will demonstrate how to use the inverse design method to generate a 3D TE silicon on insulator (SOI) grating coupler design with maximized coupling efficiency. Moreover, we'll demonstrate how to modify the example with your parameters so you can reuse this approach for your own design.
This example draws extensively from the LumOpt framework:
- Photonic Inverse Design Overview - Python API
- Getting Started with lumopt - python API
- Optimizable Geometry - Python API
Step 1: Define the initial guess
Starting from the 2D optimization results or any custom starting point, we run 2 parameter sweeps to find:
- the optimum grating starting position
- the optimum taper angle
Step 2: Run the optimization with feature constraint
Using the settings from step 1, we run the inverse design optimization of the grating coupler.
Step 3: Extract GDS file
Using the best solution from step 2, we generate the GDS file of the device and plot the figure of merit and back reflection.
Run and results
Instructions for running the model and discussion of key results
Step 1: Define the initial guess
- [[step]]Open the file [[pid_gc_3d_sweeps.py ]] in FDTD
-
Modify the simulation settings as necessary and run the script
- "perform_pos_sweep=True" to run the sweep over the grating starting point
- "perform_angle_sweep=True" to run the sweep over the taper angle
In this step, we load the results from the 2D photonic inverse grating coupler design optimization (provided in the JSON file [[pid_gc_2d_initial.json]] ) and perform a sweep over the grating starting position and/or over the taper angle to find their optimum values.
The script will look at the transmission value at the center frequency. You can run the script [[pid_gc_plot_sweeps.lsf]] to plot the following figures:
The optimum position is found to be \(11.6 \mu m\) while \(27.5^{\circ}\) is the optimum angle. The results will be saved in [[pid_gc_3d_initial.json]].
NOTE: In this example, we start from the results of the 2D optimization, but any initial design can be used. The initial design should be provided in a JSON file with the following format: { "initial_params": { "_type": "matrix", "_size": [ n ], "_complex": false, "_data": [ X0, X1, X2, Where \(n\) is the number of data points, \(X_0\) the initial position of the first trench of the grating, and \(X_i\) represents the width of the \(i^{th}\) etched trenches and teeth, in micron. The last value, \(X_{n-1}\) is the distance between the last etched trench and the end of the grating coupler. In the Inverse design of a grating coupler (2D) example, the waveguide doesn't end after the grating. To use its results, we added a value corresponding to \(X_{n-1}\), arbitrarily set to \(0.2 \mu m\) to limit the footprint of the grating coupler. Since 2021 R1.1, Ring - Simulation Object supports ellipticity. The inner and outer radii can be set differently in x and y directions. This example was updated to take advantage of this feature. As a starting point, we use a circular ring and duplicate the values of \(X_i\). This is done when saving the file [[pid_gc_3d_initial.json]]. |
Step 2: Run the optimization with feature constraint
- [[step]]Open the file [[pid_gc_3d_optimization.py ]] in FDTD
- Modify the optimization parameters (feature constraint, figure of merit, bandwidth, etc.) as necessary and run the script
Here we load the initial design and parameters from step 1 and run the inverse design optimization. We enforce the feature constraint (set to 100nm) to ensure the device will be manufacturable.
A connector object (polygon) is added to transition from the waveguide to the grating coupler. its shape is initially based on the waveguide width and the taper angle.
The optimized parameters are:
- Grating position
- Taper angle
-
Grating with ellipticity
- \(X_1\), \(X_2\), \(\cdots\), \(X_i\), \(\cdots\), \(X_{n-1}\), widths of each etched trench and tooth in the x direction
- \(Y_1\), \(Y_2\), \(\cdots\), \(Y_i\), \(\cdots\), \(Y_{n-1}\), widths of each etched trench and tooth in the y direction
- Connector shape
This represents a total of 130 parameters that will be optimized and saved to [[pid_gc_3d_final.json]].
In this example, the figure of merit (FOM) is the transmission in the fundamental TE mode of the SOI waveguide.
Here, the optimization ended after 17 iterations, with a figure of merit around 55.3%.
Step 3: Extract the GDS file and plot the Figure of Merit
- [[step]]Open [[pid_gc_3d_extraction.py ]] file in FDTD
-
Modify the settings as necessary and run the script:
- "bandwidth=100e-6" sets the bandwidth for the plots
- "create_GDS=True" if you want to extract the GDS file (False otherwise)
- "plot_FOM=True" if you want to plot the Figure of Merit (False otherwise). If True, set the bandwidth as well
- "plot_backR=True" if you want to plot the back reflection (False otherwise). If True, set the bandwidth as well.
In this step, we generate the GDS file from the results of the optimization.
Additionally, we can plot the FOM and/or the back reflection over the desired bandwidth.
The script will also output the 1dB bandwidth, peak transmission, and peak back reflection.
Important model settings
Description of important objects and settings used in this model
Polarization: The chosen refractive index values are representative of an SOI chip manufacturing process. Because of the high refractive index contrast between silicon and silicon oxide, there is a large difference between effective indices of the two fundamental modes – TE and TM – of the integrated waveguide. For this reason, SOI grating couplers are strongly polarization selective. The presented design excites a TE mode since this is the most common choice, however, it is also possible to set up an optimization targeting the TM mode.
Tilting angle: The coupling efficiency depends heavily on how the fiber meets the top silicon oxide cladding layer. In this example, we use a Gaussian beam as an approximation of the output beam from the fiber. The end of the fiber is assumed to be polished at a small angle so that the fiber tilts as it is mounted on the top cladding. Such tilting prevents reflections into the fiber.
Etch depth: The coupling efficiency is highly sensitive to the grating’s pitch, duty cycle, and etch depth. For simplicity, a fixed etch depth is employed here, however, it can also be varied if the available fabrication process provides that degree of freedom.
Substrate: If a silicon substrate is present in the fabricated device, it should be included in the simulations. The substrate will have a noticeable impact on how light is coupled and cannot be omitted as is often done in other device designs.
Updating the model with your parameters
Instructions for updating the model based on your device parameters
The simulation setup and structure construction are done using the class "GratingCoupler" in the Python script [[pid_gc_3d_base_project_setup.py]].
The main parameters are set at the beginning of the main body of the Python scripts:
if __name__ == "__main__": n_bg=1.44401 #Refractive index of the background material (cladding) wg=3.47668 # Refractive index of the waveguide material (core) lambda0=1550e-9 bandwidth = 0e-9 polarization = 'TE' wg_width=500e-9 # Waveguide width wg_height=220e-9 # Waveguide height etch_depth=80e-9 # etch depth theta_fib_mat = 5 # Angle of the fiber mode in material theta_taper=30
Geometry: Parameters such as the waveguide dimension, etch depth, etc. are set when creating a "GratingCoupler" object.
gc = GratingCoupler(lambda0=lambda0, n_trenches = num_rings, n_bg=n_bg, n_wg=n_wg, wg_height=wg_height, wg_width=wg_width, etch_depth=etch_depth, theta_fib_mat=theta_fib_mat, dx=30e-9, dzFactor=3, dim=3)
If you need to have your own geometry defined for the grating coupler, corresponding changes should be made in the "GratingCoupler" class in the setup Python script. This might need changes in object span and location. The source, simulation region, mesh override, and field gradient and FOM monitors dimensions should also be adjusted accordingly to make sure they cover the entire structure properly.
Materials: The materials properties used for the core and cladding are defined in the "GratingCoupler" object. You can specify either a material from the database or just the refractive index. If using custom materials, make sure these materials were added to the FDTD material library.
For consistency with the 2D example, we use the same refractive indices: \(n_{bg}=1.44401\) for the cladding and \(n_{wg}=3.47668\) for the waveguide core.
Polarization: It is possible to set up an optimization targeting the TM mode. The polarization is defined by the variable polarization. This variable is passed to the "GratingCoupler" object and the optimization function, "runGratingOptimization" in the [[pid_gc_3d_optimization.py]] script.
Taking the model further
Information and tips for users that want to further customize the model
High-efficiency grating couplers: Couplers with an efficiency higher than 90% over a large bandwidth have been designed with FDTD using more sophisticated gratings, for instance, using multiple etching levels.
Additional resources
Additional documentation, examples, and training material
Related publications
- R. Marchetti, C. Lacava, A. Khokhar, X. Chen, I. Cristiani, D. J. Richardson, G. T. Reed, P. Petropoulos and P. Minzioni, “High-efficiency grating-couplers: demonstration of a new design strategy,” Scientific Reports 7, Article number: 16670, 2017. ( https://www.nature.com/articles/s41598-017-16505-z );
- Neil V. Sapra et.al, “Inverse design and demonstration of broadband grating couplers” IEEE Journal of Selected Topics in Quantum Electronics ( Volume: 25, Issue: 3, May-June 2019 )
- D. Taillaert, F. Van Laere, M. Ayre, W. Bogaerts, D. Van Thourhout, P. Bienstman and R. Baets, “Grating Couplers for Coupling between Optical Fibers and Nanophotonic Waveguides,” Japanese Journal of Applied Physics, vol. 45, no. 8a, pp. 6071-6077, 2006.
- T. Watanabe, M. Ayata, U. Koch, Y. Fedoryshyn and J. Leuthold, “Perpendicular Grating Coupler Based on a Blazed Antiback-Reflection Structure,” Journal of Lightwave Technology, vol. 35, no. 21, pp. 4663- 4669, 2017.
See also
- Photonic Inverse Design Overview - Python API
- Getting Started with lumopt - python API
- Optimizable Geometry - Python API
- Inverse design of grating coupler (2D)
- Grating coupler
- Broadband grating coupler
- MATLAB-driven grating coupler optimization
- SOI taper design
- Spot size converter
- Python API
- S-parameter simulator (SPS)
- S-parameter matrix sweep feature
- S-parameter file formats
- Relevant KX posts