(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 ..
![Embarrassed Embarrassed](https://designers-guide.org/forum/Templates/Forum/default/embarassed.gif)
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