PyBERT icon indicating copy to clipboard operation
PyBERT copied to clipboard

Add dual Dirac model tail fitting.

Open capn-freako opened this issue 11 years ago • 1 comments

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.

capn-freako avatar Oct 14 '14 14:10 capn-freako

When will the "dual Dirac" method implemented to PyBERT?

leeooox avatar Jun 06 '16 07:06 leeooox

I'm looking into this Capn...

MarkMarlett avatar Mar 28 '23 22:03 MarkMarlett

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

capn-freako avatar Apr 05 '23 17:04 capn-freako

Hi @MarkMarlett ,

So, after researching this a bit I've learned:

  1. 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

capn-freako avatar Sep 23 '23 20:09 capn-freako

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: @.***>

MarkMarlett avatar Sep 24 '23 04:09 MarkMarlett

Well, this is very interesting:

PyBERT_Jitter_Annotated

Maybe, we should be using total jitter for post-DFE dual-Dirac analysis?

capn-freako avatar Nov 24 '23 20:11 capn-freako