[ibis-macro] Re: What happens when Init_Returns_Impulse = False?

  • From: "Muranyi, Arpad" <Arpad_Muranyi@xxxxxxxxxx>
  • To: <ibis-macro@xxxxxxxxxxxxx>
  • Date: Tue, 27 Apr 2010 07:54:52 -0700

Todd,
 
I will put my comments/questions between your lines.
 
Thanks,
 
Arpad
====================================================

________________________________

From: ibis-macro-bounce@xxxxxxxxxxxxx
[mailto:ibis-macro-bounce@xxxxxxxxxxxxx] On Behalf Of Todd Westerhoff
Sent: Tuesday, April 27, 2010 9:12 AM
To: ibis-macro@xxxxxxxxxxxxx
Subject: [ibis-macro] Re: What happens when Init_Returns_Impulse =
False?



Arpad,

 

This is a really good question.

 

I view "Use_Init_Output" as controlling whether or not the impulse
response returned by Init should be factored into the Time-Domain
result.  In truth, it only really has meaning when both
Init_Returns_Impulse and Getwave_Exists are True.  I maintain that the
case:

 

Init_Returns_Impulse = True

Getwave_Exists = False

Use_Init_Output = False

 

Makes no sense, which is why I marked it as Invalid.  The first two
parameters are declaring that the model's equalization is adequately
characterized by an impulse response (i.e., is LTI).  If that is the
case, then Time-Domain simulation can derive any waveform behavior it
needs through convolution.  The fine point here is how you define
"Use_Init_Output" .... if it is N/A when either of the two other
parameters are False, then you don't need to mark the above case as
Invalid.  If you define "Use_Init_Output" as controlling whether the
model's impulse response gets factored into the Time-Domain result
(which, in my opinion, is a better definition from a flow standpoint),
then Use_Init_Output = False in the above case would tell the simulator
to omit the model's behavior from the Time-Domain result when it doesn't
need to, and therefore makes no practical sense.

 

Thus, I marked it as Invalid. 

 

AM: This is all true for TD simulations.  But I wanted to point out

that this combination is perfectly valid for a statistical simulation,

where Use_Init_Output is ignored (according to your last sentence
below),

GetWave is not needed (Exists=False), and Init returns a perfectly
usable

modified impulse response...  So in your truth table I would have put

this as a valid combination with  a note saying "Model supports
statistical

simulation only".

 

Your second case:

 

Init_Returns_Impulse = False

Getwave_Exists = True

Use_Init_Output = False

 

Declares that the model supports Time-Domain simulation but not
Statistical simulation.  Remember that you can still run a Statistical
simulation, but the model's equalization will effectively be omitted.
Do you allow the Statistical simulation to be run or not?  We do, but
the user needs to understand what the results represent. 

 

AM: I agree with this, but this was not my point.  I was referring to:

 

Init_Returns_Impulse = False

GetWave_Exists       = True

Use_Init_Output      = True

 

You marked this as Invalid, but I think this combination is equivalent

to the combination you marked with Note 2:

 

Init_Returns_Impulse = False

GetWave_Exists       = True

Use_Init_Output      = False

 

because the only difference between these two is the Use_Init_Output,

but since Init_Returns_Impulse = False, the output of Init is the same

