mirror of
https://github.com/holub/mame
synced 2025-10-08 01:28:00 +03:00
Moved proxy code into separate file. (nw)
This commit is contained in:
parent
9ade6db46e
commit
63f4e52dae
@ -187,6 +187,8 @@ project "netlist"
|
|||||||
MAME_DIR .. "src/lib/netlist/devices/nld_truthtable.h",
|
MAME_DIR .. "src/lib/netlist/devices/nld_truthtable.h",
|
||||||
MAME_DIR .. "src/lib/netlist/devices/nlid_cmos.h",
|
MAME_DIR .. "src/lib/netlist/devices/nlid_cmos.h",
|
||||||
MAME_DIR .. "src/lib/netlist/devices/nlid_system.h",
|
MAME_DIR .. "src/lib/netlist/devices/nlid_system.h",
|
||||||
|
MAME_DIR .. "src/lib/netlist/devices/nlid_proxy.cpp",
|
||||||
|
MAME_DIR .. "src/lib/netlist/devices/nlid_proxy.h",
|
||||||
MAME_DIR .. "src/lib/netlist/macro/nlm_ttl74xx.cpp",
|
MAME_DIR .. "src/lib/netlist/macro/nlm_ttl74xx.cpp",
|
||||||
MAME_DIR .. "src/lib/netlist/macro/nlm_ttl74xx.h",
|
MAME_DIR .. "src/lib/netlist/macro/nlm_ttl74xx.h",
|
||||||
MAME_DIR .. "src/lib/netlist/macro/nlm_cd4xxx.cpp",
|
MAME_DIR .. "src/lib/netlist/macro/nlm_cd4xxx.cpp",
|
||||||
|
@ -111,6 +111,7 @@ NLOBJS := \
|
|||||||
$(NLOBJ)/devices/nld_legacy.o \
|
$(NLOBJ)/devices/nld_legacy.o \
|
||||||
$(NLOBJ)/devices/net_lib.o \
|
$(NLOBJ)/devices/net_lib.o \
|
||||||
$(NLOBJ)/devices/nld_log.o \
|
$(NLOBJ)/devices/nld_log.o \
|
||||||
|
$(NLOBJ)/devices/nlid_proxy.o \
|
||||||
$(NLOBJ)/devices/nld_system.o \
|
$(NLOBJ)/devices/nld_system.o \
|
||||||
$(NLOBJ)/devices/nld_truthtable.o \
|
$(NLOBJ)/devices/nld_truthtable.o \
|
||||||
$(NLOBJ)/macro/nlm_cd4xxx.o \
|
$(NLOBJ)/macro/nlm_cd4xxx.o \
|
||||||
|
@ -86,38 +86,6 @@ namespace netlist
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------------------
|
|
||||||
// nld_d_to_a_proxy
|
|
||||||
// ----------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
void nld_d_to_a_proxy::reset()
|
|
||||||
{
|
|
||||||
//m_Q.initial(0.0);
|
|
||||||
m_last_state = -1;
|
|
||||||
m_RV.do_reset();
|
|
||||||
m_is_timestep = m_RV.m_P.net().solver()->has_timestep_devices();
|
|
||||||
m_RV.set(NL_FCONST(1.0) / logic_family().m_R_low, logic_family().m_low_V, 0.0);
|
|
||||||
}
|
|
||||||
|
|
||||||
NETLIB_UPDATE(d_to_a_proxy)
|
|
||||||
{
|
|
||||||
const int state = static_cast<int>(m_I());
|
|
||||||
if (state != m_last_state)
|
|
||||||
{
|
|
||||||
m_last_state = state;
|
|
||||||
const nl_double R = state ? logic_family().m_R_high : logic_family().m_R_low;
|
|
||||||
const nl_double V = state ? logic_family().m_high_V : logic_family().m_low_V;
|
|
||||||
|
|
||||||
// We only need to update the net first if this is a time stepping net
|
|
||||||
if (m_is_timestep)
|
|
||||||
{
|
|
||||||
m_RV.update_dev();
|
|
||||||
}
|
|
||||||
m_RV.set(NL_FCONST(1.0) / R, V, 0.0);
|
|
||||||
m_RV.m_P.schedule_after(NLTIME_FROM_NS(1));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
// nld_res_sw
|
// nld_res_sw
|
||||||
|
74
src/lib/netlist/devices/nlid_proxy.cpp
Normal file
74
src/lib/netlist/devices/nlid_proxy.cpp
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
// license:GPL-2.0+
|
||||||
|
// copyright-holders:Couriersud
|
||||||
|
/*
|
||||||
|
* nlid_proxy.cpp
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
//#include <memory>
|
||||||
|
#include "nlid_proxy.h"
|
||||||
|
#include "solver/nld_solver.h"
|
||||||
|
//#include "plib/pstream.h"
|
||||||
|
//#include "plib/pfmtlog.h"
|
||||||
|
//#include "nld_log.h"
|
||||||
|
|
||||||
|
namespace netlist
|
||||||
|
{
|
||||||
|
namespace devices
|
||||||
|
{
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------------------
|
||||||
|
// nld_d_to_a_proxy
|
||||||
|
// ----------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
nld_d_to_a_proxy::nld_d_to_a_proxy(netlist_t &anetlist, const pstring &name, logic_output_t *out_proxied)
|
||||||
|
: nld_base_d_to_a_proxy(anetlist, name, out_proxied, m_RV.m_P)
|
||||||
|
, m_GNDHack(*this, "_Q")
|
||||||
|
, m_RV(*this, "RV")
|
||||||
|
, m_last_state(*this, "m_last_var", -1)
|
||||||
|
, m_is_timestep(false)
|
||||||
|
{
|
||||||
|
//register_sub(m_RV);
|
||||||
|
//register_term("1", m_RV.m_P);
|
||||||
|
//register_term("2", m_RV.m_N);
|
||||||
|
|
||||||
|
register_subalias("Q", m_RV.m_P);
|
||||||
|
|
||||||
|
connect_late(m_RV.m_N, m_GNDHack);
|
||||||
|
printf("%s %s\n", out_proxied->name().cstr(), out_proxied->device().name().cstr());
|
||||||
|
auto x = netlist().setup().find_terminal(out_proxied->name(), detail::device_object_t::type_t::OUTPUT, false);
|
||||||
|
if (x) printf("==> %s\n", x->name().cstr());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void nld_d_to_a_proxy::reset()
|
||||||
|
{
|
||||||
|
//m_Q.initial(0.0);
|
||||||
|
m_last_state = -1;
|
||||||
|
m_RV.do_reset();
|
||||||
|
m_is_timestep = m_RV.m_P.net().solver()->has_timestep_devices();
|
||||||
|
m_RV.set(NL_FCONST(1.0) / logic_family().m_R_low, logic_family().m_low_V, 0.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
NETLIB_UPDATE(d_to_a_proxy)
|
||||||
|
{
|
||||||
|
const int state = static_cast<int>(m_I());
|
||||||
|
if (state != m_last_state)
|
||||||
|
{
|
||||||
|
m_last_state = state;
|
||||||
|
const nl_double R = state ? logic_family().m_R_high : logic_family().m_R_low;
|
||||||
|
const nl_double V = state ? logic_family().m_high_V : logic_family().m_low_V;
|
||||||
|
|
||||||
|
// We only need to update the net first if this is a time stepping net
|
||||||
|
if (m_is_timestep)
|
||||||
|
{
|
||||||
|
m_RV.update_dev();
|
||||||
|
}
|
||||||
|
m_RV.set(NL_FCONST(1.0) / R, V, 0.0);
|
||||||
|
m_RV.m_P.schedule_after(NLTIME_FROM_NS(1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
} //namespace devices
|
||||||
|
} // namespace netlist
|
180
src/lib/netlist/devices/nlid_proxy.h
Normal file
180
src/lib/netlist/devices/nlid_proxy.h
Normal file
@ -0,0 +1,180 @@
|
|||||||
|
// license:GPL-2.0+
|
||||||
|
// copyright-holders:Couriersud
|
||||||
|
/*
|
||||||
|
* nlid_proxy.h
|
||||||
|
*
|
||||||
|
* netlist proxy devices
|
||||||
|
*
|
||||||
|
* This file contains internal headers
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef NLID_PROXY_H_
|
||||||
|
#define NLID_PROXY_H_
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
#include "nl_setup.h"
|
||||||
|
#include "nl_base.h"
|
||||||
|
#include "nl_factory.h"
|
||||||
|
#include "analog/nld_twoterm.h"
|
||||||
|
|
||||||
|
namespace netlist
|
||||||
|
{
|
||||||
|
namespace devices
|
||||||
|
{
|
||||||
|
|
||||||
|
// -----------------------------------------------------------------------------
|
||||||
|
// nld_base_proxy
|
||||||
|
// -----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
NETLIB_OBJECT(base_proxy)
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
nld_base_proxy(netlist_t &anetlist, const pstring &name,
|
||||||
|
logic_t *inout_proxied, detail::core_terminal_t *proxy_inout)
|
||||||
|
: device_t(anetlist, name)
|
||||||
|
{
|
||||||
|
m_logic_family = inout_proxied->logic_family();
|
||||||
|
m_term_proxied = inout_proxied;
|
||||||
|
m_proxy_term = proxy_inout;
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual ~nld_base_proxy() {}
|
||||||
|
|
||||||
|
logic_t &term_proxied() const { return *m_term_proxied; }
|
||||||
|
detail::core_terminal_t &proxy_term() const { return *m_proxy_term; }
|
||||||
|
|
||||||
|
protected:
|
||||||
|
const logic_family_desc_t *m_logic_family;
|
||||||
|
|
||||||
|
virtual const logic_family_desc_t &logic_family() const
|
||||||
|
{
|
||||||
|
return *m_logic_family;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
logic_t *m_term_proxied;
|
||||||
|
detail::core_terminal_t *m_proxy_term;
|
||||||
|
};
|
||||||
|
|
||||||
|
// -----------------------------------------------------------------------------
|
||||||
|
// nld_a_to_d_proxy
|
||||||
|
// -----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
NETLIB_OBJECT_DERIVED(a_to_d_proxy, base_proxy)
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
nld_a_to_d_proxy(netlist_t &anetlist, const pstring &name, logic_input_t *in_proxied)
|
||||||
|
: nld_base_proxy(anetlist, name, in_proxied, &m_I)
|
||||||
|
, m_I(*this, "I")
|
||||||
|
, m_Q(*this, "Q")
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual ~nld_a_to_d_proxy() {}
|
||||||
|
|
||||||
|
analog_input_t m_I;
|
||||||
|
logic_output_t m_Q;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
NETLIB_RESETI() { }
|
||||||
|
|
||||||
|
NETLIB_UPDATEI()
|
||||||
|
{
|
||||||
|
nl_assert(m_logic_family != nullptr);
|
||||||
|
if (m_I.Q_Analog() > logic_family().m_high_thresh_V)
|
||||||
|
m_Q.push(1, NLTIME_FROM_NS(1));
|
||||||
|
else if (m_I.Q_Analog() < logic_family().m_low_thresh_V)
|
||||||
|
m_Q.push(0, NLTIME_FROM_NS(1));
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// do nothing
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
};
|
||||||
|
|
||||||
|
// -----------------------------------------------------------------------------
|
||||||
|
// nld_base_d_to_a_proxy
|
||||||
|
// -----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
NETLIB_OBJECT_DERIVED(base_d_to_a_proxy, base_proxy)
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual ~nld_base_d_to_a_proxy() {}
|
||||||
|
|
||||||
|
virtual logic_input_t &in() { return m_I; }
|
||||||
|
|
||||||
|
protected:
|
||||||
|
nld_base_d_to_a_proxy(netlist_t &anetlist, const pstring &name,
|
||||||
|
logic_output_t *out_proxied, detail::core_terminal_t &proxy_out)
|
||||||
|
: nld_base_proxy(anetlist, name, out_proxied, &proxy_out)
|
||||||
|
, m_I(*this, "I")
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
logic_input_t m_I;
|
||||||
|
|
||||||
|
private:
|
||||||
|
};
|
||||||
|
|
||||||
|
NETLIB_OBJECT_DERIVED(d_to_a_proxy, base_d_to_a_proxy)
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
nld_d_to_a_proxy(netlist_t &anetlist, const pstring &name, logic_output_t *out_proxied);
|
||||||
|
virtual ~nld_d_to_a_proxy() {}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
NETLIB_RESETI();
|
||||||
|
NETLIB_UPDATEI();
|
||||||
|
|
||||||
|
private:
|
||||||
|
analog_output_t m_GNDHack; // FIXME: Long term, we need to connect proxy gnd to device gnd
|
||||||
|
NETLIB_SUB(twoterm) m_RV;
|
||||||
|
state_var<int> m_last_state;
|
||||||
|
bool m_is_timestep;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class factory_lib_entry_t : public base_factory_t
|
||||||
|
{
|
||||||
|
P_PREVENT_COPYING(factory_lib_entry_t)
|
||||||
|
public:
|
||||||
|
|
||||||
|
factory_lib_entry_t(setup_t &setup, const pstring &name, const pstring &classname,
|
||||||
|
const pstring &def_param)
|
||||||
|
: base_factory_t(name, classname, def_param), m_setup(setup) { }
|
||||||
|
|
||||||
|
class wrapper : public device_t
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
wrapper(const pstring &devname, netlist_t &anetlist, const pstring &name)
|
||||||
|
: device_t(anetlist, name), m_devname(devname)
|
||||||
|
{
|
||||||
|
anetlist.setup().namespace_push(name);
|
||||||
|
anetlist.setup().include(m_devname);
|
||||||
|
anetlist.setup().namespace_pop();
|
||||||
|
}
|
||||||
|
protected:
|
||||||
|
NETLIB_RESETI() { }
|
||||||
|
NETLIB_UPDATEI() { }
|
||||||
|
|
||||||
|
pstring m_devname;
|
||||||
|
};
|
||||||
|
|
||||||
|
plib::owned_ptr<device_t> Create(netlist_t &anetlist, const pstring &name) override
|
||||||
|
{
|
||||||
|
return plib::owned_ptr<device_t>::Create<wrapper>(this->name(), anetlist, name);
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
setup_t &m_setup;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
} //namespace devices
|
||||||
|
} // namespace netlist
|
||||||
|
|
||||||
|
#endif /* NLD_PROXY_H_ */
|
@ -413,173 +413,6 @@ namespace netlist
|
|||||||
state_var<netlist_sig_t> m_last_state;
|
state_var<netlist_sig_t> m_last_state;
|
||||||
};
|
};
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
|
||||||
// nld_base_proxy
|
|
||||||
// -----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
NETLIB_OBJECT(base_proxy)
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
nld_base_proxy(netlist_t &anetlist, const pstring &name,
|
|
||||||
logic_t *inout_proxied, detail::core_terminal_t *proxy_inout)
|
|
||||||
: device_t(anetlist, name)
|
|
||||||
{
|
|
||||||
m_logic_family = inout_proxied->logic_family();
|
|
||||||
m_term_proxied = inout_proxied;
|
|
||||||
m_proxy_term = proxy_inout;
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual ~nld_base_proxy() {}
|
|
||||||
|
|
||||||
logic_t &term_proxied() const { return *m_term_proxied; }
|
|
||||||
detail::core_terminal_t &proxy_term() const { return *m_proxy_term; }
|
|
||||||
|
|
||||||
protected:
|
|
||||||
const logic_family_desc_t *m_logic_family;
|
|
||||||
|
|
||||||
virtual const logic_family_desc_t &logic_family() const
|
|
||||||
{
|
|
||||||
return *m_logic_family;
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
logic_t *m_term_proxied;
|
|
||||||
detail::core_terminal_t *m_proxy_term;
|
|
||||||
};
|
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
|
||||||
// nld_a_to_d_proxy
|
|
||||||
// -----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
NETLIB_OBJECT_DERIVED(a_to_d_proxy, base_proxy)
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
nld_a_to_d_proxy(netlist_t &anetlist, const pstring &name, logic_input_t *in_proxied)
|
|
||||||
: nld_base_proxy(anetlist, name, in_proxied, &m_I)
|
|
||||||
, m_I(*this, "I")
|
|
||||||
, m_Q(*this, "Q")
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual ~nld_a_to_d_proxy() {}
|
|
||||||
|
|
||||||
analog_input_t m_I;
|
|
||||||
logic_output_t m_Q;
|
|
||||||
|
|
||||||
protected:
|
|
||||||
|
|
||||||
NETLIB_RESETI() { }
|
|
||||||
|
|
||||||
NETLIB_UPDATEI()
|
|
||||||
{
|
|
||||||
nl_assert(m_logic_family != nullptr);
|
|
||||||
if (m_I.Q_Analog() > logic_family().m_high_thresh_V)
|
|
||||||
m_Q.push(1, NLTIME_FROM_NS(1));
|
|
||||||
else if (m_I.Q_Analog() < logic_family().m_low_thresh_V)
|
|
||||||
m_Q.push(0, NLTIME_FROM_NS(1));
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// do nothing
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private:
|
|
||||||
};
|
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
|
||||||
// nld_base_d_to_a_proxy
|
|
||||||
// -----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
NETLIB_OBJECT_DERIVED(base_d_to_a_proxy, base_proxy)
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
virtual ~nld_base_d_to_a_proxy() {}
|
|
||||||
|
|
||||||
virtual logic_input_t &in() { return m_I; }
|
|
||||||
|
|
||||||
protected:
|
|
||||||
nld_base_d_to_a_proxy(netlist_t &anetlist, const pstring &name,
|
|
||||||
logic_output_t *out_proxied, detail::core_terminal_t &proxy_out)
|
|
||||||
: nld_base_proxy(anetlist, name, out_proxied, &proxy_out)
|
|
||||||
, m_I(*this, "I")
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
logic_input_t m_I;
|
|
||||||
|
|
||||||
private:
|
|
||||||
};
|
|
||||||
|
|
||||||
NETLIB_OBJECT_DERIVED(d_to_a_proxy, base_d_to_a_proxy)
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
nld_d_to_a_proxy(netlist_t &anetlist, const pstring &name, logic_output_t *out_proxied)
|
|
||||||
: nld_base_d_to_a_proxy(anetlist, name, out_proxied, m_RV.m_P)
|
|
||||||
, m_GNDHack(*this, "_Q")
|
|
||||||
, m_RV(*this, "RV")
|
|
||||||
, m_last_state(*this, "m_last_var", -1)
|
|
||||||
, m_is_timestep(false)
|
|
||||||
{
|
|
||||||
//register_sub(m_RV);
|
|
||||||
//register_term("1", m_RV.m_P);
|
|
||||||
//register_term("2", m_RV.m_N);
|
|
||||||
|
|
||||||
register_subalias("Q", m_RV.m_P);
|
|
||||||
|
|
||||||
connect_late(m_RV.m_N, m_GNDHack);
|
|
||||||
//printf("%s %s\n", out_proxied->name().cstr(), out_proxied->device().name().cstr());
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual ~nld_d_to_a_proxy() {}
|
|
||||||
|
|
||||||
protected:
|
|
||||||
|
|
||||||
NETLIB_RESETI();
|
|
||||||
NETLIB_UPDATEI();
|
|
||||||
|
|
||||||
private:
|
|
||||||
analog_output_t m_GNDHack; // FIXME: Long term, we need to connect proxy gnd to device gnd
|
|
||||||
NETLIB_SUB(twoterm) m_RV;
|
|
||||||
state_var<int> m_last_state;
|
|
||||||
bool m_is_timestep;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
class factory_lib_entry_t : public base_factory_t
|
|
||||||
{
|
|
||||||
P_PREVENT_COPYING(factory_lib_entry_t)
|
|
||||||
public:
|
|
||||||
|
|
||||||
factory_lib_entry_t(setup_t &setup, const pstring &name, const pstring &classname,
|
|
||||||
const pstring &def_param)
|
|
||||||
: base_factory_t(name, classname, def_param), m_setup(setup) { }
|
|
||||||
|
|
||||||
class wrapper : public device_t
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
wrapper(const pstring &devname, netlist_t &anetlist, const pstring &name)
|
|
||||||
: device_t(anetlist, name), m_devname(devname)
|
|
||||||
{
|
|
||||||
anetlist.setup().namespace_push(name);
|
|
||||||
anetlist.setup().include(m_devname);
|
|
||||||
anetlist.setup().namespace_pop();
|
|
||||||
}
|
|
||||||
protected:
|
|
||||||
NETLIB_RESETI() { }
|
|
||||||
NETLIB_UPDATEI() { }
|
|
||||||
|
|
||||||
pstring m_devname;
|
|
||||||
};
|
|
||||||
|
|
||||||
plib::owned_ptr<device_t> Create(netlist_t &anetlist, const pstring &name) override
|
|
||||||
{
|
|
||||||
return plib::owned_ptr<device_t>::Create<wrapper>(this->name(), anetlist, name);
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
setup_t &m_setup;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
} //namespace devices
|
} //namespace devices
|
||||||
} // namespace netlist
|
} // namespace netlist
|
||||||
|
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
|
|
||||||
#include "nl_base.h"
|
#include "nl_base.h"
|
||||||
#include "devices/nlid_system.h"
|
#include "devices/nlid_system.h"
|
||||||
|
#include "devices/nlid_proxy.h"
|
||||||
|
|
||||||
namespace netlist
|
namespace netlist
|
||||||
{
|
{
|
||||||
|
@ -873,7 +873,7 @@ namespace netlist
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
param_logic_t(device_t &device, const pstring name, const bool val);
|
param_logic_t(device_t &device, const pstring name, const bool val);
|
||||||
const bool operator()() const { return m_param; }
|
bool operator()() const { return m_param; }
|
||||||
void setTo(const bool ¶m) { set(m_param, param); }
|
void setTo(const bool ¶m) { set(m_param, param); }
|
||||||
private:
|
private:
|
||||||
bool m_param;
|
bool m_param;
|
||||||
@ -883,7 +883,7 @@ namespace netlist
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
param_int_t(device_t &device, const pstring name, const int val);
|
param_int_t(device_t &device, const pstring name, const int val);
|
||||||
const int operator()() const { return m_param; }
|
int operator()() const { return m_param; }
|
||||||
void setTo(const int ¶m) { set(m_param, param); }
|
void setTo(const int ¶m) { set(m_param, param); }
|
||||||
private:
|
private:
|
||||||
int m_param;
|
int m_param;
|
||||||
@ -893,7 +893,7 @@ namespace netlist
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
param_double_t(device_t &device, const pstring name, const double val);
|
param_double_t(device_t &device, const pstring name, const double val);
|
||||||
const double operator()() const { return m_param; }
|
double operator()() const { return m_param; }
|
||||||
void setTo(const double ¶m) { set(m_param, param); }
|
void setTo(const double ¶m) { set(m_param, param); }
|
||||||
private:
|
private:
|
||||||
double m_param;
|
double m_param;
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
#include "devices/net_lib.h"
|
#include "devices/net_lib.h"
|
||||||
#include "devices/nld_truthtable.h"
|
#include "devices/nld_truthtable.h"
|
||||||
#include "devices/nlid_system.h"
|
#include "devices/nlid_system.h"
|
||||||
|
#include "devices/nlid_proxy.h"
|
||||||
#include "analog/nld_twoterm.h"
|
#include "analog/nld_twoterm.h"
|
||||||
#include "solver/nld_solver.h"
|
#include "solver/nld_solver.h"
|
||||||
|
|
||||||
|
@ -281,10 +281,12 @@ namespace netlist
|
|||||||
std::unordered_map<pstring, pstring> m_param_values;
|
std::unordered_map<pstring, pstring> m_param_values;
|
||||||
std::unordered_map<pstring, detail::core_terminal_t *> m_terminals;
|
std::unordered_map<pstring, detail::core_terminal_t *> m_terminals;
|
||||||
|
|
||||||
|
/* needed by proxy */
|
||||||
|
detail::core_terminal_t *find_terminal(const pstring &outname_in, detail::device_object_t::type_t atype, bool required = true);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
detail::core_terminal_t *find_terminal(const pstring &outname_in, bool required = true);
|
detail::core_terminal_t *find_terminal(const pstring &outname_in, bool required = true);
|
||||||
detail::core_terminal_t *find_terminal(const pstring &outname_in, detail::device_object_t::type_t atype, bool required = true);
|
|
||||||
|
|
||||||
void merge_nets(detail::net_t &thisnet, detail::net_t &othernet);
|
void merge_nets(detail::net_t &thisnet, detail::net_t &othernet);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user