Fix reset order for nets. (nw)

This commit is contained in:
couriersud 2019-01-07 22:10:36 +01:00
parent f3d91f4898
commit 0f0dcd161c

View File

@ -506,6 +506,7 @@ void netlist_t::reset()
break; break;
case 1: // brute force backward case 1: // brute force backward
{ {
log().verbose("Using brute force backward startup strategy");
std::size_t i = m_devices.size(); std::size_t i = m_devices.size();
while (i>0) while (i>0)
m_devices[--i]->update_dev(); m_devices[--i]->update_dev();
@ -513,6 +514,7 @@ void netlist_t::reset()
break; break;
case 2: // brute force forward case 2: // brute force forward
{ {
log().verbose("Using brute force forward startup strategy");
for (auto &d : m_devices) for (auto &d : m_devices)
d->update_dev(); d->update_dev();
} }
@ -886,19 +888,15 @@ void detail::net_t::reset()
if (p != nullptr) if (p != nullptr)
p->m_cur_Analog = 0.0; p->m_cur_Analog = 0.0;
/* rebuild m_list */ /* rebuild m_list and reset terminals to active or analog out state */
m_list_active.clear(); m_list_active.clear();
for (core_terminal_t *ct : m_core_terms) for (core_terminal_t *ct : m_core_terms)
//FIXME: if below causes mario to crash because it tries to {
// remove a non-existing terminal (i.e., STATE_INP_PASSIVE)
// from the deactivate list.
//if (ct->state() != logic_t::STATE_INP_PASSIVE)
m_list_active.push_back(ct);
for (core_terminal_t *ct : m_core_terms)
ct->reset(); ct->reset();
if (ct->state() != logic_t::STATE_INP_PASSIVE)
m_list_active.push_back(ct);
}
} }
void detail::net_t::add_terminal(detail::core_terminal_t &terminal) void detail::net_t::add_terminal(detail::core_terminal_t &terminal)