diff options
author | 2020-09-29 22:35:18 +0200 | |
---|---|---|
committer | 2020-09-30 08:37:42 +0200 | |
commit | 91ca668d141570b26879cf111d644515aca173e2 (patch) | |
tree | 2d2425a73751e928a57c6843c7ce0d529ea54c07 /src/lib/netlist/nl_base.cpp | |
parent | d838120e37300e42b940b8bdfaf41e0bfada4037 (diff) |
netlist: Fix a net splitting issue with four term devices.
* Under cirtum circumstances the splitter would create "ghost" solvers
consisting of terminals already used in another and complete
solver. This may impact all netlist which use opamps and thus
is committed early in the cycle.
* This commit adds functionality to instruct the splitter code to
include terminals which will not create matrix elements into
the parsing of net groups for solvers.
Diffstat (limited to 'src/lib/netlist/nl_base.cpp')
-rw-r--r-- | src/lib/netlist/nl_base.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/lib/netlist/nl_base.cpp b/src/lib/netlist/nl_base.cpp index 7e0e5f0425f..52cad23e9ba 100644 --- a/src/lib/netlist/nl_base.cpp +++ b/src/lib/netlist/nl_base.cpp @@ -703,13 +703,21 @@ namespace netlist // terminal_t // ---------------------------------------------------------------------------------------- - terminal_t::terminal_t(core_device_t &dev, const pstring &aname, terminal_t *otherterm, nldelegate delegate) + terminal_t::terminal_t(core_device_t &dev, const pstring &aname, + terminal_t *otherterm, nldelegate delegate) + : terminal_t(dev, aname, otherterm, { nullptr, nullptr }, delegate) + { + } + + terminal_t::terminal_t(core_device_t &dev, const pstring &aname, + terminal_t *otherterm, const std::array<terminal_t *, 2> &splitterterms, + nldelegate delegate) : analog_t(dev, aname, STATE_BIDIR, delegate) , m_Idr(nullptr) , m_go(nullptr) , m_gt(nullptr) { - state().setup().register_term(*this, *otherterm); + state().setup().register_term(*this, otherterm, splitterterms); } void terminal_t::set_ptrs(nl_fptype *gt, nl_fptype *go, nl_fptype *Idr) noexcept(false) |