Esempio n. 1
0
        // 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");
        }
Esempio n. 2
0
        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();
        }