A waveguide model that includes backscattering behavior.
Note: For legacy data format (2022 R2.4 and older) please visit following link:
Waveguide Backscatter- Lumfoundry Template (Legacy)
Template: wg_backscatter
Photonic Model: wg_parameterized
Quality Assurance Test: wg_parameterized QA
Supported Parameters: waveguide length, waveguide width, temperature.
Interoperability with Cadence Virtuoso:
- Circuit design flows using INTERCONNECT model: Yes.
- Circuit design flow using photonic Verilog-A model: Yes.
Modeling Data
The source data template for a simple waveguide element can be divided into two sections.
- For new users (continue with the following section: Basic data requirement)
- Advanced users ( continue with section: Complete Data Requirement )
The simple waveguide template can be used to create an advanced compact model for a custom simple waveguide. The template contains a lot of different modeling data to create an accurate model. However, not all these data need to be updated by users. The fastest and simplest way to modify the template data and create a custom compact model is to only update the data listed in the 'basic data requirement section' below, while all the remaining data (which are illustrated in detail in subsequent sections) can stay at their default value.
Note: Advanced users please jump start with Complete Data Requirement (for advanced users) section.
Basic data requirement (for new users)
The basic and minimum data required to build the simple waveguide model is described below.
general
"general" is a struct with the following fields:
Field | Type | Description |
---|---|---|
description | string | A string containing a brief description of the model, which will be displayed to the end user. |
notes | cell |
A cell array providing model notes which will be displayed to the end user. Each element of the cell is a struct with the fields:
|
ports
"ports" is a struct with the following fields:
Field | Type | Description |
---|---|---|
opt_1 |
struct with the fields described in the table below | Port definition corresponding to the first and second waveguide ports. |
opt_2 |
Each struct above consists of the following fields:
Field | Type | Description |
---|---|---|
name | string | The name of the port, which will be visible to the end user. This name should be consistent with the name that will be used for netlisting. |
pos | string |
The side of the model which the port will be displayed on, either "Left", "Right", "Top", or "Bottom" |
order | number |
The order at which the port is listed in a netlist. |
parameters
The "parameters" struct is what provides wg_parameterized with it's flexibility. It enables the creation of waveguide elements with any number of user-facing parameters. This can be parameters that affect the mode properties of the waveguide or the ones that only affect the waveguide length. "parameters" is a struct with the following fields:
Field | Type | Description |
---|---|---|
parameter_X | struct with fields described in table below |
Note: If visible_to_user is set to false for any of these parameters, the dimension of this parameter for the mode properties will be collapsed, and thus any variation of mode properties in the dimension of this parameter will not be captured in the final model. |
length_parameter_X
|
struct with fields described in table below |
Note: For a straight waveguide the name of this parameter should be set to "wg_length". However for other types of waveguides that their length is described by other parameters (e.g. as radius), such parameters need to be defined as length_parameter_X and the relationship between parameters and "wg_length" need to be defined within "length_formula" in "model_data" section. |
Each struct above consists of the following fields:
Field | Type | Description |
---|---|---|
name |
string |
Name of the parameter. |
kind | string |
"NonQuantity": Allows 'unit' to be blank |
default |
number |
The nominal value of the parameter in SI units. Note: Parameter defaults for the parent and child elements need to be the same. |
visible_to_user |
boolean |
A flag to enable/disable the parameter in the model. |
min
|
number |
Minimum allowed value if the visible_to_user is set to True. |
max
|
number |
Maximum allowed value if the visible_to_user is set to True. |
model_data
"model_data" is a struct with the following fields:
Field | Type | Description |
---|---|---|
mode_data |
cell |
M x 1 cell array where M is the number of modes. Each element of the cell is a struct with fields:
Notes:
|
wavelength |
matrix |
W x 1 matrix with the wavelengths (m) for which the properties below are evaluated, where W is the number of wavelengths. For best results, use three points per band. Example: [1260e-9, 1310e-9, 1360e-9, 1530e-9, 1550e-9, 1625e-9] for O-band (1260-1360nm) and C-band (1530-1565nm). |
parameter_X |
matrix |
parameter_X with X being an integer is a matrix containing parameter points corresponding to the mode-altering parameters defined in "parameters" section. Waveguide mode properties ( ng, neff, loss and D) should be provided evaluated and parameterized at these parameter points. |
neff |
matrix |
The effective index of waveguide as a WxP1x..PnxM matrix where W is the number of wavelength points, P1 to Pn are the number of points provided for parameter_1 to parameter_n, and M is the number of modes. Note: For more information on mode properties, see Mode Properties in photonic model page. |
ng |
matrix |
The group index of waveguide as a WxP1x..PnxM matrix where W is the number of wavelength points, P1 to Pn are the number of points provided for parameter_1 to parameter_n, and M is the number of modes. Note: For more information on mode properties, see Mode Properties in photonic model page. |
D |
matrix |
The dispersion(s/m/m) of waveguide as a WxP1x..PnxM matrix where W is the number of wavelength points, P1 to Pn are the number of points provided for parameter_1 to parameter_n, and M is the number of modes. Note: For more information on mode properties, see Mode Properties in photonic model page. |
loss |
matrix |
The loss (dB/m) of waveguide as a WxP1x..PnxM matrix where W is the number of wavelength points, P1 to Pn are the number of points provided for parameter_1 to parameter_n, and M is the number of modes. Note: This must be a positive number. |
length_formula |
string |
A string containing lumerical script which defines the waveguide length as wg_length, if "wg_length" is not defined as a parameter. This script can use the variables defined in under "parameter_x" and "length_parameter_x". |
length_formula_veriloga (optional) |
String |
A string containingVerilog-A secript which defines the waveguide length as wg_length, if "wg_length" is not defined as a parameter. This script can use the variables defined in under "parameter_x" and "length_parameter_x". For Verilog-A models only. |
backscatter_loss |
matrix |
The backscatter loss (dB/m) as a WxP1x..PnxM matrix where W is the number of wavelength points, P1 to Pn are the number of points provided for parameter_1 to parameter_n, and M is the number of modes. Note: This is only for length-dependent loss, do not include mode mismatch losses at the ports of the waveguide. |
QA
"QA" is a struct with the following fields:
single test
Field | Type | Description |
---|---|---|
parameter
|
struct |
mode: An integer containing the ID of the mode for which the QA test is run. |
random test
Field | Type | Description |
---|---|---|
parameter
|
struct |
max: Maximum value |
Complete data requirement (for advanced users)
The complete data section provide a complete reference of data supported by the simple waveguide model including the basic required data described in the previous section. The descriptions of all the fields in the simple waveguide source data template are described below.
general
"general" is a struct with the following fields:
[[snippet||11549514081811]]
ports
"ports" is a struct with the following fields:
[[snippet||11977740050067]]
Each struct above consists of the following fields:
[[snippet||11549759363603]]
parameters
The "parameters" struct is what provides wg_parameterized with it's flexibility. It enables the creation of waveguide elements with any number of user-facing parameters. This can be parameters that affect the mode properties of the waveguide or the ones that only affect the waveguide length. "parameters" is a struct with the following fields:
[[snippet||12005982527507]]
Each struct above consists of the following fields:
[[snippet||12006995584019]]
model_data
"model_data" is a struct with the following fields:
[[snippet||12007715196563]]
backscatter_loss |
matrix |
The backscatter loss (dB/m) as a WxP1x..PnxM matrix where W is the number of wavelength points, P1 to Pn are the number of points provided for parameter_1 to parameter_n, and M is the number of modes. Note: This is only for length-dependent loss, do not include mode mismatch losses at the ports of the waveguide. |
length_formula |
string |
A string containing lumerical script which defines the waveguide length as "wg_length", if it is not defined within the parameters cell array. This formula can make use of variables with the names of parameter_X and length_parameter_X defined in parameters section. |
length_formula_veriloga (optional) |
string |
A string containing Virtuoso Verilog-A script which defines the waveguide length as "wg_length", if it is not defined within the parameters cell array. This formula can make use of variables with the names of parameter_X and length_parameter_X defined in parameters section. Note: This is only required for Verilog-A CML only. |
QA
"QA" is a struct with the following fields:
[[snippet||12014063100051]]