The Designer's Guide Community Forum
https://designers-guide.org/forum/YaBB.pl
Design Languages >> Verilog-AMS >> Modelling OTA with "piece-wise" transfer func
https://designers-guide.org/forum/YaBB.pl?num=1207529578

Message started by wgtan on Apr 6th, 2008, 5:52pm

Title: Modelling OTA with "piece-wise" transfer func
Post by wgtan on Apr 6th, 2008, 5:52pm

Hi,

I was trying to model in Verilog-A a differential OTA by the equations

  ΔId = K.ΔVin.√( 4*Iss/(2.K) - sq(ΔVin) )   for   |ΔVin| <= √2.(Veff)  -- (1)

  ΔId = Iss     for   |ΔVin| >  √2.(Veff)  -- (2)

  ΔId = -Iss    for   |ΔVin| <  √2.(Veff)  -- (3)

Simulating in transient mode with the OTA in a negative feedback configuration, I got convergence problems. I had to change (1) such that      ΔId = K.ΔVin.√abs( 4*Iss/(2.K) - sq(ΔVin) )    to get around the convergence problems.  

But this method failed when I used the OTA in a switch-cap circuit at the top-level. There were no error messages, but the output was wrong and it started to occur when   |ΔVin| <= √2.(Veff)  .

Anyone knows the way to get around such problems of "piece-wise" functions? Apologize if I got the term "piece-wise" wrong, but I hope u get the idea. Thanks!!

Title: Re: Modelling OTA with "piece-wise" transfer func
Post by Stefan on Apr 7th, 2008, 1:37am

You should smoothen the corners of your piecewiese definition by using a tanh-expression for example.
That way you shouldn't run into your convergence problems.

Title: Re: Modelling OTA with "piece-wise" transfer func
Post by Ken Kundert on Apr 7th, 2008, 7:26am

Smoothing is rarely, if ever, needed. I suspect the key here is not to make your transfer curve smooth, but to make it continuous. What is ΔId when ΔVin == √2×Veff? It should be Iss, is it?

-Ken

Title: Re: Modelling OTA with "piece-wise" transfer func
Post by wgtan on Apr 7th, 2008, 9:45pm

ΔId is Iss when ΔVin == √2×Veff in the equations. But I discovered that instead of comparing at    ΔVin == √2×Veff, I was comparing at   ΔVin == 2*√2×Veff ....

Thanks for the help!  :)

One last question - does anyone know under what kind of conditions will messages like
 "Zero diagonal found in Jacobian at 'O1P' and 'O1P' " start popping out?


Title: Re: Modelling OTA with "piece-wise" transfer func
Post by Ken Kundert on Apr 8th, 2008, 2:05pm

It generally means that O1P has suddenly become floating.

-Ken

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