Marios
New Member
Offline
Posts: 6

The VCO code follows:
//////////////////////////////////////////////////////////////////////////////// //// `include "disciplines.vams" `include "constants.vams"
// // Voltage controlled oscillator with no jitter //
//(* ignore_hidden_state *)
module vco1 (out, in);
input in; voltage in; // input terminal output out; voltage out; // output terminal parameter real vmin=0; // input voltage that corresponds to minimum output frequency parameter real vmax=vmin+1 from (vmin:inf); // input voltage that corresponds to maximum output frequency parameter real fmin=1 from (0:inf); // minimum output frequency parameter real fmax=2*fmin from (fmin:inf); // maximum output frequency parameter real tt=0.01/fmax from (0:inf); // output transition time parameter real ttol=1u/fmax from (0:1/fmax); // time tolerance parameter real ampl=0.5 from (0:inf); real freq, phase; integer n;
analog begin // compute the freq from the input voltage freq = (V(in)  vmin)*(fmax  fmin) / (vmax  vmin) + fmin;
// bound the frequency (this is optional) if (freq > fmax) freq = fmax; if (freq < fmin) freq = fmin;
// bound the time step to assure no cycles are skipped $bound_step(0.2/freq);
// phase is the integral of the freq modulo 2pi phase = 2*`M_PI*idtmod(freq, 0.0, 1.0, 0.5);
// generate the output V(out) <+ ampl*cos(phase); end endmodule //////////////////////////////////////////////////////////////////////////////// ////
I am modelling a TYPE I 2nd order pll consisting of a PFD, a filter and the vco above. Filter is 1st order implemented using analogLib components. PFD is a real design.
The PLL will lock when running transient and seems to operate as expected. However the PSS does not converge. The following issues are reported in the simulation output log.
pss: time = 50.98 ns (97.8 %), step = 3.333 ps (333 m%) Conv norm = 143e+03, max dV(I11:idt0) = 19.5231 kV, took 3.52 s.
Notice from spectre during periodic steady state analysis `pss'. 388 warnings suppressed. Further occurrences of this notice will be suppressed.
============================== `pss': time = (50 ns > 51 ns) ==============================
Error found by spectre at time = 50.064 ns during periodic steady state analysis `pss'. ERROR (SPECTRE16192): No convergence achieved with the minimum time step specified. Last acceptable solution computed at 50 ns.
The values for those nodes that did not converge on the last Newton iteration are given below. The manner in which the convergence criteria were not satisfied is also given. Failed test:  Value  > RelTol*Ref + AbsTol
Top 10 Residue too large Convergence failure: V(I21.I12.Q81<0>:dt) = 22.752 MV, previously 22.752 MV. residue too large:  5.48152e+21 A  > 5.48152e+18 A + 1 pA V(I21.I12.Q90<7>:dt) = 1.32158 MV, previously 1.32158 MV. residue too large:  3.81769e+21 A  > 3.81769e+18 A + 1 pA V(I21.I12.Q90<6>:dt) = 1.32115 MV, previously 1.32115 MV. residue too large:  3.81772e+21 A  > 3.81772e+18 A + 1 pA V(I21.I12.Q90<5>:dt) = 1.32131 MV, previously 1.32131 MV. residue too large:  3.81744e+21 A  > 3.81744e+18 A + 1 pA V(I21.I12.Q90<4>:dt) = 1.32116 MV, previously 1.32116 MV. residue too large:  3.81765e+21 A  > 3.81765e+18 A + 1 pA V(I21.I12.Q90<3>:dt) = 1.32141 MV, previously 1.32141 MV. residue too large:  3.81757e+21 A  > 3.81757e+18 A + 1 pA V(I21.I12.Q90<2>:dt) = 1.32157 MV, previously 1.32157 MV. residue too large:  3.81767e+21 A  > 3.81767e+18 A + 1 pA V(I21.I12.Q90<1>:dt) = 1.32112 MV, previously 1.32112 MV. residue too large:  3.81755e+21 A  > 3.81755e+18 A + 1 pA V(I21.I13.Q77.Q1<3>:dt) = 74.0367 MV, previously 74.0367 MV. residue too large:  11.8857e+21 A  > 11.8857e+18 A + 1 pA V(I21.I13.Q77.Q1<2>:dt) = 74.0341 MV, previously 74.0341 MV. residue too large:  11.8858e+21 A  > 11.8858e+18 A + 1 pA
The values for those nodes that did not converge on the last Newton iteration are given below. The manner in which the convergence criteria were not satisfied is also given. Failed test:  Value  > RelTol*Ref + AbsTol
Any input as to what the issue might be is much appreciated.
