The Designer's Guide Community Forum
https://designers-guide.org/forum/YaBB.pl Modeling >> Behavioral Models >> Solving a differential equation using VerilogA Model https://designers-guide.org/forum/YaBB.pl?num=1379599562 Message started by Ricky Chen on Sep 19th, 2013, 7:06am |
Title: Solving a differential equation using VerilogA Model Post by Ricky Chen on Sep 19th, 2013, 7:06am Dear All, I need to solve a differntial eqaition in my VerilogA marco-model The eqaution I want to solve is:- ddt(V(alpha)) = Vx * V(in) V(in) is the input signal ( as a function of time 't') to the model. Vx is read from a "table_model" at (t + V(alpha) i.e ( $(abstime) + V(alpha) ) To solve this I did as below:- // define branches branch (alpha) alpha1; branch (alpha) alpha2; I(alpha1) <+ -Vx * V(in); I(alpha2) <+ ddt(V(alpha)); The KCL at alpha forces I(alpha1) + I(alpha2) = 0 and solve the differntial equation. I went and checked the results. At $abstime = t1 Vx * V(in)= x1 V(alpha)= y1 At $abstime = t2 Vx * V(in)= x2 V(alpha)= y2 I think y2 should be equal to y2= [ x2 * (t2 - t1) ] + y1. But SPECTRE is showing something different than "y2" . Can anybody please tell where I am going wrong ? Whether my line of thought is correct ? or it may be some accuracy issue of Spectre lile Reltol, Vabstol,Abstol playing some rule ? Also I solve the above differntial eqaution using MATLAB ODE45(). It is totally different from the SPECTRE result ! Kind Regards, |
Title: Re: Solving a differential equation using VerilogA Model Post by boe on Sep 23rd, 2013, 12:52am Ricky Chen wrote on Sep 19th, 2013, 7:06am:
Quote:
Quote:
- B O E |
The Designer's Guide Community Forum » Powered by YaBB 2.2.2! YaBB © 2000-2008. All Rights Reserved. |