// performance //plib::pperftime_t<true> m_stat_mainloop; //plib::pperfcount_t<true> m_perf_out_processed; public netlist_t(netlist_state_t state, string aname) { m_state = state; m_solver = null; m_time = netlist_time_ext.zero(); m_mainclock = null; m_use_stats = false; m_queue = new queue_t(config.MAX_QUEUE_SIZE, (net) => { return(state.find_net_id(net)); }, //detail::queue_t::id_delegate(&netlist_state_t :: find_net_id, &state), (id) => { return(state.net_by_id(id)); }); //detail::queue_t::obj_delegate(&netlist_state_t :: net_by_id, &state)) state.save(this, (plib.state_manager_t.callback_t)m_queue, aname, "m_queue"); state.save(this, m_time, aname, "m_time"); }
public void reset() { log().debug.op("Searching for mainclock\n"); m_mainclock = m_state.get_single_device <devices.nld_mainclock>("mainclock"); log().debug.op("Searching for solver\n"); m_solver = m_state.get_single_device <devices.nld_solver>("solver"); // Don't reset time //m_time = netlist_time_ext::zero(); m_queue.clear(); if (m_mainclock != null) { m_mainclock.m_Q.net().set_next_scheduled_time(m_time); } //if (m_solver != nullptr) // m_solver->reset(); m_state.reset(); }