The Designer's Guide Community Forum
https://designers-guide.org/forum/YaBB.pl
Simulators >> AMS Simulators >> blowup parameter
https://designers-guide.org/forum/YaBB.pl?num=1212673213

Message started by juska on Jun 5th, 2008, 6:40am

Title: blowup parameter
Post by juska on Jun 5th, 2008, 6:40am

I'm simulating a verilogams module.
My simulation ends with an error linked to blowup parameter. As follows:

Error found by Spectre at time 15 ns during transient analysis 'amsAnalysis'.
Signal V(..) exceeds the blowup limit for the quantity V which is 1GV.
If you want signal this large, set the 'blowup' parameter of this quantity to a larger value.

My question is the following:
how and in which file I have to change 'blowup' parameter value?

Thanks in advance for the answers.

Title: Re: blowup parameter
Post by Ken Kundert on Jun 5th, 2008, 2:08pm

You would use a "quantity" statement to set the blowup value, but I'm afraid I don't know how to do this through Artist. Alternatively, you might be able to set blowup in a Verilog-A/MS nature.

Do you really want a voltage greater than 1GV? Yes or no, you should create a special nature for it. Otherwise you will likely have convergence and accuracy issues.

-Ken

Title: Re: blowup parameter
Post by mehregan on Jul 9th, 2008, 6:34am

I have had to change blowup limits for some HV tranformer modeling work I did a while back.  If you are working inside ADE (Artist) the easiest way I found is to make an external file with the "quantity" spectre statement in it.  For example:

quantityV quantity name="V" blowup=200e+12

Then, pull this file into ADE by choosing: Setup->Simulation Files and then under "definition files" put the path to the external file.  Another way is to pull it in as a model file.  



Title: Re: blowup parameter
Post by jbdavid on Oct 9th, 2008, 6:20pm

Kens point is Important..
if you have something that is 1GV then with a normal 1e-3 reltol
means most signals under 1MV will be "converged"
if you make a special nature for this signal  (so its not V but Vhv)
the V type signals will do their normal thing and the large blowup parameter will apply only to the Vhv signals..

MAKE A SPECIAL NATURE for this signal!!
jbd

Title: Re: blowup parameter
Post by Geoffrey_Coram on Oct 14th, 2008, 8:43am

jbdavid -
Are you sure you've got it right?  The reltol is applied to the signal itself, so the 1GV signal only has to converge to within 1MV (change in the value from iteration to iteration), but if you have normal 1.8V signals, they still have to converge to 1.8mV (unless you're using some funny tolerance option that uses the largest signal to set the tolerance for all nodes).

I think Ken's concern is with the other tolerance: vabstol.  If you have something in the GV range, then "numerical noise" will appear around 1e-15 * 1e9 = 1e-6, which is the default for vabstol.  It's easier to understand with currents: if you're adding 1GA and -1GA, you can't expect it to cancel better than 1e-6, so iabstol of 1pA is way too large.

Title: Re: blowup parameter
Post by jbdavid on Oct 14th, 2008, 1:19pm

that "funny" parameter is the default, unless you are using conservative mode.. _IF_I_Remember_Correctly_..  its relative to the Max value of that TYPE of signal.. I used to cover these options in the spectreRF training.. but its been several years now, and the point I have taken away and made my practice is NOT to use an electrical discipline for things like frequency, but declare them as a different discipline with its own blowup parameter..  

Its quite possible my memory is not serving me so well  ;)

jbd

Title: Re: blowup parameter
Post by Peruzzi on Oct 15th, 2008, 11:41am

In my experience, when the blowup voltage is exceeded the problem is rarely the blowup parameter being too low, but is a problem with the behavioral models or the circuit.  So try to fix the models and circuit first.  Only once was the huge magnitude legitimate, but even then there were better alternatives to increasing the blowup limit.  

I was using an electrical variable for dV/dt in a behavioral description of capacitance in a filter:

I = C*dV/dt  

Where V had a rather steep slope and C was about 10 pF.  First I tried to create a nature for

Vdiff = dV/dt

but figured out two alternatives that avoided the blowup altogether:

1. Move C inside the differentiation argument, even though C is constant.  That is, instead of
   C * dV/dt
use
   d(C*V)/dt


2. Use integral instead of differential because it's better behaved.  That is,

V = (1/C) * idt(I) + V_initial

Let me know if this helps.

The Designer's Guide Community Forum » Powered by YaBB 2.2.2!
YaBB © 2000-2008. All Rights Reserved.