[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?

Thanks.
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.

Rgds


 
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....
 
Kukal-

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)

 

cid:image001.png@01CD49C5.F040DCA0

 

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.

 

 

Rgds

..kukal

 

Other related posts: