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: For legacy data format (2022 R2.4 and older) 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) .
Interoperability with Cadence Virtuoso:
- Circuit design flows using INTERCONNECT model: Yes.
- Circuit design flow using photonic Verilog-A model: No.
Required Data
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 the user does not have 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” solutions.
The required data are collected as a struct with the following fields:
general
"general" is a struct with the following fields:
[[snippet||11549514081811]]
ports (optional for “script” solution)
"ports" is a struct with the following fields:
[[snippet||12121585867411]]
Each struct above consists of the following fields:
[[snippet||11549759363603]]
type
|
string |
The signal type of the port, either "Optical Signal" or "Electrical Signal" |
parameters (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).
"parameters" is a struct with the following fields:
[[snippet||12121700744851]]
Each struct above consists of the following fields:
[[snippet||12006995584019]]
model_data
"model_data" is a struct with the following fields:
[[snippet||12124415517459]]
QA (optional)
"QA" is a struct with the following fields:
Field | 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. |
statistical
"statistical" is a struct with the fields below. This struct is optional and is only required for statistical compact models.
Note: 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).
Field | Type | Description |
---|---|---|
parameters |
struct |
Each field of this struct defines one statistical parameter for the model. These fields should have names following "parameter_X" where X is an integer and follows the structure described in the table below. Note: These data is required for CML Compiler to enable statistical modeling. |
Each struct above consists of the following fields:
[[snippet||11647965606547]]
slope_<stat param> |
Number |
A slope can be optionally defined for use in the set-up script. |