From f0d012c1f5f072ff3bc3e7624e2f74754b5069a1 Mon Sep 17 00:00:00 2001 From: couriersud Date: Fri, 17 Jul 2020 23:12:24 +0200 Subject: [PATCH] netlist: Potential regression trigger. * Removed update and NETLIB_UPDATE completely. * Startup initialization order may change. * This may cause regression tests to trigger. This is expected. Logic TTL devices do not have a defined power-up state. That's why reset circuits exist which create a reset signal *after* all power supply lines are stable. --- src/lib/netlist/analog/nld_bjt.cpp | 19 ------- src/lib/netlist/analog/nld_mosfet.cpp | 5 -- src/lib/netlist/analog/nld_opamps.cpp | 5 -- src/lib/netlist/analog/nld_switches.cpp | 36 +++++--------- src/lib/netlist/analog/nlid_fourterm.cpp | 5 -- src/lib/netlist/analog/nlid_fourterm.h | 9 ---- src/lib/netlist/analog/nlid_twoterm.cpp | 5 -- src/lib/netlist/analog/nlid_twoterm.h | 2 - src/lib/netlist/devices/nld_2102A.cpp | 6 --- src/lib/netlist/devices/nld_4006.cpp | 5 -- src/lib/netlist/devices/nld_4013.cpp | 5 -- src/lib/netlist/devices/nld_4020.cpp | 10 ---- src/lib/netlist/devices/nld_4066.cpp | 9 ---- src/lib/netlist/devices/nld_4316.cpp | 5 -- src/lib/netlist/devices/nld_74107.cpp | 5 -- src/lib/netlist/devices/nld_74113.cpp | 5 -- src/lib/netlist/devices/nld_74123.cpp | 5 -- src/lib/netlist/devices/nld_74125.cpp | 6 +-- src/lib/netlist/devices/nld_74153.cpp | 5 -- src/lib/netlist/devices/nld_74164.cpp | 5 -- src/lib/netlist/devices/nld_74165.cpp | 6 --- src/lib/netlist/devices/nld_74166.cpp | 6 --- src/lib/netlist/devices/nld_74174.cpp | 6 --- src/lib/netlist/devices/nld_74175.cpp | 6 --- src/lib/netlist/devices/nld_74192.cpp | 6 --- src/lib/netlist/devices/nld_74193.cpp | 5 -- src/lib/netlist/devices/nld_74194.cpp | 5 -- src/lib/netlist/devices/nld_74365.cpp | 6 --- src/lib/netlist/devices/nld_74377.cpp | 4 -- src/lib/netlist/devices/nld_74393.cpp | 6 --- src/lib/netlist/devices/nld_7442.cpp | 6 --- src/lib/netlist/devices/nld_7448.cpp | 4 -- src/lib/netlist/devices/nld_7450.cpp | 4 -- src/lib/netlist/devices/nld_7473.cpp | 5 -- src/lib/netlist/devices/nld_7474.cpp | 5 -- src/lib/netlist/devices/nld_7475.cpp | 11 ----- src/lib/netlist/devices/nld_7483.cpp | 6 --- src/lib/netlist/devices/nld_7485.cpp | 6 --- src/lib/netlist/devices/nld_7490.cpp | 6 --- src/lib/netlist/devices/nld_7492.cpp | 5 -- src/lib/netlist/devices/nld_7493.cpp | 6 --- src/lib/netlist/devices/nld_7497.cpp | 6 --- src/lib/netlist/devices/nld_74ls629.cpp | 11 ----- src/lib/netlist/devices/nld_82S115.cpp | 5 -- src/lib/netlist/devices/nld_82S16.cpp | 6 --- src/lib/netlist/devices/nld_9316_base.hxx | 5 -- src/lib/netlist/devices/nld_9322.cpp | 11 ----- src/lib/netlist/devices/nld_am2847.cpp | 11 ----- src/lib/netlist/devices/nld_dm9314.cpp | 5 -- src/lib/netlist/devices/nld_dm9334.cpp | 6 --- src/lib/netlist/devices/nld_legacy.cpp | 10 ---- src/lib/netlist/devices/nld_log.cpp | 10 ---- src/lib/netlist/devices/nld_mm5837.cpp | 5 -- src/lib/netlist/devices/nld_ne555.cpp | 6 --- src/lib/netlist/devices/nld_roms.cpp | 5 -- src/lib/netlist/devices/nld_schmitt.cpp | 5 -- src/lib/netlist/devices/nld_tms4800.cpp | 6 --- src/lib/netlist/devices/nld_tristate.cpp | 10 ---- src/lib/netlist/devices/nlid_proxy.h | 9 ---- src/lib/netlist/devices/nlid_system.h | 53 +------------------- src/lib/netlist/devices/nlid_truthtable.cpp | 6 --- src/lib/netlist/nl_base.cpp | 55 +++++++-------------- src/lib/netlist/nl_base.h | 16 +++--- src/lib/netlist/nl_factory.cpp | 1 - src/lib/netlist/nl_interface.h | 15 ------ src/lib/netlist/solver/nld_matrix_solver.h | 6 --- src/lib/netlist/solver/nld_solver.h | 5 -- 67 files changed, 40 insertions(+), 526 deletions(-) diff --git a/src/lib/netlist/analog/nld_bjt.cpp b/src/lib/netlist/analog/nld_bjt.cpp index a863bfbe8a7..4ec7b3c971e 100644 --- a/src/lib/netlist/analog/nld_bjt.cpp +++ b/src/lib/netlist/analog/nld_bjt.cpp @@ -142,7 +142,6 @@ namespace analog NETLIB_IS_DYNAMIC(true) //NETLIB_RESETI(); - NETLIB_UPDATEI(); bjt_type qtype() const noexcept { return m_qtype; } bool is_qtype(bjt_type atype) const noexcept { return m_qtype == atype; } @@ -194,10 +193,6 @@ namespace analog } NETLIB_RESETI(); - NETLIB_UPDATEI() - { - termhandler(); - } NETLIB_HANDLERI(termhandler) { auto *solv(m_RB.solver()); @@ -268,11 +263,6 @@ namespace analog protected: NETLIB_RESETI(); - NETLIB_UPDATEI() - { - termhandler(); - } - NETLIB_HANDLERI(termhandler) { auto *solv(m_D_EB.solver()); @@ -302,15 +292,6 @@ namespace analog }; - // ---------------------------------------------------------------------------------------- - // nld_Q - // ---------------------------------------------------------------------------------------- - - NETLIB_UPDATE(QBJT) - { - // netlist().solver()->schedule1(); - } - // ---------------------------------------------------------------------------------------- // nld_QBJT_switch // ---------------------------------------------------------------------------------------- diff --git a/src/lib/netlist/analog/nld_mosfet.cpp b/src/lib/netlist/analog/nld_mosfet.cpp index 653063dd243..0bc46adb002 100644 --- a/src/lib/netlist/analog/nld_mosfet.cpp +++ b/src/lib/netlist/analog/nld_mosfet.cpp @@ -162,7 +162,6 @@ namespace analog NETLIB_IS_DYNAMIC(true) //NETLIB_RESETI(); - //NETLIB_UPDATEI() {} q_type qtype() const noexcept { return m_qtype; } bool is_qtype(q_type atype) const noexcept { return m_qtype == atype; } @@ -332,10 +331,6 @@ namespace analog #endif } - NETLIB_UPDATEI() - { - termhandler(); - } NETLIB_HANDLERI(termhandler) { // FIXME: This should never be called diff --git a/src/lib/netlist/analog/nld_opamps.cpp b/src/lib/netlist/analog/nld_opamps.cpp index 0fc1b27a553..fa9c64e0e9a 100644 --- a/src/lib/netlist/analog/nld_opamps.cpp +++ b/src/lib/netlist/analog/nld_opamps.cpp @@ -183,11 +183,6 @@ namespace netlist } - NETLIB_UPDATEI() - { - supply(); - } - NETLIB_HANDLERI(supply) { const nl_fptype cVt = nlconst::np_VT(nlconst::one()); // * m_n; diff --git a/src/lib/netlist/analog/nld_switches.cpp b/src/lib/netlist/analog/nld_switches.cpp index 45515a8c416..061ea0a7995 100644 --- a/src/lib/netlist/analog/nld_switches.cpp +++ b/src/lib/netlist/analog/nld_switches.cpp @@ -29,33 +29,23 @@ namespace netlist register_subalias("2", m_R.N()); } - NETLIB_RESETI(); - NETLIB_UPDATEI(); - NETLIB_UPDATE_PARAMI(); + NETLIB_RESETI() + { + m_R.set_R(R_OFF); + } + NETLIB_UPDATE_PARAMI() + { + m_R.change_state([this]() + { + m_R.set_R(m_POS() ? R_ON : R_OFF); + }); + } private: analog::NETLIB_SUB(R_base) m_R; param_logic_t m_POS; }; - - NETLIB_RESET(switch1) - { - m_R.set_R(R_OFF); - } - - NETLIB_UPDATE(switch1) - { - } - - NETLIB_UPDATE_PARAM(switch1) - { - m_R.change_state([this]() - { - m_R.set_R(m_POS() ? R_ON : R_OFF); - }); - } - // ---------------------------------------------------------------------------------------- // SWITCH2 // ---------------------------------------------------------------------------------------- @@ -76,7 +66,6 @@ namespace netlist } NETLIB_RESETI(); - NETLIB_UPDATEI(); NETLIB_UPDATE_PARAMI(); private: @@ -91,6 +80,7 @@ namespace netlist m_R2.set_R(R_OFF); } +#ifdef FIXMELATER NETLIB_UPDATE(switch2) { if (!m_POS()) @@ -104,7 +94,7 @@ namespace netlist m_R2.set_R(R_ON); } } - +#endif NETLIB_UPDATE_PARAM(switch2) { // R1 and R2 are connected. However this net may be a rail net. diff --git a/src/lib/netlist/analog/nlid_fourterm.cpp b/src/lib/netlist/analog/nlid_fourterm.cpp index c6412127b6a..ed3ff1ca579 100644 --- a/src/lib/netlist/analog/nlid_fourterm.cpp +++ b/src/lib/netlist/analog/nlid_fourterm.cpp @@ -30,11 +30,6 @@ NETLIB_RESET(VCCS) m_ON1.set_go_gt(-m_mult, nlconst::zero()); } -NETLIB_UPDATE(VCCS) -{ - termhandler(); -} - NETLIB_HANDLER(VCCS, termhandler) { // only called if connected to a rail net ==> notify the solver to recalculate diff --git a/src/lib/netlist/analog/nlid_fourterm.h b/src/lib/netlist/analog/nlid_fourterm.h index 21a22d60102..dc47483a9e1 100644 --- a/src/lib/netlist/analog/nlid_fourterm.h +++ b/src/lib/netlist/analog/nlid_fourterm.h @@ -57,7 +57,6 @@ namespace analog { param_fp_t m_RI; protected: - NETLIB_UPDATEI(); NETLIB_HANDLERI(termhandler); NETLIB_UPDATE_PARAMI() { @@ -194,10 +193,6 @@ namespace analog { param_fp_t m_RO; private: - NETLIB_UPDATEI() - { - termhandler(); - } //NETLIB_UPDATE_PARAMI(); NETLIB_HANDLERI(termhandler) { @@ -253,10 +248,6 @@ namespace analog { param_fp_t m_RO; private: - NETLIB_UPDATEI() - { - termhandler(); - } //NETLIB_UPDATE_PARAMI(); NETLIB_HANDLERI(termhandler) diff --git a/src/lib/netlist/analog/nlid_twoterm.cpp b/src/lib/netlist/analog/nlid_twoterm.cpp index c3b2274984c..9b6d10ccd7c 100644 --- a/src/lib/netlist/analog/nlid_twoterm.cpp +++ b/src/lib/netlist/analog/nlid_twoterm.cpp @@ -31,11 +31,6 @@ namespace analog solv->solve_now(); } - NETLIB_UPDATE(twoterm) - { - termhandler(); - } - NETLIB_HANDLER(twoterm, termhandler) { // only called if connected to a rail net ==> notify the solver to recalculate diff --git a/src/lib/netlist/analog/nlid_twoterm.h b/src/lib/netlist/analog/nlid_twoterm.h index 937917dc09b..66b6d97ffe9 100644 --- a/src/lib/netlist/analog/nlid_twoterm.h +++ b/src/lib/netlist/analog/nlid_twoterm.h @@ -89,7 +89,6 @@ namespace analog public: - NETLIB_UPDATEI(); NETLIB_HANDLERI(termhandler); solver::matrix_solver_t *solver() const noexcept; @@ -221,7 +220,6 @@ namespace analog protected: - //NETLIB_UPDATEI() {} NETLIB_RESETI() { set_R(std::max(m_R(), exec().gmin())); diff --git a/src/lib/netlist/devices/nld_2102A.cpp b/src/lib/netlist/devices/nld_2102A.cpp index 2f673fadd53..d60b661ad21 100644 --- a/src/lib/netlist/devices/nld_2102A.cpp +++ b/src/lib/netlist/devices/nld_2102A.cpp @@ -60,11 +60,6 @@ namespace netlist } } - NETLIB_UPDATEI() - { - inputs(); - } - friend class NETLIB_NAME(2102A_dip); private: object_array_t m_A; @@ -106,7 +101,6 @@ namespace netlist } //NETLIB_RESETI() {} - //NETLIB_UPDATEI() {} private: NETLIB_SUB(2102A) A; }; diff --git a/src/lib/netlist/devices/nld_4006.cpp b/src/lib/netlist/devices/nld_4006.cpp index 5f4e93ad7ae..45f885b91d5 100644 --- a/src/lib/netlist/devices/nld_4006.cpp +++ b/src/lib/netlist/devices/nld_4006.cpp @@ -59,10 +59,6 @@ namespace netlist } } - NETLIB_UPDATEI() - { - inputs(); - } friend class NETLIB_NAME(CD4006_dip); private: logic_input_t m_CLOCK; @@ -95,7 +91,6 @@ namespace netlist register_subalias("14", "A.VDD"); } - //NETLIB_UPDATEI() {} private: NETLIB_SUB(CD4006) A; }; diff --git a/src/lib/netlist/devices/nld_4013.cpp b/src/lib/netlist/devices/nld_4013.cpp index 34a44962ce5..42c2eb71350 100644 --- a/src/lib/netlist/devices/nld_4013.cpp +++ b/src/lib/netlist/devices/nld_4013.cpp @@ -35,11 +35,6 @@ namespace netlist m_nextD = 0; } - NETLIB_UPDATEI() - { - inputs(); - } - NETLIB_HANDLERI(inputs) { const auto set(m_SET()); diff --git a/src/lib/netlist/devices/nld_4020.cpp b/src/lib/netlist/devices/nld_4020.cpp index 31dfaae34e9..9fe5bb2ec0a 100644 --- a/src/lib/netlist/devices/nld_4020.cpp +++ b/src/lib/netlist/devices/nld_4020.cpp @@ -37,11 +37,6 @@ namespace netlist update_outputs(m_cnt); } - NETLIB_UPDATEI() - { - ip(); - } - public: void update_outputs(const unsigned cnt) noexcept { @@ -106,11 +101,6 @@ namespace netlist m_sub.m_IP.activate_hl(); } - NETLIB_UPDATEI() - { - inputs(); - } - private: NETLIB_SUB(CD4020_sub) m_sub; logic_input_t m_RESET; diff --git a/src/lib/netlist/devices/nld_4066.cpp b/src/lib/netlist/devices/nld_4066.cpp index 27d388424be..97b503541e7 100644 --- a/src/lib/netlist/devices/nld_4066.cpp +++ b/src/lib/netlist/devices/nld_4066.cpp @@ -46,11 +46,6 @@ namespace netlist m_R.set_R(plib::reciprocal(exec().gmin())); } - NETLIB_UPDATEI() - { - control(); - } - private: NETLIB_HANDLERI(control) { @@ -108,10 +103,6 @@ namespace netlist // FIXME: is ROFF correct? } - NETLIB_UPDATEI() - { - } - NETLIB_UPDATE_TERMINALSI() { nl_fptype sup = (m_supply.VCC().Q_Analog() - m_supply.GND().Q_Analog()); diff --git a/src/lib/netlist/devices/nld_4316.cpp b/src/lib/netlist/devices/nld_4316.cpp index 63aba880355..b5b7fa80760 100644 --- a/src/lib/netlist/devices/nld_4316.cpp +++ b/src/lib/netlist/devices/nld_4316.cpp @@ -41,11 +41,6 @@ namespace netlist { namespace devices { , NLTIME_FROM_NS(1)); } - NETLIB_UPDATEI() - { - inputs(); - } - private: analog::NETLIB_SUB(R_base) m_R; diff --git a/src/lib/netlist/devices/nld_74107.cpp b/src/lib/netlist/devices/nld_74107.cpp index 71f77a5bdeb..dbf7f40d34b 100644 --- a/src/lib/netlist/devices/nld_74107.cpp +++ b/src/lib/netlist/devices/nld_74107.cpp @@ -41,11 +41,6 @@ namespace netlist //m_QQ.initial(1); } - NETLIB_UPDATEI() - { - other(); - } - NETLIB_HANDLERI(other) { if (!m_clrQ()) diff --git a/src/lib/netlist/devices/nld_74113.cpp b/src/lib/netlist/devices/nld_74113.cpp index 0c3115e7fda..784e866570a 100644 --- a/src/lib/netlist/devices/nld_74113.cpp +++ b/src/lib/netlist/devices/nld_74113.cpp @@ -70,11 +70,6 @@ namespace netlist m_QQ.push(m_q ^ 1, NLTIME_FROM_NS(20)); // FIXME: timing } - NETLIB_UPDATEI() - { - inputs(); - } - public: logic_input_t m_CLK; logic_input_t m_J; diff --git a/src/lib/netlist/devices/nld_74123.cpp b/src/lib/netlist/devices/nld_74123.cpp index ae8663b78d9..31f59dbbc22 100644 --- a/src/lib/netlist/devices/nld_74123.cpp +++ b/src/lib/netlist/devices/nld_74123.cpp @@ -127,11 +127,6 @@ namespace netlist m_last_trig = m_trig; } - NETLIB_UPDATEI() - { - cv(); - } - NETLIB_HANDLERI(cv) { if (m_state == 1) diff --git a/src/lib/netlist/devices/nld_74125.cpp b/src/lib/netlist/devices/nld_74125.cpp index 28118f8248e..094803ea803 100644 --- a/src/lib/netlist/devices/nld_74125.cpp +++ b/src/lib/netlist/devices/nld_74125.cpp @@ -45,11 +45,9 @@ namespace netlist } private: - NETLIB_RESETI() - { - } + //NETLIB_RESETI() {} - NETLIB_UPDATEI() + NETLIB_UPDATE_PARAMI() { // this one is only called during startup. Ensure all outputs // are in a consistent state. diff --git a/src/lib/netlist/devices/nld_74153.cpp b/src/lib/netlist/devices/nld_74153.cpp index 31ead62b6da..80b460ef52b 100644 --- a/src/lib/netlist/devices/nld_74153.cpp +++ b/src/lib/netlist/devices/nld_74153.cpp @@ -41,11 +41,6 @@ namespace devices sub(); } - NETLIB_UPDATEI() - { - other(); - } - NETLIB_HANDLERI(sub) { constexpr const std::array delay = { NLTIME_FROM_NS(23), NLTIME_FROM_NS(18) }; diff --git a/src/lib/netlist/devices/nld_74164.cpp b/src/lib/netlist/devices/nld_74164.cpp index 7c196141dba..2907910c8b7 100644 --- a/src/lib/netlist/devices/nld_74164.cpp +++ b/src/lib/netlist/devices/nld_74164.cpp @@ -64,11 +64,6 @@ namespace netlist m_last_CLK = 0; } - NETLIB_UPDATEI() - { - inputs(); - } - friend class NETLIB_NAME(74164_dip); private: logic_input_t m_A; diff --git a/src/lib/netlist/devices/nld_74165.cpp b/src/lib/netlist/devices/nld_74165.cpp index 47106269b91..afa5f3de90d 100644 --- a/src/lib/netlist/devices/nld_74165.cpp +++ b/src/lib/netlist/devices/nld_74165.cpp @@ -66,11 +66,6 @@ namespace netlist } - NETLIB_UPDATEI() - { - inputs(); - } - friend class NETLIB_NAME(74165_dip); private: object_array_t m_DATA; @@ -110,7 +105,6 @@ namespace netlist register_subalias("16", "A.VCC"); } //NETLIB_RESETI() {} - //NETLIB_UPDATEI() {} private: NETLIB_SUB(74165) A; }; diff --git a/src/lib/netlist/devices/nld_74166.cpp b/src/lib/netlist/devices/nld_74166.cpp index fd45d32730f..d8da82a1e7a 100644 --- a/src/lib/netlist/devices/nld_74166.cpp +++ b/src/lib/netlist/devices/nld_74166.cpp @@ -84,11 +84,6 @@ namespace netlist m_QH.push(qh, delay); //FIXME } - NETLIB_UPDATEI() - { - inputs(); - } - friend class NETLIB_NAME(74166_dip); private: object_array_t m_DATA; @@ -129,7 +124,6 @@ namespace netlist register_subalias("16", "A.VCC"); } //NETLIB_RESETI() {} - //NETLIB_UPDATEI() {} private: NETLIB_SUB(74166) A; }; diff --git a/src/lib/netlist/devices/nld_74174.cpp b/src/lib/netlist/devices/nld_74174.cpp index 88825593e46..37071e190ed 100644 --- a/src/lib/netlist/devices/nld_74174.cpp +++ b/src/lib/netlist/devices/nld_74174.cpp @@ -54,11 +54,6 @@ namespace devices } } - NETLIB_UPDATEI() - { - other(); - } - NETLIB_HANDLERI(clk) { if (m_clrq) @@ -115,7 +110,6 @@ namespace devices register_subalias("16", "A.VCC"); } //NETLIB_RESETI() {} - //NETLIB_UPDATEI() {} private: NETLIB_SUB(74174) A; }; diff --git a/src/lib/netlist/devices/nld_74175.cpp b/src/lib/netlist/devices/nld_74175.cpp index c0bb9ae67a5..5f1b483e5c3 100644 --- a/src/lib/netlist/devices/nld_74175.cpp +++ b/src/lib/netlist/devices/nld_74175.cpp @@ -60,11 +60,6 @@ namespace netlist } } - NETLIB_UPDATEI() - { - other(); - } - NETLIB_HANDLERI(clk) { if (m_CLRQ()) @@ -120,7 +115,6 @@ namespace netlist register_subalias("16", "A.VCC"); } //NETLIB_RESETI() {} - //NETLIB_UPDATEI() {} private: NETLIB_SUB(74175) A; }; diff --git a/src/lib/netlist/devices/nld_74192.cpp b/src/lib/netlist/devices/nld_74192.cpp index e5fc34e1e1a..f395e8e3df4 100644 --- a/src/lib/netlist/devices/nld_74192.cpp +++ b/src/lib/netlist/devices/nld_74192.cpp @@ -54,11 +54,6 @@ namespace netlist m_last_CD = 0; } - NETLIB_UPDATEI() - { - inputs(); - } - friend class NETLIB_NAME(74192_dip); private: logic_input_t m_CLEAR; @@ -160,7 +155,6 @@ namespace netlist register_subalias("16", "A.VCC"); } //NETLIB_RESETI() {} - //NETLIB_UPDATEI() {} private: NETLIB_SUB(74192) A; }; diff --git a/src/lib/netlist/devices/nld_74193.cpp b/src/lib/netlist/devices/nld_74193.cpp index b33854bd25c..38933a89a62 100644 --- a/src/lib/netlist/devices/nld_74193.cpp +++ b/src/lib/netlist/devices/nld_74193.cpp @@ -53,10 +53,6 @@ namespace netlist m_last_CU = 0; m_last_CD = 0; } - NETLIB_UPDATEI() - { - inputs(); - } friend class NETLIB_NAME(74193_dip); private: @@ -148,7 +144,6 @@ namespace netlist register_subalias("16", "A.VCC"); } //NETLIB_RESETI() {} - //NETLIB_UPDATEI() {} private: NETLIB_SUB(74193) A; }; diff --git a/src/lib/netlist/devices/nld_74194.cpp b/src/lib/netlist/devices/nld_74194.cpp index 15fd6d68840..6cd30ff648a 100644 --- a/src/lib/netlist/devices/nld_74194.cpp +++ b/src/lib/netlist/devices/nld_74194.cpp @@ -36,10 +36,6 @@ namespace netlist m_last_CLK = 0; m_last_Q = 0; } - NETLIB_UPDATEI() - { - inputs(); - } friend class NETLIB_NAME(74194_dip); private: @@ -124,7 +120,6 @@ namespace netlist } //NETLIB_RESETI() {} - //NETLIB_UPDATEI() {} private: NETLIB_SUB(74194) A; }; diff --git a/src/lib/netlist/devices/nld_74365.cpp b/src/lib/netlist/devices/nld_74365.cpp index f7d33d7e9b4..46a13a4d086 100644 --- a/src/lib/netlist/devices/nld_74365.cpp +++ b/src/lib/netlist/devices/nld_74365.cpp @@ -31,11 +31,6 @@ namespace netlist { } - NETLIB_UPDATEI() - { - inputs(); - } - friend class NETLIB_NAME(74365_dip); private: NETLIB_HANDLERI(inputs) @@ -83,7 +78,6 @@ namespace netlist register_subalias("16", "A.VCC"); } //NETLIB_RESETI() {} - //NETLIB_UPDATEI() {} private: NETLIB_SUB(74365) A; }; diff --git a/src/lib/netlist/devices/nld_74377.cpp b/src/lib/netlist/devices/nld_74377.cpp index 13d4b1bb542..4f2e00f229a 100644 --- a/src/lib/netlist/devices/nld_74377.cpp +++ b/src/lib/netlist/devices/nld_74377.cpp @@ -31,10 +31,6 @@ namespace netlist NETLIB_RESETI() { } - NETLIB_UPDATEI() - { - inputs(); - } private: NETLIB_HANDLERI(inputs) diff --git a/src/lib/netlist/devices/nld_74393.cpp b/src/lib/netlist/devices/nld_74393.cpp index c8dfce300e5..09ac49e8ffb 100644 --- a/src/lib/netlist/devices/nld_74393.cpp +++ b/src/lib/netlist/devices/nld_74393.cpp @@ -33,11 +33,6 @@ namespace netlist m_cnt = 0; } - NETLIB_UPDATEI() - { - inputs(); - } - NETLIB_HANDLERI(inputs) { netlist_sig_t last_cp = m_cp; @@ -103,7 +98,6 @@ namespace netlist connect("A.GND", "B.GND"); connect("A.VCC", "B.VCC"); } - //NETLIB_UPDATEI() {} //NETLIB_RESETI() {} private: diff --git a/src/lib/netlist/devices/nld_7442.cpp b/src/lib/netlist/devices/nld_7442.cpp index c389ed2d85c..e25b56e60d3 100644 --- a/src/lib/netlist/devices/nld_7442.cpp +++ b/src/lib/netlist/devices/nld_7442.cpp @@ -30,11 +30,6 @@ namespace devices } private: - NETLIB_UPDATEI() - { - inputs(); - } - NETLIB_RESETI() { m_val = 0; @@ -99,7 +94,6 @@ namespace devices register_subalias("16", "A.VCC"); } //NETLIB_RESETI() {} - //NETLIB_UPDATEI() {} private: NETLIB_SUB(7442) A; }; diff --git a/src/lib/netlist/devices/nld_7448.cpp b/src/lib/netlist/devices/nld_7448.cpp index 6dc97cc22b4..13a9b171258 100644 --- a/src/lib/netlist/devices/nld_7448.cpp +++ b/src/lib/netlist/devices/nld_7448.cpp @@ -35,10 +35,6 @@ namespace netlist { m_state = 0; } - NETLIB_UPDATEI() - { - inputs(); - } friend class NETLIB_NAME(7448_dip); private: diff --git a/src/lib/netlist/devices/nld_7450.cpp b/src/lib/netlist/devices/nld_7450.cpp index 1c26fde8185..5099ec5eea1 100644 --- a/src/lib/netlist/devices/nld_7450.cpp +++ b/src/lib/netlist/devices/nld_7450.cpp @@ -28,10 +28,6 @@ namespace netlist } //NETLIB_RESETI(); - NETLIB_UPDATEI() - { - inputs(); - } public: NETLIB_HANDLERI(inputs) diff --git a/src/lib/netlist/devices/nld_7473.cpp b/src/lib/netlist/devices/nld_7473.cpp index b9deb2649c1..d724ca16a3b 100644 --- a/src/lib/netlist/devices/nld_7473.cpp +++ b/src/lib/netlist/devices/nld_7473.cpp @@ -32,11 +32,6 @@ namespace netlist m_last_CLK = 0; } - NETLIB_UPDATEI() - { - inputs(); - } - public: NETLIB_HANDLERI(inputs) { diff --git a/src/lib/netlist/devices/nld_7474.cpp b/src/lib/netlist/devices/nld_7474.cpp index 01fc479f5e3..ac01a769f1e 100644 --- a/src/lib/netlist/devices/nld_7474.cpp +++ b/src/lib/netlist/devices/nld_7474.cpp @@ -38,11 +38,6 @@ namespace netlist m_nextD = 0; } - NETLIB_UPDATEI() - { - inputs(); - } - NETLIB_HANDLERI(clk) { newstate(m_nextD, !m_nextD); diff --git a/src/lib/netlist/devices/nld_7475.cpp b/src/lib/netlist/devices/nld_7475.cpp index 6dc05a44ed8..e80326c8cb1 100644 --- a/src/lib/netlist/devices/nld_7475.cpp +++ b/src/lib/netlist/devices/nld_7475.cpp @@ -30,10 +30,6 @@ namespace netlist { m_last_Q = 0; } - NETLIB_UPDATEI() - { - inputs(); - } NETLIB_HANDLERI(inputs) { @@ -98,11 +94,6 @@ namespace netlist m_last_Q = 0; } - NETLIB_UPDATEI() - { - inputs(); - } - NETLIB_HANDLERI(inputs) { unsigned start_q = m_last_Q; @@ -179,7 +170,6 @@ namespace netlist register_subalias("16", A.m_Q[0]); } //NETLIB_RESETI() {} - //NETLIB_UPDATEI() {} private: NETLIB_SUB(7475) A; }; @@ -206,7 +196,6 @@ namespace netlist register_subalias("14", A.m_Q[0]); } //NETLIB_RESETI() {} - //NETLIB_UPDATEI() {} private: NETLIB_SUB(7477) A; }; diff --git a/src/lib/netlist/devices/nld_7483.cpp b/src/lib/netlist/devices/nld_7483.cpp index 93f1dd44610..a38c6123e7d 100644 --- a/src/lib/netlist/devices/nld_7483.cpp +++ b/src/lib/netlist/devices/nld_7483.cpp @@ -40,11 +40,6 @@ namespace netlist m_lastr = 0; } - NETLIB_UPDATEI() - { - c0(); - } - friend class NETLIB_NAME(7483_dip); private: NETLIB_HANDLERI(c0) @@ -121,7 +116,6 @@ namespace netlist register_subalias("16", A.m_B4); } //NETLIB_RESETI() {} - //NETLIB_UPDATEI() {} private: NETLIB_SUB(7483) A; }; diff --git a/src/lib/netlist/devices/nld_7485.cpp b/src/lib/netlist/devices/nld_7485.cpp index cd276ce2ee2..0fa0bc982a2 100644 --- a/src/lib/netlist/devices/nld_7485.cpp +++ b/src/lib/netlist/devices/nld_7485.cpp @@ -27,11 +27,6 @@ namespace netlist { } - NETLIB_UPDATEI() - { - inputs(); - } - void update_outputs(unsigned gt, unsigned lt, unsigned eq); friend class NETLIB_NAME(7485_dip); @@ -103,7 +98,6 @@ namespace netlist } //NETLIB_RESETI() {} - //NETLIB_UPDATEI() {} private: NETLIB_SUB(7485) A; }; diff --git a/src/lib/netlist/devices/nld_7490.cpp b/src/lib/netlist/devices/nld_7490.cpp index 2b19eff4227..e7b57044c59 100644 --- a/src/lib/netlist/devices/nld_7490.cpp +++ b/src/lib/netlist/devices/nld_7490.cpp @@ -39,11 +39,6 @@ namespace devices } private: - NETLIB_UPDATEI() - { - inputs(); - } - NETLIB_HANDLERI(inputs) { const netlist_sig_t new_A = m_A(); @@ -123,7 +118,6 @@ namespace devices register_subalias("14", "A.A"); } //NETLIB_RESETI() {} - //NETLIB_UPDATEI() {} private: NETLIB_SUB(7490) A; }; diff --git a/src/lib/netlist/devices/nld_7492.cpp b/src/lib/netlist/devices/nld_7492.cpp index dd2a9291feb..d4130081cb6 100644 --- a/src/lib/netlist/devices/nld_7492.cpp +++ b/src/lib/netlist/devices/nld_7492.cpp @@ -37,10 +37,6 @@ namespace devices } private: - NETLIB_UPDATEI() - { - inputs(); - } NETLIB_HANDLERI(inputs) { @@ -116,7 +112,6 @@ namespace devices register_subalias("14", "A.A"); } //NETLIB_RESETI() {} - //NETLIB_UPDATEI() {} private: NETLIB_SUB(7492) A; }; diff --git a/src/lib/netlist/devices/nld_7493.cpp b/src/lib/netlist/devices/nld_7493.cpp index 131be393592..a6514183f76 100644 --- a/src/lib/netlist/devices/nld_7493.cpp +++ b/src/lib/netlist/devices/nld_7493.cpp @@ -102,11 +102,6 @@ namespace netlist m_CLKB.set_state(logic_t::STATE_INP_HL); } - NETLIB_UPDATEI() - { - inputs(); - } - NETLIB_HANDLERI(inputs) { if (!(m_R1() && m_R2())) @@ -177,7 +172,6 @@ namespace netlist register_subalias("14", "A.CLKA"); } //NETLIB_RESETI() {} - //NETLIB_UPDATEI() {} private: NETLIB_SUB(7493) A; }; diff --git a/src/lib/netlist/devices/nld_7497.cpp b/src/lib/netlist/devices/nld_7497.cpp index 6645adea53e..a5140e9593f 100644 --- a/src/lib/netlist/devices/nld_7497.cpp +++ b/src/lib/netlist/devices/nld_7497.cpp @@ -48,11 +48,6 @@ namespace netlist m_lastclock = 0; } - NETLIB_UPDATEI() - { - inputs(); - } - NETLIB_HANDLERI(noop) { } NETLIB_HANDLERI(unity) @@ -170,7 +165,6 @@ namespace netlist register_subalias("16", "A.VCC"); } //NETLIB_RESETI() {} - //NETLIB_UPDATEI() {} private: NETLIB_SUB(7497) A; }; diff --git a/src/lib/netlist/devices/nld_74ls629.cpp b/src/lib/netlist/devices/nld_74ls629.cpp index 8c56528458d..cc924450eca 100644 --- a/src/lib/netlist/devices/nld_74ls629.cpp +++ b/src/lib/netlist/devices/nld_74ls629.cpp @@ -65,11 +65,6 @@ namespace netlist m_inc = netlist_time::zero(); } - NETLIB_UPDATEI() - { - fb(); - } - public: logic_input_t m_FB; logic_output_t m_Y; @@ -120,11 +115,6 @@ namespace netlist m_clock.reset(); } - NETLIB_UPDATEI() - { - inputs(); - } - NETLIB_UPDATE_PARAMI() { /* update param may be called from anywhere, update_dev(time) is not a good idea */ @@ -227,7 +217,6 @@ namespace netlist register_subalias("14", m_B.m_RNG); } - //NETLIB_UPDATEI() {} NETLIB_RESETI() { diff --git a/src/lib/netlist/devices/nld_82S115.cpp b/src/lib/netlist/devices/nld_82S115.cpp index 883e13f6f9c..1b1235817f0 100644 --- a/src/lib/netlist/devices/nld_82S115.cpp +++ b/src/lib/netlist/devices/nld_82S115.cpp @@ -30,10 +30,6 @@ namespace netlist { m_last_O = 0; } - NETLIB_UPDATEI() - { - inputs(); - } friend class NETLIB_NAME(82S115_dip); private: @@ -114,7 +110,6 @@ namespace netlist register_subalias("24", "A.VCC"); } //NETLIB_RESETI() {} - //NETLIB_UPDATEI() {} private: NETLIB_SUB(82S115) A; }; diff --git a/src/lib/netlist/devices/nld_82S16.cpp b/src/lib/netlist/devices/nld_82S16.cpp index 53213deb02f..370f2c0104d 100644 --- a/src/lib/netlist/devices/nld_82S16.cpp +++ b/src/lib/netlist/devices/nld_82S16.cpp @@ -38,11 +38,6 @@ namespace netlist m_addr = 0; m_enq = 0; } - NETLIB_UPDATEI() - { - inputs(); - } - friend class NETLIB_NAME(82S16_dip); private: // FIXME: timing! @@ -137,7 +132,6 @@ namespace netlist register_subalias("16", "A.VCC"); } //NETLIB_RESETI() {} - //NETLIB_UPDATEI() {} private: NETLIB_SUB(82S16) A; }; diff --git a/src/lib/netlist/devices/nld_9316_base.hxx b/src/lib/netlist/devices/nld_9316_base.hxx index cbbc20f014d..dee25a8397f 100644 --- a/src/lib/netlist/devices/nld_9316_base.hxx +++ b/src/lib/netlist/devices/nld_9316_base.hxx @@ -69,11 +69,6 @@ namespace netlist m_RC.push(m_ent && (m_cnt == D::MAXCNT::value), D::tRC::value(0)); } - NETLIB_UPDATEI() - { - other(); - } - NETLIB_HANDLERI(clk) { if (!D::ASYNC::value && !m_CLRQ()) diff --git a/src/lib/netlist/devices/nld_9322.cpp b/src/lib/netlist/devices/nld_9322.cpp index 154c51a8c95..8c7742360b9 100644 --- a/src/lib/netlist/devices/nld_9322.cpp +++ b/src/lib/netlist/devices/nld_9322.cpp @@ -25,11 +25,6 @@ namespace netlist { } - NETLIB_UPDATEI() - { - inputs(); - } - // FIXME: Timing NETLIB_HANDLERI(inputs); @@ -76,11 +71,6 @@ namespace netlist } - NETLIB_UPDATEI() - { - inputs(); - } - friend class NETLIB_NAME(9322_dip); public: logic_input_t m_SELECT; @@ -136,7 +126,6 @@ namespace netlist } //NETLIB_RESETI() {} - //NETLIB_UPDATEI() {} private: NETLIB_SUB(9322) A; }; diff --git a/src/lib/netlist/devices/nld_am2847.cpp b/src/lib/netlist/devices/nld_am2847.cpp index 5777de6dc3c..7dff2cdb07e 100644 --- a/src/lib/netlist/devices/nld_am2847.cpp +++ b/src/lib/netlist/devices/nld_am2847.cpp @@ -23,11 +23,6 @@ namespace netlist { } - NETLIB_UPDATEI() - { - inputs(); - } - public: void shift() noexcept { @@ -97,11 +92,6 @@ namespace netlist m_last_CP = 0; } - NETLIB_UPDATEI() - { - cp(); - } - friend class NETLIB_NAME(AM2847_dip); private: NETLIB_HANDLERI(cp) @@ -148,7 +138,6 @@ namespace netlist register_subalias("16", "A.VSS"); } //NETLIB_RESETI() {} - //NETLIB_UPDATEI() {} private: NETLIB_SUB(AM2847) A; }; diff --git a/src/lib/netlist/devices/nld_dm9314.cpp b/src/lib/netlist/devices/nld_dm9314.cpp index fb16d1414e5..2ded51abbd4 100644 --- a/src/lib/netlist/devices/nld_dm9314.cpp +++ b/src/lib/netlist/devices/nld_dm9314.cpp @@ -38,11 +38,6 @@ namespace netlist m_last_Q = 0; } - NETLIB_UPDATEI() - { - inputs(); - } - friend class NETLIB_NAME(9314_dip); private: NETLIB_HANDLERI(inputs) diff --git a/src/lib/netlist/devices/nld_dm9334.cpp b/src/lib/netlist/devices/nld_dm9334.cpp index 9dd94b8e2c8..cdc38827755 100644 --- a/src/lib/netlist/devices/nld_dm9334.cpp +++ b/src/lib/netlist/devices/nld_dm9334.cpp @@ -38,11 +38,6 @@ namespace netlist m_last_Q = 0; } - NETLIB_UPDATEI() - { - inputs(); - } - friend class NETLIB_NAME(9334_dip); private: NETLIB_HANDLERI(inputs) @@ -150,7 +145,6 @@ namespace netlist } //NETLIB_RESETI() {} - //NETLIB_UPDATEI() {} private: NETLIB_SUB(9334) A; }; diff --git a/src/lib/netlist/devices/nld_legacy.cpp b/src/lib/netlist/devices/nld_legacy.cpp index a643aa92261..ba66ae1bf94 100644 --- a/src/lib/netlist/devices/nld_legacy.cpp +++ b/src/lib/netlist/devices/nld_legacy.cpp @@ -28,11 +28,6 @@ namespace netlist m_QQ.initial(1); } - NETLIB_UPDATEI() - { - inputs(); - } - private: NETLIB_HANDLERI(inputs) { @@ -73,11 +68,6 @@ namespace netlist //m_Q.initial(0); } - NETLIB_UPDATEI() - { - input(); - } - private: NETLIB_HANDLERI(input) { diff --git a/src/lib/netlist/devices/nld_log.cpp b/src/lib/netlist/devices/nld_log.cpp index 864f77f1135..eccb0c5ccff 100644 --- a/src/lib/netlist/devices/nld_log.cpp +++ b/src/lib/netlist/devices/nld_log.cpp @@ -53,11 +53,6 @@ namespace netlist m_write_thread.join(); } - NETLIB_UPDATEI() - { - input(); - } - NETLIB_HANDLERI(input) { log_value(static_cast(m_I())); @@ -132,11 +127,6 @@ namespace netlist m_I.set_delegate(nldelegate(&NETLIB_NAME(logD)::input, this)); } - NETLIB_UPDATEI() - { - input(); - } - NETLIB_HANDLERI(input) { log_value(static_cast(m_I() - m_I2())); diff --git a/src/lib/netlist/devices/nld_mm5837.cpp b/src/lib/netlist/devices/nld_mm5837.cpp index 139bb3f55d1..aac0d38fe82 100644 --- a/src/lib/netlist/devices/nld_mm5837.cpp +++ b/src/lib/netlist/devices/nld_mm5837.cpp @@ -50,11 +50,6 @@ namespace netlist m_shift = 0x1ffff; } - NETLIB_UPDATEI() - { - inputs(); - } - NETLIB_UPDATE_PARAMI() { m_inc = netlist_time::from_fp(plib::reciprocal(m_FREQ())); diff --git a/src/lib/netlist/devices/nld_ne555.cpp b/src/lib/netlist/devices/nld_ne555.cpp index 4e812a0bd53..28027b9efb0 100644 --- a/src/lib/netlist/devices/nld_ne555.cpp +++ b/src/lib/netlist/devices/nld_ne555.cpp @@ -98,11 +98,6 @@ namespace netlist connect(m_OUT, m_ROUT.N()); } - NETLIB_UPDATEI() - { - inputs(); - } - NETLIB_RESETI() { /* FIXME make resistances a parameter, properly model other variants */ @@ -234,7 +229,6 @@ namespace netlist // The reset on R_Base executed after NE555 reset will // overwrite values. NETLIB_RESETI() { A.reset(); } - //NETLIB_UPDATEI() {} private: NETLIB_SUB(NE555) A; }; diff --git a/src/lib/netlist/devices/nld_roms.cpp b/src/lib/netlist/devices/nld_roms.cpp index a921c932aa2..946707ad0ef 100644 --- a/src/lib/netlist/devices/nld_roms.cpp +++ b/src/lib/netlist/devices/nld_roms.cpp @@ -86,11 +86,6 @@ namespace netlist } } - NETLIB_UPDATEI() - { - ce<0>(); // only called during setup - } - state_var m_enabled; param_logic_t m_TE; object_array_t m_A; diff --git a/src/lib/netlist/devices/nld_schmitt.cpp b/src/lib/netlist/devices/nld_schmitt.cpp index 98075ee549c..5225bdcc139 100644 --- a/src/lib/netlist/devices/nld_schmitt.cpp +++ b/src/lib/netlist/devices/nld_schmitt.cpp @@ -85,11 +85,6 @@ namespace netlist m_RVO.set_G_V_I(plib::reciprocal(m_modacc.m_ROL()), m_modacc.m_VOL, nlconst::zero()); } - NETLIB_UPDATEI() - { - input(); - } - private: NETLIB_HANDLERI(input) { diff --git a/src/lib/netlist/devices/nld_tms4800.cpp b/src/lib/netlist/devices/nld_tms4800.cpp index 9ce94e518c5..3f9de696ea8 100644 --- a/src/lib/netlist/devices/nld_tms4800.cpp +++ b/src/lib/netlist/devices/nld_tms4800.cpp @@ -27,11 +27,6 @@ namespace netlist { } - NETLIB_UPDATEI() - { - inputs(); - } - friend class NETLIB_NAME(TMS4800_dip); private: // FIXME: timing! @@ -105,7 +100,6 @@ namespace netlist register_subalias("16", A.m_D[7]); } //NETLIB_RESETI() {} - //NETLIB_UPDATEI() {} private: NETLIB_SUB(TMS4800) A; diff --git a/src/lib/netlist/devices/nld_tristate.cpp b/src/lib/netlist/devices/nld_tristate.cpp index e5b7f4863ca..93dcbb4913d 100644 --- a/src/lib/netlist/devices/nld_tristate.cpp +++ b/src/lib/netlist/devices/nld_tristate.cpp @@ -24,11 +24,6 @@ namespace netlist { } - NETLIB_UPDATEI() - { - inputs(); - } - protected: object_array_t m_CEQ; object_array_t m_D; @@ -55,11 +50,6 @@ namespace netlist { } - NETLIB_UPDATEI() - { - inputs(); - } - protected: object_array_t m_CEQ; object_array_t m_D; diff --git a/src/lib/netlist/devices/nlid_proxy.h b/src/lib/netlist/devices/nlid_proxy.h index 664fcc3dc24..bdae6c1b851 100644 --- a/src/lib/netlist/devices/nlid_proxy.h +++ b/src/lib/netlist/devices/nlid_proxy.h @@ -70,11 +70,6 @@ namespace devices protected: //NETLIB_RESETI(); - NETLIB_UPDATEI() - { - input(); - } - private: NETLIB_HANDLERI(input); @@ -114,10 +109,6 @@ namespace devices protected: NETLIB_RESETI(); - NETLIB_UPDATEI() - { - input(); - } private: NETLIB_HANDLERI(input); diff --git a/src/lib/netlist/devices/nlid_system.h b/src/lib/netlist/devices/nlid_system.h index d8f1ec0b0b4..2a03a6c4289 100644 --- a/src/lib/netlist/devices/nlid_system.h +++ b/src/lib/netlist/devices/nlid_system.h @@ -28,12 +28,11 @@ namespace devices { NETLIB_CONSTRUCTOR(netlistparams) , m_use_deactivate(*this, "USE_DEACTIVATE", false) - , m_startup_strategy(*this, "STARTUP_STRATEGY", 1) + , m_startup_strategy(*this, "STARTUP_STRATEGY", 0) , m_mos_capmodel(*this, "DEFAULT_MOS_CAPMODEL", 2) , m_max_link_loops(*this, "MAX_LINK_RESOLVE_LOOPS", 100) { } - //NETLIB_UPDATEI() {} //NETLIB_RESETI() {} //NETLIB_UPDATE_PARAMI() { } public: @@ -66,11 +65,6 @@ namespace devices m_inc = netlist_time::from_fp(plib::reciprocal(m_freq()*nlconst::two())); } - NETLIB_UPDATEI() - { - fb(); - } - NETLIB_HANDLERI(fb) { m_Q.push(m_feedback() ^ 1, m_inc); @@ -119,11 +113,6 @@ namespace devices //NETLIB_RESETI(); //NETLIB_UPDATE_PARAMI() - NETLIB_UPDATEI() - { - fb(); - } - private: NETLIB_HANDLERI(fb) { @@ -192,11 +181,6 @@ namespace devices } - NETLIB_UPDATEI() - { - first(); - } - NETLIB_RESETI() { m_cnt = 0; @@ -261,7 +245,6 @@ namespace devices { } - //NETLIB_UPDATEI() {} NETLIB_RESETI() { m_Q.initial(0); } NETLIB_UPDATE_PARAMI() { @@ -286,7 +269,6 @@ namespace devices { } - //NETLIB_UPDATEI() {} NETLIB_RESETI() { for (auto &q : m_Q) q.initial(0); } NETLIB_UPDATE_PARAMI() { @@ -310,7 +292,6 @@ namespace devices { } - //NETLIB_UPDATEI() {} NETLIB_RESETI() { m_Q.initial(nlconst::zero()); } NETLIB_UPDATE_PARAMI() { m_Q.push(m_IN()); } @@ -330,7 +311,6 @@ namespace devices { } - //NETLIB_UPDATEI() {} NETLIB_UPDATE_PARAMI() { m_Q.push(nlconst::zero()); @@ -355,7 +335,6 @@ namespace devices protected: //NETLIB_RESETI() {} - //NETLIB_UPDATEI() {} private: NETLIB_HANDLERI(noop) @@ -397,11 +376,6 @@ namespace devices m_ROUT.set_G_V_I(plib::reciprocal(m_p_ROUT()),0,0); } - NETLIB_UPDATEI() - { - input(); - } - private: NETLIB_HANDLERI(input) { @@ -446,11 +420,6 @@ namespace devices //m_Q.initial(0.0); } - NETLIB_UPDATEI() - { - inputs(); - } - NETLIB_HANDLERI(inputs) { for (std::size_t i = 0; i < static_cast(m_N()); i++) @@ -508,11 +477,6 @@ namespace devices param_fp_t m_ROFF; private: - NETLIB_UPDATEI() - { - input(); - } - NETLIB_HANDLERI(input) { const netlist_sig_t state = m_I(); @@ -565,11 +529,6 @@ namespace devices //NETLIB_UPDATE_PARAMI(); private: - NETLIB_UPDATEI() - { - input(); - } - NETLIB_HANDLERI(input) { const netlist_sig_t state = m_I(); @@ -630,11 +589,6 @@ namespace devices m_last_state = 0; } - NETLIB_UPDATEI() - { - inputs(); - } - //NETLIB_UPDATE_PARAMI(); private: @@ -713,11 +667,6 @@ namespace devices } private: - NETLIB_UPDATEI() - { - input(); - } - NETLIB_HANDLERI(input) { nl_fptype val = m_dis.var()(m_mt.var()); diff --git a/src/lib/netlist/devices/nlid_truthtable.cpp b/src/lib/netlist/devices/nlid_truthtable.cpp index 9569cba465e..8614f949f77 100644 --- a/src/lib/netlist/devices/nlid_truthtable.cpp +++ b/src/lib/netlist/devices/nlid_truthtable.cpp @@ -78,12 +78,6 @@ namespace devices set_active_outputs(active_outputs); } - // update is only called during startup here ... - NETLIB_UPDATEI() - { - inputs(); - } - NETLIB_HANDLERI(inputs) { #if USE_TT_ALTERNATIVE diff --git a/src/lib/netlist/nl_base.cpp b/src/lib/netlist/nl_base.cpp index a949e8cf8b7..078236da474 100644 --- a/src/lib/netlist/nl_base.cpp +++ b/src/lib/netlist/nl_base.cpp @@ -304,9 +304,14 @@ namespace netlist // Currently analog input and logic input also // push their outputs to queue. + std::vector devices_called; log().verbose("Call update_param on all devices:"); for (auto & dev : m_devices) + { dev.second->update_param(); + if (!plib::container::contains(devices_called, dev.second.get())) + devices_called.push_back(dev.second.get()); + } // Step all devices once ! // @@ -319,57 +324,33 @@ namespace netlist { case 0: { - std::vector d; std::vector t; log().verbose("Using default startup strategy"); for (auto &n : m_nets) for (auto & term : n->core_terms()) - if (term->delegate().has_object()) + { + n->update_inputs(); // only used if USE_COPY_INSTEAD_OF_REFERENCE == 1 + if (!plib::container::contains(t, &term->delegate())) { - if (!plib::container::contains(t, &term->delegate())) - { - t.push_back(&term->delegate()); - term->run_delegate(); - } - // NOLINTNEXTLINE(cppcoreguidelines-pro-type-reinterpret-cast) - auto *dev = reinterpret_cast(term->delegate().object()); - if (!plib::container::contains(d, dev)) - d.push_back(dev); + t.push_back(&term->delegate()); + term->run_delegate(); } + // NOLINTNEXTLINE(cppcoreguidelines-pro-type-reinterpret-cast) + auto *dev = reinterpret_cast(term->delegate().object()); + if (!plib::container::contains(devices_called, dev)) + devices_called.push_back(dev); + } log().verbose("Devices not yet updated:"); for (auto &dev : m_devices) - if (!plib::container::contains(d, dev.second.get())) + if (!plib::container::contains(devices_called, dev.second.get())) { // FIXME: doesn't seem to be needed, use cases include // analog output devices. Check and remove - log().verbose("\t ...{1}", dev.second->name()); - dev.second->update(); + log().error("\t Device {1} not yet updated", dev.second->name()); + //dev.second->update(); } } break; - case 1: // brute force backward - { - log().verbose("Using brute force backward startup strategy"); - - for (auto &n : m_nets) // only used if USE_COPY_INSTEAD_OF_REFERENCE == 1 - n->update_inputs(); - - std::size_t i = m_devices.size(); - while (i>0) - m_devices[--i].second->update(); - - for (auto &n : m_nets) // only used if USE_COPY_INSTEAD_OF_REFERENCE == 1 - n->update_inputs(); - - } - break; - case 2: // brute force forward - { - log().verbose("Using brute force forward startup strategy"); - for (auto &d : m_devices) - d.second->update(); - } - break; } // the above may screw up m_active and the list diff --git a/src/lib/netlist/nl_base.h b/src/lib/netlist/nl_base.h index 18cb487510f..7e113214820 100644 --- a/src/lib/netlist/nl_base.h +++ b/src/lib/netlist/nl_base.h @@ -177,7 +177,6 @@ class NETLIB_NAME(name) : public delegator_t #define NETLIB_UPDATE_TERMINALSI() virtual void update_terminals() noexcept override #define NETLIB_HANDLERI(name) void name() noexcept -#define NETLIB_UPDATEI() virtual void update() noexcept override #define NETLIB_UPDATE_PARAMI() virtual void update_param() noexcept override #define NETLIB_RESETI() virtual void reset() override @@ -185,7 +184,11 @@ class NETLIB_NAME(name) : public delegator_t #define NETLIB_SUB_UPTR(ns, chip) device_arena::unique_ptr< ns :: nld_ ## chip > #define NETLIB_HANDLER(chip, name) void NETLIB_NAME(chip) :: name() noexcept + +#if 0 +#define NETLIB_UPDATEI() virtual void update() noexcept override #define NETLIB_UPDATE(chip) NETLIB_HANDLER(chip, update) +#endif #define NETLIB_RESET(chip) void NETLIB_NAME(chip) :: reset(void) @@ -1392,8 +1395,9 @@ namespace netlist }; stats_t * stats() const noexcept { return m_stats.get(); } - +#if 0 virtual void update() noexcept { } +#endif virtual void reset() { } protected: @@ -1441,7 +1445,6 @@ namespace netlist void connect(const detail::core_terminal_t &t1, const detail::core_terminal_t &t2); protected: - //NETLIB_UPDATEI() {} //NETLIB_UPDATE_TERMINALSI() { } private: @@ -1473,7 +1476,6 @@ namespace netlist protected: - //NETLIB_UPDATEI() {} //NETLIB_UPDATE_TERMINALSI() { } private: @@ -1803,12 +1805,6 @@ namespace netlist m_inc = netlist_time::from_fp(plib::reciprocal(m_freq()*nlconst::two())); } - NETLIB_UPDATEI() - { - // only called during start up. - // mainclock will step forced by main loop - } - public: logic_output_t m_Q; // NOLINT: needed in core netlist_time m_inc; // NOLINT: needed in core diff --git a/src/lib/netlist/nl_factory.cpp b/src/lib/netlist/nl_factory.cpp index 6018b2fa640..9026bbfb6b1 100644 --- a/src/lib/netlist/nl_factory.cpp +++ b/src/lib/netlist/nl_factory.cpp @@ -24,7 +24,6 @@ namespace factory { } protected: //NETLIB_RESETI() {} - //NETLIB_UPDATEI() {} }; element_t::element_t(const pstring &name, properties &&props) diff --git a/src/lib/netlist/nl_interface.h b/src/lib/netlist/nl_interface.h index d833a7bf0c8..57fffffada5 100644 --- a/src/lib/netlist/nl_interface.h +++ b/src/lib/netlist/nl_interface.h @@ -67,11 +67,6 @@ namespace netlist m_last = 0.0; } - NETLIB_UPDATEI() - { - in(); - } - NETLIB_HANDLERI(in) { const nl_fptype cur = m_in(); @@ -117,11 +112,6 @@ namespace netlist m_func(*this, cur); } - NETLIB_UPDATEI() - { - in(); - } - private: logic_input_t m_in; FUNC m_func; @@ -188,11 +178,6 @@ namespace netlist m_Q.net().toggle_and_push_to_queue(m_sample_time); } - NETLIB_UPDATEI() - { - feedback(); - } - public: /// \brief resolve parameter names to pointers /// diff --git a/src/lib/netlist/solver/nld_matrix_solver.h b/src/lib/netlist/solver/nld_matrix_solver.h index 233f12b650c..f8c454b2b5c 100644 --- a/src/lib/netlist/solver/nld_matrix_solver.h +++ b/src/lib/netlist/solver/nld_matrix_solver.h @@ -252,12 +252,6 @@ namespace solver m_Q_sync.net().toggle_and_push_to_queue(delay); } - // netdevice functions - NETLIB_UPDATEI() - { - fb_sync(); - } - NETLIB_HANDLERI(fb_sync) { PFDEBUG(printf("update\n");) diff --git a/src/lib/netlist/solver/nld_solver.h b/src/lib/netlist/solver/nld_solver.h index 640393dd776..315c1e81d3b 100644 --- a/src/lib/netlist/solver/nld_solver.h +++ b/src/lib/netlist/solver/nld_solver.h @@ -43,11 +43,6 @@ namespace devices solver::static_compile_container create_solver_code(solver::static_compile_target target); - NETLIB_UPDATEI() - { - fb_step(); - } - NETLIB_RESETI(); // NETLIB_UPDATE_PARAMI();