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.
This commit is contained in:
couriersud 2020-07-17 23:12:24 +02:00
parent 976212053c
commit f0d012c1f5
67 changed files with 40 additions and 526 deletions

View File

@ -142,7 +142,6 @@ namespace analog
NETLIB_IS_DYNAMIC(true) NETLIB_IS_DYNAMIC(true)
//NETLIB_RESETI(); //NETLIB_RESETI();
NETLIB_UPDATEI();
bjt_type qtype() const noexcept { return m_qtype; } bjt_type qtype() const noexcept { return m_qtype; }
bool is_qtype(bjt_type atype) const noexcept { return m_qtype == atype; } bool is_qtype(bjt_type atype) const noexcept { return m_qtype == atype; }
@ -194,10 +193,6 @@ namespace analog
} }
NETLIB_RESETI(); NETLIB_RESETI();
NETLIB_UPDATEI()
{
termhandler();
}
NETLIB_HANDLERI(termhandler) NETLIB_HANDLERI(termhandler)
{ {
auto *solv(m_RB.solver()); auto *solv(m_RB.solver());
@ -268,11 +263,6 @@ namespace analog
protected: protected:
NETLIB_RESETI(); NETLIB_RESETI();
NETLIB_UPDATEI()
{
termhandler();
}
NETLIB_HANDLERI(termhandler) NETLIB_HANDLERI(termhandler)
{ {
auto *solv(m_D_EB.solver()); auto *solv(m_D_EB.solver());
@ -302,15 +292,6 @@ namespace analog
}; };
// ----------------------------------------------------------------------------------------
// nld_Q
// ----------------------------------------------------------------------------------------
NETLIB_UPDATE(QBJT)
{
// netlist().solver()->schedule1();
}
// ---------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------
// nld_QBJT_switch // nld_QBJT_switch
// ---------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------

View File

@ -162,7 +162,6 @@ namespace analog
NETLIB_IS_DYNAMIC(true) NETLIB_IS_DYNAMIC(true)
//NETLIB_RESETI(); //NETLIB_RESETI();
//NETLIB_UPDATEI() {}
q_type qtype() const noexcept { return m_qtype; } q_type qtype() const noexcept { return m_qtype; }
bool is_qtype(q_type atype) const noexcept { return m_qtype == atype; } bool is_qtype(q_type atype) const noexcept { return m_qtype == atype; }
@ -332,10 +331,6 @@ namespace analog
#endif #endif
} }
NETLIB_UPDATEI()
{
termhandler();
}
NETLIB_HANDLERI(termhandler) NETLIB_HANDLERI(termhandler)
{ {
// FIXME: This should never be called // FIXME: This should never be called

View File

@ -183,11 +183,6 @@ namespace netlist
} }
NETLIB_UPDATEI()
{
supply();
}
NETLIB_HANDLERI(supply) NETLIB_HANDLERI(supply)
{ {
const nl_fptype cVt = nlconst::np_VT(nlconst::one()); // * m_n; const nl_fptype cVt = nlconst::np_VT(nlconst::one()); // * m_n;

View File

@ -29,26 +29,11 @@ namespace netlist
register_subalias("2", m_R.N()); register_subalias("2", m_R.N());
} }
NETLIB_RESETI(); NETLIB_RESETI()
NETLIB_UPDATEI();
NETLIB_UPDATE_PARAMI();
private:
analog::NETLIB_SUB(R_base) m_R;
param_logic_t m_POS;
};
NETLIB_RESET(switch1)
{ {
m_R.set_R(R_OFF); m_R.set_R(R_OFF);
} }
NETLIB_UPDATE_PARAMI()
NETLIB_UPDATE(switch1)
{
}
NETLIB_UPDATE_PARAM(switch1)
{ {
m_R.change_state([this]() m_R.change_state([this]()
{ {
@ -56,6 +41,11 @@ namespace netlist
}); });
} }
private:
analog::NETLIB_SUB(R_base) m_R;
param_logic_t m_POS;
};
// ---------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------
// SWITCH2 // SWITCH2
// ---------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------
@ -76,7 +66,6 @@ namespace netlist
} }
NETLIB_RESETI(); NETLIB_RESETI();
NETLIB_UPDATEI();
NETLIB_UPDATE_PARAMI(); NETLIB_UPDATE_PARAMI();
private: private:
@ -91,6 +80,7 @@ namespace netlist
m_R2.set_R(R_OFF); m_R2.set_R(R_OFF);
} }
#ifdef FIXMELATER
NETLIB_UPDATE(switch2) NETLIB_UPDATE(switch2)
{ {
if (!m_POS()) if (!m_POS())
@ -104,7 +94,7 @@ namespace netlist
m_R2.set_R(R_ON); m_R2.set_R(R_ON);
} }
} }
#endif
NETLIB_UPDATE_PARAM(switch2) NETLIB_UPDATE_PARAM(switch2)
{ {
// R1 and R2 are connected. However this net may be a rail net. // R1 and R2 are connected. However this net may be a rail net.

View File

@ -30,11 +30,6 @@ NETLIB_RESET(VCCS)
m_ON1.set_go_gt(-m_mult, nlconst::zero()); m_ON1.set_go_gt(-m_mult, nlconst::zero());
} }
NETLIB_UPDATE(VCCS)
{
termhandler();
}
NETLIB_HANDLER(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

View File

@ -57,7 +57,6 @@ namespace analog {
param_fp_t m_RI; param_fp_t m_RI;
protected: protected:
NETLIB_UPDATEI();
NETLIB_HANDLERI(termhandler); NETLIB_HANDLERI(termhandler);
NETLIB_UPDATE_PARAMI() NETLIB_UPDATE_PARAMI()
{ {
@ -194,10 +193,6 @@ namespace analog {
param_fp_t m_RO; param_fp_t m_RO;
private: private:
NETLIB_UPDATEI()
{
termhandler();
}
//NETLIB_UPDATE_PARAMI(); //NETLIB_UPDATE_PARAMI();
NETLIB_HANDLERI(termhandler) NETLIB_HANDLERI(termhandler)
{ {
@ -253,10 +248,6 @@ namespace analog {
param_fp_t m_RO; param_fp_t m_RO;
private: private:
NETLIB_UPDATEI()
{
termhandler();
}
//NETLIB_UPDATE_PARAMI(); //NETLIB_UPDATE_PARAMI();
NETLIB_HANDLERI(termhandler) NETLIB_HANDLERI(termhandler)

View File

@ -31,11 +31,6 @@ namespace analog
solv->solve_now(); solv->solve_now();
} }
NETLIB_UPDATE(twoterm)
{
termhandler();
}
NETLIB_HANDLER(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

View File

@ -89,7 +89,6 @@ namespace analog
public: public:
NETLIB_UPDATEI();
NETLIB_HANDLERI(termhandler); NETLIB_HANDLERI(termhandler);
solver::matrix_solver_t *solver() const noexcept; solver::matrix_solver_t *solver() const noexcept;
@ -221,7 +220,6 @@ namespace analog
protected: protected:
//NETLIB_UPDATEI() {}
NETLIB_RESETI() NETLIB_RESETI()
{ {
set_R(std::max(m_R(), exec().gmin())); set_R(std::max(m_R(), exec().gmin()));

View File

@ -60,11 +60,6 @@ namespace netlist
} }
} }
NETLIB_UPDATEI()
{
inputs();
}
friend class NETLIB_NAME(2102A_dip); friend class NETLIB_NAME(2102A_dip);
private: private:
object_array_t<logic_input_t, 10> m_A; object_array_t<logic_input_t, 10> m_A;
@ -106,7 +101,6 @@ namespace netlist
} }
//NETLIB_RESETI() {} //NETLIB_RESETI() {}
//NETLIB_UPDATEI() {}
private: private:
NETLIB_SUB(2102A) A; NETLIB_SUB(2102A) A;
}; };

View File

@ -59,10 +59,6 @@ namespace netlist
} }
} }
NETLIB_UPDATEI()
{
inputs();
}
friend class NETLIB_NAME(CD4006_dip); friend class NETLIB_NAME(CD4006_dip);
private: private:
logic_input_t m_CLOCK; logic_input_t m_CLOCK;
@ -95,7 +91,6 @@ namespace netlist
register_subalias("14", "A.VDD"); register_subalias("14", "A.VDD");
} }
//NETLIB_UPDATEI() {}
private: private:
NETLIB_SUB(CD4006) A; NETLIB_SUB(CD4006) A;
}; };

