diff options
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 // ---------------------------------------------------------------------------------------- |