summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/netlist/nl_setup.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/netlist/nl_setup.cpp')
-rw-r--r--src/lib/netlist/nl_setup.cpp34
1 files changed, 14 insertions, 20 deletions
diff --git a/src/lib/netlist/nl_setup.cpp b/src/lib/netlist/nl_setup.cpp
index 35807c000bb..6b554a701ee 100644
--- a/src/lib/netlist/nl_setup.cpp
+++ b/src/lib/netlist/nl_setup.cpp
@@ -18,6 +18,7 @@
#include "devices/net_lib.h"
#include "devices/nld_system.h"
#include "analog/nld_twoterm.h"
+#include "solver/nld_solver.h"
static NETLIST_START(base)
TTL_INPUT(ttlhigh, 1)
@@ -215,22 +216,22 @@ void setup_t::register_object(device_t &dev, const pstring &name, object_t &obj)
case terminal_t::OUTPUT:
{
core_terminal_t &term = dynamic_cast<core_terminal_t &>(obj);
- if (obj.isType(terminal_t::OUTPUT))
+ if (term.isType(terminal_t::OUTPUT))
{
- if (obj.isFamily(terminal_t::LOGIC))
+ if (term.is_logic())
{
logic_output_t &port = dynamic_cast<logic_output_t &>(term);
port.set_logic_family(dev.logic_family());
dynamic_cast<logic_output_t &>(term).init_object(dev, dev.name() + "." + name);
}
- else if (obj.isFamily(terminal_t::ANALOG))
+ else if (term.is_analog())
dynamic_cast<analog_output_t &>(term).init_object(dev, dev.name() + "." + name);
else
log().fatal("Error adding {1} {2} to terminal list, neither LOGIC nor ANALOG\n", objtype_as_astr(term), term.name());
}
- else if (obj.isType(terminal_t::INPUT))
+ else if (term.isType(terminal_t::INPUT))
{
- if (obj.isFamily(terminal_t::LOGIC))
+ if (term.is_logic())
{
logic_input_t &port = dynamic_cast<logic_input_t &>(term);
port.set_logic_family(dev.logic_family());
@@ -487,7 +488,7 @@ param_t *setup_t::find_param(const pstring &param_in, bool required)
// FIXME avoid dynamic cast here
devices::nld_base_proxy *setup_t::get_d_a_proxy(core_terminal_t &out)
{
- nl_assert(out.isFamily(terminal_t::LOGIC));
+ nl_assert(out.is_logic());
logic_output_t &out_cast = dynamic_cast<logic_output_t &>(out);
devices::nld_base_proxy *proxy = out_cast.get_proxy();
@@ -522,7 +523,7 @@ devices::nld_base_proxy *setup_t::get_d_a_proxy(core_terminal_t &out)
void setup_t::connect_input_output(core_terminal_t &in, core_terminal_t &out)
{
- if (out.isFamily(terminal_t::ANALOG) && in.isFamily(terminal_t::LOGIC))
+ if (out.is_analog() && in.is_logic())
{
logic_input_t &incast = dynamic_cast<logic_input_t &>(in);
pstring x = pfmt("proxy_ad_{1}_{2}")(in.name())( m_proxy_cnt);
@@ -537,7 +538,7 @@ void setup_t::connect_input_output(core_terminal_t &in, core_terminal_t &out)
out.net().register_con(proxy->m_I);
}
- else if (out.isFamily(terminal_t::LOGIC) && in.isFamily(terminal_t::ANALOG))
+ else if (out.is_logic() && in.is_analog())
{
devices::nld_base_proxy *proxy = get_d_a_proxy(out);
@@ -556,11 +557,11 @@ void setup_t::connect_input_output(core_terminal_t &in, core_terminal_t &out)
void setup_t::connect_terminal_input(terminal_t &term, core_terminal_t &inp)
{
- if (inp.isFamily(terminal_t::ANALOG))
+ if (inp.is_analog())
{
connect_terminals(inp, term);
}
- else if (inp.isFamily(terminal_t::LOGIC))
+ else if (inp.is_logic())
{
logic_input_t &incast = dynamic_cast<logic_input_t &>(inp);
log().debug("connect_terminal_input: connecting proxy\n");
@@ -588,7 +589,7 @@ void setup_t::connect_terminal_input(terminal_t &term, core_terminal_t &inp)
void setup_t::connect_terminal_output(terminal_t &in, core_terminal_t &out)
{
- if (out.isFamily(terminal_t::ANALOG))
+ if (out.is_analog())
{
log().debug("connect_terminal_output: {1} {2}\n", in.name(), out.name());
/* no proxy needed, just merge existing terminal net */
@@ -597,7 +598,7 @@ void setup_t::connect_terminal_output(terminal_t &in, core_terminal_t &out)
else
out.net().register_con(in);
}
- else if (out.isFamily(terminal_t::LOGIC))
+ else if (out.is_logic())
{
log().debug("connect_terminal_output: connecting proxy\n");
devices::nld_base_proxy *proxy = get_d_a_proxy(out);
@@ -640,7 +641,7 @@ void setup_t::connect_terminals(core_terminal_t &t1, core_terminal_t &t2)
static core_terminal_t &resolve_proxy(core_terminal_t &term)
{
- if (term.isFamily(core_terminal_t::LOGIC))
+ if (term.is_logic())
{
logic_t &out = dynamic_cast<logic_t &>(term);
if (out.has_proxy())
@@ -853,13 +854,6 @@ void setup_t::start_devices()
}
}
- /* create devices */
-
- for (auto & e : m_device_factory)
- {
- auto dev = std::shared_ptr<device_t>(e.second->Create(netlist(), e.first));
- register_dev_s(dev);
- }
netlist().start();
}