View File

@ -35,11 +35,6 @@ namespace netlist
m_nextD = 0; m_nextD = 0;
} }
NETLIB_UPDATEI()
{
inputs();
}
NETLIB_HANDLERI(inputs) NETLIB_HANDLERI(inputs)
{ {
const auto set(m_SET()); const auto set(m_SET());

View File

@ -37,11 +37,6 @@ namespace netlist
update_outputs(m_cnt); update_outputs(m_cnt);
} }
NETLIB_UPDATEI()
{
ip();
}
public: public:
void update_outputs(const unsigned cnt) noexcept void update_outputs(const unsigned cnt) noexcept
{ {
@ -106,11 +101,6 @@ namespace netlist
m_sub.m_IP.activate_hl(); m_sub.m_IP.activate_hl();
} }
NETLIB_UPDATEI()
{
inputs();
}
private: private:
NETLIB_SUB(CD4020_sub) m_sub; NETLIB_SUB(CD4020_sub) m_sub;
logic_input_t m_RESET; logic_input_t m_RESET;

View File

@ -46,11 +46,6 @@ namespace netlist
m_R.set_R(plib::reciprocal(exec().gmin())); m_R.set_R(plib::reciprocal(exec().gmin()));
} }
NETLIB_UPDATEI()
{
control();
}
private: private:
NETLIB_HANDLERI(control) NETLIB_HANDLERI(control)
{ {
@ -108,10 +103,6 @@ namespace netlist
// FIXME: is ROFF correct? // FIXME: is ROFF correct?
} }
NETLIB_UPDATEI()
{
}
NETLIB_UPDATE_TERMINALSI() NETLIB_UPDATE_TERMINALSI()
{ {
nl_fptype sup = (m_supply.VCC().Q_Analog() - m_supply.GND().Q_Analog()); nl_fptype sup = (m_supply.VCC().Q_Analog() - m_supply.GND().Q_Analog());

View File

@ -41,11 +41,6 @@ namespace netlist { namespace devices {
, NLTIME_FROM_NS(1)); , NLTIME_FROM_NS(1));
} }
NETLIB_UPDATEI()
{
inputs();
}
private: private:
analog::NETLIB_SUB(R_base) m_R; analog::NETLIB_SUB(R_base) m_R;

View File

@ -41,11 +41,6 @@ namespace netlist
//m_QQ.initial(1); //m_QQ.initial(1);
} }
NETLIB_UPDATEI()
{
other();
}
NETLIB_HANDLERI(other) NETLIB_HANDLERI(other)
{ {
if (!m_clrQ()) if (!m_clrQ())

View File

@ -70,11 +70,6 @@ namespace netlist
m_QQ.push(m_q ^ 1, NLTIME_FROM_NS(20)); // FIXME: timing m_QQ.push(m_q ^ 1, NLTIME_FROM_NS(20)); // FIXME: timing
} }
NETLIB_UPDATEI()
{
inputs();
}
public: public:
logic_input_t m_CLK; logic_input_t m_CLK;
logic_input_t m_J; logic_input_t m_J;

View File

@ -127,11 +127,6 @@ namespace netlist
m_last_trig = m_trig; m_last_trig = m_trig;
} }
NETLIB_UPDATEI()
{
cv();
}
NETLIB_HANDLERI(cv) NETLIB_HANDLERI(cv)
{ {
if (m_state == 1) if (m_state == 1)

View File

@ -45,11 +45,9 @@ namespace netlist
} }
private: private:
NETLIB_RESETI() //NETLIB_RESETI() {}
{
}
NETLIB_UPDATEI() NETLIB_UPDATE_PARAMI()
{ {
// this one is only called during startup. Ensure all outputs // this one is only called during startup. Ensure all outputs
// are in a consistent state. // are in a consistent state.

View File

@ -41,11 +41,6 @@ namespace devices
sub(); sub();
} }
NETLIB_UPDATEI()
{
other();
}
NETLIB_HANDLERI(sub) NETLIB_HANDLERI(sub)
{ {
constexpr const std::array<netlist_time, 2> delay = { NLTIME_FROM_NS(23), NLTIME_FROM_NS(18) }; constexpr const std::array<netlist_time, 2> delay = { NLTIME_FROM_NS(23), NLTIME_FROM_NS(18) };

View File

@ -64,11 +64,6 @@ namespace netlist
m_last_CLK = 0; m_last_CLK = 0;
} }
NETLIB_UPDATEI()
{
inputs();
}
friend class NETLIB_NAME(74164_dip); friend class NETLIB_NAME(74164_dip);
private: private:
logic_input_t m_A; logic_input_t m_A;

