Requirements for frontend/backend


To ng-spice-frontends@ieee.ing.uniroma1.it,ng-spice-devel@ieee.ing.uniroma1.it
From "Arno W. Peters" <a.w.peters@ieee.org>
Date Mon, 20 Nov 2000 22:19:52 +0100
Delivered-To mailing list ng-spice-devel@ieee.ing.uniroma1.it
In-Reply-To <0011192231330C.21525@hobbes >; from aldavis@ieee.org on Sun, Nov 19, 2000 at 10:31:33PM -0800
Mailing-List contact ng-spice-devel-help@ieee.ing.uniroma1.it; run by ezmlm
References <00111722530800.00661@localhost.localdomain> <20001119224846.A26364@cgmd80028.chello.nl > <0011192231330C.21525@hobbes >
Reply-To ng-spice-devel@ieee.ing.uniroma1.it
User-Agent Mutt/1.2.5i

On Sun, Nov 19, 2000 at 10:31:33PM -0800, Al Davis wrote:

> On the language .....
> 
> [...]
> 
> Another decision -- client-server vs. direct linking. ............
> 
> [...]

Actually, the bottom line of your argument lies not in the choice of
language or the kind of linking.  It is a more fundamental question:
``What interfaces should we define between a frontend and an electical
simulation library?''

Consider the following possible interfaces for communication:

 C API: between an executable and a library;
 IDL API: between a CORBA client and a CORBA server;
 sockets protocol: between the client and the server.

If you want similar functionality across frontends, the interfaces
should be similar for all possible means of communication.

But we should start small and generalize interfaces as we gain more
experience.  My primary motivation for adding a frontend is to make
testcases across platforms more robust to PASS/FAIL.  This is a very
limited goal, but it is capable of uncovering at least some parts of
the API.

> In general, I think it is best to have as much as possible on the 
> interpreted side.

Agreed.  You should use profiling to pick the interpreted functions
eat up most time and that would give a significant better performance
once they are compiled into the numeric engine.

I would argue that netlist parsing should also be done in the
frontend.  The different spice emulation modes each have their
specific parsing rules for a netlist.  The API should have a function
to add elements to the current circuit.  As you can see, this once
again comes down to defining an proper API between frontend and
backend.

Regards,
-- 
Arno

PGP signature


Partial thread listing: