The VCSEL Design Tool is currently released as a beta feature. For more information, please contact us via the contact form, or via the Ansys Innovation Space.
VCSEL devices are grown layer by layer using different materials or alloy compositions, which is typically the case for the distributed Bragg reflector (DBR) mirrors and the active region. While it is possible to create these layers one-by-one using the primitive geometries or STEP import features in Ansys Lumerical Multiphysics™, the large number of layer necessitates the development of a solution for rapid structure generation. The solution to achieve this involves user-defined script functions that automatically import layers from a spreadsheet file and create corresponding simulation objects for the VCSEL device in the Object Tree.
This article will detail the required format of the spreadsheet, usage of the user-defined script functions, and additional usage notes on these methods to quickly create VCSEL device models.
General Workflow
While the automatic layer import scripts drastically speed up the construction of the VCSEL model, additional steps are often required after importing the file to generate the full model, such as
- Adding additional device geometries such as electrical contacts, oxide aperture, and substrates
- This can be achieved by adding in additional structures. More information on setting up geometries can be found in the “Structures” section of the VCSEL Design Tool User Manual.
- Adding monitors for beam profiles or other characteristics
- More information on setting up monitors can be found in the “Monitors” section of the VCSEL Design Tool User Manual.
- Check and adjust electrical material properties
- More information about material properties be found in the Electrical/Thermal Materials Knowledge Base article, and in the See Also section at the end.
- Check fitting of optical material refractive index
- More information about refractive index fitting can be found in the “Fitting Configuration Tab” section of the Optical Materials Knowledge Base article.
- Adjust solver convergence options
- More information on solver convergence settings can be found in the Troubleshooting Convergence Errors in VCSEL Knowledge Base article.
Spreadsheet File Format
A sample spreadsheet has been included with this article in the download section.
The following general notes should be followed when constructing the spreadsheet:
- The header (top) row of the layer table must include expected column names and the first column must be named “Layer”, which indicates row indices starting at 1 and increasing by 1 from bottom to top. There should be no empty rows until after the final row. All content in the spreadsheet before this layer table header row will be ignored.
- Each subsequent row must start with a number in the “Layer” column, representing the index of that row, as explained in the previous point.
- The final (bottom) row of the layer table is the one that does not start with a number in the “Layer” column. For example, it can start with “Wafer substrate” to indicate where the layers end.
- The spreadsheet can be created in Excel, but must be saved as .csv to be read by the user-defined script functions.
The meaning for each required column can be found in the table below, all columns other than those listed will be ignored by the software.
Note: Spellings and capitalizations of the column names must be exact.
| Column | Description |
| Layer | Layer number, must be a numerical value. |
| Material | Material name, ordering of atomic species must match those found in the material database. The name must include (x) for ternaries, or (x) and (y) for quaternaries, in the proper location. The alloy fractions (x) and (y) can be left as variables or have fixed values, for example (0.2). |
| Group | Object group of this layer, must be a numerical value. This value must be defined. |
| Repeat | How many times this layer is to be repeated. This value must be defined. For example, if it is a single layer it should be 1. All layers in the same structure group should have the same Repeat number. For example, if there are three layers A, B, C with repetition 3 in some Group, the resulting unwrapped layer geometry is ABCABCABC. |
| X_Start | Concentration for alloy fraction x in an alloy at the bottom of the layer. The material name in that layer should include (x) substring as explained under Material. |
| X_Finish | Concentration for alloy fraction x in a ternary alloy at the top of the layer. A linear grading between the start and finish values is used if X_Finish is different from X_Start. |
| Y_Start | Concentration for alloy fraction y in a quaternary alloy at the bottom of the layer. The material name in that layer should include (y) substring as explained under Material. |
| Y_Finish | Concentration for alloy fraction y in a quaternary alloy at the top of the layer. A linear grading between the start and finish values is used if X_Finish is different from X_Start. |
| Thickness | Thickness of layers. If the layer is repeated this is the thickness of each repeated layer. The units of thickness must be specified by appending one of substrings “_(nm)”, “_(um)”, “_(cm)”, “_(m)” to the header row name (e.g. “Thickness_(um)”). |
| Type | Doping type of the layer, accepted parameters are “N” for n-doped, “P” for p-doped, and “U/D” for undoped. |
| CV_Start | Doping concentration in 1/cm3 at the bottom of the layer. |
| CV_Finish | Doping concentration in 1/cm3 at the top of the layer. A linear grading of doping is used if the CV_Finish is different from CV_Start. |
Script Usage
An example main script (.lsf) to import the layers, along with the necessary encrypted file (.lsfx) with user-defined script functions where various csv import functions are defined, have been included with this article.
To execute the example files, place the main script (vcsel_csv_import.lsf), the user-defined functions script (vcsel_create_functions.lsfx), the layer definition spreadsheet (csv_import_test.csv), and the custom material library file (streiff_2004_mat_params.ldev) in the same directory. Then, change the current working directory to that directory and run the main script file. The script generates an .ldev project file that is the same name as the .csv input file, and saves it in the working directory, overwriting any existing file with the same name.
The custom material library file is not required, and you can set the customMaterialDatabase string in the main script to an empty string if you wish to use the default material library.
The format and meaning of input parameters are documented in the script header comments.
Some additional behaviours of the script are described below:
The layer indices for the radius input are overall layer numbers, which accounts for layers in the table and their repeats (so they are in general different from row indices in “Layer” column).
The script merges equivalent layers (e.g. layers with the same material, regardless of doping). The doping profile is preserved.
The
abruptInterfaceGradingoption allows the script to detect abrupt interfaces and inserts an additional layer to grade the alloy composition with a smooth transition region of specified width using an error function grading shape. The transition region is evenly spread into each side of the interface. The detection is for non-graded alloys of different composition. A diagram below depicts interface indices, layer indices, and width for a 3-layer structure with abrupt interface grading.
Note: For this grading, a new layer is inserted at the positions of all interfaces with indices less than or equal to 2, preserving the total thickness.
See Also
VCSEL Design Tool – User Manual, Workflows for VCSEL Devices, Understanding band offsets in heterostructures, Graded Optical Alloys, Semiconductor vs. Alloy Electrical Material Types for Constant Fraction Alloy Materials, Applying effective materials for DBR layers in the VCSEL design tool