[ibis-macro] Re: Summary of discussion about BIRD 166.2

  • From: Walter Katz <wkatz@xxxxxxxxxx>
  • To: <ambrishv@xxxxxxxxxxx>, "IBIS-ATM" <ibis-macro@xxxxxxxxxxxxx>
  • Date: Tue, 23 May 2017 14:44:11 -0400 (EDT)

Ambrish,



And comments on your comments in purple.



Walter



Walter Katz

wkatz@xxxxxxxxxx <mailto:wkatz@xxxxxxxxxx>

Phone 303.449-2308

Mobile 303.335-6156

From: ibis-macro-bounce@xxxxxxxxxxxxx 
[mailto:ibis-macro-bounce@xxxxxxxxxxxxx] On Behalf Of Ambrish Varma
Sent: Tuesday, May 23, 2017 2:33 PM
To: IBIS-ATM <ibis-macro@xxxxxxxxxxxxx>
Subject: [ibis-macro] Re: Summary of discussion about BIRD 166.2



Hi Walter,

Sorry for the late response (below).



Thanks,

Ambrish.



From: Walter Katz [mailto:wkatz@xxxxxxxxxx]
Sent: Wednesday, May 17, 2017 4:22 PM
To: Ambrish Varma <ambrishv@xxxxxxxxxxx <mailto:ambrishv@xxxxxxxxxxx> >; 
IBIS-ATM <ibis-macro@xxxxxxxxxxxxx <mailto:ibis-macro@xxxxxxxxxxxxx> >
Subject: RE: [ibis-macro] Re: Summary of discussion about BIRD 166.2



Ambrish,



Responses below



Walter Katz

wkatz@xxxxxxxxxx <mailto:wkatz@xxxxxxxxxx>

Phone 303.449-2308

Mobile 303.335-6156

From: Ambrish Varma [mailto:ambrishv@xxxxxxxxxxx]
Sent: Wednesday, May 17, 2017 3:46 PM
To: wkatz@xxxxxxxxxx <mailto:wkatz@xxxxxxxxxx> ; IBIS-ATM 
<ibis-macro@xxxxxxxxxxxxx <mailto:ibis-macro@xxxxxxxxxxxxx> >
Subject: RE: [ibis-macro] Re: Summary of discussion about BIRD 166.2



Walter,

Responses below.

Thanks,
Ambrish.







From: Walter Katz [mailto:wkatz@xxxxxxxxxx]
Sent: Wednesday, May 17, 2017 10:22 AM
To: Ambrish Varma <ambrishv@xxxxxxxxxxx <mailto:ambrishv@xxxxxxxxxxx> >; 
IBIS-ATM <ibis-macro@xxxxxxxxxxxxx <mailto:ibis-macro@xxxxxxxxxxxxx> >
Subject: RE: [ibis-macro] Re: Summary of discussion about BIRD 166.2



Ambrish,



First, if all of the models in an AMI simulation are written as you 
describe, and all of the AMI_GetWave models either to adaptation (usually 
Rx) or use the AMI parameters set in the call to the AMI Init function, then 
your models will work correctly in all EDA tools with the established flow.



Agree.



Also your models will work upstream of a Broadcom Rx AMI model which does 
not do adaptation, as long as the  user understands that since the Broadcom 
Rx AMI model does not have an “impulse response that is presented to the Rx 
AMI_Init function will always  than includes the effects of the Tx filter.” 
The user will need to be able to set the various Rx AMI parameter (e.g. 
peaking filter and DFE tap coefficients) manually.



Agree



This is what I meant by all upstream models not being Dual are problematic. 
They require the user to sweep the values of the downstream Rx, or for the 
EDA tool to figure out what the effective Tx equalization is by doing 
special time domains simulations on the Tx AMI_GetWave (as described in 
papers we have given at DesignCon 2017).



‘Problematic’ depends on what angle you are viewing this issue. We 
believe that the ‘Dual’ models are problematic as they expect an impulse 
response of all upstream models with ‘the effects of the (model’s) filter’ 
even though the spec clearly says not to.

In fact, the models in question here are not even completely and truly ‘Dual’. 
The AMI_Getwave results depends on the AMI_Init results – which means that 
the Getwave time domain flow depends on the AMI_Init processing. True ‘Dual’ 
models have independent behavior in the Init and Getwave.



WMK>> The statement “True ‘Dual’ models have independent behavior in the 
Init and GetWave.” is not true. The time domain flow requires that each Init 
function be called with a valid IR. The IR may not include the equalization 
of the upstream models, but they include the IR of the upstream channels.



AV>> By ‘True Dual models’ I mean there is no dependence in AMI_Getwave on 
AMI_Init and vice versa.



WMK> I disagree: ‘True Dual models’ means that the output of AMI_Init 
includes all of the equalization of the models, as does the output of 
AMI_GetWave includes all of the equalization of the models. AMI_GetWave may, 
and does get information from AMI Init, including AMI Parameter settings and 
the equalization that the AMI_Init applied to the AMI_Init input to get the 
AMI_Init output.



So your models are perfectly legal, and either limit the use model of a User 
of this combinations of models, or puts a burden on EDA tools to handle this 
case.



I have not suggested that we impose writing Dual models, I simply defined 
the situations where upstream GetWave Only models are problematic. I also 
agree that creating Dual Rx models can be difficult, and that GetWave-Only 
terminal Rx models must be supported accurately in the standard.



In your slides you say this:



It is one thing to say ‘as long as the  user understands’ – quite another to 
say that the time domain flow is not valid unless Init_Returns_Impulse=True.



WMK>> I did not say when Time Domain is Invalid, I only said when it is 
Valid. A model maker that distributes an Init-Only or GetWave-Only Tx or 
Repeater/Redriver Rx is taking a chance that simulations using his model 
with other models that he has no control over can cause difficulties to the 
EDA tool, and inaccurate results.



AV>> A model maker who creates an AMI_Getwave model understands (or should 
understand) that their models are only meant to be for time domain, bit by 
bit simulation which is fully and unequivocally supported by the IBIS 
specification. Similar statement can be made for AMI_Init models. The same 
cannot be said for models with AMI_Getwave that depend on AMI_Init.



WMK>> I disagree: The IBIS specification supports the case where AMI_GetWave 
depends on AMI_Init. The specification says that the AMI_Init must be called 
with an Impulse Response is generated by its upstream AMI_Init, it is free 
to communicate information to its AMI_GetWave which is only called after its 
AMI_Init functions is called.



Model makers need to understand the burden that they are putting on both the 
users of their models and EDA tools of delivering GetWave-Only AMI models, 
and think I accurately demonstrated that burden. I also have experience that 
it is not difficult to build Dual Tx AMI models which both the AMI_Init and 
AMI_GetWave can be accurately correlated with each other and with data from 
both transistor simulation and/or measurements of the Tx silicon.



Our view is obviously different here. As noted in the spec - it is the 
model maker expecting to tune/adapt/optimize in the AMI_Init that is 
putting the burden on the user of their models and EDA tools. I am 
copying again for your reference:

‘Note: The Rx executable model file writer should keep in mind that it is 
not guaranteed that the

impulse response that is presented to the Rx AMI_Init function will always 
include the effects of

the Tx filter.  Therefore the Rx AMI_Init function may not be able to 
perform accurate

optimization under all circumstances.’



WMK>>  The practical matter is that Tx silicon are not adaptive (except 
during training) and Tx models are LTI so there is no excuse for a Tx Model 
to not be a Dual model. We get Init-Only Tx Models and GetWave-Only Tx 
models, and have ways of functionally making them Dual models. Unfortunately 
the people having this debate are either model makers or EDA tool vendors. 
We tend to ignore the grief that the users of AMI models have because some 
AMI Model vendors do not follow the following recommendations:

*       Tx are Dual Models
*       Repeater/Redriver Rx are Dual Models
*       Terminal Rx are either Dual Models or GetWave-Only models





Walter





Walter Katz

wkatz@xxxxxxxxxx <mailto:wkatz@xxxxxxxxxx>

Phone 303.449-2308

Mobile 303.335-6156

From: ibis-macro-bounce@xxxxxxxxxxxxx 
<mailto:ibis-macro-bounce@xxxxxxxxxxxxx
[mailto:ibis-macro-bounce@xxxxxxxxxxxxx] On Behalf Of Ambrish Varma
Sent: Wednesday, May 17, 2017 9:40 AM
To: IBIS-ATM <ibis-macro@xxxxxxxxxxxxx <mailto:ibis-macro@xxxxxxxxxxxxx> >
Subject: [ibis-macro] Re: Summary of discussion about BIRD 166.2



Hi Bob, Arpad,

We produce lot of models for our customers which are faithful to the device. 
That is -  the device model are Getwave only models. These models are backed 
by extensive and expensive correlation work.  Because of this work we are 
able to stand by our models.  We use AMI_Init to truly initialize and pass 
parameters to the model.  We oppose any  effort to arbitrarily impose a 
technique of the day on us. That will be impractical, impose enormous cost 
on us and our customers. Besides, we will be scrambling  to explain and 
justify inevitable model inconsistencies that will come by having an 
AMI_Init that returns some/part of the equalization and an AMI_Getwave that 
includes the comprehensive model that represents silicon.



