summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/netlist/nl_setup.cpp
diff options
context:
space:
mode:
author couriersud <couriersud@gmx.org>2020-07-25 14:46:37 +0200
committer couriersud <couriersud@gmx.org>2020-07-25 14:47:26 +0200
commit28ca04dc7e0c213e2ff3629dbb98a3ed32ab688e (patch)
treefd289d9929f63e5744527a41ef62b8bcf02233ad /src/lib/netlist/nl_setup.cpp
parent89687cc1a4801f3cd439810b1ee769a51b724de2 (diff)
netlist: sub solvers now have their own parameter set.
* Example: PARAM(Solver.Solver_0.METHOD, "GMRES") * Will use the GMRES solver instead of the default MAT_CR solver. * Same applies to all Solver parameters. * Please use with care. If you change your netlist (e.g. using frontiers) the allocation of nets to solvers and the number of solvers may change. Thus this type of tweaking should only be used after the netlist completely works.
Diffstat (limited to 'src/lib/netlist/nl_setup.cpp')
-rw-r--r--src/lib/netlist/nl_setup.cpp27
1 files changed, 17 insertions, 10 deletions
diff --git a/src/lib/netlist/nl_setup.cpp b/src/lib/netlist/nl_setup.cpp
index 956504d3b27..e6424649149 100644
--- a/src/lib/netlist/nl_setup.cpp
+++ b/src/lib/netlist/nl_setup.cpp
@@ -1553,16 +1553,6 @@ void setup_t::prepare_to_run()
}
int errcnt(0);
- log().debug("Looking for unknown parameters ...\n");
- for (auto &p : m_abstract.m_param_values)
- {
- auto f = m_params.find(p.first);
- if (f == m_params.end())
- {
- log().error(ME_UNKNOWN_PARAMETER(p.first));
- errcnt++;
- }
- }
const bool use_deactivate = m_netlist_params->m_use_deactivate();
@@ -1627,6 +1617,23 @@ void setup_t::prepare_to_run()
else
solver->post_start();
+ errcnt = 0;
+ log().debug("Looking for unknown parameters ...\n");
+ for (auto &p : m_abstract.m_param_values)
+ {
+ auto f = m_params.find(p.first);
+ if (f == m_params.end())
+ {
+ log().error(ME_UNKNOWN_PARAMETER(p.first));
+ errcnt++;
+ }
+ }
+ if (errcnt > 0)
+ {
+ log().fatal(MF_ERRORS_FOUND(errcnt));
+ throw nl_exception(MF_ERRORS_FOUND(errcnt));
+ }
+
for (auto &n : m_nlstate.nets())
for (auto & term : n->core_terms())
if (!term->delegate().is_set())