On Sunday 07 March 2010, Rubén Gómez Antolí wrote: > open circuit: internal node 15 > open circuit: internal node 20
Open circuit really means a singular matrix, but from a user's perspective it means a node that is being calculated in effect has no connections. Really, there are connections but they are in effect open, for example a mosfet it cut-off. Consider a classic CMOS inverter. When both devices are off, that node is "open". Often it doesn't cause a problem, but when it does you can usually fix it by putting a load on the node (why I suggested resistors across diodes) or making option "gmin" larger (closer to zero). If you make "gmin" (for example) 1 ohm, it should converge very quickly to a very wrong result. The default value (1p, 1e-12) is appropriate for small signal circuits. It is not a good value for power electronics. Setting it to 1e-6 puts a 1 megohm resistor to ground at every node. This is probably an appropriate value for power circuits. > non-recoverable convergence failure, reducing (itl4) > newtime=8.532783e-06 rejectedtime=8.532784e-06 > oldtime=8.532783e-06 using=8.532784e-06 > tried everything, still doesn't work, giving up What is happening in your circuit at time=8.53278e-06 ? Something strange is happening at that instant. A bifurcation? Something switches sharply? Look at what happens leading up to that time. > >> Try adding a switch, with the control port across a pair > >> of nodes that you think are causing trouble. Leave the > >> output (switched resistor) unconnected. > > I don't understand very well this. You say that add a switch > in this way?: > > Sdebug 0 100 (0 80) SW > and node 100 is connected to "air". > How helps this? Sorry, I'm a bit lost. Sort of ... What is node 80? You need to set the threshold of the switch appropriately. I was thinking of putting a switch input across each diode When the input of a switch crosses the threshold, that is called a "cross event". Spice does not model cross events, but gnucap does. It will do extra time steps in near a cross event to accurately model the crossing time. Spice will overshoot crossing times, then get some kind of failure, usually iteration count "ITL4", then reject the time step and try again with a smaller step. Gnucap does this too. It is non-recoverable when it fails again and again, approaching zero, and still fails. When gnucap is approaching a cross event, it does finer time stepping to avoid the fail and reduce cycle, hoping to get it right the first time. Not all devices generate cross events, but most nonlinear devices should whenever there is a region change, or crosses certain thresholds. Convergence failures are very likely to happen when an undetected cross event ALMOST happens, but doesn't really happen. For example, a high gain amplifier clips. You have a reasonable value at one time step. The next is well into clipping. At best, it does more iterations than it should. Sometimes it fails, backs up, tries again and succeeds the second time. By explicitly recognizing the cross event when it just enters clipping, the simulator will try to schedule a time step as close as it can to the clip point, just before and just after. Since transistors don't schedule cross events, you can put a switch in to sense it and force the extra time steps. You can use this to suppress the problems of trapezoidal ringing too. _______________________________________________ Help-gnucap mailing list [email protected] http://lists.gnu.org/mailman/listinfo/help-gnucap
