The conductance added so it would invert
Assumes: The answer that is perfect and absurd · What a network answers, and how the answer is checked
The answer that is perfect and absurd described four kinds of netlist a nodal solver must decline, and a more dangerous fifth next door to them. A wire written into a netlist as a small resistance returns the right node voltage to fifteen figures, passes both verifications, and reports two hundred thousand amperes. Its moral was stated as a rule: the repair for a network that does not determine its own voltages is to find out what is physically missing, and writing in a very small or very large element is a way of being told something absurd in perfect arithmetic. It did not look at the repair that most circuit simulators apply to every netlist automatically, on every run, and that its users mostly do not know about.
The repair is a small conductance from every node to ground. In the SPICE family it has a name and a default value, S, and with it a node that has nothing else connected at direct current has a voltage. A singular matrix becomes an invertible one and the solver stops objecting. There is nothing wrong with that as an engineering decision, since a simulator with a transient to run needs a starting point, and the great majority of the nodes it applies to are nowhere near needing it. What is interesting is what it does to the question the first essay was asking. Once a conductance has been added, the solver has an answer to every question, and the residual is at machine precision for every one of them. Which of those numbers belongs to the circuit?
Three kinds of number
The first is what everyone hopes for. A resistive divider reads 5.00 V at every conductance from to S, with a fractional change far below anything that matters until the added conductance starts to be comparable with the divider’s own. Those are real answers. The added element was never relevant to them, and that is by far the commonest case in a real netlist.
The second is an answer that is purely the reciprocal of what was added. A current into a capacitor at direct current has nowhere to go and the solver refuses it, correctly, since at direct current the current has no path. With a conductance from the node, the voltage is . So 1 µA reads a megavolt at S and 10 MV at on a solver that would allow it, and the slope against is exactly . This is the integrator’s input, the bias current on a coupling capacitor, or a bootstrap capacitor’s node. A designer who sees a megavolt in a simulator’s operating point will usually notice that something is odd, and a designer seeing the same effect at 3.2 V on a higher conductance may not.
The third kind reads quite reasonable values. Two capacitors in series on 10 V read zero at the middle, at every , since the conductance to ground is the only thing at that node at direct current. That is a number with no dependence on at all, and it is flat on the same axis as the divider. A bias point is a solution said that a circuit’s operating point is an answer to an equation and it depends on what is in the equation. This zero is an answer to an equation with an extra term in it that decided the whole answer, without leaving a mark on the slope.
A centre tap nobody built
The third kind becomes clearest on the commonest floating subcircuit there is: a source and a resistor connected to nothing else. A battery on a floating instrument, the secondary of a transformer, an isolated supply’s output. Its two node voltages have a definite difference and no definite level.
With equal conductances from its two terminals, a floating 9 V battery reads +4.5 V and −4.5 V. Nobody built a centre tap, and it is drawn on the output as confidently as anything else. The level follows the ratio of the two conductances exactly, and those conductances do not exist. In a real instrument the level is set by the stray and leakage paths to whatever is nearest, by the common-mode currents of the mains, and by anything else that has been left out of the netlist.
The difference across the part is right at every ratio, so anything that reads only differences in this subcircuit is safe, and that is usually what is wanted. The danger is in the things that read levels. An amplifier’s common-mode range, a clamp, an insulation margin, a protection diode to the supply rail, all read an absolute voltage. A protection diode that is drawn from a floating node to ground and seems comfortably reverse-biased at −4.5 V is being reassured by the added conductances. So the simulation of an isolated stage with its reference node floating can show correct gains, correct waveforms, correct power, and a common-mode voltage that means nothing, with no warning of any kind.
Nor does scaling find it. Because both conductances are scaled together, a tenfold change in the simulator’s minimum conductance leaves the ratio and the level alone. A careful designer’s natural test, changing the setting and seeing whether the answer moves, says this node is sound.
One test current per node
A test that does work is available, and it is cheap: it asks how hard the node is being held. At each node, inject a small test current and read how far the node moves. That gives the node’s resistance to ground with everything else in the circuit present. If that resistance is near , then the added conductance is what the node is standing on.
The figure’s netlist is deliberately a mix. Supply and divider read and on this score, far below one, and those are real answers. The two nodes behind the coupling capacitor read 0.5: each of them is held by two conductances. They report 0 V at every , and scaling cannot identify them, since 0 V is unmoved. The capacitor pair’s node reads 1.0, and it reports a kilovolt, which scaling does find. The three nodes of the floating source read 0.33. They report +1, +1 and −2 V, which scaling cannot move.
So a scale change finds one of these six and the test current finds all six, because it measures the right thing. Only three kinds of number are in this output, and the score separates them by many decades with no judgement needed. Since the matrix is already factored, each extra test current costs one back-substitution, so running all of them on a large netlist is cheap, and yet no ordinary simulator reports it. A column in an operating-point printout, for each node, saying what fraction of its holding comes from something the user did not draw, would be a very useful number.
What a network answers measured what a solve does and does not guarantee, and this is an extension of the list. A verification tells whether a solution satisfies the equations it was built from. It cannot tell whether those equations include terms that nobody put in the circuit.
Nothing degrades on the way to the refusal
The original essay’s central finding was that a nearly singular network is answered exactly until the moment it is refused. The added conductance behaves the same way, and for the same reason.
As the added conductance falls, the real node stays exact to the arithmetic and the invented one is exact to its own formula, . Neither gives any warning. Then the pivot passes the solver’s threshold at a part in of the matrix norm, and it refuses. A smaller conductance is not a more accurate answer, and it is the same answer with a larger number in it. Where the matrix is worst, and where the answer is not separated a matrix’s condition from the accuracy of a particular node, and the same separation is at work here: the node that is ruining the matrix’s condition is not the node whose answer is at risk. There is no limit in which reveals what the circuit is doing, because in that limit the question has no answer. It is sometimes supposed that reducing the conductance moves a simulation closer to the truth, and for a real node it does nothing and for an invented one it moves the number further off.
The solver used here refuses at a part in of the norm and so, with a voltage source’s stamp of one in its matrix, it refuses a conductance below about S, right at SPICE’s default. That is a coincidence of two different engineering choices, and it shows how close the default sits to where double precision starts to be a concern, in the way the number that was wrong describes for other quantities on this kind of solve. A million-ohm circuit has a conductance norm that is a good deal lower, which is why a simulator scales its matrix before it factors it.
When the answer comes true
A number that depends on a conductance nobody built is not necessarily meaningless. In a real circuit, there is leakage, and at long enough times a node will settle to a value set by it. The question is how long.
The series capacitors make this concrete. On a 10 V step the middle node starts at the capacitors’ ratio, 3.33 V, as any quick estimate says. It then relaxes, with a time constant of , towards the ratio of the leakages. If both leak S it tends to 5 V with a time constant of 1,500 s. If the upper one leaks ten times as much it tends to 9.09 V. So in the steady state, the voltage is decided by leakage ratios that no data sheet gives to any accuracy, and it may take half an hour or more to reach it. A simulator’s operating point reports 0 V, since it has one conductance to ground and none across the capacitors, and that is the leakage arrangement that reads lowest.
A bench voltmeter on that same node would read the capacitors’ ratio for a while, and then its own input conductance would begin to take over. At 1 µF and 2 µF with the same leakage, the time constant is 17.4 days. So all three of these numbers are correct, in that each is the right answer to some question. The capacitors’ ratio is the answer at a microsecond, the leakages’ ratio is the answer at a fortnight, and the simulator’s zero is the answer in a circuit that has one specific leakage in it and no others. A designer has to know which is being asked. The capacitance that is not one number found a similar dependence of a capacitor on the time scale of the question, and a stack of series capacitors is usually protected with balancing resistors for exactly this reason: it removes the ratio that nobody knows and puts in one that somebody chose.
The time domain also corrects a misreading of the third kind of number. A floating battery’s real common-mode voltage is not invented; it is just undetermined by this netlist. It has a physical value, set by stray capacitance at a fast time scale and by leakage at a slow one, and a designer who needs it has to add those paths. That is the first essay’s rule again: find out what is physically missing, because the solver has correctly reported that something is.
What to do about a floating part
The test current tells which nodes to worry about, and then something has to be done for each, and that is a modelling decision. A coupling capacitor’s far side with a bias resistor drawn has no problem at all: it was a matter of adding what the real circuit has. A floating instrument should have its common-mode path drawn in, with a stray capacitance to chassis and a leakage resistance of realistic size, so that its level means something and can be varied to see what depends on it. A current into an ideal capacitor is usually a modelling error, an integrator without its reset or feedback path; a real one has an amplifier’s offset and a finite open-loop gain, and a direct-current solve should be given a feedback resistor large enough not to matter in band. The current that does not reach the input deals with a similar path in a measurement, whose stray conduction is the actual subject.
None of these are difficult. What is difficult is noticing that any of them is needed, because the output looks fine. That is the real difference between a refusal and an answer: a solver that refuses forces the user to confront the missing path, and a solver that adds a conductance removes the prompt and leaves the problem. The refusal the first essay defended is a piece of information, and throws that information away for the convenience of always having a starting point.
What this leaves out
The conductance here is added at direct current and treated at its nominal value, and nothing nonlinear is in these netlists. In a nonlinear circuit the conductance is also a convergence aid. Simulators use gmin stepping, starting large and stepping down so that a stiff Newton iteration has a path to follow, and that is a different use with its own failure modes, including finding a different operating point if the circuit has several, which the temperature’s own fold sets out. Those solutions are real in the sense of satisfying the circuit, and the question is which one the device will actually be in. In a transient run, the conductance is present too, adding a time constant to every floating node, and at S it is usually much longer than the simulation. The 1,500 s here is an example, and it means a transient’s early behaviour is the capacitors’ and its final value would have been the conductances’, if a run were ever that long.
The number worth carrying
A small conductance from every node makes any matrix invert and makes Kirchhoff’s law hold to machine precision. The numbers it then gives are of three kinds: real ones, which do not depend on it; ones that are its reciprocal, a megavolt for a microamp at S; and ones that are the ratio of what was added, a centre tap of ±4.5 V on a floating battery. Scaling the conductance finds only the second kind. A test current at each node finds them all, because a node held by nothing else has a resistance near : 0.33 to 1.0 on that score against and below for a real node. And the invented value is also the true steady state of some circuit, at a time constant of , so that the answer may be right for a circuit nobody built, after a time nobody waits.
Still open: the operating point it chooses, a capacitor’s leakage by its dielectric, and a score worth printing
Stepping towards a different answer. Gmin stepping walks a nonlinear circuit down a family of operating points, and a circuit with several may arrive at a different one than a transient would. Whether the path taken has any physical meaning, and which of a latching circuit’s two states a large added conductance selects, is a question with direct consequences for start-up behaviour that a direct-current solve appears to report.
Leakage that is not a resistance. A real capacitor’s leakage has a dielectric relaxation in it, as well as a true conduction, and it depends on voltage and temperature. The relaxation to the leakage ratio is therefore not one exponential, and the series pair’s settling may take far longer than its time constant suggests. What a balancing resistor has to overcome, in current and in time, is a measurement rather than a formula.
A score in the output. The test current’s score could be computed for every node in a real netlist at almost no cost. How many nodes of an ordinary mixed-signal design sit near one is unknown here, and a survey of real designs would say how often a simulator’s output contains a number that is the simulator’s own. It would be a useful figure to have, and a low one would be a comfort.
Part 2 on singular network
One argument about Singular network, and one of 2 essays on it so far, each part numbered by how much of the idea it assumes. What sits either side of it:
The objects named here
The third axis, after the field and the idea: the things themselves, and every essay that touches each one.
Kirchhoffs current lawModel refusalModified nodal analysisNumerical errorSingular matrixVerification
- The matrix that is ill, and the answer that is not model refusal, modified nodal analysis, numerical error, singular matrix, verification
- The node that is not in the circuit kirchhoffs current law, modified nodal analysis, numerical error, singular matrix, verification
- A sum that is exact, and the estimate that is not numerical error, verification
- Every derivative, and the one that is zero numerical error, verification
- The digits the arithmetic did not have numerical error, verification
- The floor that outlives the arithmetic model refusal, numerical error