summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author couriersud <couriersud@gmx.org>2019-02-04 20:38:43 +0100
committer couriersud <couriersud@gmx.org>2019-02-04 20:38:59 +0100
commit24e192fc86f7b876e28a9214a4d84e70ac57c18b (patch)
treeb741f9b3d47e59095229f68a4e497a85484bbcf3
parent1290a5d0bbd78bd7a833a0a89c3f98e6d119eb7e (diff)
netlist: Fix regression. (nw)
-rw-r--r--src/lib/netlist/analog/nld_switches.cpp1
-rw-r--r--src/lib/netlist/analog/nlid_twoterm.cpp9
-rw-r--r--src/lib/netlist/analog/nlid_twoterm.h2
3 files changed, 12 insertions, 0 deletions
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 */