From 24e192fc86f7b876e28a9214a4d84e70ac57c18b Mon Sep 17 00:00:00 2001 From: couriersud Date: Mon, 4 Feb 2019 20:38:43 +0100 Subject: [PATCH] netlist: Fix regression. (nw) --- src/lib/netlist/analog/nld_switches.cpp | 1 + src/lib/netlist/analog/nlid_twoterm.cpp | 9 +++++++++ src/lib/netlist/analog/nlid_twoterm.h | 2 ++ 3 files changed, 12 insertions(+) diff --git a/src/lib/netlist/analog/nld_switches.cpp b/src/lib/netlist/analog/nld_switches.cpp index a2494553988..7f650737de8 100644 --- a/src/lib/netlist/analog/nld_switches.cpp +++ b/src/lib/netlist/analog/nld_switches.cpp @@ -62,6 +62,7 @@ namespace netlist { m_R.set_R(R_ON); } + m_R.solve_later(); } diff --git a/src/lib/netlist/analog/nlid_twoterm.cpp b/src/lib/netlist/analog/nlid_twoterm.cpp index 4e3c001030d..51c17b92267 100644 --- a/src/lib/netlist/analog/nlid_twoterm.cpp +++ b/src/lib/netlist/analog/nlid_twoterm.cpp @@ -92,6 +92,15 @@ void NETLIB_NAME(twoterm)::solve_now() m_N.solve_now(); } +void NETLIB_NAME(twoterm)::solve_later(netlist_time delay) +{ + /* we only need to call the non-rail terminal */ + if (m_P.has_net() && !m_P.net().isRailNet()) + m_P.schedule_solve_after(delay); + else if (m_N.has_net() && !m_N.net().isRailNet()) + m_N.schedule_solve_after(delay); +} + NETLIB_UPDATE(twoterm) { diff --git a/src/lib/netlist/analog/nlid_twoterm.h b/src/lib/netlist/analog/nlid_twoterm.h index 486efdc0add..5571e17867d 100644 --- a/src/lib/netlist/analog/nlid_twoterm.h +++ b/src/lib/netlist/analog/nlid_twoterm.h @@ -85,6 +85,8 @@ public: void solve_now(); + void solve_later(netlist_time delay = netlist_time::from_nsec(1)); + void set(const nl_double G, const nl_double V, const nl_double I) { /* GO, GT, I */