Add dual Dirac model tail fitting.
Issue Description
Currently, the random jitter standard deviation is calculated by simply measuring the variance of the jitter remaining, after all other components have been removed, and taking the square root. This is not a particularly accurate way of estimating the random unbounded portion of the jitter and will cause extrapolation to low BER to be unreliable. We need to add fitting to a known analytical model, in order to improve this situation. I propose the "dual Dirac" model, just because it is so prevalent. Any other opinions?
Suggested Approach
- In the calc_jitter() function in the pybert_util.py file, look at the code just above the return statement. Note the simplistic way in which the random jitter standard deviation is calculated.
- Replace this code with dual Dirac fitting code, instead.
Hints
- Peruse the NumPy and SciPy libraries for functions, which might be helpful in curve fitting applications such as this one.
When will the "dual Dirac" method implemented to PyBERT?
I'm looking into this Capn...
I'm looking into this Capn...
Hi @MarkMarlett ,
I just made you the official assignee on this one. Let me know if I need to change that.
Thanks, -db
Hi @MarkMarlett ,
So, after researching this a bit I've learned:
-
The original, or "true", dual Dirac approach takes the total jitter as its input. But, that means that it is including the ISI jitter in its calculations of Pj, which seems wrong to me.
-
According to Ransom Stephens (See last paragraph on p.5 of [1].), the most accurate estimates of Rj come from measuring the variance of the data independent jitter, after removing periodic components, via spectral analysis, which is exactly what I'm already doing in PyBERT.
So, now, I'm hesitant to simply replace what PyBERT is doing w/ a dual Dirac alternative, because I think it's going to be less accurate. I'm now leaning towards adding a dual Dirac analysis and reporting its results parenthetically in the PyBERT status bar; something like:
Jitter (ps): Pj: 1.2 (1.5), Rj: 0.4 (0.6)
Any thoughts on all of this?
Thanks, -db
[1] Stephens, R., Jitter Analysis: The dual-Dirac Model, RJ/DJ, and Q-Scale, Agilent white paper, 2004
David You are correct you need to fully remove the periodic elements and the isi separately actually anything you can recognize and remove you should. The result is the random jitter.
We can have a call it.
On Sat, Sep 23, 2023, 1:09 PM David Banas @.***> wrote:
Hi @MarkMarlett https://github.com/MarkMarlett ,
So, after researching this a bit I've learned:
The original, or "true", dual Dirac approach takes the total jitter as its input. But, that means that it is including the ISI jitter in its calculations of Pj, which seems wrong to me. 2.
According to Ransom Stephens (See last paragraph on p.5 of [1].), the most accurate estimates of Rj come from measuring the variance of the data independent jitter, after removing periodic components, via spectral analysis, which is exactly what I'm already doing in PyBERT.
So, now, I'm hesitant to simply replace what PyBERT is doing w/ a dual Dirac alternative, because I think it's going to be less accurate. I'm now leaning towards adding a dual Dirac analysis and reporting its results parenthetically in the PyBERT status bar; something like:
Jitter (ps): Pj: 1.2 (1.5), Rj: 0.4 (0.6)
Any thoughts on all of this?
Thanks, -db
[1] Stephens, R., Jitter Analysis: The dual-Dirac Model, RJ/DJ, and Q-Scale, Agilent white paper, 2004 https://www.keysight.com/us/en/assets/7018-01309/white-papers/5989-3206.pdf
— Reply to this email directly, view it on GitHub https://github.com/capn-freako/PyBERT/issues/3#issuecomment-1732400222, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAP42BIKOPA5C6OTDNLHWX3X346X3ANCNFSM4AVZ7GSQ . You are receiving this because you were mentioned.Message ID: @.***>
Well, this is very interesting:
Maybe, we should be using total jitter for post-DFE dual-Dirac analysis?