The IBIS spec clearly states (following the steps in ‘TIME DOMAIN SIMULATION 
REFERENCE FLOW’) that if there is an AMI_Getwave in the all the models in 
the link – time domain simulations should be an achievable goal (step 6a, pg 
178).



We are not saying that there may not be issues with the specification as 
is – but I just want to reiterate that if there are AMI_Init function with 
Init_Returns_Impulse=True in all the models in the link then one should be 
able to perform Statistical or Time Domain Simulation without any issues. 
Similarly if there are AMI_Getwave function available and 
GetWave_Exists=True in all the models in the link then one should be able to 
perform true time domain simulations without any issues *and* without any 
other requirements.

Walters slides and subsequent statements from Bob did not appear to 
corroborate that.



Nothing in the IBIS Spec prohibits Dual Models – but making them a 
requirement will be an unnecessary burden for reasons described above.



I would like to also comment on Bob’s ‘adapt-in-init’ models. This section 
in the Spec (TIME DOMAIN SIMULATION REFERENCE FLOW) actually mentions 
exactly such models:



‘Note: The Rx executable model file writer should keep in mind that it is 
not guaranteed that the

impulse response that is presented to the Rx AMI_Init function will always 
include the effects of

the Tx filter.  Therefore the Rx AMI_Init function may not be able to 
perform accurate

optimization under all circumstances.  For this reason, the parameters of 
the Rx AMI_Init function

should always default to valid values or have a mechanism to accept 
user-defined coefficients and

allow the user to turn off any automatic optimization routines to ensure 
successful simulations.’



So – in some sense – this is a model issue that the model maker was already 
made aware of. I do not believe we should retro-fit the spec to allow for 
existence of such models.



Thanks,

Ambrish.



From: ibis-macro-bounce@xxxxxxxxxxxxx 
<mailto:ibis-macro-bounce@xxxxxxxxxxxxx
[mailto:ibis-macro-bounce@xxxxxxxxxxxxx] On Behalf Of Bob Miller
Sent: Tuesday, May 16, 2017 7:43 PM
To: Muranyi, Arpad <Arpad_Muranyi@xxxxxxxxxx 
<mailto:Arpad_Muranyi@xxxxxxxxxx> >
Cc: IBIS-ATM <ibis-macro@xxxxxxxxxxxxx <mailto:ibis-macro@xxxxxxxxxxxxx> >
Subject: [ibis-macro] Re: Summary of discussion about BIRD 166.2



I think this is an accurate assessment:

The more I think of this problem, the more I am getting the impression that 
the problem is that the flows described in the current spec did not foresee 
the more recent modeling techniques coming [...] together with some of the 
more complicated channel/device types, such as redrivers, backchannel 
optimization and probably a few more future evolutions in the trade.  As a 
result,we allow quite a few modeling approaches which don’t all work 
together in certain scenarios.

So, What to Do. I suspect we can all agree that there seems to be no 
"elegant" solution.

we can

*       try to make IBIS-AMI "elegant" by disallowing things that have been in 
circulation for quite a while (e.g. models require valid init impulse_in, 
models don't implement getwave). Risk fracturing the community w/o broad 
consensus.
*       try to "patch" the status quo by adding things (per the Keysight 
proposal).
*       try to identify "canonical" implementations which are indefinitely 
supportable and warn about others, e.g when an Init_Requires_Impulse:True 
model is downstream of an Init_Returns_Impulse:False model or an 
Init_Returns_Impulse=False model is in a statistical simulation or (?) a 
GetWave_Exists: False model is in a bit_by_bit simulation. Doesn't mean 
IBIS-AMI can't "patch" some of the problematic cases.

I tend to gravitate most to some combination of the last two as opposed to a 
major overhaul of What's Allowed, unless the benefits are very compelling.



Regards,



Bob





On Tue, May 16, 2017 at 4:41 PM, Muranyi, Arpad <Arpad_Muranyi@xxxxxxxxxx 
<mailto:Arpad_Muranyi@xxxxxxxxxx> > wrote:

Bob,



Thanks for your comments and insight.  I fully understand the neatness and

efficiency of optimizing in the Init function instead of the GetWave 
function.

So I am going to correct my words below from “natural human laziness” to

“desire to do things more neatly and efficiently”…  :)



Whether we are talking about separating Init and statistical IR processing,

or doing things in one or multiple functions is really not the issue either. 
The

more I think of this problem, the more I am getting the impression that the

problem is that the flows described in the current spec did not foresee the

more recent modeling techniques coming, such as yours, together with some

of the more complicated channel/device types, such as redrivers, backchannel

optimization and probably a few more future evolutions in the trade.  As a 
result,

we allow quite a few modeling approaches which don’t all work together in

certain scenarios.



In light of this and the last slide of Walter’s presentation today, the 
problem

