This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
soft:cadence:simulations:usefull_calc_formulas [2013/12/19 12:38] dominik.przyborowski [DAC simulations] |
soft:cadence:simulations:usefull_calc_formulas [2019/03/08 14:08] (current) |
||
---|---|---|---|
Line 5: | Line 5: | ||
<code> | <code> | ||
(((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)) | (((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)) | ||
+ | </code> | ||
+ | * DNL calculation from transient ramp | ||
+ | <code> | ||
+ | ((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) | ||
</code> | </code> | ||
Where: \\ | Where: \\ | ||
Line 11: | Line 15: | ||
T_PERIOD - sampling period \\ | T_PERIOD - sampling period \\ | ||
No_of_STATES = 2^N-1 - number of DAC states (for 8 bit DAC it is 255) \\ | No_of_STATES = 2^N-1 - number of DAC states (for 8 bit DAC it is 255) \\ | ||
- | * DNL calculation from transient ramp | + | |
+ | ===== CSA ===== | ||
+ | * ENC in electrons | ||
<code> | <code> | ||
- | ((deriv(value(abs(IT("/R1/PLUS")) 7e-07 ?period 1e-06 ?xName "cycle")) / ((ymax(value(abs(IT("/R1/PLUS")) 7e-07 ?period 1e-06 ?xName "cycle")) - ymin(value(abs(IT("/R1/PLUS")) 7e-07 ?period 1e-06 ?xName "cycle"))) / 127)) - 1) | + | (rmsNoise(F_MIN F_MAX) / ((ymax(VT("OUTPUT_NODE")) - value(VT("OUTPUT_NODE") 0)) / pv("/INPUT_CHARGE" "value" ?result "variables")) / 1.602e-19) |
</code> | </code> | ||
+ | * Charge gain | ||
+ | <code>1e-15 * (ymax(VT("OUTPUT_NODE")) - VDC("OUTPUT_NODE")) / pv("/INPUT_CHARGE" "value" ?result "variables")</code> | ||
+ | * Signal FWHM | ||
+ | <code>(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))</code> | ||
+ | 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 | ||
+ | <code>bandwidth(VF("/out_ac") dB20(abs(value(VF("/out_ac") 0))) "low")</code> | ||
+ | <code>cross(dB20(VF("/out_ac")) 0 1 "either" nil nil)</code> |