[ibis-macro] Re: AMI-init should pass modified IR to getwave....

  • From: Mike Steinberger <msteinb@xxxxxxxxxx>
  • To: Taranjit Kukal <kukal@xxxxxxxxxxx>
  • Date: Thu, 14 Jun 2012 09:40:34 -0500

So, what prevents you from performing the required convolution inside your model, if that's what your model needs?

Mike Steinberger

On 06/14/2012 09:35 AM, Taranjit Kukal wrote:
Hi Mike,
It is not about passing the IR from init to getwave, it is about getting the waveform convoluted with modified-IR in getwave. This saves unnecessary convolution of IR in getwave and leaves this process to EDA tool that does the appropriate sampling and math. This also brings consistency.

Hope I made myself clear.


From: Mike Steinberger [mailto:msteinb@xxxxxxxxxx]
Sent: Thursday, June 14, 2012 07:32 PM
To: ibis-macro@xxxxxxxxxxxxx <ibis-macro@xxxxxxxxxxxxx>
Subject: [ibis-macro] Re: AMI-init should pass modified IR to getwave....

You can always store the impulse responses you want inside the memory pointed to by the model's memory handle.

That is, inside the header file:

typedef struct {
    double *internal_impulse_response,
} MyModel;

Inside AMI_Init():

MyModel *self;
self = (MyModel*)malloc( sizeof(MyModel) );
memory_handle = (void*)self;
self->internal_impulse_response = (double*)malloc( row_size*sizeof(double) );
//Set the value of self->internal_impulse_response however you want.

Inside AMI_GetWave():

MyModel *self = (MyModel*)memory_handle;
//Use self->internal_impulse_response however you like

I'm pretty sure there are other model developers who have been using this technique successfully now for several years.

Good luck.
Mike Steinberger

On 06/14/2012 01:04 AM, Taranjit Kukal wrote:

Hi All,

When I was implementing AMI model, I found a situation where it was important that Rx ami_init needed to pass modified-IR to getwave function.

Reason was that Chip-RDL-routing was available as Impulse-Responses.

Removal for “Use_Init_Output” to make Statistical-flow independent of Transient-flow,  is going to break the original intent where init and getwave were supposed to work in conjunction with each other handling linear and non-linear filtering portions respectively (as shown below)




I would go back to Arpad’s suggestion (year 2010) for having two Impulse-responses coming out of ami_init

-          One that goes to EDA tool for statistical flow

-          One that gets passed to getwave to allow splitting of modeling-effort across init and getwave and make things easy for linear filters.


BIRD120 was brought up that deprecates use of “use_init_output” with a view to keep statistical and time-domain simulations independent. But as I think more, we need to allow both capabilities. It absolutely does not make sense to implement simple linear filters within getwave when we can convolute the filter-IR with channel-IR. We should take all steps to make modeling easy and ensure enough flexibility.


This way, we cover both the scenarios – those who want to leverage init as complement to getwave and those who want to keep statistical-flow purely independent. Since this does not bring any disadvantage, I strongly feel that we all re-consider outputting two modified-IRs out of init function – one for statistical-flow and another one to complement getwave filtering.






Other related posts: