When building elements for active elements, CML Compiler allows the user to provide target values for different figures of merit (FOMs) and tune the element properties automatically to match those targets. When tuning is disabled, the element is built by directly using the modeling data provided by the CML designer. However, if tuning is activated, CML Compiler automatically adjusts the provided modeling data so that the behavior of the element matches the targeted FOM(s).
For example, if an electrical phase shifter element is built without tuning, the element directly uses the index perturbation data provided in the data file and that data determines the VpiLpi of the element. If the tuning for VpiLpi is enabled, however, CML Compiler will adjust the index perturbation data so that the VpiLpi of the element matches the value provided by the CML designer. This page describes the various options available in CML Compiler for tuning active elements.
Tuning Elements
Tuning can be enabled by setting Boolean flags in the element source data file. This is done by setting "tuning" to "true" for different FOMs listed in "FOMs" section in the element source data file. The table below lists all the active photonic models that supports tuning along with the supported FOMs used for tuning and the corresponding Boolean flag in the element source data file.
Photonic Model | Tunable FOMs | Boolean Flag |
phase_shifter_electrical |
IL |
FOMs.IL.tuning |
Vpi_Lpi | FOMs.Vpi_Lpi.tuning | |
phase_shifter_thermal | IL | FOMs.IL.tuning |
Ppi | FOMs.Ppi_thermal.tuning | |
ring_modulator | resonant_wavelength | FOMs.resonant_wavelength.tuning |
FSR | FOMs.FSR.tuning | |
IL | FOMs.IL.tuning | |
Q | FOMs.Q.tuning | |
mod_eff | FOMs.mod_eff.tuning | |
mod_eff_thermalFOMs. | FOMs.mod_eff_thermal.tuning | |
mach_zehnder_modulator | notch_wavelength | FOMs.notch_wavelength.tuning |
FSR | FOMs.FSR.tuning | |
IL | FOMs.IL.tuning | |
ER_V1, ER_V2 | FOMs.ER.tuning | |
Vpi_electrical | FOMs.Vpi_electrical.tuning | |
Ppi_thermal | FOMs.Ppi_thermal.tuning |
Using FOMs as Model Parameters
If tuning is enabled for a particular FOM for an element, the CML designer can choose to make that FOM a parameter of that element. For example, if the free spectral range (FSR) of a ring modulator is used to tune the model, the FSR can also be used to make the element parameterized with respect to FSR. The CML end user will then have the option to change the quality factor of the ring modulator element and use a device with the right quality factor (according to their need) in their circuit simulation. This feature can be enabled by setting the "visible_to_user" field to 1 (true) for the corresponding FOM parameter in the element source data file. For information about how to define the FOMs in the data file check out the lumfoundry templates for the supported active models.
For example, a ring modulator element where FSR, IL, Q, and resonant_wavelength have been made visible to the CML user to be used as model parameters is shown below:
Note: Even if an FOM is made visible to the CML user, it will not become a parameter of the active element unless the tuning for that FOM has been enabled in the element source data file.
Reporting Internal Model Parameters after Tuning
When tuning is activated for an FOM, CML Compiler adjusts the internal modeling parameter(s) of the element to ensure the element behaves appropriately. For example, if a ring modulator element is tuned according to the provided FSR value, CML Compiler will adjust the group index of the ring waveguide to ensure the element has the correct FSR. The CML Compiler user can ask the element to report back this updated parameter value after the tuning to get valuable insight about the tuned component. This feature can be enabled through the library master file by adding an optional section called "report_tuned_data" and providing a password that can be used to view the internal tuned parameter values from the compact models in INTERCONNECT:
{
"foundry_name": "lumfoundry_template_basic",
"version_suffix": "4.0",
"process_prefix": "lum_",
"report_tuned_data" :
{
"password": "!Passcode101"
},
...
}
setnamed("RM_1","report_tuned_parameters","!Passcode101");