Re: [ng-spice-devel] Requirements for frontend/backend
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: