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

  • From: Ambrish Varma <ambrishv@xxxxxxxxxxx>
  • To: "Arpad_Muranyi@xxxxxxxxxx" <Arpad_Muranyi@xxxxxxxxxx>, "ibis-macro@xxxxxxxxxxxxx" <ibis-macro@xxxxxxxxxxxxx>
  • Date: Tue, 27 Apr 2010 08:10:53 -0700

Good Point Arpad,
I was wondering about that myself.
I don't think that it will be a good idea to dwell on the truth table as it 
links Use_Init_Output to LTI simulation.

I believe if we put a couple of clarifications, we should be able to remove all 
(or most?) of the doubts and confusion.

1. EDA tools will only consider Use_Init_Output if Getwave_Exists is true. (in 
other words, Use_Init_Output will only be considered in a Nonlinear, and / or 
Time-variant (non-LTI) Simulation.)
2. In section 2.3, mention that for LTI simulations the flow will ignore 
references to Use_Init_Output and the AMI_Getwave call.

Also - we should be careful in using Time Domain simulation as an equivalent 
term for Nonlinear simulation because we can always do Time Domain simulation 
for LTI simulation (slide 5 of your flow).

Thanks,
Ambrish.

________________________________
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:

 [cid:image001.jpg@01CAE5FA.0F1BDF30]

"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<mailto:twesterh@xxxxxxxxxx>
www.sisoft.com<http://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<mailto:twesterh@xxxxxxxxxx>
www.sisoft.com<http://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<mailto:twesterh@xxxxxxxxxx>
www.sisoft.com<http://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: