Thanks for all three responses so far.
Sorry if I wasn't clear with my question. For the sake of clarity, let's
switch to the DDR
terminology. By "clocked Rx" I was referring to the dual input DQ Rx model,
which has
a data and a clock input. By "clock Rx" I was referring to the DQS Rx model
that has a
single input and outputs either a waveform or clock times vector (depending on
the
mode selected, "Wave" or "Times") for its dual input DQ Rx model ("buddy").
From Walter's response I understand that if we ran the DQS Rx model as if it
was a SerDes
Rx model, it would give us a clock_times vector in which the values correspond
to the
zero crossings of the waveform that goes into it. These times also correspond
to the
UI boundaries of the DQS eye diagram we would get from this DQS Rx model, whose
sampling time is in the middle of the eye. But this is less important in this
discussion.
The take away so far is that the clock_times output vector of the DQS Rx model
contains
the zero crossing times of the DQS waveform.
I also understand that when we use both the DQ Rx and the DQS Rx model together
in
a simulation (using the "Times" mode), then the clock times generated by the
DQS Rx
model (which are the zero crossing times of the DQS waveform) become the
sampling
times for the DQ waveform. These times being the sampling time for the DQ
waveform
represent the middle of the DQ eye. These sampling times have to be changed by
the
DQ Rx model (by subtracting 0.5 * UI) before they can be put into the
clock_times output
vector of the DQ Rx model to be used by the EDA tool. This is NOT explained in
the
spec. Do all model makers know how to do this correctly without an explanation?
Or, keeping in mind that "clock_times" is defined as:
"The clock times are exactly symbol_time/2 before the input data signal is
sampled."
AND keeping in mind that the clock_times input vector for the DQ Rx model is
called
"clock times" (not "sample times", is the DQS Rx "clock_times" output vector
supposed
to be changed by 0.5 * UI to be truly a "clock_times" input vector (according
to the only
definition we have in the spec, highlighted in green above) before it is passed
into the
"clock_times" input vector of the DQ Rx model? If so, who supposed to do that,
the
DQS model or the "go between" EDA tool?
The point I am trying to make is that from the perspective of the DQS Rx model
or the
DQ Rx model "clock times" are two different things, yet the spec refers to both
by the
same name, "clock times". A specification shouldn't allow itself to be so
vague and call
two different things by the same name and expect people to "know" which meaning
applies to which case.
Or, am I missing something? Questions, comments, suggestions welcome as
always...
Thanks,
Arpad
=========================================================================
From: Mirmak, Michael <michael.mirmak@xxxxxxxxx>
Sent: Wednesday, September 7, 2022 8:21 PM
To: wkatz@xxxxxxxxxxxxx; fangyi_rao@xxxxxxxxxxxx; Muranyi, Arpad
<Arpad_Muranyi@xxxxxxxxxx>; IBIS-ATM <ibis-macro@xxxxxxxxxxxxx>;
ibis-editorial@xxxxxxxxxxxxx
Subject: RE: What is the meaning of "clock_times"?
Given the multiple ways of expressing the concepts, do we need a clarification
BIRD regarding the differences in clock_times interpretations for clocked data
buffers, clock buffers, and buffers which contain a CDR? At the very least,
should we consider clarifying that clock_times may be an input or an output in
different contexts?
* MM
From:
ibis-editorial-bounce@xxxxxxxxxxxxx<mailto:ibis-editorial-bounce@xxxxxxxxxxxxx>
<ibis-editorial-bounce@xxxxxxxxxxxxx<mailto:ibis-editorial-bounce@xxxxxxxxxxxxx>>
On Behalf Of Walter Katz
Sent: Wednesday, September 07, 2022 5:36 PM
To: fangyi_rao@xxxxxxxxxxxx<mailto:fangyi_rao@xxxxxxxxxxxx>; Muranyi, Arpad
<Arpad_Muranyi@xxxxxxxxxx<mailto:Arpad_Muranyi@xxxxxxxxxx>>; IBIS-ATM
<ibis-macro@xxxxxxxxxxxxx<mailto:ibis-macro@xxxxxxxxxxxxx>>;
ibis-editorial@xxxxxxxxxxxxx<mailto:ibis-editorial@xxxxxxxxxxxxx>
Subject: [ibis-editorial] Re: What is the meaning of "clock_times"?
Arpad,
For the DQS treated as SerDes data, the sample time of a DQS eye is the
"center" of the DQS eye. The eye crosses zero ½ UI before the center of the eye.
If using Times (with not DQS DLL), then the clock_times are generated from the
zero crossing of the Wave.
So in both cases Times is the zero crossing of the DQS wave.
Fangyi is saying the same thing, just in a slightly different way.
Walter
Walter Katz
Work 508.647-7633
Cell 720.417-3762
wkatz@xxxxxxxxxxxxx<mailto:wkatz@xxxxxxxxxxxxx>
[Description: Description: Visit MathWorks.com]
From: ibis-macro-bounce@xxxxxxxxxxxxx<mailto:ibis-macro-bounce@xxxxxxxxxxxxx>
<ibis-macro-bounce@xxxxxxxxxxxxx<mailto:ibis-macro-bounce@xxxxxxxxxxxxx>> On
Behalf Of Fangyi Rao
Sent: Wednesday, September 7, 2022 7:28 PM
To: Arpad_Muranyi@xxxxxxxxxx<mailto:Arpad_Muranyi@xxxxxxxxxx>; IBIS-ATM
<ibis-macro@xxxxxxxxxxxxx<mailto:ibis-macro@xxxxxxxxxxxxx>>;
ibis-editorial@xxxxxxxxxxxxx<mailto:ibis-editorial@xxxxxxxxxxxxx>
Subject: [ibis-macro] Re: What is the meaning of "clock_times"?
Hi Arpad,
I guess by clock/clocked Rx you meant strobe Rx such as DQS Rx. Please note
that strobe Rx is not a dual-input model and doesn't need to take clock_times
as input. Only data Rx such as DQ Rx may take clock_times as input and function
in "Wave" or "Times" mode.
Regarding whether clock_times as an input should be sampling times or clock
times, I think it's just a matter of convention. For a data Rx in the "Times"
mode, its clock_times input is the strobe Rx's clock_times output.
Best,
Fangyi
From: ibis-macro-bounce@xxxxxxxxxxxxx<mailto:ibis-macro-bounce@xxxxxxxxxxxxx>
<ibis-macro-bounce@xxxxxxxxxxxxx<mailto:ibis-macro-bounce@xxxxxxxxxxxxx>> On
Behalf Of Muranyi, Arpad
Sent: Wednesday, September 7, 2022 3:13 PM
To: IBIS-ATM <ibis-macro@xxxxxxxxxxxxx<mailto:ibis-macro@xxxxxxxxxxxxx>>;
ibis-editorial@xxxxxxxxxxxxx<mailto:ibis-editorial@xxxxxxxxxxxxx>
Subject: [ibis-macro] What is the meaning of "clock_times"?
CAUTION: This message originates from an external sender.
Hello Everyone,
I wonder whether anyone could shed some light on the meaning of "clock_times"
for me in the context of Rx_Use_Clock_Input.
The clock_times section on pg. 229 includes the following statements:
"The clock times are exactly symbol_time/2 before the input data signal is
sampled."
and
"Each valid value in the clock_times vector shall be used to sample the output
waveform by adding to it symbol_time/2"
The section on Rx_Use_Clock_Input (on pg. 253) only provides a brief reference
to
the clock_times input of the GetWave function without further detail related to
my
question:
"Specifies the content of the Data Rx AMI_GetWave clock_times input supported
by the model."
Let me ask my question with an example. Consider an clocked Rx AMI model which
is operated in the "Wave" mode. In this case the (unstated) assumption seems
to be
that the waveform is a difference signal, and the clock ticks occur at the zero
crossings
of that difference signal. (It would be nice to state that the assumption is
that this is
a difference signal, otherwise we would need to provide parameters for threshold
values too)... Aside from that, what clock times should the Rx AMI model
return to
the EDA tool in the clock_times vector (output)? The times of the zero
crossings, or
(zero crossings) - (0.5 * UI)?
Now change the above example so that there is a clock Rx AMI model that converts
the waveform into clock times and EDA tool passes those values into the data Rx
model's
clock_times vector. Is the clock Rx model supposed to just output the times of
those
zero crossings for the data Rx model, or is it supposed to generate values as:
(zero crossings) - (0.5 * UI)?
Keep in mind that "clock_times" is defined as:
"The clock times are exactly symbol_time/2 before the input data signal is
sampled."
If the clock Rx AMI model would generate zero crossing times for the data Rx
model's
clock_times input vector, isn't it generating "sampling times" instead of
"clock times"?
And, if this were the case, would the data Rx model need to convert these
sampling times
to clock times for the EDA tool by subtracting 0.5 * UI from each value before
putting
them into the clock_times vector (output)?
Either way, what was the intent of BIRD204/209? I feel that this needs to be
clarified
(unless I am missing something obvious)...
Thanks,
Arpad
==========================================================================