save all, was: Re: [ng-spice-devel] Catching up


To ng-spice-devel@ieee.ing.uniroma1.it
From Al Davis <aldavis@ieee.org>
Date Wed, 7 Feb 2001 12:33:45 -0800
Delivered-To mailing list ng-spice-devel@ieee.ing.uniroma1.it
In-Reply-To <CF654D964573D311A1CA0090278A36FF4CBD76@EDIN_EXM1 >
Mailing-List contact ng-spice-devel-help@ieee.ing.uniroma1.it; run by ezmlm
References <CF654D964573D311A1CA0090278A36FF4CBD76@EDIN_EXM1 >
Reply-To ng-spice-devel@ieee.ing.uniroma1.it

> "Save all" is a big resource consumer
> -------------------------------------
>
> I really must beg to differ here :-) We just said that the main
> time consumer was the model evaluation step, but that was actually
> a simplification. As circuits get bigger, then the model evaluation
> effort should just go up linearly with the size of the circuit

This is not good enough.  As circuits get bigger, it becomes 
necessary to exploit latency, duplication, and other factors.  With 
old technology you get linear growth.  With appropriate algorithms it 
can be very much sublinear.

> (i.e. the number of devices which must be evaluated. However,
> matrix solution goes up more than linearly with matrix size. (I
> can't remember how much more than linearly). 

It depends on the connections.  In theory, it is cubic, but a good 
sparse matrix package fixes this.  ACS is linear in number of nodes, 
times quadratic in number of connections per node.  I have ideas that 
could make this sublinear.

> .....  Also, it would be
> reasonable to assume that the bigger the circuit, the more times
> spice will have to go round the evaluate-solve loop. So for bigger
> circuits, the matrix solution becomes more significant, and the
> overall effort goes up more than linearly.

Maybe.  But, the bigger the circuit, the more tricks become 
available.  I have a benchmark of cascaded NMOS buffers, that takes 
the same number of iterations regardless of the number of stages 
(above about 5 stages), with linear growth in time, and slightly 
sublinear growth in memory requirements.  Spice fails to converge on 
it.  Numeric overflow.

Big circuits have a lot of duplication.


> The data size, though, only goes up linearly. In fact, I think I'm
> correct in saying that if you just save all the node voltages, then
> the data size does not even go up linearly with circuit size. Think
> of supply lines and busses, for instance. Many times when you add
> more devices, you don't add many new nodes. Even if you save all
> terminal currents, that can only go up linearly with circuit size
> (i.e. number of devices in the circuit).

But what I usually want is lots of detail in a small section.  Why 
save all the nodes when I don't need them?  Then, what about the 
detail?  Probes other than node voltages?  What if I want to see how 
junction capacitance varies with signal?  Spice only gives you this 
in steady state, but ACS has the extended probes in transient, too.  
ACS has 55 parameters on a MOSFET that you can probe in transient 
analysis, and this is not counting what is available by treating it 
as a subcircuit and probing its components (17 parameters on each of 
the 2 diodes, 26 on each of the 5 capacitors, 18 on each of 4 
resistors, 18 on the transfer element)  That's 309 total per MOSFET, 
assuming I counted correctly.  There is some duplication, so the 
useful number of somewhat less.

Uh .....  save all??????

ACS doesn't save.  It outputs data immediately as it is calculated.  
This is the only way all this information can be reasonably available.

Now, taking this to the future, with different models, it is 
impossible today to predict what info you will want to see.  I will 
offer a few as food for thought:

Grid probes in a finite element transistor model.

Internal probes, at some point inside a transmission line.

Radiation.

Ground bounce.

Field measurements in a detailed transistor model.

Field measurements in a wire.

Fault detection, like a device exceeding safe operating region, which 
may be determined by phenomena that is difficult to calculate, like 
localized breakdown.

Crosstalk between wires. 

Other types of devices, like connectors.  How about one with 5000 
pins?


Looking at these examples, they may seem like they are really 
stretching things, but I am aware of real cases where all of these 
are needed.


Enough, for now...

Partial thread listing: