mirror of
https://github.com/holub/mame
synced 2025-06-23 04:48:37 +03:00
netlist: code maintenance.
* more handler alignment * dead code removal * remove update calls which do nothing
This commit is contained in:
parent
0dfa500a4a
commit
8cd6774cac
@ -176,9 +176,9 @@ namespace analog
|
|||||||
{
|
{
|
||||||
NETLIB_CONSTRUCTOR(QBJT_switch)
|
NETLIB_CONSTRUCTOR(QBJT_switch)
|
||||||
, m_modacc(m_model)
|
, m_modacc(m_model)
|
||||||
, m_RB(*this, "m_RB", true)
|
, m_RB(*this, "m_RB", NETLIB_DELEGATE(termhandler))
|
||||||
, m_RC(*this, "m_RC", true)
|
, m_RC(*this, "m_RC", NETLIB_DELEGATE(termhandler))
|
||||||
, m_BC(*this, "m_BC", true)
|
, m_BC(*this, "m_BC", NETLIB_DELEGATE(termhandler))
|
||||||
, m_gB(nlconst::cgmin())
|
, m_gB(nlconst::cgmin())
|
||||||
, m_gC(nlconst::cgmin())
|
, m_gC(nlconst::cgmin())
|
||||||
, m_V(nlconst::zero())
|
, m_V(nlconst::zero())
|
||||||
@ -194,7 +194,19 @@ namespace analog
|
|||||||
}
|
}
|
||||||
|
|
||||||
NETLIB_RESETI();
|
NETLIB_RESETI();
|
||||||
NETLIB_UPDATEI();
|
NETLIB_UPDATEI()
|
||||||
|
{
|
||||||
|
termhandler();
|
||||||
|
}
|
||||||
|
NETLIB_HANDLERI(termhandler)
|
||||||
|
{
|
||||||
|
auto *solv(m_RB.solver());
|
||||||
|
if (solv != nullptr)
|
||||||
|
solv->solve_now();
|
||||||
|
else
|
||||||
|
m_RC.solver()->solve_now();
|
||||||
|
}
|
||||||
|
|
||||||
NETLIB_UPDATE_PARAMI();
|
NETLIB_UPDATE_PARAMI();
|
||||||
NETLIB_UPDATE_TERMINALSI();
|
NETLIB_UPDATE_TERMINALSI();
|
||||||
|
|
||||||
@ -223,9 +235,9 @@ namespace analog
|
|||||||
, m_modacc(m_model)
|
, m_modacc(m_model)
|
||||||
, m_gD_BC(*this, "m_D_BC")
|
, m_gD_BC(*this, "m_D_BC")
|
||||||
, m_gD_BE(*this, "m_D_BE")
|
, m_gD_BE(*this, "m_D_BE")
|
||||||
, m_D_CB(*this, "m_D_CB", true)
|
, m_D_CB(*this, "m_D_CB", NETLIB_DELEGATE(termhandler))
|
||||||
, m_D_EB(*this, "m_D_EB", true)
|
, m_D_EB(*this, "m_D_EB", NETLIB_DELEGATE(termhandler))
|
||||||
, m_D_EC(*this, "m_D_EC", true)
|
, m_D_EC(*this, "m_D_EC", NETLIB_DELEGATE(termhandler))
|
||||||
, m_alpha_f(0)
|
, m_alpha_f(0)
|
||||||
, m_alpha_r(0)
|
, m_alpha_r(0)
|
||||||
{
|
{
|
||||||
@ -256,7 +268,20 @@ namespace analog
|
|||||||
protected:
|
protected:
|
||||||
|
|
||||||
NETLIB_RESETI();
|
NETLIB_RESETI();
|
||||||
NETLIB_UPDATEI();
|
NETLIB_UPDATEI()
|
||||||
|
{
|
||||||
|
termhandler();
|
||||||
|
}
|
||||||
|
|
||||||
|
NETLIB_HANDLERI(termhandler)
|
||||||
|
{
|
||||||
|
auto *solv(m_D_EB.solver());
|
||||||
|
if (solv != nullptr)
|
||||||
|
solv->solve_now();
|
||||||
|
else
|
||||||
|
m_D_CB.solver()->solve_now();
|
||||||
|
}
|
||||||
|
|
||||||
NETLIB_UPDATE_PARAMI();
|
NETLIB_UPDATE_PARAMI();
|
||||||
NETLIB_UPDATE_TERMINALSI();
|
NETLIB_UPDATE_TERMINALSI();
|
||||||
|
|
||||||
@ -307,16 +332,6 @@ namespace analog
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
NETLIB_UPDATE(QBJT_switch)
|
|
||||||
{
|
|
||||||
auto *solv(m_RB.solver());
|
|
||||||
if (solv != nullptr)
|
|
||||||
solv->solve_now();
|
|
||||||
else
|
|
||||||
m_RC.solver()->solve_now();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
NETLIB_UPDATE_PARAM(QBJT_switch)
|
NETLIB_UPDATE_PARAM(QBJT_switch)
|
||||||
{
|
{
|
||||||
nl_fptype IS = m_modacc.m_IS;
|
nl_fptype IS = m_modacc.m_IS;
|
||||||
@ -371,15 +386,6 @@ namespace analog
|
|||||||
// nld_Q - Ebers Moll
|
// nld_Q - Ebers Moll
|
||||||
// ----------------------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------------------
|
||||||
|
|
||||||
NETLIB_UPDATE(QBJT_EB)
|
|
||||||
{
|
|
||||||
auto *solv(m_D_EB.solver());
|
|
||||||
if (solv != nullptr)
|
|
||||||
solv->solve_now();
|
|
||||||
else
|
|
||||||
m_D_CB.solver()->solve_now();
|
|
||||||
}
|
|
||||||
|
|
||||||
NETLIB_RESET(QBJT_EB)
|
NETLIB_RESET(QBJT_EB)
|
||||||
{
|
{
|
||||||
if (m_D_EB.solver() == nullptr && m_D_CB.solver() == nullptr)
|
if (m_D_EB.solver() == nullptr && m_D_CB.solver() == nullptr)
|
||||||
|
@ -182,9 +182,9 @@ namespace analog
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
NETLIB_CONSTRUCTOR(MOSFET)
|
NETLIB_CONSTRUCTOR(MOSFET)
|
||||||
, m_DG(*this, "m_DG", true)
|
, m_DG(*this, "m_DG", NETLIB_DELEGATE(termhandler))
|
||||||
, m_SG(*this, "m_SG", true)
|
, m_SG(*this, "m_SG", NETLIB_DELEGATE(termhandler))
|
||||||
, m_SD(*this, "m_SD", true)
|
, m_SD(*this, "m_SD", NETLIB_DELEGATE(termhandler))
|
||||||
, m_D_BD(*this, "m_D_BD")
|
, m_D_BD(*this, "m_D_BD")
|
||||||
#if (!BODY_CONNECTED_TO_SOURCE)
|
#if (!BODY_CONNECTED_TO_SOURCE)
|
||||||
, m_D_BS(*this, "m_D_BS")
|
, m_D_BS(*this, "m_D_BS")
|
||||||
@ -332,7 +332,20 @@ namespace analog
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
NETLIB_UPDATEI();
|
NETLIB_UPDATEI()
|
||||||
|
{
|
||||||
|
termhandler();
|
||||||
|
}
|
||||||
|
NETLIB_HANDLERI(termhandler)
|
||||||
|
{
|
||||||
|
// FIXME: This should never be called
|
||||||
|
if (!m_SG.P().net().is_rail_net())
|
||||||
|
m_SG.P().solve_now(); // Basis
|
||||||
|
else if (!m_SG.N().net().is_rail_net())
|
||||||
|
m_SG.N().solve_now(); // Emitter
|
||||||
|
else
|
||||||
|
m_DG.N().solve_now(); // Collector
|
||||||
|
}
|
||||||
NETLIB_UPDATE_PARAMI();
|
NETLIB_UPDATE_PARAMI();
|
||||||
NETLIB_UPDATE_TERMINALSI();
|
NETLIB_UPDATE_TERMINALSI();
|
||||||
|
|
||||||
@ -438,17 +451,6 @@ namespace analog
|
|||||||
// MOSFET
|
// MOSFET
|
||||||
// ----------------------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------------------
|
||||||
|
|
||||||
NETLIB_UPDATE(MOSFET)
|
|
||||||
{
|
|
||||||
// FIXME: This should never be called
|
|
||||||
if (!m_SG.P().net().is_rail_net())
|
|
||||||
m_SG.P().solve_now(); // Basis
|
|
||||||
else if (!m_SG.N().net().is_rail_net())
|
|
||||||
m_SG.N().solve_now(); // Emitter
|
|
||||||
else
|
|
||||||
m_DG.N().solve_now(); // Collector
|
|
||||||
}
|
|
||||||
|
|
||||||
NETLIB_UPDATE_TERMINALS(MOSFET)
|
NETLIB_UPDATE_TERMINALS(MOSFET)
|
||||||
{
|
{
|
||||||
nl_fptype Vgd = -m_DG.deltaV() * m_polarity; // Gate - Drain
|
nl_fptype Vgd = -m_DG.deltaV() * m_polarity; // Gate - Drain
|
||||||
|
@ -31,6 +31,11 @@ NETLIB_RESET(VCCS)
|
|||||||
}
|
}
|
||||||
|
|
||||||
NETLIB_UPDATE(VCCS)
|
NETLIB_UPDATE(VCCS)
|
||||||
|
{
|
||||||
|
termhandler();
|
||||||
|
}
|
||||||
|
|
||||||
|
NETLIB_HANDLER(VCCS, termhandler)
|
||||||
{
|
{
|
||||||
// only called if connected to a rail net ==> notify the solver to recalculate
|
// only called if connected to a rail net ==> notify the solver to recalculate
|
||||||
if (!m_IP.net().is_rail_net())
|
if (!m_IP.net().is_rail_net())
|
||||||
|
@ -39,12 +39,12 @@ namespace analog {
|
|||||||
NETLIB_CONSTRUCTOR_EX(VCCS, nl_fptype ri = nlconst::magic(1e9))
|
NETLIB_CONSTRUCTOR_EX(VCCS, nl_fptype ri = nlconst::magic(1e9))
|
||||||
, m_G(*this, "G", nlconst::one())
|
, m_G(*this, "G", nlconst::one())
|
||||||
, m_RI(*this, "RI", ri)
|
, m_RI(*this, "RI", ri)
|
||||||
, m_OP(*this, "OP", &m_IP)
|
, m_OP(*this, "OP", &m_IP, NETLIB_DELEGATE(termhandler))
|
||||||
, m_ON(*this, "ON", &m_IP)
|
, m_ON(*this, "ON", &m_IP, NETLIB_DELEGATE(termhandler))
|
||||||
, m_IP(*this, "IP", &m_IN) // <= this should be NULL and terminal be filtered out prior to solving...
|
, m_IP(*this, "IP", &m_IN, NETLIB_DELEGATE(termhandler)) // <= this should be NULL and terminal be filtered out prior to solving...
|
||||||
, m_IN(*this, "IN", &m_IP) // <= this should be NULL and terminal be filtered out prior to solving...
|
, m_IN(*this, "IN", &m_IP, NETLIB_DELEGATE(termhandler)) // <= this should be NULL and terminal be filtered out prior to solving...
|
||||||
, m_OP1(*this, "_OP1", &m_IN)
|
, m_OP1(*this, "_OP1", &m_IN, NETLIB_DELEGATE(termhandler))
|
||||||
, m_ON1(*this, "_ON1", &m_IN)
|
, m_ON1(*this, "_ON1", &m_IN, NETLIB_DELEGATE(termhandler))
|
||||||
, m_gfac(nlconst::one())
|
, m_gfac(nlconst::one())
|
||||||
{
|
{
|
||||||
connect(m_OP, m_OP1);
|
connect(m_OP, m_OP1);
|
||||||
@ -58,6 +58,7 @@ namespace analog {
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
NETLIB_UPDATEI();
|
NETLIB_UPDATEI();
|
||||||
|
NETLIB_HANDLERI(termhandler);
|
||||||
NETLIB_UPDATE_PARAMI()
|
NETLIB_UPDATE_PARAMI()
|
||||||
{
|
{
|
||||||
NETLIB_NAME(VCCS)::reset();
|
NETLIB_NAME(VCCS)::reset();
|
||||||
@ -181,8 +182,8 @@ namespace analog {
|
|||||||
public:
|
public:
|
||||||
NETLIB_CONSTRUCTOR(VCVS)
|
NETLIB_CONSTRUCTOR(VCVS)
|
||||||
, m_RO(*this, "RO", nlconst::one())
|
, m_RO(*this, "RO", nlconst::one())
|
||||||
, m_OP2(*this, "_OP2", &m_ON2)
|
, m_OP2(*this, "_OP2", &m_ON2, NETLIB_DELEGATE(termhandler))
|
||||||
, m_ON2(*this, "_ON2", &m_OP2)
|
, m_ON2(*this, "_ON2", &m_OP2, NETLIB_DELEGATE(termhandler))
|
||||||
{
|
{
|
||||||
connect(m_OP2, m_OP1);
|
connect(m_OP2, m_OP1);
|
||||||
connect(m_ON2, m_ON1);
|
connect(m_ON2, m_ON1);
|
||||||
@ -193,8 +194,15 @@ namespace analog {
|
|||||||
param_fp_t m_RO;
|
param_fp_t m_RO;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
//NETLIB_UPDATEI();
|
NETLIB_UPDATEI()
|
||||||
|
{
|
||||||
|
termhandler();
|
||||||
|
}
|
||||||
//NETLIB_UPDATE_PARAMI();
|
//NETLIB_UPDATE_PARAMI();
|
||||||
|
NETLIB_HANDLERI(termhandler)
|
||||||
|
{
|
||||||
|
NETLIB_NAME(VCCS) :: termhandler();
|
||||||
|
}
|
||||||
|
|
||||||
terminal_t m_OP2;
|
terminal_t m_OP2;
|
||||||
terminal_t m_ON2;
|
terminal_t m_ON2;
|
||||||
@ -233,8 +241,8 @@ namespace analog {
|
|||||||
public:
|
public:
|
||||||
NETLIB_CONSTRUCTOR_PASS(CCVS, nlconst::one())
|
NETLIB_CONSTRUCTOR_PASS(CCVS, nlconst::one())
|
||||||
, m_RO(*this, "RO", nlconst::one())
|
, m_RO(*this, "RO", nlconst::one())
|
||||||
, m_OP2(*this, "_OP2", &m_ON2)
|
, m_OP2(*this, "_OP2", &m_ON2, NETLIB_DELEGATE(termhandler))
|
||||||
, m_ON2(*this, "_ON2", &m_OP2)
|
, m_ON2(*this, "_ON2", &m_OP2, NETLIB_DELEGATE(termhandler))
|
||||||
{
|
{
|
||||||
connect(m_OP2, m_OP1);
|
connect(m_OP2, m_OP1);
|
||||||
connect(m_ON2, m_ON1);
|
connect(m_ON2, m_ON1);
|
||||||
@ -245,9 +253,17 @@ namespace analog {
|
|||||||
param_fp_t m_RO;
|
param_fp_t m_RO;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
//NETLIB_UPDATEI();
|
NETLIB_UPDATEI()
|
||||||
|
{
|
||||||
|
termhandler();
|
||||||
|
}
|
||||||
//NETLIB_UPDATE_PARAMI();
|
//NETLIB_UPDATE_PARAMI();
|
||||||
|
|
||||||
|
NETLIB_HANDLERI(termhandler)
|
||||||
|
{
|
||||||
|
NETLIB_NAME(VCCS) :: termhandler();
|
||||||
|
}
|
||||||
|
|
||||||
terminal_t m_OP2;
|
terminal_t m_OP2;
|
||||||
terminal_t m_ON2;
|
terminal_t m_ON2;
|
||||||
};
|
};
|
||||||
|
@ -32,22 +32,16 @@ namespace analog
|
|||||||
}
|
}
|
||||||
|
|
||||||
NETLIB_UPDATE(twoterm)
|
NETLIB_UPDATE(twoterm)
|
||||||
|
{
|
||||||
|
termhandler();
|
||||||
|
}
|
||||||
|
|
||||||
|
NETLIB_HANDLER(twoterm, termhandler)
|
||||||
{
|
{
|
||||||
// only called if connected to a rail net ==> notify the solver to recalculate
|
// only called if connected to a rail net ==> notify the solver to recalculate
|
||||||
|
//printf("%s update\n", this->name().c_str());
|
||||||
solve_now();
|
solve_now();
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------------------
|
|
||||||
// nld_R_base
|
|
||||||
// ----------------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
NETLIB_RESET(R_base)
|
|
||||||
{
|
|
||||||
// FIXME: this reset is causing issues. Remove.
|
|
||||||
NETLIB_NAME(twoterm)::reset();
|
|
||||||
set_R(plib::reciprocal(exec().gmin()));
|
|
||||||
}
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------------------
|
||||||
// nld_POT
|
// nld_POT
|
||||||
// ----------------------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------------------
|
||||||
|
@ -70,10 +70,17 @@ namespace analog
|
|||||||
|
|
||||||
NETLIB_BASE_OBJECT(twoterm)
|
NETLIB_BASE_OBJECT(twoterm)
|
||||||
{
|
{
|
||||||
// FIXME locate use case of owned = true and eliminate them if possible
|
NETLIB_CONSTRUCTOR(twoterm)
|
||||||
NETLIB_CONSTRUCTOR_EX(twoterm, bool terminals_owned = false)
|
, m_P(*this, "1", &m_N, NETLIB_DELEGATE(termhandler))
|
||||||
, m_P(bselect(terminals_owned, owner, *this), (terminals_owned ? name + "." : "") + "1", &m_N)
|
, m_N(*this, "2", &m_P, NETLIB_DELEGATE(termhandler))
|
||||||
, m_N(bselect(terminals_owned, owner, *this), (terminals_owned ? name + "." : "") + "2", &m_P)
|
{
|
||||||
|
}
|
||||||
|
//NETLIB_CONSTRUCTOR_EX(twoterm, nldelegate owner_delegate)
|
||||||
|
template <class C>
|
||||||
|
NETLIB_NAME(twoterm)(C &owner, const pstring &name, nldelegate owner_delegate) \
|
||||||
|
: base_type(owner, name)
|
||||||
|
, m_P(owner, name + ".1", &m_N, owner_delegate)
|
||||||
|
, m_N(owner, name + ".2", &m_P, owner_delegate)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -83,6 +90,7 @@ namespace analog
|
|||||||
public:
|
public:
|
||||||
|
|
||||||
NETLIB_UPDATEI();
|
NETLIB_UPDATEI();
|
||||||
|
NETLIB_HANDLERI(termhandler);
|
||||||
|
|
||||||
solver::matrix_solver_t *solver() const noexcept;
|
solver::matrix_solver_t *solver() const noexcept;
|
||||||
|
|
||||||
@ -196,7 +204,7 @@ namespace analog
|
|||||||
-G, G, nlconst::zero());
|
-G, G, nlconst::zero());
|
||||||
}
|
}
|
||||||
|
|
||||||
NETLIB_RESETI();
|
//NETLIB_RESETI();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
//NETLIB_UPDATEI();
|
//NETLIB_UPDATEI();
|
||||||
|
@ -33,7 +33,7 @@ namespace devices
|
|||||||
, m_max_link_loops(*this, "MAX_LINK_RESOLVE_LOOPS", 100)
|
, m_max_link_loops(*this, "MAX_LINK_RESOLVE_LOOPS", 100)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
NETLIB_UPDATEI() { }
|
//NETLIB_UPDATEI() { }
|
||||||
//NETLIB_RESETI() { }
|
//NETLIB_RESETI() { }
|
||||||
//NETLIB_UPDATE_PARAMI() { }
|
//NETLIB_UPDATE_PARAMI() { }
|
||||||
public:
|
public:
|
||||||
@ -261,7 +261,7 @@ namespace devices
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
NETLIB_UPDATEI() { }
|
//NETLIB_UPDATEI() { }
|
||||||
NETLIB_RESETI() { m_Q.initial(0); }
|
NETLIB_RESETI() { m_Q.initial(0); }
|
||||||
NETLIB_UPDATE_PARAMI()
|
NETLIB_UPDATE_PARAMI()
|
||||||
{
|
{
|
||||||
@ -286,7 +286,7 @@ namespace devices
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
NETLIB_UPDATEI() { }
|
//NETLIB_UPDATEI() { }
|
||||||
NETLIB_RESETI() { for (auto &q : m_Q) q.initial(0); }
|
NETLIB_RESETI() { for (auto &q : m_Q) q.initial(0); }
|
||||||
NETLIB_UPDATE_PARAMI()
|
NETLIB_UPDATE_PARAMI()
|
||||||
{
|
{
|
||||||
@ -310,7 +310,7 @@ namespace devices
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
NETLIB_UPDATEI() { }
|
//NETLIB_UPDATEI() { }
|
||||||
NETLIB_RESETI() { m_Q.initial(nlconst::zero()); }
|
NETLIB_RESETI() { m_Q.initial(nlconst::zero()); }
|
||||||
NETLIB_UPDATE_PARAMI() { m_Q.push(m_IN()); }
|
NETLIB_UPDATE_PARAMI() { m_Q.push(m_IN()); }
|
||||||
|
|
||||||
@ -329,11 +329,14 @@ namespace devices
|
|||||||
, m_Q(*this, "Q")
|
, m_Q(*this, "Q")
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
NETLIB_UPDATEI()
|
|
||||||
|
//NETLIB_UPDATEI() { }
|
||||||
|
NETLIB_UPDATE_PARAMI()
|
||||||
{
|
{
|
||||||
m_Q.push(nlconst::zero());
|
m_Q.push(nlconst::zero());
|
||||||
}
|
}
|
||||||
NETLIB_RESETI() { }
|
|
||||||
|
//NETLIB_RESETI() { }
|
||||||
protected:
|
protected:
|
||||||
analog_output_t m_Q;
|
analog_output_t m_Q;
|
||||||
};
|
};
|
||||||
@ -351,8 +354,8 @@ namespace devices
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
NETLIB_RESETI() { }
|
//NETLIB_RESETI() { }
|
||||||
NETLIB_UPDATEI() { }
|
//NETLIB_UPDATEI() { }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
NETLIB_HANDLERI(noop)
|
NETLIB_HANDLERI(noop)
|
||||||
@ -371,8 +374,8 @@ namespace devices
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
NETLIB_CONSTRUCTOR(frontier)
|
NETLIB_CONSTRUCTOR(frontier)
|
||||||
, m_RIN(*this, "m_RIN", true)
|
, m_RIN(*this, "m_RIN", NETLIB_DELEGATE(input))
|
||||||
, m_ROUT(*this, "m_ROUT", true)
|
, m_ROUT(*this, "m_ROUT", NETLIB_DELEGATE(input))
|
||||||
, m_I(*this, "_I", NETLIB_DELEGATE(input))
|
, m_I(*this, "_I", NETLIB_DELEGATE(input))
|
||||||
, m_Q(*this, "_Q")
|
, m_Q(*this, "_Q")
|
||||||
, m_p_RIN(*this, "RIN", nlconst::magic(1.0e6))
|
, m_p_RIN(*this, "RIN", nlconst::magic(1.0e6))
|
||||||
|
@ -507,12 +507,6 @@ namespace netlist
|
|||||||
m_stats = owner.state().make_pool_object<stats_t>();
|
m_stats = owner.state().make_pool_object<stats_t>();
|
||||||
}
|
}
|
||||||
|
|
||||||
void core_device_t::set_default_delegate(detail::core_terminal_t &term)
|
|
||||||
{
|
|
||||||
if (!term.delegate().is_set())
|
|
||||||
term.set_delegate(nldelegate(&core_device_t::update, this));
|
|
||||||
}
|
|
||||||
|
|
||||||
log_type & core_device_t::log()
|
log_type & core_device_t::log()
|
||||||
{
|
{
|
||||||
return state().log();
|
return state().log();
|
||||||
@ -716,8 +710,8 @@ namespace netlist
|
|||||||
// terminal_t
|
// terminal_t
|
||||||
// ----------------------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------------------
|
||||||
|
|
||||||
terminal_t::terminal_t(core_device_t &dev, const pstring &aname, terminal_t *otherterm)
|
terminal_t::terminal_t(core_device_t &dev, const pstring &aname, terminal_t *otherterm, nldelegate delegate)
|
||||||
: analog_t(dev, aname, STATE_BIDIR, nldelegate())
|
: analog_t(dev, aname, STATE_BIDIR, delegate)
|
||||||
, m_Idr(nullptr)
|
, m_Idr(nullptr)
|
||||||
, m_go(nullptr)
|
, m_go(nullptr)
|
||||||
, m_gt(nullptr)
|
, m_gt(nullptr)
|
||||||
@ -771,8 +765,10 @@ namespace netlist
|
|||||||
|
|
||||||
logic_input_t::logic_input_t(device_t &dev, const pstring &aname,
|
logic_input_t::logic_input_t(device_t &dev, const pstring &aname,
|
||||||
nldelegate delegate)
|
nldelegate delegate)
|
||||||
: logic_t(dev, aname, STATE_INP_ACTIVE, delegate.is_set() ? delegate : dev.default_delegate())
|
: logic_t(dev, aname, STATE_INP_ACTIVE, delegate)
|
||||||
{
|
{
|
||||||
|
if (!delegate.is_set())
|
||||||
|
throw nl_exception("delegate not set for {1}", this->name());
|
||||||
state().setup().register_term(*this);
|
state().setup().register_term(*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -836,7 +836,7 @@ namespace netlist
|
|||||||
/// @param dev core_devict_t object owning the terminal
|
/// @param dev core_devict_t object owning the terminal
|
||||||
/// @param aname name of this terminal
|
/// @param aname name of this terminal
|
||||||
/// @param otherterm pointer to the sibling terminal
|
/// @param otherterm pointer to the sibling terminal
|
||||||
terminal_t(core_device_t &dev, const pstring &aname, terminal_t *otherterm);
|
terminal_t(core_device_t &dev, const pstring &aname, terminal_t *otherterm, nldelegate delegate);
|
||||||
|
|
||||||
/// \brief Returns voltage of connected net
|
/// \brief Returns voltage of connected net
|
||||||
///
|
///
|
||||||
@ -906,10 +906,6 @@ namespace netlist
|
|||||||
logic_input_t(device_t &dev, const pstring &aname,
|
logic_input_t(device_t &dev, const pstring &aname,
|
||||||
nldelegate delegate);
|
nldelegate delegate);
|
||||||
|
|
||||||
#if 0
|
|
||||||
template <class D>
|
|
||||||
logic_input_t(D &dev, const pstring &aname);
|
|
||||||
#endif
|
|
||||||
inline netlist_sig_t operator()() const noexcept;
|
inline netlist_sig_t operator()() const noexcept;
|
||||||
|
|
||||||
void inactivate() noexcept;
|
void inactivate() noexcept;
|
||||||
@ -1386,8 +1382,6 @@ namespace netlist
|
|||||||
// Has to be set in device reset
|
// Has to be set in device reset
|
||||||
void set_active_outputs(int n) noexcept { m_active_outputs = n; }
|
void set_active_outputs(int n) noexcept { m_active_outputs = n; }
|
||||||
|
|
||||||
void set_default_delegate(detail::core_terminal_t &term);
|
|
||||||
|
|
||||||
// stats
|
// stats
|
||||||
struct stats_t
|
struct stats_t
|
||||||
{
|
{
|
||||||
@ -1477,8 +1471,6 @@ namespace netlist
|
|||||||
|
|
||||||
~device_t() noexcept override = default;
|
~device_t() noexcept override = default;
|
||||||
|
|
||||||
//nldelegate default_delegate() { return nldelegate(&device_t::update, this); }
|
|
||||||
nldelegate default_delegate() { return { &core_device_t::update, dynamic_cast<core_device_t *>(this) }; }
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
//NETLIB_UPDATEI() { }
|
//NETLIB_UPDATEI() { }
|
||||||
@ -2146,14 +2138,6 @@ namespace netlist
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
explicit nld_power_pins(device_t &owner, const pstring &sVCC,
|
|
||||||
const pstring &sGND)
|
|
||||||
: m_VCC(owner, sVCC, NETLIB_DELEGATE(noop))
|
|
||||||
, m_GND(owner, sGND, NETLIB_DELEGATE(noop))
|
|
||||||
{
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
const analog_input_t &VCC() const noexcept
|
const analog_input_t &VCC() const noexcept
|
||||||
{
|
{
|
||||||
return m_VCC;
|
return m_VCC;
|
||||||
|
@ -15,8 +15,6 @@ namespace netlist
|
|||||||
|
|
||||||
static constexpr const char sHINT_NO_DEACTIVATE[] = ".HINT_NO_DEACTIVATE"; // NOLINT(cppcoreguidelines-avoid-c-arrays, modernize-avoid-c-arrays)
|
static constexpr const char sHINT_NO_DEACTIVATE[] = ".HINT_NO_DEACTIVATE"; // NOLINT(cppcoreguidelines-avoid-c-arrays, modernize-avoid-c-arrays)
|
||||||
static constexpr const char sHINT_NC[] = ".HINT_NC"; // NOLINT(cppcoreguidelines-avoid-c-arrays, modernize-avoid-c-arrays)
|
static constexpr const char sHINT_NC[] = ".HINT_NC"; // NOLINT(cppcoreguidelines-avoid-c-arrays, modernize-avoid-c-arrays)
|
||||||
static constexpr const char sPowerGND[] = "GND"; // NOLINT(cppcoreguidelines-avoid-c-arrays, modernize-avoid-c-arrays)
|
|
||||||
static constexpr const char sPowerVCC[] = "VCC"; // NOLINT(cppcoreguidelines-avoid-c-arrays, modernize-avoid-c-arrays)
|
|
||||||
|
|
||||||
// nl_base.cpp
|
// nl_base.cpp
|
||||||
|
|
||||||
@ -27,7 +25,6 @@ namespace netlist
|
|||||||
PERRMSGV(MF_REMOVE_TERMINAL_1_FROM_NET_2, 2, "Can not remove terminal {1} from net {2}.")
|
PERRMSGV(MF_REMOVE_TERMINAL_1_FROM_NET_2, 2, "Can not remove terminal {1} from net {2}.")
|
||||||
PERRMSGV(MF_UNKNOWN_PARAM_TYPE, 1, "Can not determine param_type for {1}")
|
PERRMSGV(MF_UNKNOWN_PARAM_TYPE, 1, "Can not determine param_type for {1}")
|
||||||
PERRMSGV(MF_ERROR_CONNECTING_1_TO_2, 2, "Error connecting {1} to {2}")
|
PERRMSGV(MF_ERROR_CONNECTING_1_TO_2, 2, "Error connecting {1} to {2}")
|
||||||
PERRMSGV(MF_NO_SOLVER, 0, "No solver found for this netlist although analog elements are present")
|
|
||||||
PERRMSGV(ME_HND_VAL_NOT_SUPPORTED, 1, "HINT_NO_DEACTIVATE value not supported: <{1}>")
|
PERRMSGV(ME_HND_VAL_NOT_SUPPORTED, 1, "HINT_NO_DEACTIVATE value not supported: <{1}>")
|
||||||
PERRMSGV(MW_ROM_NOT_FOUND, 1, "Rom {1} not found")
|
PERRMSGV(MW_ROM_NOT_FOUND, 1, "Rom {1} not found")
|
||||||
|
|
||||||
@ -122,6 +119,9 @@ namespace netlist
|
|||||||
PERRMSGV(ME_UNKNOWN_PARAMETER, 1, "Unknown parameter {1}")
|
PERRMSGV(ME_UNKNOWN_PARAMETER, 1, "Unknown parameter {1}")
|
||||||
PERRMSGV(MF_ERRORS_FOUND, 1, "Counted {1} errors which need to be fixed")
|
PERRMSGV(MF_ERRORS_FOUND, 1, "Counted {1} errors which need to be fixed")
|
||||||
|
|
||||||
|
PERRMSGV(MF_NO_SOLVER, 0, "No solver found for this netlist although analog elements are present")
|
||||||
|
PERRMSGV(MF_DELEGATE_NOT_SET_1, 1, "delegate not set for terminal {1}")
|
||||||
|
|
||||||
// nlid_proxy.cpp
|
// nlid_proxy.cpp
|
||||||
|
|
||||||
PERRMSGV(MF_NO_POWER_TERMINALS_ON_DEVICE_2, 2, "D/A Proxy {1}: Found no valid combination of power terminals on device {2}")
|
PERRMSGV(MF_NO_POWER_TERMINALS_ON_DEVICE_2, 2, "D/A Proxy {1}: Found no valid combination of power terminals on device {2}")
|
||||||
|
@ -1629,11 +1629,11 @@ void setup_t::prepare_to_run()
|
|||||||
|
|
||||||
for (auto &n : m_nlstate.nets())
|
for (auto &n : m_nlstate.nets())
|
||||||
for (auto & term : n->core_terms())
|
for (auto & term : n->core_terms())
|
||||||
{
|
if (!term->delegate().is_set())
|
||||||
core_device_t *dev = &term->device();
|
{
|
||||||
dev->set_default_delegate(*term);
|
log().fatal(MF_DELEGATE_NOT_SET_1(term->name()));
|
||||||
}
|
throw nl_exception(MF_DELEGATE_NOT_SET_1(term->name()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------------------
|
||||||
|
Loading…
Reference in New Issue
Block a user