View File

@ -66,11 +66,6 @@ namespace netlist
} }
NETLIB_UPDATEI()
{
inputs();
}
friend class NETLIB_NAME(74165_dip); friend class NETLIB_NAME(74165_dip);
private: private:
object_array_t<logic_input_t, 8> m_DATA; object_array_t<logic_input_t, 8> m_DATA;
@ -110,7 +105,6 @@ namespace netlist
register_subalias("16", "A.VCC"); register_subalias("16", "A.VCC");
} }
//NETLIB_RESETI() {} //NETLIB_RESETI() {}
//NETLIB_UPDATEI() {}
private: private:
NETLIB_SUB(74165) A; NETLIB_SUB(74165) A;
}; };

View File

@ -84,11 +84,6 @@ namespace netlist
m_QH.push(qh, delay); //FIXME m_QH.push(qh, delay); //FIXME
} }
NETLIB_UPDATEI()
{
inputs();
}
friend class NETLIB_NAME(74166_dip); friend class NETLIB_NAME(74166_dip);
private: private:
object_array_t<logic_input_t, 8> m_DATA; object_array_t<logic_input_t, 8> m_DATA;
@ -129,7 +124,6 @@ namespace netlist
register_subalias("16", "A.VCC"); register_subalias("16", "A.VCC");
} }
//NETLIB_RESETI() {} //NETLIB_RESETI() {}
//NETLIB_UPDATEI() {}
private: private:
NETLIB_SUB(74166) A; NETLIB_SUB(74166) A;
}; };

View File

@ -54,11 +54,6 @@ namespace devices
} }
} }
NETLIB_UPDATEI()
{
other();
}
NETLIB_HANDLERI(clk) NETLIB_HANDLERI(clk)
{ {
if (m_clrq) if (m_clrq)
@ -115,7 +110,6 @@ namespace devices
register_subalias("16", "A.VCC"); register_subalias("16", "A.VCC");
} }
//NETLIB_RESETI() {} //NETLIB_RESETI() {}
//NETLIB_UPDATEI() {}
private: private:
NETLIB_SUB(74174) A; NETLIB_SUB(74174) A;
}; };

View File

@ -60,11 +60,6 @@ namespace netlist
} }
} }
NETLIB_UPDATEI()
{
other();
}
NETLIB_HANDLERI(clk) NETLIB_HANDLERI(clk)
{ {
if (m_CLRQ()) if (m_CLRQ())
@ -120,7 +115,6 @@ namespace netlist
register_subalias("16", "A.VCC"); register_subalias("16", "A.VCC");
} }
//NETLIB_RESETI() {} //NETLIB_RESETI() {}
//NETLIB_UPDATEI() {}
private: private:
NETLIB_SUB(74175) A; NETLIB_SUB(74175) A;
}; };

View File

@ -54,11 +54,6 @@ namespace netlist
m_last_CD = 0; m_last_CD = 0;
} }
NETLIB_UPDATEI()
{
inputs();
}
friend class NETLIB_NAME(74192_dip); friend class NETLIB_NAME(74192_dip);
private: private:
logic_input_t m_CLEAR; logic_input_t m_CLEAR;
@ -160,7 +155,6 @@ namespace netlist
register_subalias("16", "A.VCC"); register_subalias("16", "A.VCC");
} }
//NETLIB_RESETI() {} //NETLIB_RESETI() {}
//NETLIB_UPDATEI() {}
private: private:
NETLIB_SUB(74192) A; NETLIB_SUB(74192) A;
}; };

View File

@ -53,10 +53,6 @@ namespace netlist
m_last_CU = 0; m_last_CU = 0;
m_last_CD = 0; m_last_CD = 0;
} }
NETLIB_UPDATEI()
{
inputs();
}
friend class NETLIB_NAME(74193_dip); friend class NETLIB_NAME(74193_dip);
private: private:
@ -148,7 +144,6 @@ namespace netlist
register_subalias("16", "A.VCC"); register_subalias("16", "A.VCC");
} }
//NETLIB_RESETI() {} //NETLIB_RESETI() {}
//NETLIB_UPDATEI() {}
private: private:
NETLIB_SUB(74193) A; NETLIB_SUB(74193) A;
}; };

View File

@ -36,10 +36,6 @@ namespace netlist
m_last_CLK = 0; m_last_CLK = 0;
m_last_Q = 0; m_last_Q = 0;
} }
NETLIB_UPDATEI()
{
inputs();
}
friend class NETLIB_NAME(74194_dip); friend class NETLIB_NAME(74194_dip);
private: private:
@ -124,7 +120,6 @@ namespace netlist
} }
//NETLIB_RESETI() {} //NETLIB_RESETI() {}
//NETLIB_UPDATEI() {}
private: private:
NETLIB_SUB(74194) A; NETLIB_SUB(74194) A;
}; };

View File

@ -31,11 +31,6 @@ namespace netlist
{ {
} }
NETLIB_UPDATEI()
{
inputs();
}
friend class NETLIB_NAME(74365_dip); friend class NETLIB_NAME(74365_dip);
private: private:
NETLIB_HANDLERI(inputs) NETLIB_HANDLERI(inputs)
@ -83,7 +78,6 @@ namespace netlist
register_subalias("16", "A.VCC"); register_subalias("16", "A.VCC");
} }
//NETLIB_RESETI() {} //NETLIB_RESETI() {}
//NETLIB_UPDATEI() {}
private: private:
NETLIB_SUB(74365) A; NETLIB_SUB(74365) A;
}; };

View File

@ -31,10 +31,6 @@ namespace netlist
NETLIB_RESETI() NETLIB_RESETI()
{ {
} }
NETLIB_UPDATEI()
{
inputs();
}
private: private:
NETLIB_HANDLERI(inputs) NETLIB_HANDLERI(inputs)

