summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/netlist/solver
diff options
context:
space:
mode:
author couriersud <couriersud@gmx.org>2020-05-14 11:58:42 +0200
committer couriersud <couriersud@gmx.org>2020-05-15 13:09:22 +0200
commit88edd7c665358de5c23d42637e4c17f878c1e275 (patch)
tree836d3f2d3c71850019522f98341948e8de43e7f5 /src/lib/netlist/solver
parentd01c23cdc8f0291d7f65ca9f55c927d80836b313 (diff)
netlist: code cleanup and development stage tristate [Couriersud]
Code cleanup to better separate the following stages: - parsing - setup - run In addition preliminary native tristate support was added. Not yet production ready, please don't use it.
Diffstat (limited to 'src/lib/netlist/solver')
-rw-r--r--src/lib/netlist/solver/nld_matrix_solver.cpp8
-rw-r--r--src/lib/netlist/solver/nld_matrix_solver.h2
2 files changed, 5 insertions, 5 deletions
diff --git a/src/lib/netlist/solver/nld_matrix_solver.cpp b/src/lib/netlist/solver/nld_matrix_solver.cpp
index 291f56100a8..11c8a60df60 100644
--- a/src/lib/netlist/solver/nld_matrix_solver.cpp
+++ b/src/lib/netlist/solver/nld_matrix_solver.cpp
@@ -56,7 +56,7 @@ namespace solver
log().fatal(MF_ERROR_CONNECTING_1_TO_2(m_fb_sync.name(), m_Q_sync.name()));
throw nl_exception(MF_ERROR_CONNECTING_1_TO_2(m_fb_sync.name(), m_Q_sync.name()));
}
- setup_base(nets);
+ setup_base(anetlist.setup(), nets);
// now setup the matrix
setup_matrix();
@@ -67,7 +67,7 @@ namespace solver
return &state().setup().get_connected_terminal(*term)->net();
}
- void matrix_solver_t::setup_base(const analog_net_t::list_t &nets)
+ void matrix_solver_t::setup_base(setup_t &setup, const analog_net_t::list_t &nets)
{
log().debug("New solver setup\n");
std::vector<core_device_t *> step_devices;
@@ -125,7 +125,7 @@ namespace solver
net_proxy_output = net_proxy_output_u.get();
m_inps.emplace_back(std::move(net_proxy_output_u));
}
- net_proxy_output->net().add_terminal(*p);
+ setup.add_terminal(net_proxy_output->net(), *p);
// FIXME: repeated calling - kind of brute force
net_proxy_output->net().rebuild_list();
log().debug("Added input {1}", net_proxy_output->name());
@@ -581,7 +581,7 @@ namespace solver
{
log().verbose("==============================================");
log().verbose("Solver {1}", this->name());
- log().verbose(" ==> {1} nets", this->m_terms.size()); //, (*(*groups[i].first())->m_core_terms.first())->name());
+ log().verbose(" ==> {1} nets", this->m_terms.size());
log().verbose(" has {1} dynamic elements", this->dynamic_device_count());
log().verbose(" has {1} timestep elements", this->timestep_device_count());
log().verbose(" {1:6.3} average newton raphson loops",
diff --git a/src/lib/netlist/solver/nld_matrix_solver.h b/src/lib/netlist/solver/nld_matrix_solver.h
index 4d9dcbbd9af..ffecbfbe72c 100644
--- a/src/lib/netlist/solver/nld_matrix_solver.h
+++ b/src/lib/netlist/solver/nld_matrix_solver.h
@@ -304,7 +304,7 @@ namespace solver
std::size_t m_ops;
// base setup - called from constructor
- void setup_base(const analog_net_t::list_t &nets) noexcept(false);
+ void setup_base(setup_t &setup, const analog_net_t::list_t &nets) noexcept(false);
void sort_terms(matrix_sort_type_e sort);