I see is that in the name of backward compatibility we don’t want to change

anything that is in the spec already, but we are also afraid of adding 
completely

new capabilities too, because that might take too long to be adopted by EDA

vendors and model makers.  I am a little skeptic that a strong 
recommendation

would be sufficient to encourage people to make dual models, as Walter

proposed it in his conclusion.



In attempt to drive this conversation towards a resolution, I would like to

hear answers/comments from all on this list on the following questions:



Do we agree with Walter’s conclusion that dual models  would solve the

redriver flow problems?  Is this solution scalable and expandable for 
multiple

redriver channels and crosstalk, etc…?



Is a “strong preference” verbiage sufficient in the spec to encourage people

to write such dual models?  What do we do if we continue getting “problem

models”?



Would we be better off removing the Init_Returns_Impulse and GetWave_Exists

parameters from IBIS-AMI, which is the equivalent of “forcing” model makers

to write dual models?



I am eager to hear your answers…



Thanks,



Arpad

===============================================================





From: Bob Miller (APD) [mailto:bob.miller@xxxxxxxxxxxx ;
<mailto:bob.miller@xxxxxxxxxxxx> ]
Sent: Tuesday, May 16, 2017 3:56 PM
To: Muranyi, Arpad <Arpad_Muranyi@xxxxxxxxxx 
<mailto:Arpad_Muranyi@xxxxxxxxxx> >
Cc: IBIS-ATM <ibis-macro@xxxxxxxxxxxxx <mailto:ibis-macro@xxxxxxxxxxxxx> >


Subject: Re: [ibis-macro] Re: Summary of discussion about BIRD 166.2



Separating Init from statistical processing could clean things up, but I 
suspect that ship has already sailed (and sunk).<wink>...



I understand the conundrum imposed by adapt-in-init models like mine. I will 
restate a proposal for a new reserved parameter Init_Requires_Impulse 
(Default False) which I will happily set True for my legacy models. Perhaps 
one day I may actually get a customer complaint about it and have to make 
the models dual-tuning. Implementation of BCI models will push things 
towards GetWave, too.



Probably those of you who have been building sophisticated GetWave-adaptive 
models for a while have all the wrinkles worked out, but adaptation, at 
least in my rosy world, is more logically structured as a major 
"if(tuning_auto){Tune_Model(<model_core>, <impulse_to_tune_to>);}" function 
in AMI_Init,in which I create appropriate stimulus on-the-fly from the 
impulse, process it through the model_core, learn from it, tweak taps in the 
model_core and repeat as necessary. In AMI_GetWave, one must make the tuning 
function more of an event-driven affair that retains state across GetWave 
calls of arbitrary block_size, etc. Lots of deck-chair-arranging. When 
everything upstream of the terminal Rx is LTI and the impulse in is an 
accurate representation of the bit-by-bit waveform to be equalized, there is 
less advantage to tuning in GetWave and at least some structural perks of 
doing it in Init,



Regards,



Bob









On Tue, May 16, 2017 at 12:47 PM, Muranyi, Arpad <Arpad_Muranyi@xxxxxxxxxx 
<mailto:Arpad_Muranyi@xxxxxxxxxx> > wrote:

Mike,



I think the real issue is not necessarily that we have multiple functions 
(Init and GetWave),

but the “cross function” dependencies and the “communication walls” we have 
between

them or the two types of simulations (statistical/bit by bit).



For example, the optimization results in the Init function may be needed in 
the GetWave

function, or having to use the IR that is returned by Init in the bit by bit 
flow when GetWave

doesn’t exist.  One consequence of that is either having to duplicate the 
filter algorithms in

both functions, or having to do de-convolution.  Naturally, model makers don’t 
want to

duplicate (natural human laziness) and the spec allows them to not 
duplicate.  That results

in the need for de-convolution, but that seems to be problematic 
numerically.



So I tend to agree with Ken(?) that we need to find a way to reduce the 
“degrees of freedom”

so that we eliminate the need for having to do de-convolution.  This could 
probably be done

in several ways.



We could we could perhaps tighten up the exiting functions and eliminate 
some options,

and make some requirements (such as dual models), but our discussions didn’t 
seem to

think this would be possible due to backwards compatibility, and existing 
models, etc…



This is why I thought, perhaps another approach might help, such as taking 
out any

signal processing from Init and have a single function which supports both 
statistical and

bit by bit simulations.  But you are right, this may not require the use of 
one function,

we might be able to achieve the same with multiple functions, as long as we 
establish the

rules between them in such a way that doesn’t get in the way of supporting:



statistical only models (IR processing)

bit by bit only models (waveform processing)

models which support both of the above



models which use the IR only for optimization

models which use waveforms only for optimization/adaptation