View File

@ -33,11 +33,6 @@ namespace netlist
m_cnt = 0; m_cnt = 0;
} }
NETLIB_UPDATEI()
{
inputs();
}
NETLIB_HANDLERI(inputs) NETLIB_HANDLERI(inputs)
{ {
netlist_sig_t last_cp = m_cp; netlist_sig_t last_cp = m_cp;
@ -103,7 +98,6 @@ namespace netlist
connect("A.GND", "B.GND"); connect("A.GND", "B.GND");
connect("A.VCC", "B.VCC"); connect("A.VCC", "B.VCC");
} }
//NETLIB_UPDATEI() {}
//NETLIB_RESETI() {} //NETLIB_RESETI() {}
private: private:

View File

@ -30,11 +30,6 @@ namespace devices
} }
private: private:
NETLIB_UPDATEI()
{
inputs();
}
NETLIB_RESETI() NETLIB_RESETI()
{ {
m_val = 0; m_val = 0;
@ -99,7 +94,6 @@ namespace devices
register_subalias("16", "A.VCC"); register_subalias("16", "A.VCC");
} }
//NETLIB_RESETI() {} //NETLIB_RESETI() {}
//NETLIB_UPDATEI() {}
private: private:
NETLIB_SUB(7442) A; NETLIB_SUB(7442) A;
}; };

View File

@ -35,10 +35,6 @@ namespace netlist
{ {
m_state = 0; m_state = 0;
} }
NETLIB_UPDATEI()
{
inputs();
}
friend class NETLIB_NAME(7448_dip); friend class NETLIB_NAME(7448_dip);
private: private:

View File

@ -28,10 +28,6 @@ namespace netlist
} }
//NETLIB_RESETI(); //NETLIB_RESETI();
NETLIB_UPDATEI()
{
inputs();
}
public: public:
NETLIB_HANDLERI(inputs) NETLIB_HANDLERI(inputs)

View File

@ -32,11 +32,6 @@ namespace netlist
m_last_CLK = 0; m_last_CLK = 0;
} }
NETLIB_UPDATEI()
{
inputs();
}
public: public:
NETLIB_HANDLERI(inputs) NETLIB_HANDLERI(inputs)
{ {

View File

@ -38,11 +38,6 @@ namespace netlist
m_nextD = 0; m_nextD = 0;
} }
NETLIB_UPDATEI()
{
inputs();
}
NETLIB_HANDLERI(clk) NETLIB_HANDLERI(clk)
{ {
newstate(m_nextD, !m_nextD); newstate(m_nextD, !m_nextD);

View File

@ -30,10 +30,6 @@ namespace netlist
{ {
m_last_Q = 0; m_last_Q = 0;
} }
NETLIB_UPDATEI()
{
inputs();
}
NETLIB_HANDLERI(inputs) NETLIB_HANDLERI(inputs)
{ {
@ -98,11 +94,6 @@ namespace netlist
m_last_Q = 0; m_last_Q = 0;
} }
NETLIB_UPDATEI()
{
inputs();
}
NETLIB_HANDLERI(inputs) NETLIB_HANDLERI(inputs)
{ {
unsigned start_q = m_last_Q; unsigned start_q = m_last_Q;
@ -179,7 +170,6 @@ namespace netlist
register_subalias("16", A.m_Q[0]); register_subalias("16", A.m_Q[0]);
} }
//NETLIB_RESETI() {} //NETLIB_RESETI() {}
//NETLIB_UPDATEI() {}
private: private:
NETLIB_SUB(7475) A; NETLIB_SUB(7475) A;
}; };
@ -206,7 +196,6 @@ namespace netlist
register_subalias("14", A.m_Q[0]); register_subalias("14", A.m_Q[0]);
} }
//NETLIB_RESETI() {} //NETLIB_RESETI() {}
//NETLIB_UPDATEI() {}
private: private:
NETLIB_SUB(7477) A; NETLIB_SUB(7477) A;
}; };

View File

@ -40,11 +40,6 @@ namespace netlist
m_lastr = 0; m_lastr = 0;
} }
NETLIB_UPDATEI()
{
c0();
}
friend class NETLIB_NAME(7483_dip); friend class NETLIB_NAME(7483_dip);
private: private:
NETLIB_HANDLERI(c0) NETLIB_HANDLERI(c0)
@ -121,7 +116,6 @@ namespace netlist
register_subalias("16", A.m_B4); register_subalias("16", A.m_B4);
} }
//NETLIB_RESETI() {} //NETLIB_RESETI() {}
//NETLIB_UPDATEI() {}
private: private:
NETLIB_SUB(7483) A; NETLIB_SUB(7483) A;
}; };

View File

@ -27,11 +27,6 @@ namespace netlist
{ {
} }
NETLIB_UPDATEI()
{
inputs();
}
void update_outputs(unsigned gt, unsigned lt, unsigned eq); void update_outputs(unsigned gt, unsigned lt, unsigned eq);
friend class NETLIB_NAME(7485_dip); friend class NETLIB_NAME(7485_dip);
@ -103,7 +98,6 @@ namespace netlist
} }
//NETLIB_RESETI() {} //NETLIB_RESETI() {}
//NETLIB_UPDATEI() {}
private: private:
NETLIB_SUB(7485) A; NETLIB_SUB(7485) A;
}; };

View File

@ -39,11 +39,6 @@ namespace devices
} }
private: private:
NETLIB_UPDATEI()
{
inputs();
}
NETLIB_HANDLERI(inputs) NETLIB_HANDLERI(inputs)
{ {
const netlist_sig_t new_A = m_A(); const netlist_sig_t new_A = m_A();
@ -123,7 +118,6 @@ namespace devices
register_subalias("14", "A.A"); register_subalias("14", "A.A");
} }
//NETLIB_RESETI() {} //NETLIB_RESETI() {}
//NETLIB_UPDATEI() {}
private: private:
NETLIB_SUB(7490) A; NETLIB_SUB(7490) A;
}; };

View File

@ -37,10 +37,6 @@ namespace devices
} }
private: private:
NETLIB_UPDATEI()
{
inputs();
}
NETLIB_HANDLERI(inputs) NETLIB_HANDLERI(inputs)
{ {
@ -116,7 +112,6 @@ namespace devices
register_subalias("14", "A.A"); register_subalias("14", "A.A");
} }
//NETLIB_RESETI() {} //NETLIB_RESETI() {}
//NETLIB_UPDATEI() {}
private: private:
NETLIB_SUB(7492) A; NETLIB_SUB(7492) A;
}; };

