diff options
Diffstat (limited to 'src/lib/netlist/analog/nld_opamps.cpp')
-rw-r--r-- | src/lib/netlist/analog/nld_opamps.cpp | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/src/lib/netlist/analog/nld_opamps.cpp b/src/lib/netlist/analog/nld_opamps.cpp index f68088a6619..b7e4ebfa762 100644 --- a/src/lib/netlist/analog/nld_opamps.cpp +++ b/src/lib/netlist/analog/nld_opamps.cpp @@ -101,9 +101,11 @@ namespace netlist }; - NETLIB_BASE_OBJECT(opamp) + class nld_opamp : public base_device_t { - NETLIB_CONSTRUCTOR(opamp) + public: + nld_opamp(constructor_param_t data) + : base_device_t(data) , m_RP(*this, "RP1") , m_G1(*this, "G1") , m_VCC(*this, "VCC", NETLIB_DELEGATE(supply)) @@ -113,8 +115,8 @@ namespace netlist , m_VH(*this, "VH") , m_VL(*this, "VL") , m_VREF(*this, "VREF") + , m_type(plib::narrow_cast<int>(m_modacc.m_TYPE)) { - m_type = plib::narrow_cast<int>(m_modacc.m_TYPE); if (m_type < 1 || m_type > 3) { log().fatal(MF_OPAMP_UNKNOWN_TYPE(m_type)); @@ -201,8 +203,8 @@ namespace netlist private: - analog::NETLIB_SUB(R_base) m_RP; - analog::NETLIB_SUB(VCCS) m_G1; + NETLIB_SUB_NS(analog, R_base) m_RP; + NETLIB_SUB_NS(analog, VCCS) m_G1; NETLIB_SUB_UPTR(analog, C) m_CP; #if TEST_ALT_OUTPUT NETLIB_SUB_UPTR(analog, R_base) m_RO; @@ -226,14 +228,14 @@ namespace netlist NETLIB_UPDATE_PARAM(opamp) { - m_G1.m_RI.set(m_modacc.m_RI); + m_G1().m_RI.set(m_modacc.m_RI); if (m_type == 1) { nl_fptype RO = m_modacc.m_RO; nl_fptype G = m_modacc.m_UGF / m_modacc.m_FPF / RO; - m_RP.set_R(RO); - m_G1.m_G.set(G); + m_RP().set_R(RO); + m_G1().m_G.set(G); } if (m_type == 3 || m_type == 2) { @@ -246,8 +248,8 @@ namespace netlist log().warning(MW_OPAMP_FAIL_CONVERGENCE(this->name())); m_CP->set_cap_embedded(CP); - m_RP.set_R(RP); - m_G1.m_G.set(G); + m_RP().set_R(RP); + m_G1().m_G.set(G); } if (m_type == 2) |