models which use both the IR and/or the waveforms for 
optimization/adaptation



So in short, the solution is not necessarily to have a single function.  It 
is to make provisions

for the necessary information flow between the functions (or the various 
paths inside a

function) .  However, tweaking the spec with the existing functions may not 
be possible,

so we might want to consider new functions/approaches.



Thanks,



Arpad

=====================================================================



From: Mirmak, Michael [mailto:michael.mirmak@xxxxxxxxx ;
<mailto:michael.mirmak@xxxxxxxxx> ]
Sent: Tuesday, May 16, 2017 12:46 PM
To: Muranyi, Arpad <Arpad_Muranyi@xxxxxxxxxx 
<mailto:Arpad_Muranyi@xxxxxxxxxx> >; IBIS-ATM <ibis-macro@xxxxxxxxxxxxx 
<mailto:ibis-macro@xxxxxxxxxxxxx> >


Subject: RE: [ibis-macro] Re: Summary of discussion about BIRD 166.2



Arpad,



To clarify, is the issue having multiple functions or is it that the Init 
function is required and *may* have IR processing in it?  In other words, 
would keeping “Init” only for initialization and still having separate 
“statistical” and GetWave functions reduce or eliminate the problem (rather 
than having a single GetWave++ function for signal processing)?



A statistical-only function separate from Init was actually proposed in Dec. 
2014, as part of an ATM discussion.  Here’s the link (see p. 20ff):



http://www.ibis.org/macromodel_wip/archive/20141209/toddwesterhoff/IBIS-AMI%20and%20Co-optimization/Co-Optimization-IBIS-ATM_9Dec2014.pdf
 
<https://urldefense.proofpoint.com/v2/url?u=http-3A__www.ibis.org_macromodel-5Fwip_archive_20141209_toddwesterhoff_IBIS-2DAMI-2520and-2520Co-2Doptimization_Co-2DOptimization-2DIBIS-2DATM-5F9Dec2014.pdf&d=DwMFaQ&c=aUq983L2pue2FqKFoP6PGHMJQyoJ7kl3s3GZ-_haXqY&r=0Gavo25Aqgu_F0CPGlNHGxaE1UHA4ptnU3q-kd8FzDQ&m=OlxEdhRioHleWNSS7EkDtQQPM_7374ys4UQFyXZjBi8&s=kdkRIrkkKNr4D_iNCkWjn-gUSdqJRYyupB-IymqG9MU&e=>



-          MM



From: ibis-macro-bounce@xxxxxxxxxxxxx 
<mailto:ibis-macro-bounce@xxxxxxxxxxxxx
[mailto:ibis-macro-bounce@xxxxxxxxxxxxx] On Behalf Of Muranyi, Arpad
Sent: Tuesday, May 16, 2017 10:38 AM
To: IBIS-ATM <ibis-macro@xxxxxxxxxxxxx <mailto:ibis-macro@xxxxxxxxxxxxx> >
Subject: [ibis-macro] Re: Summary of discussion about BIRD 166.2



Hello Everybody,



I have a slightly higher level observation/comment on all this.



To me it seems that the real problem we have is that we allowed signal 
processing

in the Init function.  As a result we need to deal with the various 
combinations of

whether the Init function returns a modified IR or not and whether GetWave

exists or not, and whether GetWave duplicates what the Init function does. 
This

results in a lot of possible combinations and as we saw it in Walter’s 
presentation,

the total number of combinations increases exponentially when we have 
multiple

channels connected by repeaters.



I think if we made a somewhat radical change and used Init ONLY for what its 
name

says, for initialization purposes, and do ALL signal processing in the 
GetWave function

(or perhaps a NewName function), we could eliminate a lot of these problems. 
I

understand that we would still need to make provisions for the statistical 
and bit

by bit flows (IR processing vs. waveform processing), but if all of that is 
placed into

one function, we would not have the question of whether the same filter bock 
is

duplicated in two different functions or not.  It seems that this “duplicate 
or not”

issue is a big part of our problem, and perhaps eliminating that could help 
us to

start making some progress in solving the rest of the flow issues (mixing 
statistical

or bit by bit flows/models).



Just a thought…



Thanks,



Arpad

===================================================================



From: ibis-macro-bounce@xxxxxxxxxxxxx 
<mailto:ibis-macro-bounce@xxxxxxxxxxxxx
[mailto:ibis-macro-bounce@xxxxxxxxxxxxx] On Behalf Of Walter Katz
Sent: Tuesday, May 16, 2017 7:32 AM
To: RAO,FANGYI (K-USA,ex1) <fangyi_rao@xxxxxxxxxxxx 
<mailto:fangyi_rao@xxxxxxxxxxxx> >; Bob Miller (APD) 
<bob.miller@xxxxxxxxxxxx <mailto:bob.miller@xxxxxxxxxxxx> >
Cc: IBIS-ATM <ibis-macro@xxxxxxxxxxxxx <mailto:ibis-macro@xxxxxxxxxxxxx> >
Subject: [ibis-macro] Re: Summary of discussion about BIRD 166.2



