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

  • From: "Walter Katz" <wkatz@xxxxxxxxxx>
  • To: <Arpad_Muranyi@xxxxxxxxxx>, <ibis-macro@xxxxxxxxxxxxx>
  • Date: Mon, 26 Apr 2010 14:24:07 -0400

Arpad,

The use of Use_Init_Output has a well defined meaning, although needs to be
corrected because of the digital vs analog input to GetWave.

In IBIS 5.0:

|               Use_Init_Output:
|
|               Use_Init_Output is of usage Info and type Boolean.  When
|               Use_Init_Output is set to "True", the EDA tool is
|               instructed to use the output impulse response from the
|               AMI_Init function when creating the input waveform
|               presented to the AMI_Getwave function.
|
|               If the Reserved Parameter, Use_Init_Output, is set to
|               "False", EDA tools will use the original (unfiltered)
|               impulse response of the channel when creating the input
|               waveform presented to the AMI_Getwave function.
|
|               The algorithmic model is expected to modify the waveform in
|               place.
|
|               Use_Init_Output is optional. The default value for this
|               parameter is "True".
|
|               If Use_Init_Output is False, GetWave_Exists must be True.

First, note that Use_Init_Output only controls the input to GetWave. Since
GetWave is by definition time domain, then in fact Use_Init_Output is only
used for time domain simulations. Your statement "As the spec is written
now, there is no mention that Use_Init_Output
applies to time domain simulations only." is therefore incorrect.


I would modify this as follows:

|               Use_Init_Output:
|
|               Use_Init_Output is of usage Info and type Boolean.
|               Use_Init_Output has no meaning unless Init_Returns_Impulse
|               and GetWave_Exist are both True. It is used when the
AMI_GetWave
|               function does not include the LTI equalization that is
|               returned in the impulse response output if AMI_Init. The
|               AMI_GetWave function may include either additional
equalization
|               and or clock recovery data.
|
|               When Use_Init_Output is set to "True", the EDA tool is
|               instructed to use the output impulse response from the
|               AMI_Init function when using the AMI_Getwave function.
|               For Tx models, the impulse response from Init should be
|               convolved with the output of AMI_GetWave. For Rx models,
|               the impulse response from AMI_Init should be convolved with
the
|               input to the AMI_GetWave.
|
|               If the Reserved Parameter, Use_Init_Output, is set to
|               "False", EDA tools will not modify the output of Tx
AMI_GetWave
|               or the input to Rx AMI_GetWave with the impulse response
output
|               of AMI_Init.
|
|               Use_Init_Output is optional, and only applies to models with
|               GetWave_Exists=True. The default value for this
|               parameter is "True".
|
|               If GetWave_Exists is False, Use_init_Output should not be
specified.

Walter

Walter Katz
303.449-2308
Mobile 720.333-1107
wkatz@xxxxxxxxxx
www.sisoft.com

-----Original Message-----
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
======================================================

Other related posts: