In this article, we demonstrate the dynamic import of a KLayout library cell into Lumerical to perform design sweeps and characterizations. The feature supports dynamic import into Lumerical FDTD, MODE, and all tools under the Finite Element IDE, including CHARGE, HEAT, FEEM, MQW, DGTD. This example works on:
Operating System | Lumerical | KLayout |
Windows 10 | 2023 R1.3 and later | 0.28.10 |
Windows 11 | 2023 R1.3 and later | 0.27.5, 0.28.10 |
Red Hat Enterprise Linux 7.9 | 2023 R1.3 and later | 0.28.9 |
Note: Use specified versions of KLayout as not all versions of KLayout are supported and tested. Also, Linux support has not been fully tested and supported. Please proceed with caution. |
In this example, the workflow imports KLayout library cell geometry and parameters into FDTD, MODE, and Finite Element IDE. The workflow only works for KLayout cells that are registered in a particular technology and library.
Installing Lum PDK in KLayout
Lum PDK is an example KLayout PDK used to demonstrate the flow. Any KLayout PDK with associated technology and libraries will work in this flow.
Download and unzip the package. Copy the Lum folder to:
-
- On Windows: C:\Users\<USER NAME>\KLayout\salt
- On Linux: /home/<USER NAME>/.klayout/salt
For more information on files in a KLayout PDK, please refer to Lumfoundry PDK and KLayout User Manual for further details.
Check that Lum PDK is registered in KLayout by opening KLayout and checking that the Lum technology and the Lum library are available.
Steps to Run
Note: Safe mode must be turned off for the workflow to operate. |
Step 1: Run the script
- Ensure that klayoutintegrationgui.lsfx and klayoutgetgeometry.lsfx are in the same directory.
- Open FDTD, MODE, or Finite Element IDE and run klayoutintegrationgui.lsfx. Use the feval command in script prompt.
> feval("/path/to/klayoutintegrationgui.lsfx");
FDTD |
MODE |
Finite Element IDE |
Step 2: Complete the wizard
- Find and select the KLayout executable.
- Find and select the process file. This can be found under Lum\tech\Lum_process_file.lbr. Ensure that the process file contains and defines layers found in the library cell's layout. After hitting “Next”, the workflow extracts data from KLayout, which may take up to 10s of seconds to complete. Note that a command line window may pop up, please ignore this window.
- Select the library cell to import. The library cells are organized by <technology name>::<library name>::<cell name>.
The prompts to each of these steps is shown above.
- Review cell params and simulation setup: Set cell params as desired. If the simulation setup section is available, ensure that the “Light injection layer” and “Port layer” are specified appropriately and verify the setup before running simulations.
- The FDTD simulation region is centered in the z-axis by the “Light injection layer”
- The ports are generated based on rectangles found on the “Port layer”
After hitting “Next”, the workflow extracts cell geometry and params from KLayout, which may take up to 10s of seconds to complete. Then, the device geometry and simulation region are generated. Note that a command line window may pop up, please ignore this window.
- Import Geometry: In FDTD and MODE, once cell geometry is imported, an analysis group with a setup script is generated in the “Object Tree”. In Finite Element IDE, once cell geometry is imported, the setup script is contained in the "model" group in the "Object Tree".
FDTD |
MODE |
Finite Element IDE |
In FDTD, the analysis group and setup script allows changes to the:
-
- Cell params that will reflect in its geometry
- FDTD simulation region
- Port geometry
- Layer definitions
In MODE and Finite Element IDE, the analysis/model group and setup script allows changes to the:
-
- Cell params that will reflect in its geometry
Parameter Sweeps
Parameter sweeps can be conducted to characterize the device.
- In the “Optimizations and Sweeps” tab, add a sweep
- Set the parameter to sweep. As shown below, the parameters defined in the analysis group will be available under its “Properties”:
- Run sweep. Once finished the results, will be available for visualization. You can find more information about Lumerical Parameter Sweep Utility here.