Fangyi,



Actually not. I choose to not DOCUMENT a flow when the terminus Rx has a 
GetWave and any one of the upstream Rx are Init-Only. The EDA tool need not 
discard them, there are numerous flows that the EDA tool can use.



Secondly, any of the upstream Rx can be converted to Dual by the model 
maker. What you have proposed in your BIRD is to add IR outputs to the 
AMI_Init function so that an EDA tool can implement a proxy AMI GetWave, 
which as I said in the previous line the model maker can do as easily in 
IBIS 6.1 by instead of adding these IR to the AMI_Init output, storing these 
IR in the AMI_model_memory, and implementing an AMI_GetWave which does the 
trivial job of convolving these IR with the AMI_GetWave input.



Walter



Walter Katz

wkatz@xxxxxxxxxx <mailto:wkatz@xxxxxxxxxx>

Phone 303.449-2308 <tel:(303)%20449-2308>

Mobile 303.335-6156 <tel:(303)%20335-6156>

From: RAO,FANGYI (K-USA,ex1) [mailto:fangyi_rao@xxxxxxxxxxxx]
Sent: Tuesday, May 16, 2017 2:56 AM
To: Bob Miller (APD) <bob.miller@xxxxxxxxxxxx 
<mailto:bob.miller@xxxxxxxxxxxx> >; Walter Katz <wkatz@xxxxxxxxxx 
<mailto:wkatz@xxxxxxxxxx> >
Cc: IBIS-ATM <ibis-macro@xxxxxxxxxxxxx <mailto:ibis-macro@xxxxxxxxxxxxx> >
Subject: RE: [ibis-macro] Re: Summary of discussion about BIRD 166.2



Bob,



The revision in BIRD166.3 is asking the EDA tool to discard all the GetWave 
functions in the system, including those in your models, if one Init-only 
model is present, even for valid combinations of Init-only and dual models.



Regards,

Fangyi



From: Bob Miller (APD) [mailto:bob.miller@xxxxxxxxxxxx]
Sent: Thursday, May 11, 2017 8:03 AM
To: Walter Katz <wkatz@xxxxxxxxxx <mailto:wkatz@xxxxxxxxxx> >
Cc: RAO,FANGYI (K-USA,ex1) <fangyi_rao@xxxxxxxxxxxx 
<mailto:fangyi_rao@xxxxxxxxxxxx> >; IBIS-ATM <ibis-macro@xxxxxxxxxxxxx 
<mailto:ibis-macro@xxxxxxxxxxxxx> >
Subject: Re: [ibis-macro] Re: Summary of discussion about BIRD 166.2



So I need a bit of clarification:



Does Walter's tweak eliminate Fangyi's objection?



 Fangvi?



Regards,



Bob



On Thu, May 11, 2017 at 7:58 AM, Walter Katz <wkatz@xxxxxxxxxx 
<mailto:wkatz@xxxxxxxxxx> > wrote:

Fangyi,



I would like to reference what the Redriver/Retimer flow says about the time 
domain flow:



Step 7. The simulation platform performs simulation on the upstream channel, 
which consists of Tx1, physical channel 1, and Rx1, according to the AMI 
flow defined in the specification for channels without Repeaters.

Step 8a. Redriver: The simulation platform uses the signal waveform at the 
output end of Rx1’s algorithmic model in step 7, regardless whether Rx1’s 
AMI_GetWave exists or not, as the stimulus of Tx2’s algorithmic model, 
regardless whether Tx2’s AMI_GetWave exists or not, and performs simulation 
on the downstream channel, which consists of Tx2, physical channel 2 and 
Rx2, according to the AMI flow defined in the spec for channels without 
Redrivers.

Step 8b. Retimer: The simulation platform samples the output waveform of 
Retimer Rx AMI_GetWave at ½ UI after each clock tick returned by the 
function, generates a digital stimulus as the input to Tx2’s algorithmic 
model, regardless whether Tx2’s AMI_GetWave exists or not, and performs 
simulation on the downstream channel, which consists of Tx2, physical 
channel 2 and Rx2, according to the AMI flow defined in the spec for 
channels without Redriver. The logic level of the digital stimulus is 1 if 
sampled value >= Rx1’s Rx_Receiver_Sensitivity and 0 if sampled value 
<= -Rx1’s Rx_Receiver_Sensitivity. If  –Rx1’s Rx_Receiver_Sensitivity < 
sampled value < Rx1’s Rx_Reciver_Sensitivity, the logic level is unchanged 
from the previous bit. The digital stimulus has values of -½ volt for logic 
0 and +½ volt for logic 1.



