Re: [ng-spice-devel] Requirements for frontend/backend


To ng-spice-devel@ieee.ing.uniroma1.it
From Al Davis <aldavis@ieee.org>
Date Mon, 20 Nov 2000 18:46:05 -0800
Cc ng-spice-frontends@ieee.ing.uniroma1.it
Delivered-To mailing list ng-spice-devel@ieee.ing.uniroma1.it
In-Reply-To <14873.38899.675122.555591@pearls >
Mailing-List contact ng-spice-devel-help@ieee.ing.uniroma1.it; run by ezmlm
References <00111722530800.00661@localhost.localdomain> <20001120221952.B32529@cgmd80028.chello.nl > <14873.38899.675122.555591@pearls >
Reply-To ng-spice-devel@ieee.ing.uniroma1.it

On Mon, 20 Nov 2000, Steve Hamm wrote:

> ....   people are extracting parasitics using not terribly smart
> extractors, which can balloon a netlist from under a megabyte to 7
> or 8MB easily. 

Such small circuits!  At one place I used to work, we regularly dealt 
with netlist files of several gigabytes.  Interconnect networks from 
"not terribly smart extractors".

Anyway .....  Steve is correct here.  Parsing belongs on the compiled 
side.  The data strorage and access needs to be tightly coupled for 
efficiency.  Putting the data on one side and the netlist reader on 
the other would require some kind of double conversion, which would 
be slow.

Another point is that when new devices are added, they must be 
considered as a unit.  The modeler probably has in mind how the data 
is to be passed in, what the keywords are, etc.  Putting the parsing 
separate means that new model code is no longer a module.  You need a 
piece here, a piece there, ......

In SPice-3, the numerics for a device are collected, but the parsing 
is somewhere else.  This is a nuisance.

Another factor ....  with a language like C++, I would define classes 
to do anything efficiently.  With an interpreted language, it depends 
in what is in the standard library, or what you might attach to it 
that isn't in the language you are writing in.  The only interpreted 
language that I would even consider for the parsing part is perl.  
But, perl lacks some of the self modifying, self executing features 
of some other interpreted languages like TCL or Lisp.  Even if the 
parsing is in perl, how do you pass it on to the engine?  As text and 
decode it again?  If it is binary, what if the internal 
representation is different?  What if you want to change it?

al.

Partial thread listing: