summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-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 */