Beispiel #1
0
	nld_d_to_a_proxy::nld_d_to_a_proxy(netlist_state_t &anetlist, const pstring &name, logic_output_t *out_proxied)
	: nld_base_d_to_a_proxy(anetlist, name, out_proxied, m_RV.m_P)
	, m_GNDHack(*this, "_Q")
	, m_RV(*this, "RV")
	, m_last_state(*this, "m_last_var", -1)
	, m_is_timestep(false)
	{
		const std::vector<std::pair<pstring, pstring>> power_syms = { {"VCC", "VEE"}, {"VCC", "GND"}, {"VDD", "VSS"}};

		register_subalias("Q", m_RV.m_P);

		connect(m_RV.m_N, m_GNDHack);
		bool f = false;
		for (auto & pwr_sym : power_syms)
		{
			pstring devname = out_proxied->device().name();
			auto tp = setup().find_terminal(devname + "." + pwr_sym.first,
					detail::terminal_type::INPUT, false);
			auto tn = setup().find_terminal(devname + "." + pwr_sym.second,
					detail::terminal_type::INPUT, false);
			if (tp != nullptr && tn != nullptr)
			{
				/* alternative logic */
				f = true;
			}
		}
		//FIXME: Use power terminals!
		if (!f)
			log().warning(MW_1_NO_POWER_TERMINALS_ON_DEVICE_1, out_proxied->device().name());
		else
			log().verbose("D/A Proxy: Found power terminals on device {1}", out_proxied->device().name());
	}
Beispiel #2
0
		NETLIB_CONSTRUCTOR_DERIVED(NE555_dip, NE555)
		{
			register_subalias("1",  m_R3.m_N);      // Pin 1
			register_subalias("2",    m_TRIG);      // Pin 2
			register_subalias("3",    m_OUT);       // Pin 3
			register_subalias("4",   m_RESET);      // Pin 4
			register_subalias("5", m_R1.m_N);       // Pin 5
			register_subalias("6",  m_THRES);       // Pin 6
			register_subalias("7", m_RDIS.m_P);     // Pin 7
			register_subalias("8",  m_R1.m_P);      // Pin 8
		}
Beispiel #3
0
void nld_d_to_a_proxy::start()
{
	nld_base_d_to_a_proxy::start();

	register_sub("RV", m_RV);
	register_terminal("1", m_RV.m_P);
	register_terminal("2", m_RV.m_N);

	register_output("_Q", m_Q);
	register_subalias("Q", m_RV.m_P);

	connect_direct(m_RV.m_N, m_Q);

	save(NLNAME(m_last_state));
}
Beispiel #4
0
	nld_d_to_a_proxy::nld_d_to_a_proxy(netlist_t &anetlist, const pstring &name, logic_output_t *out_proxied)
	: nld_base_d_to_a_proxy(anetlist, name, out_proxied, m_RV.m_P)
	, m_GNDHack(*this, "_Q")
	, m_RV(*this, "RV")
	, m_last_state(*this, "m_last_var", -1)
	, m_is_timestep(false)
	{
		const pstring power_syms[3][2] ={ {"VCC", "VEE"}, {"VCC", "GND"}, {"VDD", "VSS"}};
		//register_sub(m_RV);
		//register_term("1", m_RV.m_P);
		//register_term("2", m_RV.m_N);

		register_subalias("Q", m_RV.m_P);

		connect(m_RV.m_N, m_GNDHack);
		bool f = false;
		for (int i = 0; i < 3; i++)
		{
			pstring devname = out_proxied->device().name();
			auto tp = netlist().setup().find_terminal(devname + "." + power_syms[i][0],
					detail::terminal_type::INPUT, false);
			auto tn = netlist().setup().find_terminal(devname + "." + power_syms[i][1],
					detail::terminal_type::INPUT, false);
			if (tp != nullptr && tn != nullptr)
			{
				/* alternative logic */
				f = true;
			}
		}
		if (!f)
			log().warning(MW_1_NO_POWER_TERMINALS_ON_DEVICE_1, out_proxied->device().name());
		else
			log().verbose("D/A Proxy: Found power terminals on device {1}", out_proxied->device().name());
#if (0)
		printf("%s %s\n", out_proxied->name().c_str(), out_proxied->device().name().c_str());
		auto x = netlist().setup().find_terminal(out_proxied->name(), detail::device_object_t::terminal_type::OUTPUT, false);
		if (x) printf("==> %s\n", x->name().c_str());
#endif
	}