diff options
author | 2020-07-05 15:49:59 +0200 | |
---|---|---|
committer | 2020-07-05 15:49:59 +0200 | |
commit | e339a280f4292aa3dc74baffb0c8a22018a14711 (patch) | |
tree | f0b33f8fe51a18ab96d213d166af7b66acbf4ebc /src/lib/netlist/nl_base.cpp | |
parent | 9e86f5e86612c4f61b27e5ada86ac9bdebcbc272 (diff) |
netlist: remove soft reset support.
* Electronic circuits and base components like resistors or capacitors
do not have a reset line. You can use them to create reset circuits.
There is thus no point to support soft reset, the equivalent to pressing
the reset button.
* Fixed some bugs around reset and start up logic.
* This also fixes the "scramble F3" crash.
Diffstat (limited to 'src/lib/netlist/nl_base.cpp')
-rw-r--r-- | src/lib/netlist/nl_base.cpp | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/src/lib/netlist/nl_base.cpp b/src/lib/netlist/nl_base.cpp index f5e276c7601..f546056ec30 100644 --- a/src/lib/netlist/nl_base.cpp +++ b/src/lib/netlist/nl_base.cpp @@ -272,19 +272,24 @@ namespace netlist log().debug("Searching for solver\n"); m_solver = m_state.get_single_device<devices::NETLIB_NAME(solver)>("solver"); - m_time = netlist_time_ext::zero(); + // Don't reset time + //m_time = netlist_time_ext::zero(); m_queue.clear(); if (m_mainclock != nullptr) - m_mainclock->m_Q.net().set_next_scheduled_time(netlist_time_ext::zero()); + m_mainclock->m_Q.net().set_next_scheduled_time(m_time); //if (m_solver != nullptr) // m_solver->reset(); m_state.reset(); } - void netlist_state_t::reset() + void netlist_state_t::free_setup_resources() { m_setup = nullptr; + } + + void netlist_state_t::reset() + { // Reset all nets once ! log().verbose("Call reset on all nets:"); for (auto & n : nets()) @@ -637,7 +642,7 @@ namespace netlist void detail::net_t::reset() noexcept { - m_next_scheduled_time = netlist_time_ext::zero(); + m_next_scheduled_time = exec().time(); m_in_queue = queue_status::DELIVERED; m_new_Q = 0; @@ -680,6 +685,11 @@ namespace netlist { } + void analog_net_t::reset() noexcept + { + net_t::reset(); + m_cur_Analog = nlconst::zero(); + } // ---------------------------------------------------------------------------------------- // core_terminal_t // ---------------------------------------------------------------------------------------- |