summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/netlist/solver
diff options
context:
space:
mode:
author couriersud <couriersud@gmx.org>2020-07-25 14:46:25 +0200
committer couriersud <couriersud@gmx.org>2020-07-25 14:47:25 +0200
commit89687cc1a4801f3cd439810b1ee769a51b724de2 (patch)
tree88aa320d341e0f9a9524ce328e74ba3622821038 /src/lib/netlist/solver
parent9a4a812ba8343147354177ae7b40e9225ffea579 (diff)
netlist: Fix scheduling bug.
Diffstat (limited to 'src/lib/netlist/solver')
-rw-r--r--src/lib/netlist/solver/nld_matrix_solver.cpp2
-rw-r--r--src/lib/netlist/solver/nld_matrix_solver.h4
-rw-r--r--src/lib/netlist/solver/nld_solver.cpp2
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;