The flow that Fangyi refers to (highlighted RED) when Tx2 and Rx2 do not 
have an AMI_GetWave is on page 178.



Step 6c. If Tx GetWave_Exists is False and Rx GetWave_Exists is False, the 
output of Step 4 is convolved with the output of Step 3 by the EDA tool and 
the result is passed on to Step 8.

      Where

Step 3. The output of Step 2 is presented to the Rx executable model file’s 
AMI_Init function and the Rx AMI_Init function is executed.  The Rx AMI_Init 
function may modify the impulse response or choose to leave it unchanged.

Step 4. The EDA tool produces a digital stimulus waveform.  A digital 
stimulus waveform is 0.5 when the stimulus is "high", -0.5 when the stimulus 
is "low", and may have a value between -0.5 and 0.5 such that transitions 
occur when the stimulus crosses 0.



Where does this digital stimulus come from. There is only one digital 
stimulus in the Redriver Channel, it is the digital stimulus that is the 
input to Tx1. When this stimulus is convolved with the IR output of Rx2 then 
all works perfectly well.



Fangyi has represented the meaning of “according to the AMI flow defined in 
the spec for channels without Redrivers” as using the non-digital stimulus 
output of Rx1 as the waveform to convolve with the output of Rx2 AMI_Init, 
but the “spec for channels without Redrivers” call for convolving the output 
of Rx AMI_Init with a digital stimulus.



The following corrects step 8a in the existing IBIS 6.1 specification to 
clarify that there are two cases for time domain simulations. One with Rx1, 
Tx1, Tx2 and Rx2 having an AMI_GetWave, and one with Rx1, Tx1, Tx2 or Rx2 
not having an AMI_GetWave. Note that the time domain flow in the second case 
will not include any of the AM_GetWave functions that do exist. Unless Rx1, 
Tx1, Tx2 and Rx2 are Dual Models any Redriver flow is problematic. It should 
be noted that any AMI_Init only model can be enhanced to include an 
AMI_GetWave. An alternative solution to this is to enhance IBIS to include 
additional IR outputs of AMI_Init that describes the equalization of the 
model so that the simulator can implement a proxy AMI_GetWave function when 
the AMI_GetWave function does not exist.



Step 8a. Redriver when Tx1, Rx1, Tx2 and Rx2 have AMI_GetWave: The 
simulation platform uses the signal waveform at the output end of Rx1’s 
algorithmic model in step 7  as the stimulus of Tx2’s algorithmic model  and 
performs simulation on the downstream channel, which consists of Tx2, 
physical channel 2 and Rx2, according to the AMI flow defined in the spec 
for channels without Redrivers.

Step 8b. Redriver when Tx1, Rx1, Tx2 or Rx2 do not have AMI_GetWave: The 
output of Step 4 according to the AMI flow defined in the specification for 
channels without Repeaters. is convolved with the output of Step 6a by the 
EDA tool and the result is passed on to Step 8 according to the AMI flow 
defined in the specification for channels without Repeaters.

Step 8c. Retimer: The simulation platform samples the output waveform of 
Retimer Rx AMI_GetWave at ½ UI after each clock tick returned by the 
function, generates a digital stimulus as the input to Tx2’s algorithmic 
model, regardless whether Tx2’s AMI_GetWave exists or not, and performs 
simulation on the downstream channel, which consists of Tx2, physical 
channel 2 and Rx2, according to the AMI flow defined in the spec for 
channels without Redriver. The logic level of the digital stimulus is 1 if 
sampled value >= Rx1’s Rx_Receiver_Sensitivity and 0 if sampled value 
<= -Rx1’s Rx_Receiver_Sensitivity. If  –Rx1’s Rx_Receiver_Sensitivity < 
sampled value < Rx1’s Rx_Reciver_Sensitivity, the logic level is unchanged 
from the previous bit. The digital stimulus has values of -½ volt for logic 
0 and +½ volt for logic 1.



Walter





Walter Katz

wkatz@xxxxxxxxxx <mailto:wkatz@xxxxxxxxxx>

Phone 303.449-2308 <tel:(303)%20449-2308>

Mobile 303.335-6156 <tel:(303)%20335-6156>

