diff options
author | couriersud <couriersud@gmx.org> | 2020-07-25 14:46:25 +0200 |
---|---|---|
committer | couriersud <couriersud@gmx.org> | 2020-07-25 14:47:25 +0200 |
commit | 89687cc1a4801f3cd439810b1ee769a51b724de2 (patch) | |
tree | 88aa320d341e0f9a9524ce328e74ba3622821038 /src/lib/netlist/solver | |
parent | 9a4a812ba8343147354177ae7b40e9225ffea579 (diff) |
netlist: Fix scheduling bug.
Diffstat (limited to 'src/lib/netlist/solver')
-rw-r--r-- | src/lib/netlist/solver/nld_matrix_solver.cpp | 2 | ||||
-rw-r--r-- | src/lib/netlist/solver/nld_matrix_solver.h | 4 | ||||
-rw-r--r-- | src/lib/netlist/solver/nld_solver.cpp | 2 |
3 files changed, 4 insertions, 4 deletions
diff --git a/src/lib/netlist/solver/nld_matrix_solver.cpp b/src/lib/netlist/solver/nld_matrix_solver.cpp index 1d25576a0d4..038d914df5a 100644 --- a/src/lib/netlist/solver/nld_matrix_solver.cpp +++ b/src/lib/netlist/solver/nld_matrix_solver.cpp @@ -515,7 +515,7 @@ namespace solver if (delta < netlist_time_ext::quantum()) { //printf("solve return %s at %f\n", source, now.as_double()); - return netlist_time::zero(); + return timestep_device_count() > 0 ? netlist_time::from_fp(m_params.m_min_timestep) : netlist_time::zero(); } backup(); // save voltages for backup and timestep calculation diff --git a/src/lib/netlist/solver/nld_matrix_solver.h b/src/lib/netlist/solver/nld_matrix_solver.h index bfc105aa1cc..d17950eaa42 100644 --- a/src/lib/netlist/solver/nld_matrix_solver.h +++ b/src/lib/netlist/solver/nld_matrix_solver.h @@ -232,9 +232,9 @@ namespace solver update_inputs(); - if (m_params.m_dynamic_ts && (timestep_device_count() != 0)) + if (timestep_device_count() > 0) { - this->reschedule(netlist_time::from_fp(m_params.m_min_timestep)); + this->reschedule(netlist_time::from_fp(m_params.m_dynamic_ts ? m_params.m_min_timestep : m_params.m_max_timestep)); } } diff --git a/src/lib/netlist/solver/nld_solver.cpp b/src/lib/netlist/solver/nld_solver.cpp index cac70167d82..87884e480c0 100644 --- a/src/lib/netlist/solver/nld_solver.cpp +++ b/src/lib/netlist/solver/nld_solver.cpp @@ -54,7 +54,7 @@ namespace devices { const netlist_time_ext now(exec().time()); const std::size_t nthreads = m_params.m_parallel() < 2 ? 1 : std::min(static_cast<std::size_t>(m_params.m_parallel()), plib::omp::get_max_threads()); - const netlist_time_ext sched(now + (nthreads <= 1 ? netlist_time_ext::zero() : netlist_time_ext::from_usec(100))); + const netlist_time_ext sched(now + (nthreads <= 1 ? netlist_time_ext::zero() : netlist_time_ext::from_nsec(100))); plib::uninitialised_array<solver::matrix_solver_t *, config::MAX_SOLVER_QUEUE_SIZE::value> tmp; plib::uninitialised_array<netlist_time, config::MAX_SOLVER_QUEUE_SIZE::value> nt; std::size_t p=0; |