mirror of
https://github.com/holub/mame
synced 2025-04-25 09:50:04 +03:00
netlist: remove trampoline code. (nw)
This commit is contained in:
parent
b4ba8dc552
commit
b952577370
@ -201,7 +201,7 @@ namespace netlist
|
||||
|
||||
NETLIB_RESET(opamp)
|
||||
{
|
||||
m_G1.do_reset();
|
||||
m_G1.reset();
|
||||
m_G1.m_RI.setTo(m_model.m_RI);
|
||||
|
||||
if (m_type == 1)
|
||||
@ -213,11 +213,11 @@ namespace netlist
|
||||
}
|
||||
else if (m_type == 3)
|
||||
{
|
||||
m_EBUF->do_reset();
|
||||
m_DP->do_reset();
|
||||
m_DN->do_reset();
|
||||
m_CP->do_reset();
|
||||
m_RP.do_reset();
|
||||
m_EBUF->reset();
|
||||
m_DP->reset();
|
||||
m_DN->reset();
|
||||
m_CP->reset();
|
||||
m_RP.reset();
|
||||
|
||||
m_EBUF->m_G.setTo(1.0);
|
||||
m_EBUF->m_RO.setTo(m_model.m_RO);
|
||||
|
@ -78,9 +78,11 @@ NETLIB_OBJECT(twoterm)
|
||||
|
||||
//NETLIB_UPDATE_TERMINALSI() { }
|
||||
//NETLIB_RESETI() { }
|
||||
NETLIB_UPDATEI();
|
||||
|
||||
public:
|
||||
|
||||
NETLIB_UPDATEI();
|
||||
|
||||
void solve_now();
|
||||
|
||||
void set(const nl_double G, const nl_double V, const nl_double I)
|
||||
|
@ -67,14 +67,14 @@ namespace netlist
|
||||
// We only need to update the net first if this is a time stepping net
|
||||
if ((1)) // m_R.m_P.net().as_analog().solver().is_timestep())
|
||||
{
|
||||
m_R.update_dev();
|
||||
m_R.update();
|
||||
m_R.set_R(R);
|
||||
m_R.m_P.schedule_solve_after(NLTIME_FROM_NS(1));
|
||||
}
|
||||
else
|
||||
{
|
||||
m_R.set_R(R);
|
||||
m_R.update_dev();
|
||||
m_R.update();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -43,7 +43,7 @@ namespace netlist { namespace devices {
|
||||
|
||||
NETLIB_UPDATE(CD4316_GATE)
|
||||
{
|
||||
m_R.update_dev();
|
||||
m_R.update();
|
||||
if (m_S() && !m_E())
|
||||
m_R.set_R(m_base_r());
|
||||
else
|
||||
|
@ -257,8 +257,8 @@ namespace netlist
|
||||
{
|
||||
m_KP = 1.0 / (1.0 + exp(m_K()));
|
||||
|
||||
m_RP.do_reset();
|
||||
m_RN.do_reset();
|
||||
m_RP.reset();
|
||||
m_RN.reset();
|
||||
|
||||
//m_RP.set_R(R_OFF);
|
||||
//m_RN.set_R(R_OFF);
|
||||
@ -276,8 +276,8 @@ namespace netlist
|
||||
|
||||
NETLIB_RESET(74123_dip)
|
||||
{
|
||||
//m_1.do_reset();
|
||||
//m_2.do_reset();
|
||||
//m_1.reset();
|
||||
//m_2.reset();
|
||||
}
|
||||
|
||||
NETLIB_UPDATE(9602_dip)
|
||||
@ -289,8 +289,8 @@ namespace netlist
|
||||
|
||||
NETLIB_RESET(9602_dip)
|
||||
{
|
||||
//m_1.do_reset();
|
||||
//m_2.do_reset();
|
||||
//m_1.reset();
|
||||
//m_2.reset();
|
||||
}
|
||||
|
||||
NETLIB_UPDATE(4538_dip)
|
||||
@ -302,8 +302,8 @@ namespace netlist
|
||||
|
||||
NETLIB_RESET(4538_dip)
|
||||
{
|
||||
m_1.do_reset();
|
||||
m_2.do_reset();
|
||||
m_1.reset();
|
||||
m_2.reset();
|
||||
}
|
||||
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(74123)
|
||||
|
@ -120,15 +120,15 @@ namespace netlist
|
||||
NETLIB_UPDATE(74153)
|
||||
{
|
||||
m_sub.m_chan = (m_A() | (m_B()<<1));
|
||||
m_sub.update_dev();
|
||||
m_sub.update();
|
||||
}
|
||||
|
||||
|
||||
NETLIB_UPDATE(74153_dip)
|
||||
{
|
||||
m_2.m_chan = m_1.m_chan = (m_A() | (m_B()<<1));
|
||||
m_1.update_dev();
|
||||
m_2.update_dev();
|
||||
m_1.update();
|
||||
m_2.update();
|
||||
}
|
||||
|
||||
NETLIB_DEVICE_IMPL(74153, "TTL_74153", "+C0,+C1,+C2,+C3,+A,+B,+G")
|
||||
|
@ -100,7 +100,7 @@ namespace netlist
|
||||
{
|
||||
m_R_FC.set_R(90000.0);
|
||||
m_R_RNG.set_R(90000.0);
|
||||
m_clock.do_reset();
|
||||
m_clock.reset();
|
||||
}
|
||||
NETLIB_UPDATEI();
|
||||
|
||||
@ -148,8 +148,8 @@ namespace netlist
|
||||
|
||||
NETLIB_RESETI()
|
||||
{
|
||||
m_1.do_reset();
|
||||
m_2.do_reset();
|
||||
m_1.reset();
|
||||
m_2.reset();
|
||||
}
|
||||
|
||||
private:
|
||||
|
@ -140,8 +140,8 @@ namespace netlist
|
||||
|
||||
NETLIB_RESET(9310)
|
||||
{
|
||||
sub.do_reset();
|
||||
subABCD.do_reset();
|
||||
sub.reset();
|
||||
subABCD.reset();
|
||||
}
|
||||
|
||||
NETLIB_RESET(9310_subABCD)
|
||||
|
@ -105,10 +105,10 @@ namespace netlist
|
||||
|
||||
NETLIB_UPDATE(9322)
|
||||
{
|
||||
m_1.update_dev();
|
||||
m_2.update_dev();
|
||||
m_3.update_dev();
|
||||
m_4.update_dev();
|
||||
m_1.update();
|
||||
m_2.update();
|
||||
m_3.update();
|
||||
m_4.update();
|
||||
}
|
||||
|
||||
NETLIB_DEVICE_IMPL_DEPRECATED(9322)
|
||||
|
@ -107,7 +107,7 @@ namespace netlist
|
||||
|
||||
// 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.update();
|
||||
m_RV.set(NL_FCONST(1.0) / R, V, 0.0);
|
||||
m_RV.m_P.schedule_solve_after(NLTIME_FROM_NS(1));
|
||||
}
|
||||
|
@ -128,10 +128,10 @@ namespace netlist
|
||||
|
||||
NETLIB_RESET(NE555)
|
||||
{
|
||||
m_R1.do_reset();
|
||||
m_R2.do_reset();
|
||||
m_R3.do_reset();
|
||||
m_RDIS.do_reset();
|
||||
m_R1.reset();
|
||||
m_R2.reset();
|
||||
m_R3.reset();
|
||||
m_RDIS.reset();
|
||||
|
||||
/* FIXME make resistance a parameter, properly model other variants */
|
||||
m_R1.set_R(5000);
|
||||
@ -163,13 +163,13 @@ namespace netlist
|
||||
|
||||
if (m_last_out && !out)
|
||||
{
|
||||
m_RDIS.update_dev();
|
||||
m_RDIS.update();
|
||||
m_OUT.push(m_R3.m_N());
|
||||
m_RDIS.set_R(R_ON);
|
||||
}
|
||||
else if (!m_last_out && out)
|
||||
{
|
||||
m_RDIS.update_dev();
|
||||
m_RDIS.update();
|
||||
// FIXME: Should be delayed by 100ns
|
||||
m_OUT.push(m_R1.m_P());
|
||||
m_RDIS.set_R(R_OFF);
|
||||
|
@ -82,8 +82,8 @@ namespace netlist
|
||||
NETLIB_RESETI()
|
||||
{
|
||||
m_last_state = 1;
|
||||
m_RVI.do_reset();
|
||||
m_RVO.do_reset();
|
||||
m_RVI.reset();
|
||||
m_RVO.reset();
|
||||
m_is_timestep = m_RVO.m_P.net().solver()->has_timestep_devices();
|
||||
m_RVI.set(NL_FCONST(1.0) / m_model.m_RI, m_model.m_VI, 0.0);
|
||||
m_RVO.set(NL_FCONST(1.0) / m_model.m_ROL, m_model.m_VOL, 0.0);
|
||||
@ -97,7 +97,7 @@ namespace netlist
|
||||
{
|
||||
m_last_state = 0;
|
||||
if (m_is_timestep)
|
||||
m_RVO.update_dev();
|
||||
m_RVO.update();
|
||||
m_RVO.set(NL_FCONST(1.0) / m_model.m_ROH, m_model.m_VOH, 0.0);
|
||||
m_RVO.m_P.schedule_solve_after(NLTIME_FROM_NS(1));
|
||||
}
|
||||
@ -108,7 +108,7 @@ namespace netlist
|
||||
{
|
||||
m_last_state = 1;
|
||||
if (m_is_timestep)
|
||||
m_RVO.update_dev();
|
||||
m_RVO.update();
|
||||
m_RVO.set(NL_FCONST(1.0) / m_model.m_ROL, m_model.m_VOL, 0.0);
|
||||
m_RVO.m_P.schedule_solve_after(NLTIME_FROM_NS(1));
|
||||
}
|
||||
|
@ -72,7 +72,7 @@ namespace netlist
|
||||
// We only need to update the net first if this is a time stepping net
|
||||
if ((0)) // m_R->m_P.net().as_analog().solver()->is_timestep())
|
||||
{
|
||||
m_R.update_dev();
|
||||
m_R.update();
|
||||
m_R.set_R(R);
|
||||
m_R.m_P.schedule_solve_after(NLTIME_FROM_NS(1));
|
||||
}
|
||||
@ -80,7 +80,7 @@ namespace netlist
|
||||
{
|
||||
m_R.set_R(R);
|
||||
m_R.m_P.schedule_solve_after(NLTIME_FROM_NS(1));
|
||||
//m_R->update_dev();
|
||||
//m_R->update();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -137,7 +137,7 @@ namespace netlist
|
||||
|
||||
//m_Q.initial(0.0);
|
||||
m_last_state = -1;
|
||||
m_RV.do_reset();
|
||||
m_RV.reset();
|
||||
m_is_timestep = m_RV.m_P.net().solver()->has_timestep_devices();
|
||||
m_RV.set(NL_FCONST(1.0) / logic_family()->R_low(),
|
||||
logic_family()->low_V(0.0, supply_V), 0.0);
|
||||
@ -158,7 +158,7 @@ namespace netlist
|
||||
// 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.update();
|
||||
}
|
||||
m_RV.set(NL_FCONST(1.0) / R, V, 0.0);
|
||||
m_RV.m_P.schedule_solve_after(NLTIME_FROM_NS(1));
|
||||
|
@ -341,7 +341,7 @@ void netlist_t::reset()
|
||||
if (m_mainclock != nullptr)
|
||||
m_mainclock->m_Q.net().set_time(netlist_time::zero());
|
||||
//if (m_solver != nullptr)
|
||||
// m_solver->do_reset();
|
||||
// m_solver->reset();
|
||||
|
||||
m_state->reset();
|
||||
}
|
||||
@ -359,7 +359,7 @@ void netlist_state_t::reset()
|
||||
// Reset all devices once !
|
||||
log().verbose("Call reset on all devices:");
|
||||
for (auto & dev : m_devices)
|
||||
dev->do_reset();
|
||||
dev->reset();
|
||||
|
||||
// Make sure everything depending on parameters is set
|
||||
// Currently analog input and logic input also
|
||||
@ -409,14 +409,14 @@ void netlist_state_t::reset()
|
||||
log().verbose("Using brute force backward startup strategy");
|
||||
std::size_t i = m_devices.size();
|
||||
while (i>0)
|
||||
m_devices[--i]->update_dev();
|
||||
m_devices[--i]->update();
|
||||
}
|
||||
break;
|
||||
case 2: // brute force forward
|
||||
{
|
||||
log().verbose("Using brute force forward startup strategy");
|
||||
for (auto &d : m_devices)
|
||||
d->update_dev();
|
||||
d->update();
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -129,9 +129,9 @@ class NETLIB_NAME(name) : public device_t
|
||||
|
||||
#define NETLIB_UPDATE_TERMINALSI() public: virtual void update_terminals() override
|
||||
#define NETLIB_HANDLERI(name) private: virtual void name() NL_NOEXCEPT
|
||||
#define NETLIB_UPDATEI() protected: virtual void update() NL_NOEXCEPT override
|
||||
#define NETLIB_UPDATEI() public: virtual void update() NL_NOEXCEPT override
|
||||
#define NETLIB_UPDATE_PARAMI() public: virtual void update_param() override
|
||||
#define NETLIB_RESETI() protected: virtual void reset() override
|
||||
#define NETLIB_RESETI() public: virtual void reset() override
|
||||
|
||||
#define NETLIB_TIMESTEP(chip) void NETLIB_NAME(chip) :: timestep(const nl_double step)
|
||||
|
||||
@ -1080,12 +1080,6 @@ namespace netlist
|
||||
|
||||
virtual ~core_device_t();
|
||||
|
||||
// FIXME: useless trampoline
|
||||
void update_dev() NL_NOEXCEPT
|
||||
{
|
||||
do_update();
|
||||
}
|
||||
|
||||
void do_inc_active() NL_NOEXCEPT
|
||||
{
|
||||
if (m_hint_deactivate)
|
||||
@ -1101,7 +1095,6 @@ namespace netlist
|
||||
dec_active();
|
||||
}
|
||||
|
||||
void do_reset() { reset(); }
|
||||
void set_hint_deactivate(bool v) { m_hint_deactivate = v; }
|
||||
bool get_hint_deactivate() { return m_hint_deactivate; }
|
||||
|
||||
@ -1112,18 +1105,13 @@ namespace netlist
|
||||
nperfcount_t<NL_KEEP_STATISTICS> m_stat_call_count;
|
||||
nperfcount_t<NL_KEEP_STATISTICS> m_stat_inc_active;
|
||||
|
||||
virtual void update() NL_NOEXCEPT { }
|
||||
virtual void reset() { }
|
||||
|
||||
protected:
|
||||
|
||||
virtual void update() NL_NOEXCEPT { }
|
||||
virtual void inc_active() NL_NOEXCEPT { }
|
||||
virtual void dec_active() NL_NOEXCEPT { }
|
||||
virtual void reset() { }
|
||||
|
||||
void do_update() NL_NOEXCEPT
|
||||
{
|
||||
update();
|
||||
}
|
||||
|
||||
log_type & log();
|
||||
|
||||
|
@ -71,7 +71,7 @@ namespace netlist
|
||||
NETLIB_RESET(solver)
|
||||
{
|
||||
for (std::size_t i = 0; i < m_mat_solvers.size(); i++)
|
||||
m_mat_solvers[i]->do_reset();
|
||||
m_mat_solvers[i]->reset();
|
||||
}
|
||||
|
||||
void NETLIB_NAME(solver)::stop()
|
||||
|
Loading…
Reference in New Issue
Block a user