lxEvalCDFCallbacks
layoutXL lxEvalCDFCallbacks boolean { t | nil }
Description
Causes all SKILL callbacks defined on Common Description Format (CDF) parameters to be evaluated by default when you run the following Layout XL commands. Callbacks defined on buttons are never evaluated.
- Generate All From Source
- Generate Selected From Source
- Generate Folded Devices
- Update Components And Nets
- Update Layout Parameters
- Update Schematic Parameters
- Back Annotate (Dummy backannotation)
lxEvalCDFCallbacks environment variable, the following callbacks are always evaluated:-
Widthparameter callback for Generate Folded Devices -
fingersparameter callback for Split Fingered Devices -
mparameter callback, if changing the mfactor for backannotation -
Widthorfingersparameter callback or both the callbacks for Generate All From Source with folding and finger split enabled.
The callbacks are evaluated in the order in which they are listed in the CDF, so it is important that you set the appropriate callback at the appropriate place in the list. For more information, see
GUI Equivalent
Examples
envGetVal("layoutXL" "lxEvalCDFCallbacks")
envSetVal("layoutXL" "lxEvalCDFCallbacks" 'boolean t)
envSetVal("layoutXL" "lxEvalCDFCallbacks" 'boolean nil)
Additional Information
CDF callbacks are SKILL expressions that are triggered when the value of a parameter is set in any of these forms—the
The layoutXL environment variable lxEvalCDFCallbacks fires CDF callbacks in the following order:
-
For the changed parameters, filters out any parameters, if defined in
lxCDFCallbackParams, or calls the callbacks on all the changed parameters in the order they appear in the Edit CDF form. -
Fires all the other CDF callbacks in the order they appear in the Edit CDF form, apart from the button CDF parameters. If
lxCDFCallbackParamsis defined, only parameters in this list have their callbacks fired.
-
lxCDFCallbackParamscan be defined as both a global environment variable and as a CDF parameter itself, so you can customize it for a given cell. -
Even if
lxEvalCDFCallbacksis set tonil, thewcallback is triggered during folding,fingerscallback is triggered for fingersplit, theworfingersparameter callback or both the callbacks are triggered during layout generation, and themcallback is triggered for dummy backannotation, if using the m-factor model. -
The CDF
initProcis always called before the CDF callbacks. -
When CDF callbacks are triggered, the CDF
doneProcis called after all the parameters are set on the instance.Because the order of the callbacks depends on the order they appear, it is recommended to have simple CDF parameters appear first and derived parameters appear after these.For example, it is recommended to definefw(finger width) before total width (finger width * fingers). If the total width callback is called before the finger width callback, the finger width is not changed and the calculation is based on the previous value. If the finger width callback is called first,fwis set so that the callback uses the new value and is set correctly.Cadence advises against the use of CDF callbacks to compute the value of derived parameters. This is to avoid anomalies that are likely in automatic computation of the derived parameters. For more information, see Why Callbacks are not Advised for Deriving Parameter Values.
You can optionally set thelxCDFCallbackParamsenvironment variable to list the callbacks you want to trigger. Some PDK set ups have callbacks that update all the CDF parameters. Therefore, triggering only a few callbacks may be required. -
If you use AEL expressions in CDF, such as
iPar()orpPar(), you need to set the shell environment variable,CDS_Netlisting_ModetoAnalogfor Layout XL to evaluate the expressions in the schematic context.-
The CDF
parseAsCELfor the parameter should be set toyes. If you want a string, say “2u” to be a number, say,2e-6for Layout XL, you need to setparseAsNumber=yes.It is possible that even whenCDS_Netlisting_Modeis set toAnalogandparseAsCELis set toyes, you may still not get an accurate layout. This is likely when the design uses callbacks withpPar(). Manually triggering the callbacks by setting lxEvalCDFCallbacks totmight help. See Issues when pPar and Callbacks are Used in a Design when Generating a Layout. But, Cadence advises against the combined use of CDF parameters withpPar()(AEL expressions) and CDF callbacks. This is meant to prevent getting an incorrect parameter value because the value of the expression is not known at the time the callback is fired.
-
The CDF
- If the PDK is golden, you can override the CDF by using User CDF, though the User CDF will need to be loaded every time.
Why Callbacks are not Advised for Deriving Parameter Values
Triggering callbacks to derive the values of other parameters is not advised for the following reasons:
For situations where a source parameter is meant to derive the value of another parameter, the source parameter itself cannot be controlled by a variable or an expression, such as pPar() or iPar().
For example, you might want to use the pPar() or iPar() expressions to control the value of a source parameter such that the parameter can be passed down the hierarchy. But, when the source parameter is being used to determine the value of a derived parameter, it can change depending on the value of pPar() at the time when the parameter value is being changed in Property Editor. Therefore, it is important to know the value of pPar() at the time of changing the parameter value to compute the derived parameter accurately. But, knowing the value of pPar() at the time of the parameter change is not possible. Therefore, to avoid having an inaccurate derived parameter, you might need to avoid using a source parameter that depends on pPar() (or iPar()).
Cadence recommends that for parameter values that need to be derived, the value must be computed by the application by using the source parameter at the time of usage. This may require computing the derived parameter value at the time of simulation, physical verification, or at the Pcell level. When computing the derived parameter at the Pcell level, the computation can be done in the Pcell SKILL code instead of requiring a CDF callback to be triggered.
When multiple parameters are changed, multiple callbacks need to be triggered. This makes it impossible to predict the correct order in which the callbacks must be fired for a parameter value to be determined accurately.
For example, if you were to change the cell name on the Edit Properties form, all the derived parameters can lose their correspondence. So, you may need to trigger a callback for each derived parameter. But, to determine the correct order in which the callbacks must be fired is not simple, and can potentially cause inaccurate derived parameter values. Therefore, using callbacks to determine the value of derived parameters is not recommended.
Example
Let us assume that the Edit CDF form has the following parameters defined: w, l, fingers, totalW
-
If we change
wandfingers, the order of the callbacks will be:w,fingers,l,totalW -
If we just change
fingers, the order of the callbacks will be:fingers,w,l,totalW -
If we now set
lxCDFCallbackParamsto “w l” and then:
Related Topics
Issues when pPar and Callbacks are Used in a Design when Generating a Layout
List of Layout XL Environment Variables
Return to top