The Designer's Guide Community Forum
https://designers-guide.org/forum/YaBB.pl Design Languages >> Verilog-AMS >> zero diagonal found in Jacobian error https://designers-guide.org/forum/YaBB.pl?num=1255713335 Message started by lbtroy on Oct 16th, 2009, 10:15am |
Title: zero diagonal found in Jacobian error Post by lbtroy on Oct 16th, 2009, 10:15am Hi all, Currently I have a chargepump that charges to a loop filter(made out of verilog ams coded caps and resistors) when a switch opens. As it open, my outputs blows up to almost infinity. Does anyone know if there is a good way to resolve this? /////////////////////////////////////////////////////////////////////////////////////////////////// at the chargepump end: i have if(V(tune_mode) < (dvdd - 0.1)) I(ftunem,avss) <+ 0; else V(ftunem,avss) <+ 0.65; if(V(tune_mode) < (dvdd - 0.1)) I(ftunep,avss) <+ 0; else V(ftunep,avss) <+ 0.65; ////////////////////////////////////////////////////////////////////////////////////////////////////// at the loop filter end: i have if(V(tune_mode) < (V(avdd) - 0.1)) V(ftunem,ftunem_fil) <+ 0 ; else I(ftunem,ftunem_fil) <+ 0; if(V(tune_mode) < (V(avdd) - 0.1)) V(ftunep,ftunep_fil) <+ 0 ; else I(ftunep,ftunep_fil) <+ 0; Thank you |
Title: Re: zero diagonal found in Jacobian error Post by boe on Oct 16th, 2009, 10:38am lbtroy, In general, hard switching between voltage sources and current sources often causes convergence problems. This also applies to nodes with infinite impedance (i=0). Further, for V(tune_mode) < min(V(avdd), V(dvdd))-0.1, ftunem is HiZ, and ftunem_filt is shorted to ftunem_filt, while for V(tune_mode) > max(V(avdd), V(dvdd))-0.1, ftunem is at 0.65 V, but ftunem_filt is HiZ... I do not see why you need two nodes here. I would connect ftunem/p directly to the loopfilter and put the switch in the pump (by defining output current appropriately)... BOE |
The Designer's Guide Community Forum » Powered by YaBB 2.2.2! YaBB © 2000-2008. All Rights Reserved. |