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