as its input (Init doesn't modify the input), therefore whether we

pick its input or output by Use_Init_Output makes no difference.  So

if one of these two cases is valid with Note two, the other should also

be just as valid with Note 2, yet you marked one of these as invalid.

 

 

Consider the case where the TX declares:

 

Init_Returns_Impulse = True

Getwave_Exists = False

Use_Init_Output = True

 

And the RX declares:

 

Init_Returns_Impulse = False

Getwave_Exists = True

Use_Init_Output = False

 

We note that the output of Statistical simulation represents the
waveform at the RX pad, instead of the decision point.

 

AM: In the light of your last sentence, this combination makes me wonder

again what really is the role of Use_Init_Output.  If it should be
ignored

in statistical simulations, I would have just used an "X" after the
equal

sign that follows it.  This way I feel that it does have a certain
meaning

and therefore I need to show it on my flow diagrams even for the
statistical

flow.  This gives me the impression that we say that it should be
ignored,

but at the same time we are using it meaningfully in the examples...

 

Make sense?

 

FWIW, my understanding (and strong opinion) is that Use_Init_Output
never, ever, ever, ever affects Statistical simulation results.  That's
tantamount to saying that we're just going to ignore the model's
behavior - and there's no reason to do that.

 

Todd. 

 

________________________


Todd Westerhoff
VP, Software Products
SiSoft
6 Clock Tower Place, Suite 250
Maynard, MA 01754
(978) 461-0449 x24
twesterh@xxxxxxxxxx
www.sisoft.com

________________________________

From: ibis-macro-bounce@xxxxxxxxxxxxx
[mailto:ibis-macro-bounce@xxxxxxxxxxxxx] On Behalf Of Muranyi, Arpad
Sent: Tuesday, April 27, 2010 2:00 AM
To: ibis-macro@xxxxxxxxxxxxx
Subject: [ibis-macro] Re: What happens when Init_Returns_Impulse =
False?

 

Forgot to explain myself on the first question:

 

If we use the "Use_Init_Output" in the sense that it won't

have an effect on statistical simulations, then the case

where GetWave Exists = False and Init_Returns_Impulse = True

and Use_Init_Output = False should also be valid for

statistical simulations, since Use_Init_Output is ignored

in statistical simulations, and the box should say

"Model supports statistical simulation ONLY".

 

On the other hand, if you made that case invalid because you

used "Use_Init_Output" in a sense that it also affects the

statistical path, then the case where GetWave_Exists = True

and Use_Init_Output = False and Init_Returns_Impulse = True

would not be able to support statistical simulations...

 

Arpad

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

________________________________

From: ibis-macro-bounce@xxxxxxxxxxxxx
[mailto:ibis-macro-bounce@xxxxxxxxxxxxx] On Behalf Of Muranyi, Arpad
Sent: Tuesday, April 27, 2010 12:42 AM
To: ibis-macro@xxxxxxxxxxxxx
Subject: [ibis-macro] Re: What happens when Init_Returns_Impulse =
False?

Todd,

 

I am searching for truth in your truth table...  :-) and have

two questions/comments:

 

1)  In what sense did you use the "Use_Init_Output" in your

table?  In the sense that it controls either the Statistical

or the TD flow, or in a sense that it only effects the TD

flow?

 

2)  Shouldn't the case below "Note 2" also be valid and be

labeled with Note 2?  Since Init_Returns_Impulse is False,

the output of Init is the same as its input, therefore the

value of Use_Init_Output shouldn't matter, we still get the

input of Init...

 

Thanks,

 

Arpad

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

 

________________________________

From: ibis-macro-bounce@xxxxxxxxxxxxx
[mailto:ibis-macro-bounce@xxxxxxxxxxxxx] On Behalf Of Todd Westerhoff
Sent: Monday, April 26, 2010 4:18 PM
To: ibis-macro@xxxxxxxxxxxxx
Subject: [ibis-macro] Re: What happens when Init_Returns_Impulse =
False?

Resend ... looks like the graphic got mangled.

 

--------------------

 

Arpad,

 

Here's a cut at what I think a full truth table could look like:

 

  

 

"Invalid" means the combination is not allowed.  Use_Init_Output really
only has meaning when Init_Returns_Impulse and Getwave_Exists are both
true ... you could argue that when either Init_Returns_Impulse or
Getwave_Exists is False, Use_Init_Output is N/A.  I chose not to
represent it that way because I found this representation to be simpler.

 

While I'm not fond of the names of these reserved parameters (I don't
like the terms "Init" and "Getwave" much either), there are many models
out there already that use them.  I'm (personally) not strictly against
deprecating these parameter names and replacing them, but there'd better
be a darn good argument for it.  Since these switches are basically used
only by model makers and EDA companies, I'd say we live with the current
names and do a better job of documenting how they are to be used.

 

Strict minimalists will point out that since we have three Boolean
variables and only four legal states, it ought to be possible to use
only two Boolean variables to encode what we need.  While I agree that
should be possible, I'll also state that I don't want to go there, nor
do I think there's any tangible benefit in doing so.

 

Todd.

 

 

 

________________________


Todd Westerhoff
VP, Software Products
SiSoft
6 Clock Tower Place, Suite 250
Maynard, MA 01754
(978) 461-0449 x24
twesterh@xxxxxxxxxx
www.sisoft.com

________________________________

From: ibis-macro-bounce@xxxxxxxxxxxxx
[mailto:ibis-macro-bounce@xxxxxxxxxxxxx] On Behalf Of Muranyi, Arpad
Sent: Monday, April 26, 2010 12:43 PM
To: ibis-macro@xxxxxxxxxxxxx
Subject: [ibis-macro] Re: What happens when Init_Returns_Impulse =
False?

 

Thanks Todd for the "truth table".  I think it makes sense, but I

wonder what approach we should take to fix the spec.  Here is the

problem.

 

As the spec is written now, there is no mention that Use_Init_Output

applies to time domain simulations only.  As a consequence, the first

two cases you describe come across as having two controls which have

basically the same effect, i.e. duplicate controls.  After having

gone through the email thread last week I understand now that this

was not the intent, but the spec can be interpreted this way without

fixing it.

 

So the question is this:  We can tailor the spec to the controls or

the controls to the spec.  Which way should we try to fix this?

Should we just change the explanation text in the spec to reflect

these intentions and then draw the flow diagrams accordingly, or

should try to find a flow diagram that may work in both time domain

and statistical modes with perhaps eliminating one or the other of

these Booleans?  To be honest, I really don't like these two controls

the way they do almost the same, and that their name doesn't reflect

what the real difference is between them, i.e. that one is only

effecting time domain simulations but the other affects both...

 

Thanks,

 

Arpad

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

 

 

________________________________

From: ibis-macro-bounce@xxxxxxxxxxxxx
[mailto:ibis-macro-bounce@xxxxxxxxxxxxx] On Behalf Of Todd Westerhoff
Sent: Friday, April 23, 2010 3:13 PM
To: ibis-macro@xxxxxxxxxxxxx
Subject: [ibis-macro] Re: What happens when Init_Returns_Impulse =
False?

Arpad,

 

Sorry for the delay in reply.

 

Given: Use_Init_Output only applies to Time Domain simulation,

 

Then:

 

Init_Returns_Impulse = False, Use_Init_Output = False, Getwave_Exists =
True

 

and

 

Init_Returns_Impulse = True, Use_Init_Output = False, Getwave_Exists =
True

 

are functionally equivalent from a Time Domain simulation point of view.

 

Extra credit: the two cases are not the same from a Statistical
simulation point of view.  The eye produced by the first case will not
include the model's equalization, while the eye produced by the second
case will.

 

Therefore, models that conform to:

 

                        Init_Returns_Impulse = True, Use_Init_Output =
False, Getwave_Exists = True

 

Fully support both Statistical and Time Domain simulation.  Is that the
answer to the question you were asking?

 

Todd.

 

________________________


Todd Westerhoff
VP, Software Products
SiSoft
6 Clock Tower Place, Suite 250
Maynard, MA 01754
(978) 461-0449 x24
twesterh@xxxxxxxxxx
www.sisoft.com

________________________________

From: ibis-macro-bounce@xxxxxxxxxxxxx
[mailto:ibis-macro-bounce@xxxxxxxxxxxxx] On Behalf Of Muranyi, Arpad
Sent: Thursday, April 22, 2010 7:31 PM
To: IBIS-ATM
Subject: [ibis-macro] Re: What happens when Init_Returns_Impulse =
False?

 

Todd,

 

In that case, how is Init_Returns_Impulse = False

different from Use_Init_Output = False?

 

I admit, I may have to brainwash myself now with

the recent revelations about section 2.3, but I

would appreciate your (or any one else's) insight

on this one...

 

Thanks,

 

Arpad

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

 

________________________________

From: Todd Westerhoff [mailto:twesterh@xxxxxxxxxx] 
Sent: Thursday, April 22, 2010 12:13 PM
To: Muranyi, Arpad; 'IBIS-ATM'
Subject: RE: [ibis-macro] What happens when Init_Returns_Impulse =
False?

All,

 

As I understand it, Init is expected to modify the impulse response in
place in memory.  The simulator passes the model a pointer to the
impulse response, and uses that same pointer to access the result when
the Init call returns control to the simulator.

 

If the model doesn't touch the impulse response at all, it's there in
memory just as the simulator supplied it.

 

Todd.

 

________________________


Todd Westerhoff
VP, Software Products
SiSoft
6 Clock Tower Place, Suite 250
Maynard, MA 01754
(978) 461-0449 x24
twesterh@xxxxxxxxxx
www.sisoft.com

________________________________

From: ibis-macro-bounce@xxxxxxxxxxxxx
[mailto:ibis-macro-bounce@xxxxxxxxxxxxx] On Behalf Of Muranyi, Arpad
Sent: Thursday, April 22, 2010 12:00 PM
To: IBIS-ATM
Subject: [ibis-macro] What happens when Init_Returns_Impulse = False?

 

I would like to get some ideas from the authors

of the AMI specification on what the intent was

when Init_Returns_Impulse = False.

 

I would also like to get some suggestions on what

the Init function should return when

Init_Returns_Impulse = False.

 

Options:

 

- return the same thing that was sent into Init

- return impulse response of the filter

- return uninitialized memory (garbage or noise)

 

It seems that either the first or second answer

may be the correct one if I consider that the

calculations are supposed to be done "in place",

i.e. in the same memory space where the input

was placed.  If nothing is done, the memory will

still contain the input data in that place.  If

something is done, like returning the filter only

impulse response, we will get that in that memory

space.  It is hard to turn that memory space into

uninitialized memory, unless we use a random number

generator to do something that can mimic that effect.

 

Thanks,

 

Arpad

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

 

JPEG image

Other related posts: