This is an example of how the compound element model can be used to create a ring modulator using other elements in the library and also the primitives. The compound element will be useful in cases where a user needs to use elements form their own library as building blocks of a more complicated element. In such cases, a custom model can be built using compound element to model the behavior of the desired photonic device using other element in the library as building blocks.
Note: the compound element model is an advanced model. Please see other ring modulator examples in lumfoundry template for more typical ring modulator implementations.
Note: You are now visiting legacy data format page (2022 R2.4 and older). For current data format page (2023 R1.1 onwards) please visit following link:
Compound Ring Modulator (Statistical)- Lumfoundry Template
Template: compound_rm_stat
Photonic Model: compound_element
Quality Assurance Test:Custom QA
Statistically Enabled Parameters: user-defined (delta_width in this example)
Parameters: user-defined (radius in this example)
Virtuoso/Verilog-A Support: No
Required Data
Parameter Script File
Note: Certain categories of data listed below are optional for the case of “script” solution but not required for “file” solution. It means that if they are provided for “script” solution, CML Compiler will use them to build the compound element, and if not the user has a chance to add them manually in the “debug” mode or using the “file” option. The other “optional” categories are optional for both “file” and “script” solution.
Port Definitions(optional for “script” solution)
Variable |
Type |
Description |
---|---|---|
ports |
Cell |
A cell array containing structs which have information about each port. Every struct must contain the following fields:
|
Photonic Model
Variable |
Type |
Description |
---|---|---|
photonic_model |
string |
String containing the name of the photonic model used for this template. Please visit here for a list of all available photonic models. |
Cosmetic Variables
Variable |
Type |
Description |
---|---|---|
description |
String |
A string containing a brief description of the model, which will be displayed to the end user. |
prefix |
String |
A string containing the prefix of the model, which will be used within interconnect to provide incrementing element names for each successive element that is added to the simulation layout. |
notes |
Cell |
A cell array which provides model notes that will be displayed to the end user. Each element of the cell is a struct with the fields:
|
Build Options
Variable |
Type |
Description |
---|---|---|
get_compound |
String |
A string containing the name of the compound element build solution. Available solutions are: "script": The user has provided details of the compound element as source data in the parameter script file, data files, setup script file, etc. CMLC will use these data to build the compound element and add it to the library. "file": The user has built the compound element in a file named <element_name>.icp and saved it in the element source directory. CMLC will open this file and adds the contained compound element to the library. Note: Please note that in “file” the name of the compound should be the same a “prefix” variable. |
debug_mode |
Boolean |
A boolean value which controls to whether or not enter the debug mode for building the compound element. Note: Changes made in this session will be saved in the icp file. Therefore if the “script” option was used to build the compact model, to use the changes made in this session for next run, “file” option should be chosen for the get_compound variable. Note: After the user is done making changes, they have to just enter “done” in the terminal and CML Compiler will take care of saving the file and closing the session. Please DO NOT close the session after making updates. |
Internal Circuit(optional for “script” solution)
Variable |
Type |
Description |
---|---|---|
elements |
Cell |
Cell array containing structs that describe each element used in the internal circuit of the compound element. These elements can either be from the same library as the compound element or from the primitives library. The structs in this cell include following fields:
|
connection |
Cell |
Cell array containing structs that describe the connection of the elements of the internal circuit elements to each other and to the defined ports of the compound element (see port definitions). In this cell array, each cell defines one connection between two ports. The structs in this cell include following fields:
Note: The connection between ports of the internal circuit and compound element ports (see port definition) must be defined as structs in this cell array. To define a connection between an internal circuit port and an external compound element port, “name” variable and “port name” variable of the compound element must be used. |
Elements:
Each structure of the elements cell array contains the following fields:
Field |
Description |
---|---|
element |
A string which contains the name of the element to be added to the internal circuit. This element can either be from the same library as the compound element or from the primitives library |
name |
A string which contains the name of the element after it is added to the schematic. |
property |
Cell array containing structs that describe the parameters of the added element that user wishes to modify and their values. These properties can be any modifiable properties of the specified element. Each struct contains following fields:
|
Connection:
Each structure of the connection cell array contains the following fields:
Field |
Description |
---|---|
E1_name |
A string which contains the schematic name of the first element |
E1_port |
A string which contains the name of the port of the first element. |
E2_name |
A string which contains the user-defined name of the second element |
E2_port |
A string which contains the name of the port of the second element. |
Parameter Variables (optional)
Note: Although the user can add the parameters to the compound element directly using “file” option or in the “debug mode”, they can still provide this information as source data so that CML Compiler automatically adds them to the LIB file (visit Statistical Data Requirement)the Siemens header file (visit Siemens EDA integration overview).
Variable | Type | Description |
---|---|---|
parameters | Cell |
Cell arrays containing structs that describe each user-facing parameter to be added to the model. See below for more detail. |
The parameters cell array contains structs which define parameters that will be added to the element, with values optionally accessible to end-users and inside the set-up script. Each structure defines properties of a single parameter, and contains the following fields:
Field | Description |
---|---|
name |
A string which contains the name of the parameter |
category |
A string which contains the name of the category that the parameter will be under within the property view of INTERCONNECT. The “CML” category is typically used for new properties. |
type |
A string with the type of value allowed by this parameter. The options are given by the "Type" dropdown menu within the Property Editor in INTERCONNECT. Some examples:
|
kind |
A string with 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 |
A string with the unit of the parameter. This should be a valid unit with respect to the parameter kind set in the "kind" field, and must correspond to the allowed values for the "type" field. Some example units are:
|
annotate |
A boolean value which controls whether or not this parameter is annotated on the final INTERCONNECT element. |
visible_to_user |
A boolean value which controls whether or not this parameter is present within the final INTERCONNECT element, or if it's hidden. |
default_value |
The default value of the parameter. Also, the fixed value of the parameter if visible_to_user is set to false. To inherit the value from a property in Root Element, set this to a string, e.g. "%temperature%". |
min |
The minimum allowed parameter value. |
max |
The maximum allowed parameter value. |
Setup Script (optional for “script” solution)
Variable |
Description |
---|---|
setup_script |
The string to be loaded into the Compound element Setup script. This string can be directly defined in the parameter file or can be loaded from another file using feval command. The setup script must be self-contained and include all the required data for the model. It also can reference user_defined parameters and statistical parameters. |
Custom QA filename (optional)
Please visit Custom QA tests for more information.
Variable | Type | Description |
---|---|---|
custom_qa_filenames |
Cell |
Cell of size N, where N is the number of custom QA script files. Each element of the cell is a string containing a script file name. |
Data File (Optional)
<custom> |
The source data will depend on the custom compound element. Data can be defined directly in the parameter script file, or in external data files that are loaded. |
Statistical Data (optional)
This data is required for CML Compiler to enable statistical modeling. Note that to allow CML Compiler to build statistically enabled models, the statistical_parameter_status has to be defined in the XML file . For more information, see Statistical CMLs .
Note: Although the user can add the parameters to the compound element directly using “file” option or in the “debug mode”, they can still provide this information as source data so that CML Compiler automatically adds them to the LIB file (visit Statistical Data Requirement) Siemens header file (visit Siemens EDA integration overview).
Variable |
Description |
---|---|
stat_parameters |
A cell of length N containing the statistical data for the grating coupler where N is the number of statistical parameters. Each entry in the cell is a struct with the following fields. |
stat_parameters{i}.name |
Name of the i-th statistical parameter. |
stat_parameters{i}.mean |
Mean value of the i-th statistical parameter. |
stat_parameters{i}.corners |
Corner values for the i-th statistical parameter provides as a Cx1 matrix where C is the number of process corners defined in the XML file . Note: The values for the process corners should follow the same order as in the XML file . |
stat_parameters{i}.slope_skew_mainpol |
The sensitivity of the skew of the main polarization of the grating coupler with respect to the i-th statistical parameter defined as d_skew_mainpol / d_stat_parameters{i}. Note: Only provide this field if the statistical parameter affects the skew_mainpol (see gc_fitted_stat_te_c). |
stat_parameters{i}.slope_bandwidth_1dB_mainpol |
The sensitivity of the 1 dB bandwidth of the main polarization of the grating coupler with respect to the i-th statistical parameter defined as d_bandwidth_1dB_mainpol / d_stat_parameters{i}. Note: Only provide this field if the statistical parameter affects the 1 dB bandwidth (see gc_fitted_stat_te_c). |
stat_parameters{i}.slope_peak_wavelength_mainpol |
The sensitivity of the peak wavelength of the main polarization of the grating coupler with respect to the i-th statistical parameter defined as d_peak_wavelength_mainpol / d_stat_parameters{i}. Note: Only provide this field if the statistical parameter affects the peak_wavelength_mainpol (see gc_fitted_stat_te_c). |
stat_parameters{i}.slope_peak_IL_dB |
The sensitivity of the peak insertion loss of the grating coupler with respect to the i-th statistical parameter defined as d_peak_IL_dB / d_stat_parameters{i}. Note: Only provide this field if the statistical parameter affects the peak_IL_dB (see gc_fitted_stat_te_c). |
stat_parameters{i}.LOCAL |
A struct describing the LOCAL level variation of the i-th statistical parameter with the following fields: distribution = Defines the type of the PDF used to describe the LOCAL level variation. Currently the options are 'normal' (Gaussian) or 'pearson4' (Non-Gaussian). sigma = The standard deviation of the LOCAL level variation. gamma1: The skewness of the LOCAL level variation (for pearson4 distribution only) beta2: The kurtosis of the LOCAL level variation (for pearson4 distribution only) |
stat_parameters{i}.GLOBAL |
A struct containing the GLOBAL level variation of the i-th statistical parameter with the following fields: distribution = Defines the type of the PDF used to describe the GLOBAL level variation. Currently the options are 'normal' (Gaussian) or 'pearson4' (Non-Gaussian). sigma = The standard deviation of the GLOBAL level variation. gamma1: The skewness of the GLOBAL level variation (for pearson4 distribution only) beta2: The kurtosis of the GLOBAL level variation (for pearson4 distribution only) GLOBALGROUP: Name of the GLOBALGROUP defined in the top level XML file. (if a GLOBALGROUP is provided then the description in the XML file takes priority over the data file) NOTE: Poviding a GLOBAL level variation for statistical parameters is optional. |