From: ibis-macro-bounce@xxxxxxxxxxxxx 
<mailto:ibis-macro-bounce@xxxxxxxxxxxxx
[mailto:ibis-macro-bounce@xxxxxxxxxxxxx ;
<mailto:ibis-macro-bounce@xxxxxxxxxxxxx> ] On Behalf Of RAO,FANGYI 
(K-USA,ex1)
Sent: Thursday, May 11, 2017 3:31 AM
To: IBIS-ATM <ibis-macro@xxxxxxxxxxxxx <mailto:ibis-macro@xxxxxxxxxxxxx> >
Subject: [ibis-macro] Re: Summary of discussion about BIRD 166.2



All,



One unanimous agreement reached at the May 9 ATM that is missing in Walter’s 
summary is that BIRD166.2 introduces artificial inflation of redirver 
nonlinearity (e.g. limiting mode and compression), noise and crosstalks.



BTW, GetWave-only is a model problem but not a flow problem.



Regards,

Fangyi



From: ibis-macro-bounce@xxxxxxxxxxxxx 
<mailto:ibis-macro-bounce@xxxxxxxxxxxxx
[mailto:ibis-macro-bounce@xxxxxxxxxxxxx] On Behalf Of Walter Katz
Sent: Wednesday, May 10, 2017 5:16 AM
To: IBIS-ATM <ibis-macro@xxxxxxxxxxxxx <mailto:ibis-macro@xxxxxxxxxxxxx> >
Subject: [ibis-macro] Summary of discussion about BIRD 166.2



All,



Let me summarize the discussion we had on May 9 about BIRD 166.2 by 
describing five scenarios, and then some concluding remarks.



Scenario 1, all four AMI models in the Redriver flow (Tx1, Rx1, Tx2, Rx2) 
are Init Only models.

The current flow in IBIS 6.1 is flawed because the Rx2 AMI_Init function 
does not receive the complete IR input to properly determine its 
equalization.

There is unanimous agreement that BIRD 166.2 fixes this for statistical 
simulations.



Scenario 2, all four AMI models in the Redriver flow (Tx1, Rx1, Tx2, Rx2) 
are Dual models.

The current flow in IBIS 6.1 is flawed because the Rx2 AMI_Init function 
does not receive the complete IR input to properly determine its 
equalization.

There is unanimous agreement that BIRD 166.2 fixes this for both statistical 
and time domain simulations.



Scenario 3, the Tx1 and Rx1 AMI models are Dual Models and the Tx and Rx2) 
are Init Only models.

The current flow in IBIS 6.1 is flawed because the Rx2 AMI_Init function 
does not receive the complete IR input to properly determine its 
equalization.

There is unanimous agreement that BIRD 166.2 fixes the statistical flow, but 
the time domain flow remains problematic.



Scenario 4, all four AMI models in the Redriver flow (Tx1, Rx1, Tx2, Rx2) 
are a combination of Init Only and Dual models.

The current flow in IBIS 6.1 is flawed because the Rx2 AMI_Init function 
does not receive the complete IR input to properly determine its 
equalization.

There is unanimous agreement that BIRD 166.2 fixes the statistical flow, but 
the time domain flow remains problematic.



Scenario 5, one or more of the four AMI models in the Redriver flow (Tx1, 
Rx1, Tx2, Rx2) are GetWave Only models.

There is no valid statistical flow.



The conclusion is that BIRD 166.2 is the correct statistical flow when all 
four AMI models in the Redriver flow (Tx1, Rx1, Tx2, Rx2) are a combination 
of Init Only and Dual models, and is the correct time domain flow when all 
four models are Dual Models.



What I believe IBIS should do is:

1.      Approve BIRD 166.2
2.      Recommend that all four AMI models in the Redriver flow (Tx1, Rx1, Tx2, 
Rx2) are Dual Models in order to support Time Domain flow.

a.      Note that any Init Only AMI model can easily be upgraded by the model 
maker to a Dual Model.

3.      Enhance IBIS AMI by adding additional IR outputs to the AMI_Init 
function 
that contain the linear (CTLE) and non-linear (DFE) equalization of the 
model. (Keysight AMI_Init Enhancement)



Which leads to the following questions:

1.      Is the Keysight AMI_Init Enhancement  necessary if all AMI Models are 
Dual Models?
2.      Is it easier for a model maker to implement the Keysight AMI_Init 
Enhancement  instead of making Dual Models?
3.      If a model maker is too lazy to make a Dual Model, will he be too lazy 
to 
implement the Keysight AMI_Init Enhancement?
4.      Will the EDA tools that are used by model makers implement the Keysight 
AMI_Init Enhancement?



Note that the Keysight AMI_Init Enhancement does not address the problem of 
AMI_GetWave only models.



Walter



Walter Katz

wkatz@xxxxxxxxxx <mailto:wkatz@xxxxxxxxxx>

Phone 303.449-2308 <tel:(303)%20449-2308>

Mobile 303.335-6156 <tel:(303)%20335-6156>







JPEG image

Other related posts: