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(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 tmp; plib::uninitialised_array nt; std::size_t p=0;