View File

@ -102,11 +102,6 @@ namespace netlist
m_CLKB.set_state(logic_t::STATE_INP_HL); m_CLKB.set_state(logic_t::STATE_INP_HL);
} }
NETLIB_UPDATEI()
{
inputs();
}
NETLIB_HANDLERI(inputs) NETLIB_HANDLERI(inputs)
{ {
if (!(m_R1() && m_R2())) if (!(m_R1() && m_R2()))
@ -177,7 +172,6 @@ namespace netlist
register_subalias("14", "A.CLKA"); register_subalias("14", "A.CLKA");
} }
//NETLIB_RESETI() {} //NETLIB_RESETI() {}
//NETLIB_UPDATEI() {}
private: private:
NETLIB_SUB(7493) A; NETLIB_SUB(7493) A;
}; };

View File

@ -48,11 +48,6 @@ namespace netlist
m_lastclock = 0; m_lastclock = 0;
} }
NETLIB_UPDATEI()
{
inputs();
}
NETLIB_HANDLERI(noop) { } NETLIB_HANDLERI(noop) { }
NETLIB_HANDLERI(unity) NETLIB_HANDLERI(unity)
@ -170,7 +165,6 @@ namespace netlist
register_subalias("16", "A.VCC"); register_subalias("16", "A.VCC");
} }
//NETLIB_RESETI() {} //NETLIB_RESETI() {}
//NETLIB_UPDATEI() {}
private: private:
NETLIB_SUB(7497) A; NETLIB_SUB(7497) A;
}; };

View File

