[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: gEDA-dev: Fwd: google soc



On Monday 28 May 2007, John Doty wrote:
> >> "A program should do one thing well."
> >
> > The plugins are like separate programs.  The simulator will
> > call it to read any format.  The simulator core will have
> > no file reading capability.
>
> But for your ambitions, it needs:
>
> 1. An internal data representation for *any* data any EDA
> tool might   use.
>
> 2. A plug-in interface capable of passing such data.

That is what I am working on.  The simulator core is just a 
core, like the kernel of an operating system.  Everything else 
is plugins, like drivers and applications.

Each driver and application is like a separate program.  In the 
context of a simulator, that means models, commands, and 
interfaces are like separate programs.

The power of this system is incredible.  Now the DC analysis is 
a separate program, the AC analysis is a separate program,  
Each model is a separate program,  Each file format read or 
written is a separate program. ...

With a good interface, and the core providing the needed 
services, all these become much easier.  With a few wrapper 
modules, it becomes possible to use modules designed for 
something else.

The model and command interfaces have been working for a while, 
and fully pluggable for a few months.  I am now working on the 
interface for getting raw data (circuit descriptions) in and 
out.  Next will be a way to get analysis data in and out.

With models as plugins, many more become available.  It can use 
unmodified spice C models as plugins.  The model compiler (a 
group of separate programs) will enable the use of models 
written in languages like Verilog-AMS, VHDL-AMS, Spectre, 
Saber, IBIS, and eventually others.  Anyone can develop and add 
models, without digging into the core.  This is possible only 
because of the plugin system, and making the model compilers 
separate programs.

With commands as plugins, it becomes possible to do scripting 
beyond what any other simulator can do, and provide any user 
interface you might want.  Anyone can develop and add, without 
digging into the core.  Again, it is possible only because of 
the plugin system.

Having the net reader/writer as a plugin makes it possible to 
read many netlist formats.  The Spectre reader took only about 
an hour to do.  It's a plugin, not part of the simulator.  The 
hardest one is Spice.  There are many variants, and all are 
very irregular.  They can all be plugins, not part of the 
simulator, yet appear to be part of the simulator.  Anyone can 
do this, without digging into the core.

> That's not a focus on simulation: it's a focus on things the
>   simulator should not be dealing with.

The idea here is that with old style architecture, simulators do 
need to deal with this.  That is what limits what Spice can do.  
Every new model adds a new set of name clashes.  The irregular 
format is built in, and hard to change.  It's a real headache 
for simulator developers.  

So the purpose of the plugin system is exactly what you say is 
needed .. so the simulator won't need to deal with those 
interface issues.  It all moves to plugins.

To a user, you don't need to carry the bloat of features you 
don't use.

Back to the original question ..  Dario asked what he can do ...  
I suggested some plugins that will provide functionality that 
is needed.  I want someone else to do it so I can go back to 
real simulation work.

Another related need is for plugins mimicing some of the 
proprietary variants of Spice.

I am excited about the new capability the plugin system is 
enabling.  It is turning out to be much more effective than I 
expected.



_______________________________________________
geda-dev mailing list
geda-dev@moria.seul.org
http://www.seul.org/cgi-bin/mailman/listinfo/geda-dev