summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--src/lib/netlist/nl_parser.cpp18
-rw-r--r--src/lib/netlist/nl_parser.h4
2 files changed, 20 insertions, 2 deletions
diff --git a/src/lib/netlist/nl_parser.cpp b/src/lib/netlist/nl_parser.cpp
index 7c0ad9e7ff7..e23e5f9f89b 100644
--- a/src/lib/netlist/nl_parser.cpp
+++ b/src/lib/netlist/nl_parser.cpp
@@ -36,6 +36,7 @@ bool parser_t::parse(const pstring &nlname)
m_tok_DEFPARAM = register_token("DEFPARAM");
m_tok_HINT = register_token("HINT");
m_tok_NET_MODEL = register_token("NET_MODEL");
+ m_tok_NET_REGISTER_DEV = register_token("NET_REGISTER_DEV");
m_tok_INCLUDE = register_token("INCLUDE");
m_tok_LOCAL_SOURCE = register_token("LOCAL_SOURCE");
m_tok_LOCAL_LIB_ENTRY = register_token("LOCAL_LIB_ENTRY");
@@ -136,6 +137,10 @@ void parser_t::parse_netlist(const pstring &nlname)
m_setup.register_lib_entry(get_identifier(), "", plib::source_location("parser: " + nlname, 1));
require_token(m_tok_paren_right);
}
+ else if (token.is(m_tok_NET_REGISTER_DEV))
+ {
+ net_register_dev();
+ }
else if (token.is(m_tok_NETLIST_END))
{
netdev_netlist_end();
@@ -199,7 +204,7 @@ void parser_t::net_truthtable_start(const pstring &nlname)
require_token(m_tok_paren_left);
require_token(m_tok_paren_right);
// FIXME: proper location
- m_setup.truthtable_create(desc, "+" + def_param, plib::source_location(nlname, 1));
+ m_setup.truthtable_create(desc, def_param, plib::source_location(nlname, 1));
return;
}
}
@@ -382,6 +387,17 @@ void parser_t::netdev_hint()
require_token(m_tok_paren_right);
}
+void parser_t::net_register_dev()
+{
+ require_token(m_tok_paren_left);
+ pstring type(get_identifier());
+ require_token(m_tok_comma);
+ pstring name(get_identifier());
+ require_token(m_tok_paren_right);
+
+ m_setup.register_dev(type, name);
+}
+
void parser_t::device(const pstring &dev_type)
{
std::vector<pstring> params;
diff --git a/src/lib/netlist/nl_parser.h b/src/lib/netlist/nl_parser.h
index 4f7bc012d43..1ad6a5a3c95 100644
--- a/src/lib/netlist/nl_parser.h
+++ b/src/lib/netlist/nl_parser.h
@@ -23,7 +23,7 @@ namespace netlist
{
}
- bool parse(const pstring &nlname = "");
+ bool parse(const pstring &nlname);
protected:
void parse_netlist(const pstring &nlname);
@@ -40,6 +40,7 @@ namespace netlist
void net_submodel();
void net_include();
void net_local_source();
+ void net_register_dev();
void net_truthtable_start(const pstring &nlname);
void verror(const pstring &msg) override;
@@ -56,6 +57,7 @@ namespace netlist
token_id_t m_tok_DEFPARAM;
token_id_t m_tok_HINT;
token_id_t m_tok_NET_MODEL;
+ token_id_t m_tok_NET_REGISTER_DEV;
token_id_t m_tok_NETLIST_START;
token_id_t m_tok_NETLIST_END;
token_id_t m_tok_SUBMODEL;