@ -65,11 +65,6 @@ namespace netlist
m_inc = netlist_time::zero(); m_inc = netlist_time::zero();
} }
NETLIB_UPDATEI()
{
fb();
}
public: public:
logic_input_t m_FB; logic_input_t m_FB;
logic_output_t m_Y; logic_output_t m_Y;
@ -120,11 +115,6 @@ namespace netlist
m_clock.reset(); m_clock.reset();
} }
NETLIB_UPDATEI()
{
inputs();
}
NETLIB_UPDATE_PARAMI() NETLIB_UPDATE_PARAMI()
{ {
/* update param may be called from anywhere, update_dev(time) is not a good idea */ /* 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); register_subalias("14", m_B.m_RNG);
} }
//NETLIB_UPDATEI() {}
NETLIB_RESETI() NETLIB_RESETI()
{ {

View File

@ -30,10 +30,6 @@ namespace netlist
{ {
m_last_O = 0; m_last_O = 0;
} }
NETLIB_UPDATEI()
{
inputs();
}
friend class NETLIB_NAME(82S115_dip); friend class NETLIB_NAME(82S115_dip);
private: private:
@ -114,7 +110,6 @@ namespace netlist
register_subalias("24", "A.VCC"); register_subalias("24", "A.VCC");
} }
//NETLIB_RESETI() {} //NETLIB_RESETI() {}
//NETLIB_UPDATEI() {}
private: private:
NETLIB_SUB(82S115) A; NETLIB_SUB(82S115) A;
}; };

View File

@ -38,11 +38,6 @@ namespace netlist
m_addr = 0; m_addr = 0;
m_enq = 0; m_enq = 0;
} }
NETLIB_UPDATEI()
{
inputs();
}
friend class NETLIB_NAME(82S16_dip); friend class NETLIB_NAME(82S16_dip);
private: private:
// FIXME: timing! // FIXME: timing!
@ -137,7 +132,6 @@ namespace netlist
register_subalias("16", "A.VCC"); register_subalias("16", "A.VCC");
} }
//NETLIB_RESETI() {} //NETLIB_RESETI() {}
//NETLIB_UPDATEI() {}
private: private:
NETLIB_SUB(82S16) A; NETLIB_SUB(82S16) A;
}; };

View File

@ -69,11 +69,6 @@ namespace netlist
m_RC.push(m_ent && (m_cnt == D::MAXCNT::value), D::tRC::value(0)); m_RC.push(m_ent && (m_cnt == D::MAXCNT::value), D::tRC::value(0));
} }
NETLIB_UPDATEI()
{
other();
}
NETLIB_HANDLERI(clk) NETLIB_HANDLERI(clk)
{ {
if (!D::ASYNC::value && !m_CLRQ()) if (!D::ASYNC::value && !m_CLRQ())

View File

@ -25,11 +25,6 @@ namespace netlist
{ {
} }
NETLIB_UPDATEI()
{
inputs();
}
// FIXME: Timing // FIXME: Timing
NETLIB_HANDLERI(inputs); NETLIB_HANDLERI(inputs);
@ -76,11 +71,6 @@ namespace netlist
} }
NETLIB_UPDATEI()
{
inputs();
}
friend class NETLIB_NAME(9322_dip); friend class NETLIB_NAME(9322_dip);
public: public:
logic_input_t m_SELECT; logic_input_t m_SELECT;
@ -136,7 +126,6 @@ namespace netlist
} }
//NETLIB_RESETI() {} //NETLIB_RESETI() {}
//NETLIB_UPDATEI() {}
private: private:
NETLIB_SUB(9322) A; NETLIB_SUB(9322) A;
}; };

View File

@ -23,11 +23,6 @@ namespace netlist
{ {
} }
NETLIB_UPDATEI()
{
inputs();
}
public: public:
void shift() noexcept void shift() noexcept
{ {
@ -97,11 +92,6 @@ namespace netlist
m_last_CP = 0; m_last_CP = 0;
} }
NETLIB_UPDATEI()
{
cp();
}
friend class NETLIB_NAME(AM2847_dip); friend class NETLIB_NAME(AM2847_dip);
private: private:
NETLIB_HANDLERI(cp) NETLIB_HANDLERI(cp)
@ -148,7 +138,6 @@ namespace netlist
register_subalias("16", "A.VSS"); register_subalias("16", "A.VSS");
} }
//NETLIB_RESETI() {} //NETLIB_RESETI() {}
//NETLIB_UPDATEI() {}
private: private:
NETLIB_SUB(AM2847) A; NETLIB_SUB(AM2847) A;
}; };

View File

@ -38,11 +38,6 @@ namespace netlist
m_last_Q = 0; m_last_Q = 0;
} }
NETLIB_UPDATEI()
{
inputs();
}
friend class NETLIB_NAME(9314_dip); friend class NETLIB_NAME(9314_dip);
private: private:
NETLIB_HANDLERI(inputs) NETLIB_HANDLERI(inputs)

View File

@ -38,11 +38,6 @@ namespace netlist
m_last_Q = 0; m_last_Q = 0;
} }
NETLIB_UPDATEI()
{
inputs();
}
friend class NETLIB_NAME(9334_dip); friend class NETLIB_NAME(9334_dip);
private: private:
NETLIB_HANDLERI(inputs) NETLIB_HANDLERI(inputs)
@ -150,7 +145,6 @@ namespace netlist
} }
//NETLIB_RESETI() {} //NETLIB_RESETI() {}
//NETLIB_UPDATEI() {}
private: private:
NETLIB_SUB(9334) A; NETLIB_SUB(9334) A;
}; };

View File

@ -28,11 +28,6 @@ namespace netlist
m_QQ.initial(1); m_QQ.initial(1);
} }
NETLIB_UPDATEI()
{
inputs();
}
private: private:
NETLIB_HANDLERI(inputs) NETLIB_HANDLERI(inputs)
{ {
@ -73,11 +68,6 @@ namespace netlist
//m_Q.initial(0); //m_Q.initial(0);
} }
NETLIB_UPDATEI()
{
input();
}
private: private:
NETLIB_HANDLERI(input) NETLIB_HANDLERI(input)
{ {

View File

@ -53,11 +53,6 @@ namespace netlist
m_write_thread.join(); m_write_thread.join();
} }
NETLIB_UPDATEI()
{
input();
}
NETLIB_HANDLERI(input) NETLIB_HANDLERI(input)
{ {
log_value(static_cast<nl_fptype>(m_I())); log_value(static_cast<nl_fptype>(m_I()));
@ -132,11 +127,6 @@ namespace netlist
m_I.set_delegate(nldelegate(&NETLIB_NAME(logD)::input, this)); m_I.set_delegate(nldelegate(&NETLIB_NAME(logD)::input, this));
} }
NETLIB_UPDATEI()
{
input();
}
NETLIB_HANDLERI(input) NETLIB_HANDLERI(input)
{ {
log_value(static_cast<nl_fptype>(m_I() - m_I2())); log_value(static_cast<nl_fptype>(m_I() - m_I2()));

View File

@ -50,11 +50,6 @@ namespace netlist
m_shift = 0x1ffff; m_shift = 0x1ffff;
} }
NETLIB_UPDATEI()
{
inputs();
}
NETLIB_UPDATE_PARAMI() NETLIB_UPDATE_PARAMI()
{ {
m_inc = netlist_time::from_fp(plib::reciprocal(m_FREQ())); m_inc = netlist_time::from_fp(plib::reciprocal(m_FREQ()));

View File

@ -98,11 +98,6 @@ namespace netlist
connect(m_OUT, m_ROUT.N()); connect(m_OUT, m_ROUT.N());
} }
NETLIB_UPDATEI()
{
inputs();
}
NETLIB_RESETI() NETLIB_RESETI()
{ {
/* FIXME make resistances a parameter, properly model other variants */ /* 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 // The reset on R_Base executed after NE555 reset will
// overwrite values. // overwrite values.
NETLIB_RESETI() { A.reset(); } NETLIB_RESETI() { A.reset(); }
//NETLIB_UPDATEI() {}
private: private:
NETLIB_SUB(NE555) A; NETLIB_SUB(NE555) A;
}; };

View File

@ -86,11 +86,6 @@ namespace netlist
} }
} }
NETLIB_UPDATEI()
{
ce<0>(); // only called during setup
}
state_var<bool> m_enabled; state_var<bool> m_enabled;
param_logic_t m_TE; param_logic_t m_TE;
object_array_t<logic_input_t, D::address_width::value> m_A; object_array_t<logic_input_t, D::address_width::value> m_A;

View File

@ -85,11 +85,6 @@ namespace netlist
m_RVO.set_G_V_I(plib::reciprocal(m_modacc.m_ROL()), m_modacc.m_VOL, nlconst::zero()); m_RVO.set_G_V_I(plib::reciprocal(m_modacc.m_ROL()), m_modacc.m_VOL, nlconst::zero());
} }
NETLIB_UPDATEI()
{
input();
}
private: private:
NETLIB_HANDLERI(input) NETLIB_HANDLERI(input)
{ {

View File

@ -27,11 +27,6 @@ namespace netlist
{ {
} }
NETLIB_UPDATEI()
{
inputs();
}
friend class NETLIB_NAME(TMS4800_dip); friend class NETLIB_NAME(TMS4800_dip);
private: private:
// FIXME: timing! // FIXME: timing!
@ -105,7 +100,6 @@ namespace netlist
register_subalias("16", A.m_D[7]); register_subalias("16", A.m_D[7]);
} }
//NETLIB_RESETI() {} //NETLIB_RESETI() {}
//NETLIB_UPDATEI() {}
private: private:
NETLIB_SUB(TMS4800) A; NETLIB_SUB(TMS4800) A;

View File

@ -24,11 +24,6 @@ namespace netlist
{ {
} }
NETLIB_UPDATEI()
{
inputs();
}
protected: protected:
object_array_t<logic_input_t, 2> m_CEQ; object_array_t<logic_input_t, 2> m_CEQ;
object_array_t<logic_input_t, 2> m_D; object_array_t<logic_input_t, 2> m_D;
@ -55,11 +50,6 @@ namespace netlist
{ {
} }
NETLIB_UPDATEI()
{
inputs();
}
protected: protected:
object_array_t<logic_input_t, 3> m_CEQ; object_array_t<logic_input_t, 3> m_CEQ;
object_array_t<logic_input_t, 3> m_D; object_array_t<logic_input_t, 3> m_D;

View File

@ -70,11 +70,6 @@ namespace devices
protected: protected:
//NETLIB_RESETI(); //NETLIB_RESETI();
NETLIB_UPDATEI()
{
input();
}
private: private:
NETLIB_HANDLERI(input); NETLIB_HANDLERI(input);
@ -114,10 +109,6 @@ namespace devices
protected: protected:
NETLIB_RESETI(); NETLIB_RESETI();
NETLIB_UPDATEI()
{
input();
}
private: private:
NETLIB_HANDLERI(input); NETLIB_HANDLERI(input);

View File

@ -28,12 +28,11 @@ namespace devices
{ {
NETLIB_CONSTRUCTOR(netlistparams) NETLIB_CONSTRUCTOR(netlistparams)
, m_use_deactivate(*this, "USE_DEACTIVATE", false) , 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_mos_capmodel(*this, "DEFAULT_MOS_CAPMODEL", 2)
, m_max_link_loops(*this, "MAX_LINK_RESOLVE_LOOPS", 100) , m_max_link_loops(*this, "MAX_LINK_RESOLVE_LOOPS", 100)
{ {
} }
//NETLIB_UPDATEI() {}
//NETLIB_RESETI() {} //NETLIB_RESETI() {}
//NETLIB_UPDATE_PARAMI() { } //NETLIB_UPDATE_PARAMI() { }
public: public:
@ -66,11 +65,6 @@ namespace devices
m_inc = netlist_time::from_fp(plib::reciprocal(m_freq()*nlconst::two())); m_inc = netlist_time::from_fp(plib::reciprocal(m_freq()*nlconst::two()));
} }
NETLIB_UPDATEI()
{
fb();
}
NETLIB_HANDLERI(fb) NETLIB_HANDLERI(fb)
{ {
m_Q.push(m_feedback() ^ 1, m_inc); m_Q.push(m_feedback() ^ 1, m_inc);
@ -119,11 +113,6 @@ namespace devices
//NETLIB_RESETI(); //NETLIB_RESETI();
//NETLIB_UPDATE_PARAMI() //NETLIB_UPDATE_PARAMI()
NETLIB_UPDATEI()
{
fb();
}
private: private:
NETLIB_HANDLERI(fb) NETLIB_HANDLERI(fb)
{ {
@ -192,11 +181,6 @@ namespace devices
} }
NETLIB_UPDATEI()
{
first();
}
NETLIB_RESETI() NETLIB_RESETI()
{ {
m_cnt = 0; m_cnt = 0;
@ -261,7 +245,6 @@ namespace devices
{ {
} }
//NETLIB_UPDATEI() {}
NETLIB_RESETI() { m_Q.initial(0); } NETLIB_RESETI() { m_Q.initial(0); }
NETLIB_UPDATE_PARAMI() NETLIB_UPDATE_PARAMI()
{ {
@ -286,7 +269,6 @@ namespace devices
{ {
} }
//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 +292,6 @@ namespace devices
{ {
} }
//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()); }
@ -330,7 +311,6 @@ namespace devices
{ {
} }
//NETLIB_UPDATEI() {}
NETLIB_UPDATE_PARAMI() NETLIB_UPDATE_PARAMI()
{ {
m_Q.push(nlconst::zero()); m_Q.push(nlconst::zero());
@ -355,7 +335,6 @@ namespace devices
protected: protected:
//NETLIB_RESETI() {} //NETLIB_RESETI() {}
//NETLIB_UPDATEI() {}
private: private:
NETLIB_HANDLERI(noop) NETLIB_HANDLERI(noop)
@ -397,11 +376,6 @@ namespace devices
m_ROUT.set_G_V_I(plib::reciprocal(m_p_ROUT()),0,0); m_ROUT.set_G_V_I(plib::reciprocal(m_p_ROUT()),0,0);
} }
NETLIB_UPDATEI()
{
input();
}
private: private:
NETLIB_HANDLERI(input) NETLIB_HANDLERI(input)
{ {
@ -446,11 +420,6 @@ namespace devices
//m_Q.initial(0.0); //m_Q.initial(0.0);
} }
NETLIB_UPDATEI()
{
inputs();
}
NETLIB_HANDLERI(inputs) NETLIB_HANDLERI(inputs)
{ {
for (std::size_t i = 0; i < static_cast<unsigned>(m_N()); i++) for (std::size_t i = 0; i < static_cast<unsigned>(m_N()); i++)
@ -508,11 +477,6 @@ namespace devices
param_fp_t m_ROFF; param_fp_t m_ROFF;
private: private:
NETLIB_UPDATEI()
{
input();
}
NETLIB_HANDLERI(input) NETLIB_HANDLERI(input)
{ {
const netlist_sig_t state = m_I(); const netlist_sig_t state = m_I();
@ -565,11 +529,6 @@ namespace devices
//NETLIB_UPDATE_PARAMI(); //NETLIB_UPDATE_PARAMI();
private: private:
NETLIB_UPDATEI()
{
input();
}
NETLIB_HANDLERI(input) NETLIB_HANDLERI(input)
{ {
const netlist_sig_t state = m_I(); const netlist_sig_t state = m_I();
@ -630,11 +589,6 @@ namespace devices
m_last_state = 0; m_last_state = 0;
} }
NETLIB_UPDATEI()
{
inputs();
}
//NETLIB_UPDATE_PARAMI(); //NETLIB_UPDATE_PARAMI();
private: private:
@ -713,11 +667,6 @@ namespace devices
} }
private: private:
NETLIB_UPDATEI()
{
input();
}
NETLIB_HANDLERI(input) NETLIB_HANDLERI(input)
{ {
nl_fptype val = m_dis.var()(m_mt.var()); nl_fptype val = m_dis.var()(m_mt.var());

View File

@ -78,12 +78,6 @@ namespace devices
set_active_outputs(active_outputs); set_active_outputs(active_outputs);
} }
// update is only called during startup here ...
NETLIB_UPDATEI()
{
inputs();
}
NETLIB_HANDLERI(inputs) NETLIB_HANDLERI(inputs)
{ {
#if USE_TT_ALTERNATIVE #if USE_TT_ALTERNATIVE

View File

@ -304,9 +304,14 @@ namespace netlist
// Currently analog input and logic input also // Currently analog input and logic input also
// push their outputs to queue. // push their outputs to queue.
std::vector<core_device_t *> devices_called;
log().verbose("Call update_param on all devices:"); log().verbose("Call update_param on all devices:");
for (auto & dev : m_devices) for (auto & dev : m_devices)
{
dev.second->update_param(); dev.second->update_param();
if (!plib::container::contains(devices_called, dev.second.get()))
devices_called.push_back(dev.second.get());
}
// Step all devices once ! // Step all devices once !
// //
@ -319,13 +324,12 @@ namespace netlist
{ {
case 0: case 0:
{ {
std::vector<core_device_t *> d;
std::vector<const nldelegate *> t; std::vector<const nldelegate *> t;
log().verbose("Using default startup strategy"); log().verbose("Using default startup strategy");
for (auto &n : m_nets) for (auto &n : m_nets)
for (auto & term : n->core_terms()) 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()); t.push_back(&term->delegate());
@ -333,43 +337,20 @@ namespace netlist
} }
// NOLINTNEXTLINE(cppcoreguidelines-pro-type-reinterpret-cast) // NOLINTNEXTLINE(cppcoreguidelines-pro-type-reinterpret-cast)
auto *dev = reinterpret_cast<core_device_t *>(term->delegate().object()); auto *dev = reinterpret_cast<core_device_t *>(term->delegate().object());
if (!plib::container::contains(d, dev)) if (!plib::container::contains(devices_called, dev))
d.push_back(dev); devices_called.push_back(dev);
} }
log().verbose("Devices not yet updated:"); log().verbose("Devices not yet updated:");
for (auto &dev : m_devices) 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 // FIXME: doesn't seem to be needed, use cases include
// analog output devices. Check and remove // analog output devices. Check and remove
log().verbose("\t ...{1}", dev.second->name()); log().error("\t Device {1} not yet updated", dev.second->name());
dev.second->update(); //dev.second->update();
} }
} }
break; 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 // the above may screw up m_active and the list

View File

@ -177,7 +177,6 @@ class NETLIB_NAME(name) : public delegator_t<base_device_t>
#define NETLIB_UPDATE_TERMINALSI() virtual void update_terminals() noexcept override #define NETLIB_UPDATE_TERMINALSI() virtual void update_terminals() noexcept override
#define NETLIB_HANDLERI(name) void name() noexcept #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_UPDATE_PARAMI() virtual void update_param() noexcept override
#define NETLIB_RESETI() virtual void reset() override #define NETLIB_RESETI() virtual void reset() override
@ -185,7 +184,11 @@ class NETLIB_NAME(name) : public delegator_t<base_device_t>
#define NETLIB_SUB_UPTR(ns, chip) device_arena::unique_ptr< ns :: nld_ ## chip > #define NETLIB_SUB_UPTR(ns, chip) device_arena::unique_ptr< ns :: nld_ ## chip >
#define NETLIB_HANDLER(chip, name) void NETLIB_NAME(chip) :: name() noexcept #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) #define NETLIB_UPDATE(chip) NETLIB_HANDLER(chip, update)
#endif
#define NETLIB_RESET(chip) void NETLIB_NAME(chip) :: reset(void) #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(); } stats_t * stats() const noexcept { return m_stats.get(); }
#if 0
virtual void update() noexcept { } virtual void update() noexcept { }
#endif
virtual void reset() { } virtual void reset() { }
protected: protected:
@ -1441,7 +1445,6 @@ namespace netlist
void connect(const detail::core_terminal_t &t1, const detail::core_terminal_t &t2); void connect(const detail::core_terminal_t &t1, const detail::core_terminal_t &t2);
protected: protected:
//NETLIB_UPDATEI() {}
//NETLIB_UPDATE_TERMINALSI() { } //NETLIB_UPDATE_TERMINALSI() { }
private: private:
@ -1473,7 +1476,6 @@ namespace netlist
protected: protected:
//NETLIB_UPDATEI() {}
//NETLIB_UPDATE_TERMINALSI() { } //NETLIB_UPDATE_TERMINALSI() { }
private: private:
@ -1803,12 +1805,6 @@ namespace netlist
m_inc = netlist_time::from_fp(plib::reciprocal(m_freq()*nlconst::two())); 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: public:
logic_output_t m_Q; // NOLINT: needed in core logic_output_t m_Q; // NOLINT: needed in core
netlist_time m_inc; // NOLINT: needed in core netlist_time m_inc; // NOLINT: needed in core

View File

@ -24,7 +24,6 @@ namespace factory {
} }
protected: protected:
//NETLIB_RESETI() {} //NETLIB_RESETI() {}
//NETLIB_UPDATEI() {}
}; };
element_t::element_t(const pstring &name, properties &&props) element_t::element_t(const pstring &name, properties &&props)

View File

@ -67,11 +67,6 @@ namespace netlist
m_last = 0.0; m_last = 0.0;
} }
NETLIB_UPDATEI()
{
in();
}
NETLIB_HANDLERI(in) NETLIB_HANDLERI(in)
{ {
const nl_fptype cur = m_in(); const nl_fptype cur = m_in();
@ -117,11 +112,6 @@ namespace netlist
m_func(*this, cur); m_func(*this, cur);
} }
NETLIB_UPDATEI()
{
in();
}
private: private:
logic_input_t m_in; logic_input_t m_in;
FUNC m_func; FUNC m_func;
@ -188,11 +178,6 @@ namespace netlist
m_Q.net().toggle_and_push_to_queue(m_sample_time); m_Q.net().toggle_and_push_to_queue(m_sample_time);
} }
NETLIB_UPDATEI()
{
feedback();
}
public: public:
/// \brief resolve parameter names to pointers /// \brief resolve parameter names to pointers
/// ///

View File

@ -252,12 +252,6 @@ namespace solver
m_Q_sync.net().toggle_and_push_to_queue(delay); m_Q_sync.net().toggle_and_push_to_queue(delay);
} }
// netdevice functions
NETLIB_UPDATEI()
{
fb_sync();
}
NETLIB_HANDLERI(fb_sync) NETLIB_HANDLERI(fb_sync)
{ {
PFDEBUG(printf("update\n");) PFDEBUG(printf("update\n");)

View File

@ -43,11 +43,6 @@ namespace devices
solver::static_compile_container create_solver_code(solver::static_compile_target target); solver::static_compile_container create_solver_code(solver::static_compile_target target);
NETLIB_UPDATEI()
{
fb_step();
}
NETLIB_RESETI(); NETLIB_RESETI();
// NETLIB_UPDATE_PARAMI(); // NETLIB_UPDATE_PARAMI();