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

  • From: Taranjit Kukal <kukal@xxxxxxxxxxx>
  • To: "'msteinb@xxxxxxxxxx'" <msteinb@xxxxxxxxxx>, "'ibis-macro@xxxxxxxxxxxxx'" <ibis-macro@xxxxxxxxxxxxx>
  • Date: Thu, 14 Jun 2012 20:05:05 +0530

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.


PNG image

Other related posts: