A parameterized waveguide directional coupler with fixed arm bends and no temperature dependence.
Note: For legacy data format (2022 R2.4 and older) please visit following link:
Directional Coupler (Parameterized) - Lumfoundry Template (Legacy)
Template: pdc_strip_c
Photonic Model: directional_coupler_parameterized
Quality Assurance Test: directional_coupler_parameterized QA
Parameters: coupling gap, coupling length.
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 directional coupler element can divided into two sections.
- For new users (continue with the following section: Basic Data Requirement)
- For advanced users (continue with section: Complete Data Requirement)
The directional coupler template can be used to create a very advanced compact model for a custom directional coupler . The template contains a lot of different modeling data to create an accurate model. However, not all these data need to be updated by the user. The fastest/ simplest way to modify the template data and create a custom compact model would be to only update the values of the data listed in the 'basic data requirement section' below, while all rest of the data (which is illustrated in detail in subsequent sections) can be left at their default value.
Note: Advanced users please jump start with Complete Data Requirement (for advanced users) section.
Basic data requirement section (for new users)
The basic or minimum data required to build the directional coupler model is described below.
general
"general" is a struct with 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 that provides 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 following fields:
Field | Type | Description |
---|---|---|
opt_X |
struct with fields described in table below | Port definition corresponding to the X th optical port. X = [1:4]. |
Each field above consists of 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. |
dir | string | The directionality of the port, either "Input", "Output", or "Bidirectional" |
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
"parameters" is a struct with following fields:
Field | Type | Description |
---|---|---|
coupling_gap | struct |
A struct defining the coupling gap of the directional coupler with fields as described in the parameters structs. Note: The range over which coupling_gap data is provided must be larger than or equal to the range of corresponding parameter. |
coupling_length | struct | A struct defining the coupling length of the directional coupler with fields as described in the parameters structs. |
length_parameter_X | struct | A struct which describes length properties for Xth length parameter (X being an integer). For detailed information about this variable, see length parameters structs. |
parameters structs
Field | Type | Description |
---|---|---|
name |
string |
The name for display in the Property View window. |
default |
number |
The nominal value of the parameter in SI unit. |
unit |
string |
The default unit for display in the Property View window. |
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. |
length parameters struct:
length_parameter_X structs can be used to define length properties. Each structure defines properties of a single parameter, and contains the following fields:
Field | Type | Description |
---|---|---|
name |
string |
Name of the parameter. |
kind | string |
The type of quantity described by this parameter. The values for this parameter correspond to the allowed values within the "Kind" dropdown menu within the Property Editor in INTERCONNECT. The "Kind" determines the units. Some example kinds are:
|
unit |
string |
The unit of the parameter. This should be a valid unit with respect to the parameter kind set in the "kind" field. Some example units are:
|
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. |
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. |
reciprocal_veriloga |
boolean |
The relationship between the parameter points used for describing parameterized mode properties in "model_data" section, and the user-facing values. Set to 1 or 0 to enable or disable reciprocal relationship, respectively. Note:
|
Note: that most of these fields are visible to the end user!
model_data
"model_data" is a struct with following fields:
Field | Type | Description |
---|---|---|
mode_data |
cell |
n x 1 cell array (n number of modes). Each element of the cell is a struct with fields:
|
waveguide_data |
struct with fields described in waveguide_data table |
Data required for modeling the waveguide sections. |
addloss_data |
struct with fields described in addloss_data table |
Struct containing the additional loss (dB) associated with the coupling of different wavelengths and modes. |
coupler_data |
struct with fields described in coupler_data table |
Struct containing the coupling data. |
coupler_data
Field | Type | Description |
---|---|---|
wavelength
|
struct |
Wavelength range (m) for which couplercoeff is valid with following fields:
|
couplercoeff_data | struct |
Struct containing coupling coefficient data with fields described in table below. |
couplercoeff_data
Field | Type | Description |
---|---|---|
coupling_gap | matrix |
G x 1 matrix containing the coupling gaps for which the values in couplercoeff correspond, where G is the number of coupling gaps provided. Note: Data must be provided for at least two data points (G > 1). If only one data point is available, please provide this field a 2 x 1 matrix by duplicating the data point. |
couplercoeff
|
matrix |
M x G x 2 x 2 matrix containing the coupling coefficients of the directional coupler, where M is the number of modes, and G is the number of coupling gaps. For more detail on how this is used, see the Cross Coupled Power in photonic model page. |
addloss_data
Field | Type | Description |
---|---|---|
wavelength |
matrix
|
F x 1 matrix containing the wavelengths (m) for which the additional loss in addloss is evaluated, where F is the number of wavelengths for which data is provided. |
addloss |
F x M matrix containing the additional loss (dB) associated with the coupling of different wavelengths and modes, where F is the number of wavelengths, and M is the number of modes. For more detail on how this is used, see Cross Coupled Power in photonic model page |
waveguide_data
Field | Type | Description |
---|---|---|
wavelength |
number |
Center wavelength (m) of the band for which the mode properties are provided. |
waveguide
|
struct with fields described in table below |
Mode properties for modeling the coupler waveguide |
Struct listing mode properties for the waveguide section consists of following fields:
Field | Type | Description |
---|---|---|
length_formula |
string |
A string containing lumerical script which defines the waveguide length of each of the four bent arms as bend_length. This string uses the properties in length_parameter_X variable. Note: This model assumes that all the arms have the same length. The total length of each waveguide is given by \(2L_{bend} + L_{coupling}\) |
neff |
number |
Effective index of the waveguide section |
ng
|
number |
Group index of the waveguide section. |
loss
|
number |
loss (dB/m) of the waveguide section. |
D
|
number |
Dispersion (s/m/m) of the waveguide section |
Complete data requirement (for advanced users)
The complete data section provides a complete reference of data supported by the directional coupler model including the basic required data described in the previous section. The description of all the fields in the directional coupler source data template are described below.
general
"general" is a struct with following fields:
[[snippet||11549514081811]]
ports
"ports" is a struct with following fields:
[[snippet||12294651862163]]
Each field above consists of following fields:
[[snippet||11549759363603]]
parameters
"parameters" is a struct with following fields:
[[snippet||11644750903571]]
coupling_gap | struct |
A struct defining the coupling gap of the directional coupler with fields as described in the parameters structs. Note: The range over which coupling_gap data is provided must be larger than or equal to the range of corresponding parameter. |
coupling_length | struct | A struct defining the coupling length of the directional coupler with fields as described in the parameters structs. |
length_parameter_X | struct | A struct which describes length properties for Xth length parameter (X being an integer). For detailed information about this variable, see length parameters structs. |
parameters structs
[[snippet||11720299494931]]
length parameters struct:
length_parameter_X structs can be used to define length properties. Each structure defines properties of a single parameter, and contains the following fields:
[[snippet||12006995584019]]
Note: that most of these fields are visible to the end user!
model_data
"model_data" is a struct with following fields:
[[snippet||12295644239635]]
QA
"QA" is a struct with following fields:
[[snippet||12296996906387]]