(Hi, it's my first time posting, so please let me know if anything I posted is against any rules. Thanks! =))
I'm using the non-ideal opamp model from AHDL library in Cadence. The code is the same as one posted by hchanda:
http://www.designers-guide.org/Forum/YaBB.pl?num=1165362179/5#5.
I put the opamp in non-inverting config. with gain of 10 (Rf = 100K, Rin = 10K). I get a good AC responsce with correct 3db freq and gain of 10 at low freq; correct clamping from DC sweep, but I get unreasonably slewing behavior in transient analysis. If I use the the ideal parameters from the code (gain = 835K, sr = 1M, freq_u = 1M, rin = 1M, rout = 80, ibias= vref = voffset = 0, rsrc = 0.5M, vsoft = 0.5, inmax = 100e-6.... ) and give input amplitude of 1V, it slews with a slope of 435K when specified slew rate is 1M. No slewing clearly for much smaller input voltages, but I need to see output voltage swinging rail to rail. (+/- 5V). Right now, it's slewing so much that output peak voltage is much smaller than input voltages - not amplifying... (I'm attaching output plots)
I'm not sure if transient behavior is not correctly modelled in the model. If it's correctly modelled, how could I twick the equation or combinations of parameters to adjust the slewing behavior? I've been blindly changing parameters to correct for slewing, but clearly monkeying is not working ..
Could anyone explain how this model determines transient or slewing output?
I'm guessing the relavant part of the code might be the one shown below, but I still can't tell why actual slew_rate is not what I specify...
c1 = iin_max/slew_rate;
gm_nom = 2 * `PI * freq_unitygain * c1;
r1 = gain/gm_nom;
vmaxin = in_max/gm_nom;
...
...
I(vref, cout) <+ gm_nom*vin_val;
Thanks so much for your help & time! ;D