mirror of
https://github.com/holub/mame
synced 2025-04-22 08:22:15 +03:00
netlist: necessary changes towards runtime processing of macro directory
This commit is contained in:
parent
c00cbad238
commit
09e987486a
@ -28,17 +28,16 @@
|
||||
#define IND_P(ind) ((ind) * 1e-12)
|
||||
#endif
|
||||
|
||||
NETLIST_EXTERNAL(base)
|
||||
NETLIST_EXTERNAL(CD4XXX_lib)
|
||||
NETLIST_EXTERNAL(OPAMP_lib)
|
||||
NETLIST_EXTERNAL(otheric_lib)
|
||||
NETLIST_EXTERNAL(TTL74XX_lib)
|
||||
NETLIST_EXTERNAL(ROMS_lib)
|
||||
|
||||
#if NL_AUTO_DEVICES
|
||||
#include "nld_devinc.h"
|
||||
|
||||
#include "netlist/macro/nlm_cd4xxx.h"
|
||||
#include "netlist/macro/nlm_opamp.h"
|
||||
#include "netlist/macro/nlm_other.h"
|
||||
#include "netlist/macro/nlm_ttl74xx.h"
|
||||
#include "netlist/macro/nlm_roms.h"
|
||||
|
||||
#include "nld_7448.h"
|
||||
|
||||
#else
|
||||
|
||||
#define SOLVER(name, freq) \
|
||||
|
@ -1,7 +1,6 @@
|
||||
// license:GPL-2.0+
|
||||
// copyright-holders:Couriersud
|
||||
#include "netlist/devices/net_lib.h"
|
||||
#include "nlm_base.h"
|
||||
|
||||
/* ----------------------------------------------------------------------------
|
||||
* Diode Models
|
||||
|
@ -64,13 +64,14 @@
|
||||
#define CD4538_DIP(name) \
|
||||
NET_REGISTER_DEV(CD4538_DIP, name)
|
||||
|
||||
#endif
|
||||
#endif // !NL_AUTO_DEVICES
|
||||
|
||||
/* ----------------------------------------------------------------------------
|
||||
* External declarations
|
||||
* ---------------------------------------------------------------------------*/
|
||||
|
||||
NETLIST_EXTERNAL(CD4XXX_lib)
|
||||
// moved to net_lib.h
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
#endif // NLD_CD4XXX_H_
|
||||
|
@ -60,7 +60,7 @@
|
||||
* External declarations
|
||||
* ---------------------------------------------------------------------------*/
|
||||
|
||||
NETLIST_EXTERNAL(OPAMP_lib)
|
||||
// moved to net_lib.h
|
||||
|
||||
#endif // __PLIB_PREPROCESSOR__
|
||||
|
||||
|
@ -33,7 +33,7 @@
|
||||
* External declarations
|
||||
* ---------------------------------------------------------------------------*/
|
||||
|
||||
NETLIST_EXTERNAL(otheric_lib)
|
||||
// moved to net_lib.h
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -37,7 +37,7 @@
|
||||
* External declarations
|
||||
* ---------------------------------------------------------------------------*/
|
||||
|
||||
NETLIST_EXTERNAL(ROMS_lib)
|
||||
// moved to net_lib.h
|
||||
|
||||
#endif // __PLIB_PREPROCESSOR__
|
||||
|
||||
|
@ -3,6 +3,20 @@
|
||||
|
||||
#include "netlist/devices/net_lib.h"
|
||||
|
||||
#ifndef NL_USE_TRUTHTABLE_74107
|
||||
#define NL_USE_TRUTHTABLE_74107 0
|
||||
#endif
|
||||
|
||||
#ifndef NL_USE_TRUTHTABLE_7448
|
||||
#define NL_USE_TRUTHTABLE_7448 0
|
||||
#endif
|
||||
|
||||
#if 1
|
||||
//
|
||||
#elif %&/()
|
||||
//
|
||||
#endif
|
||||
|
||||
/*
|
||||
* DM7400: Quad 2-Input NAND Gates
|
||||
*
|
||||
@ -1139,9 +1153,8 @@ NETLIST_END()
|
||||
* Naming conventions follow Fairchild Semiconductor datasheet
|
||||
*
|
||||
*/
|
||||
|
||||
#if !NL_AUTO_DEVICES
|
||||
#ifndef __PLIB_PREPROCESSOR__
|
||||
#if !NL_AUTO_DEVICES
|
||||
#define TTL_74279A(name) \
|
||||
NET_REGISTER_DEV(TTL_74279A, name)
|
||||
#define TTL_74279B(name) \
|
||||
@ -1299,13 +1312,8 @@ NETLIST_END()
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __PLIB_PREPROCESSOR__
|
||||
#define DM9312_TT(name) \
|
||||
NET_REGISTER_DEV(DM9312, name)
|
||||
#endif
|
||||
|
||||
static NETLIST_START(DM9312_DIP)
|
||||
DM9312_TT(s)
|
||||
DM9312(s)
|
||||
|
||||
DIPPINS( /* +--------------+ */
|
||||
s.D0, /* D0 |1 ++ 16| VCC */ s.VCC,
|
||||
|
@ -333,22 +333,8 @@
|
||||
#define TTL_74379_DIP(name) \
|
||||
NET_REGISTER_DEV(TTL_74379_DIP, name)
|
||||
|
||||
#define DM9312(name, cA, cB, cC, cSTROBE, cD0, cD1, cD2, cD3, cD4, cD5, cD6, cD7) \
|
||||
NET_REGISTER_DEV(DM9312, name) \
|
||||
NET_CONNECT(name, VCC, VCC) \
|
||||
NET_CONNECT(name, GND, GND) \
|
||||
NET_CONNECT(name, A, cA) \
|
||||
NET_CONNECT(name, B, cB) \
|
||||
NET_CONNECT(name, C, cC) \
|
||||
NET_CONNECT(name, G, cSTROBE) \
|
||||
NET_CONNECT(name, D0, cD0) \
|
||||
NET_CONNECT(name, D1, cD1) \
|
||||
NET_CONNECT(name, D2, cD2) \
|
||||
NET_CONNECT(name, D3, cD3) \
|
||||
NET_CONNECT(name, D4, cD4) \
|
||||
NET_CONNECT(name, D5, cD5) \
|
||||
NET_CONNECT(name, D6, cD6) \
|
||||
NET_CONNECT(name, D7, cD7)
|
||||
#define DM9312(...) \
|
||||
NET_REGISTER_DEVEXT(DM9312, __VA_ARGS__)
|
||||
|
||||
#define DM9312_DIP(name) \
|
||||
NET_REGISTER_DEV(DM9312_DIP, name)
|
||||
@ -359,7 +345,7 @@
|
||||
* External declarations
|
||||
* ---------------------------------------------------------------------------*/
|
||||
|
||||
NETLIST_EXTERNAL(TTL74XX_lib)
|
||||
// moved to net_lib.h
|
||||
|
||||
#endif // __PLIB_PREPROCESSOR__
|
||||
|
||||
|
@ -142,7 +142,19 @@ namespace netlist
|
||||
"#define IND_N(ind) ((ind) * 1e-9) \n"
|
||||
"#define IND_P(ind) ((ind) * 1e-12) \n";
|
||||
m_setup->parser().add_include<a>("netlist/devices/net_lib.h", content);
|
||||
#if 1
|
||||
NETLIST_NAME(base)(m_setup->parser());
|
||||
#else
|
||||
// FIXME: This is very slow - need optimized parsing scanning
|
||||
pstring dir = "src/lib/netlist/macro/";
|
||||
m_setup->parser().register_source<source_file_t>(dir + "nlm_base.cpp");
|
||||
m_setup->parser().register_source<source_file_t>(dir + "nlm_opamp.cpp");
|
||||
m_setup->parser().register_source<source_file_t>(dir + "nlm_roms.cpp");
|
||||
m_setup->parser().register_source<source_file_t>(dir + "nlm_cd4xxx.cpp");
|
||||
m_setup->parser().register_source<source_file_t>(dir + "nlm_other.cpp");
|
||||
m_setup->parser().register_source<source_file_t>(dir + "nlm_ttl74xx.cpp");
|
||||
m_setup->parser().include("base");
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
@ -110,7 +110,7 @@ namespace netlist
|
||||
//break;
|
||||
}
|
||||
pstring output_name = *ptok;
|
||||
log().debug("Link: {1} {2}\n", tp, output_name);
|
||||
log().debug("Link: {1} {2}", tp, output_name);
|
||||
|
||||
register_link(name + "." + tp.substr(1), output_name);
|
||||
++ptok;
|
||||
@ -118,7 +118,7 @@ namespace netlist
|
||||
else if (plib::startsWith(tp, "@"))
|
||||
{
|
||||
pstring term = tp.substr(1);
|
||||
log().debug("Link: {1} {2}\n", tp, term);
|
||||
log().debug("Link: {1} {2}", tp, term);
|
||||
|
||||
register_link(name + "." + term, term);
|
||||
}
|
||||
@ -353,7 +353,7 @@ namespace netlist
|
||||
bool nlparse_t::parse_stream(plib::psource_t::stream_ptr &&istrm, const pstring &name)
|
||||
{
|
||||
auto y = std::make_unique<plib::ppreprocessor>(m_includes, &m_defines);
|
||||
y->process(std::move(istrm));
|
||||
y->process(std::move(istrm), "<stream>");
|
||||
return parser_t(std::move(y), *this).parse(name);
|
||||
//return parser_t(std::move(plib::ppreprocessor(&m_defines).process(std::move(istrm))), *this).parse(name);
|
||||
}
|
||||
|
@ -68,10 +68,17 @@ namespace plib {
|
||||
delete rdbuf();
|
||||
}
|
||||
|
||||
/// \brief process stream
|
||||
///
|
||||
/// \param filename a filename or identifier identifying the stream.
|
||||
///
|
||||
/// FIXME: this is sub-optimal. Refactor input_context into pinput_context
|
||||
/// and pass this to ppreprocessor.
|
||||
///
|
||||
template <typename T>
|
||||
ppreprocessor & process(T &&istrm)
|
||||
ppreprocessor & process(T &&istrm, const pstring &filename)
|
||||
{
|
||||
m_stack.emplace_back(input_context(std::forward<T>(istrm),"","<stream>"));
|
||||
m_stack.emplace_back(input_context(std::forward<T>(istrm),plib::util::path(filename), filename));
|
||||
process_stack();
|
||||
return *this;
|
||||
}
|
||||
|
@ -26,11 +26,13 @@
|
||||
|
||||
#define SLOW_BUT_ACCURATE 0
|
||||
|
||||
#ifndef __PLIB_PREPROCESSOR__
|
||||
#if defined(__GNUC__) && !defined(__clang__)
|
||||
#if defined(__MINGW32__) && !defined(__x86_64) && defined(__i386__) && ((__GNUC__ > 10) || ((__GNUC__ == 10) && (__GNUC_MINOR__ >= 0)))
|
||||
#pragma GCC optimize ("O1")
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
NETLIST_START(palestra)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user