Mail Archives: geda-user/2022/06/21/13:33:36
This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.
--8323329-1212817031-1655832751=:7651
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 8BIT
On Tue, 21 Jun 2022, John Doty wrote:
> Why do you say that? I’ve had no difficulty, and I have many legacy designs.
gEDA has a quite complex logic for translating schematics and symbols into
a netlist. Unfortunately, much of this is neither documented nor tested,
but legacy designs do depend on this behavior. (At least the designs from
our university which I looked at did, even to the point of exposing so-far
unknown bugs in gnetlist.)
If, as a maintainer, you want to make sure netlists for existing designs
are generated correctly, you have basically two choices: either to not
touch the netlisting code at all, or to be VERY careful about
understanding what the existing code does, making sure your changes pass
the existing tests, and adding new tests as appropriate.
I chose the second approach. Untangling the internals of gnetlist took a
lot of time and effort to do, and I ended up introducing some
well-documented changes to the netlist output[0], but I was able to
increase the readability of the netlisting code to a point where it is
able to serve as a kind of documentation-substitute[1] and added
regression tests for those instances where I missed a corner case which
existing designs turned out to rely on[2].
There has been no such effort in lepton-netlist. The reference output for
existing tests was simply replaced with the output the newly written code
gave, declaring this as the new correct output. I'll happily believe this
works as long as the schematics and symbols don't make use of the more
obscure behaviors of gnetlist, and it could even be argued these were
design flaws in the first place, but that doesn't change the fact that
there are many designs out there for which this approach simply can't
work.
Roland
[0] http://git.geda-project.org/geda-gaf/tree/xorn/tests/netlist/README
[1] http://git.geda-project.org/geda-gaf/tree/xorn/src/gaf/netlist
[2] http://git.geda-project.org/geda-gaf/tree/xorn/tests/netlist/regression
--8323329-1212817031-1655832751=:7651--
- Raw text -