====== Usefull Cadence Virtuoso ADE Calculator formulas ======
===== DAC simulations =====
* INL calculation from transient ramp:
(((abs(value(SIGNAL T_SAMPLE ?period T_PERIOD ?xName "cycle")) - (((ymax(abs(value(SIGNAL T_SAMPLE ?period T_PERIOD ?xName "cycle"))) - ymin(abs(value(SIGNAL T_SAMPLE ?period T_PERIOD ?xName "cycle")))) * (xval(abs(value(SIGNAL T_SAMPLE ?period T_PERIOD ?xName "cycle"))) - 1)) / No_of_STATES)) + ymin(abs(value(SIGNAL T_SAMPLE ?period T_PERIOD ?xName "cycle")))) / ((ymax(abs(value(SIGNAL T_SAMPLE ?period T_PERIOD ?xName "cycle"))) - ymin(abs(value(SIGNAL T_SAMPLE ?period T_PERIOD ?xName "cycle")))) / No_of_STATES))
* DNL calculation from transient ramp
((deriv(value(abs(SIGNAL) T_SAMPLE ?period T_PERIOD ?xName "cycle")) / ((ymax(value(abs(SIGNAL) T_SAMPLE ?period T_PERIOD ?xName "cycle")) - ymin(value(abs(SIGNAL) T_SAMPLE ?period T_PERIOD ?xName "cycle"))) / No_of_STATES)) - 1)
Where: \\
SIGNAL - signal name, i.e. **IT("/R0/PLUS")** or **VT("/out_dac")** \\
T_SAMPLE - time of first sample \\
T_PERIOD - sampling period \\
No_of_STATES = 2^N-1 - number of DAC states (for 8 bit DAC it is 255) \\
===== CSA =====
* ENC in electrons
(rmsNoise(F_MIN F_MAX) / ((ymax(VT("OUTPUT_NODE")) - value(VT("OUTPUT_NODE") 0)) / pv("/INPUT_CHARGE" "value" ?result "variables")) / 1.602e-19)
* Charge gain
1e-15 * (ymax(VT("OUTPUT_NODE")) - VDC("OUTPUT_NODE")) / pv("/INPUT_CHARGE" "value" ?result "variables")
* Signal FWHM
(cross(((100 * ((- VT("OUTPUT_NODE")) + value(VT("OUTPUT_NODE") 0))) / ((- ymin(VT("OUTPUT_NODE"))) + value(VT("OUTPUT_NODE") 0))) 50 1 "falling" nil nil) - cross(((100 * ((- VT("OUTPUT_NODE")) + value(VT("OUTPUT_NODE") 0))) / ((- ymin(VT("OUTPUT_NODE"))) + value(VT("OUTPUT_NODE") 0))) 50 1 "rising" nil nil))
Where: \\
F_MIN, F_MAX - frequency range for noise simulation \\
OUTPUT_NODE - output node of CSA \\
INPUT_CHARGE - variable containing input charge value \\
===== AC amplifiers =====
* Gain--Bandwidth Product
bandwidth(VF("/out_ac") dB20(abs(value(VF("/out_ac") 0))) "low")
cross(dB20(VF("/out_ac")) 0 1 "either" nil nil)