Exemple #1
0
            size_t get_solver_id(solver.matrix_solver_t net)
            {
                for (size_t i = 0; i < m_mat_solvers.size(); i++)
                {
                    if (m_mat_solvers[i] == net)
                    {
                        return(i);
                    }
                }

                return(size_t.MaxValue);  //return std::numeric_limits<std::size_t>::max();
            }
Exemple #2
0
            // NETLIB_UPDATE_PARAMI();


            public void reschedule(solver.matrix_solver_t solv, netlist_time ts)
            {
                netlist_time_ext now   = exec().time();
                netlist_time_ext sched = now + ts;

                m_queue.remove <bool_const_false>(solv);
                m_queue.push <bool_const_false>(new plib.pqentry_t <netlist_time, nld_solver_solver_ptr>(sched, solv));

                if (m_Q_step.net().is_queued())
                {
                    if (m_Q_step.net().next_scheduled_time() > sched)
                    {
                        m_Q_step.net().toggle_and_push_to_queue(ts);
                    }
                }
                else
                {
                    m_Q_step.net().toggle_and_push_to_queue(ts);
                }
            }
Exemple #3
0
 //NETLIB_HANDLERI(termhandler);
 //NETLIB_HANDLER(VCCS, termhandler)
 protected void termhandler()
 {
     solver.matrix_solver_t solv = null;
     // only called if connected to a rail net ==> notify the solver to recalculate
     if ((solv = m_IP.solver()) != null)
     {
         solv.solve_now();
     }
     else if ((solv = m_IN.solver()) != null)
     {
         solv.solve_now();
     }
     else if ((solv = m_OP.solver()) != null)
     {
         solv.solve_now();
     }
     else if ((solv = m_ON.solver()) != null)
     {
         solv.solve_now();
     }
 }
Exemple #4
0
 public void set_solver(solver.matrix_solver_t solver)
 {
     m_solver = solver;
 }
Exemple #5
0
 // ----------------------------------------------------------------------------------------
 // analog_net_t
 // ----------------------------------------------------------------------------------------
 public analog_net_t(netlist_state_t nl, string aname, detail.core_terminal_t railterminal = null)
     : base(nl, aname, railterminal)
 {
     m_cur_Analog = new state_var <Pointer <nl_fptype> >(this, "m_cur_Analog", new Pointer <nl_fptype>(new std.vector <nl_fptype>(1)));  //, m_cur_Analog(*this, "m_cur_Analog", nlconst::zero())
     m_solver     = null;
 }