summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/netlist/nl_setup.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/netlist/nl_setup.cpp')
-rw-r--r--src/lib/netlist/nl_setup.cpp98
1 files changed, 53 insertions, 45 deletions
diff --git a/src/lib/netlist/nl_setup.cpp b/src/lib/netlist/nl_setup.cpp
index cf090c68dbe..1b0835d8cdc 100644
--- a/src/lib/netlist/nl_setup.cpp
+++ b/src/lib/netlist/nl_setup.cpp
@@ -80,7 +80,7 @@ void setup_t::register_dev(const pstring &classname, const pstring &name)
{
auto f = factory().factory_by_name(classname);
if (f == nullptr)
- log().fatal("Class {1} not found!\n", classname);
+ log().fatal(MF_1_CLASS_1_NOT_FOUND, classname);
/* make sure we parse macro library entries */
f->macro_actions(netlist(), name);
m_device_factory.push_back(std::pair<pstring, factory::element_t *>(build_fqn(name), f));
@@ -101,17 +101,17 @@ void setup_t::register_model(const pstring &model_in)
{
auto pos = model_in.find(" ");
if (pos == model_in.end())
- log().fatal("Unable to parse model: {1}", model_in);
+ log().fatal(MF_1_UNABLE_TO_PARSE_MODEL_1, model_in);
pstring model = model_in.left(pos).trim().ucase();
pstring def = model_in.substr(pos + 1).trim();
if (!m_models.insert({model, def}).second)
- log().fatal("Model already exists: {1}", model_in);
+ log().fatal(MF_1_MODEL_ALREADY_EXISTS_1, model_in);
}
void setup_t::register_alias_nofqn(const pstring &alias, const pstring &out)
{
if (!m_alias.insert({alias, out}).second)
- log().fatal("Error adding alias {1} to alias list\n", alias);
+ log().fatal(MF_1_ADDING_ALIAS_1_TO_ALIAS_LIST, alias);
}
void setup_t::register_alias(const pstring &alias, const pstring &out)
@@ -125,7 +125,8 @@ void setup_t::register_dippins_arr(const pstring &terms)
{
plib::pstring_vector_t list(terms,", ");
if (list.size() == 0 || (list.size() % 2) == 1)
- log().fatal("You must pass an equal number of pins to DIPPINS {1}" , build_fqn(""));
+ log().fatal(MF_1_DIP_PINS_MUST_BE_AN_EQUAL_NUMBER_OF_PINS_1,
+ build_fqn(""));
std::size_t n = list.size();
for (std::size_t i = 0; i < n / 2; i++)
{
@@ -148,7 +149,7 @@ pstring setup_t::objtype_as_str(detail::device_object_t &in) const
return "PARAM";
}
// FIXME: noreturn
- log().fatal("Unknown object type {1}\n", static_cast<unsigned>(in.type()));
+ log().fatal(MF_1_UNKNOWN_OBJECT_TYPE_1, static_cast<unsigned>(in.type()));
return "Error";
}
@@ -168,7 +169,7 @@ double setup_t::get_initial_param_val(const pstring name, const double def)
{
double vald = 0;
if (sscanf(i->second.c_str(), "%lf", &vald) != 1)
- log().fatal("Invalid number conversion {1} : {2}\n", name, i->second);
+ log().fatal(MF_2_INVALID_NUMBER_CONVERSION_1_2, name, i->second);
return vald;
}
else
@@ -182,7 +183,7 @@ int setup_t::get_initial_param_val(const pstring name, const int def)
{
double vald = 0;
if (sscanf(i->second.c_str(), "%lf", &vald) != 1)
- log().fatal("Invalid number conversion {1} : {2}\n", name, i->second);
+ log().fatal(MF_2_INVALID_NUMBER_CONVERSION_1_2, name, i->second);
return static_cast<int>(vald);
}
else
@@ -192,13 +193,14 @@ int setup_t::get_initial_param_val(const pstring name, const int def)
void setup_t::register_param(pstring name, param_t &param)
{
if (!m_params.insert({param.name(), param_ref_t(param.name(), param.device(), param)}).second)
- log().fatal("Error adding parameter {1} to parameter list\n", name);
+ log().fatal(MF_1_ADDING_PARAMETER_1_TO_PARAMETER_LIST, name);
}
void setup_t::register_term(detail::core_terminal_t &term)
{
if (!m_terminals.insert({term.name(), &term}).second)
- log().fatal("Error adding {1} {2} to terminal list\n", objtype_as_str(term), term.name());
+ log().fatal(MF_2_ADDING_1_2_TO_TERMINAL_LIST, objtype_as_str(term),
+ term.name());
log().debug("{1} {2}\n", objtype_as_str(term), term.name());
}
@@ -206,7 +208,7 @@ void setup_t::register_link_arr(const pstring &terms)
{
plib::pstring_vector_t list(terms,", ");
if (list.size() < 2)
- log().fatal("You must pass at least 2 terminals to NET_C");
+ log().fatal(MF_2_NET_C_NEEDS_AT_LEAST_2_TERMINAL);
for (std::size_t i = 1; i < list.size(); i++)
{
register_link(list[0], list[i]);
@@ -243,7 +245,7 @@ void setup_t::remove_connections(const pstring pin)
link++;
}
if (!found)
- log().fatal("remove_connections: found no occurrence of {1}\n", pin);
+ log().fatal(MF_1_FOUND_NO_OCCURRENCE_OF_1, pin);
}
@@ -272,7 +274,7 @@ void setup_t::register_frontier(const pstring attach, const double r_IN, const d
}
}
if (!found)
- log().fatal("Frontier setup: found no occurrence of {1}\n", attach);
+ log().fatal(MF_1_FOUND_NO_OCCURRENCE_OF_1, attach);
register_link(attach, frontier_name + ".Q");
}
@@ -290,11 +292,13 @@ void setup_t::register_param(const pstring &param, const pstring &value)
if (idx == m_param_values.end())
{
if (!m_param_values.insert({fqn, value}).second)
- log().fatal("Unexpected error adding parameter {1} to parameter list\n", param);
+ log().fatal(MF_1_ADDING_PARAMETER_1_TO_PARAMETER_LIST,
+ param);
}
else
{
- log().warning("Overwriting {1} old <{2}> new <{3}>\n", fqn, idx->second, value);
+ log().warning(MW_3_OVERWRITING_PARAM_1_OLD_2_NEW_3, fqn, idx->second,
+ value);
m_param_values[fqn] = value;
}
}
@@ -329,7 +333,7 @@ detail::core_terminal_t *setup_t::find_terminal(const pstring &terminal_in, bool
detail::core_terminal_t *term = (ret == m_terminals.end() ? nullptr : ret->second);
if (term == nullptr && required)
- log().fatal("terminal {1}({2}) not found!\n", terminal_in, tname);
+ log().fatal(MF_2_TERMINAL_1_2_NOT_FOUND, terminal_in, tname);
if (term != nullptr)
log().debug("Found input {1}\n", tname);
return term;
@@ -347,14 +351,14 @@ detail::core_terminal_t *setup_t::find_terminal(const pstring &terminal_in,
ret = m_terminals.find(tname + ".Q");
}
if (ret == m_terminals.end() && required)
- log().fatal("terminal {1}({2}) not found!\n", terminal_in, tname);
+ log().fatal(MF_2_TERMINAL_1_2_NOT_FOUND, terminal_in, tname);
detail::core_terminal_t *term = (ret == m_terminals.end() ? nullptr : ret->second);
if (term != nullptr && term->type() != atype)
{
if (required)
- log().fatal("object {1}({2}) found but wrong type\n", terminal_in, tname);
+ log().fatal(MF_2_OBJECT_1_2_WRONG_TYPE, terminal_in, tname);
else
term = nullptr;
}
@@ -371,7 +375,7 @@ param_t *setup_t::find_param(const pstring &param_in, bool required) const
const pstring &outname = resolve_alias(param_in_fqn);
auto ret = m_params.find(outname);
if (ret == m_params.end() && required)
- log().fatal("parameter {1}({2}) not found!\n", param_in_fqn, outname);
+ log().fatal(MF_2_PARAMETER_1_2_NOT_FOUND, param_in_fqn, outname);
if (ret != m_params.end())
log().debug("Found parameter {1}\n", outname);
return (ret == m_params.end() ? nullptr : &ret->second.m_param);
@@ -401,7 +405,8 @@ devices::nld_base_proxy *setup_t::get_d_a_proxy(detail::core_terminal_t &out)
{
p->clear_net(); // de-link from all nets ...
if (!connect(new_proxy->proxy_term(), *p))
- log().fatal("Error connecting {1} to {2}\n", new_proxy->proxy_term().name(), (*p).name());
+ log().fatal(MF_2_CONNECTING_1_TO_2,
+ new_proxy->proxy_term().name(), (*p).name());
}
out.net().m_core_terms.clear(); // clear the list
@@ -444,7 +449,8 @@ devices::nld_base_proxy *setup_t::get_a_d_proxy(detail::core_terminal_t &inp)
{
p->clear_net(); // de-link from all nets ...
if (!connect(ret->proxy_term(), *p))
- log().fatal("Error connecting {1} to {2}\n", ret->proxy_term().name(), (*p).name());
+ log().fatal(MF_2_CONNECTING_1_TO_2,
+ ret->proxy_term().name(), (*p).name());
}
inp.net().m_core_terms.clear(); // clear the list
}
@@ -463,19 +469,20 @@ devices::nld_base_proxy *setup_t::get_a_d_proxy(detail::core_terminal_t &inp)
void setup_t::merge_nets(detail::net_t &thisnet, detail::net_t &othernet)
{
- netlist().log().debug("merging nets ...\n");
+ log().debug("merging nets ...\n");
if (&othernet == &thisnet)
{
- netlist().log().warning("Connecting {1} to itself. This may be right, though\n", thisnet.name());
+ log().warning(MW_1_CONNECTING_1_TO_ITSELF, thisnet.name());
return; // Nothing to do
}
if (thisnet.isRailNet() && othernet.isRailNet())
- netlist().log().fatal("Trying to merge two rail nets: {1} and {2}\n", thisnet.name(), othernet.name());
+ log().fatal(MF_2_MERGE_RAIL_NETS_1_AND_2,
+ thisnet.name(), othernet.name());
if (othernet.isRailNet())
{
- netlist().log().debug("othernet is railnet\n");
+ log().debug("othernet is railnet\n");
merge_nets(othernet, thisnet);
}
else
@@ -519,7 +526,7 @@ void setup_t::connect_terminal_input(terminal_t &term, detail::core_terminal_t &
}
else if (inp.is_logic())
{
- netlist().log().verbose("connect terminal {1} (in, {2}) to {3}\n", inp.name(), pstring(inp.is_analog() ? "analog" : inp.is_logic() ? "logic" : "?"), term.name());
+ log().verbose("connect terminal {1} (in, {2}) to {3}\n", inp.name(), pstring(inp.is_analog() ? "analog" : inp.is_logic() ? "logic" : "?"), term.name());
auto proxy = get_a_d_proxy(inp);
//out.net().register_con(proxy->proxy_term());
@@ -528,7 +535,7 @@ void setup_t::connect_terminal_input(terminal_t &term, detail::core_terminal_t &
}
else
{
- log().fatal("Netlist: Severe Error");
+ log().fatal(MF_1_OBJECT_INPUT_TYPE_1, inp.name());
}
}
@@ -552,7 +559,7 @@ void setup_t::connect_terminal_output(terminal_t &in, detail::core_terminal_t &o
}
else
{
- log().fatal("Netlist: Severe Error");
+ log().fatal(MF_1_OBJECT_OUTPUT_TYPE_1, out.name());
}
}
@@ -644,13 +651,13 @@ bool setup_t::connect(detail::core_terminal_t &t1_in, detail::core_terminal_t &t
if (t1.is_type(detail::core_terminal_t::OUTPUT) && t2.is_type(detail::core_terminal_t::INPUT))
{
if (t2.has_net() && t2.net().isRailNet())
- log().fatal("Input {1} already connected\n", t2.name());
+ log().fatal(MF_1_INPUT_1_ALREADY_CONNECTED, t2.name());
connect_input_output(t2, t1);
}
else if (t1.is_type(detail::core_terminal_t::INPUT) && t2.is_type(detail::core_terminal_t::OUTPUT))
{
if (t1.has_net() && t1.net().isRailNet())
- log().fatal("Input {1} already connected\n", t1.name());
+ log().fatal(MF_1_INPUT_1_ALREADY_CONNECTED, t1.name());
connect_input_output(t1, t2);
}
else if (t1.is_type(detail::core_terminal_t::OUTPUT) && t2.is_type(detail::core_terminal_t::TERMINAL))
@@ -712,9 +719,9 @@ void setup_t::resolve_inputs()
if (tries == 0)
{
for (auto & link : m_links)
- log().warning("Error connecting {1} to {2}\n", link.first, link.second);
+ log().warning(MF_2_CONNECTING_1_TO_2, link.first, link.second);
- log().fatal("Error connecting -- bailing out\n");
+ log().fatal(MF_0_LINK_TRIES_EXCEEDED);
}
log().verbose("deleting empty nets ...");
@@ -741,12 +748,13 @@ void setup_t::resolve_inputs()
{
detail::core_terminal_t *term = i.second;
if (!term->has_net() && dynamic_cast< devices::NETLIB_NAME(dummy_input) *>(&term->device()) != nullptr)
- log().warning("Found dummy terminal {1} without connections", term->name());
+ log().warning(MW_1_DUMMY_1_WITHOUT_CONNECTIONS, term->name());
else if (!term->has_net())
errstr += plib::pfmt("Found terminal {1} without a net\n")(term->name());
else if (term->net().num_cons() == 0)
- log().warning("Found terminal {1} without connections", term->name());
+ log().warning(MW_1_TERMINAL_1_WITHOUT_CONNECTIONS, term->name());
}
+ //FIXME: error string handling
if (errstr != "")
log().fatal("{1}", errstr);
@@ -756,7 +764,7 @@ void setup_t::resolve_inputs()
{
if (t->m_N.net().isRailNet() && t->m_P.net().isRailNet())
{
- log().warning("Found device {1} connected only to railterminals {2}/{3}. Will be removed",
+ log().warning(MW_3_REMOVE_DEVICE_1_CONNECTED_ONLY_TO_RAILS_2_3,
t->name(), t->m_N.net().name(), t->m_P.net().name());
t->m_N.net().remove_terminal(t->m_N);
t->m_P.net().remove_terminal(t->m_P);
@@ -821,7 +829,7 @@ void setup_t::model_parse(const pstring &model_in, model_map_t &map)
key = model.ucase();
auto i = m_models.find(key);
if (i == m_models.end())
- log().fatal("Model {1} not found\n", model);
+ log().fatal(MF_1_MODEL_NOT_FOUND, model);
model = i->second;
}
pstring xmodel = model.left(pos);
@@ -834,12 +842,12 @@ void setup_t::model_parse(const pstring &model_in, model_map_t &map)
if (i != m_models.end())
model_parse(xmodel, map);
else
- log().fatal("Model doesn't exist: <{1}>\n", model_in);
+ log().fatal(MF_1_MODEL_NOT_FOUND, model_in);
}
pstring remainder=model.substr(pos+1).trim();
if (!remainder.endsWith(")"))
- log().fatal("Model error {1}\n", model);
+ log().fatal(MF_1_MODEL_ERROR_1, model);
// FIMXE: Not optimal
remainder = remainder.left(remainder.begin() + (remainder.len() - 1));
@@ -848,7 +856,7 @@ void setup_t::model_parse(const pstring &model_in, model_map_t &map)
{
auto pose = pe.find("=");
if (pose == pe.end())
- log().fatal("Model error on pair {1}\n", model);
+ log().fatal(MF_1_MODEL_ERROR_ON_PAIR_1, model);
map[pe.left(pose).ucase()] = pe.substr(pose+1);
}
}
@@ -858,9 +866,10 @@ const pstring setup_t::model_value_str(model_map_t &map, const pstring &entity)
pstring ret;
if (entity != entity.ucase())
- log().fatal("model parameters should be uppercase:{1} {2}\n", entity, model_string(map));
+ log().fatal(MF_2_MODEL_PARAMETERS_NOT_UPPERCASE_1_2, entity,
+ model_string(map));
if (map.find(entity) == map.end())
- log().fatal("Entity {1} not found in model {2}\n", entity, model_string(map));
+ log().fatal(MF_2_ENTITY_1_NOT_FOUND_IN_MODEL_2, entity, model_string(map));
else
ret = map[entity];
@@ -885,7 +894,7 @@ nl_double setup_t::model_value(model_map_t &map, const pstring &entity)
case 'a': factor = 1e-18; break;
default:
if (*p < '0' || *p > '9')
- nl_exception(plib::pfmt("Unknown number factor in: {1}")(entity));
+ log().fatal(MF_1_UNKNOWN_NUMBER_FACTOR_IN_1, entity);
}
if (factor != NL_FCONST(1.0))
tmp = tmp.left(tmp.begin() + (tmp.len() - 1));
@@ -909,7 +918,7 @@ void setup_t::include(const pstring &netlist_name)
if (source->parse(netlist_name))
return;
}
- log().fatal("unable to find {1} in source collection", netlist_name);
+ log().fatal(MF_1_NOT_FOUND_IN_SOURCE_COLLECTION, netlist_name);
}
std::unique_ptr<plib::pistream> setup_t::get_data_stream(const pstring name)
@@ -923,8 +932,7 @@ std::unique_ptr<plib::pistream> setup_t::get_data_stream(const pstring name)
return strm;
}
}
- //log().fatal("unable to find data named {1} in source collection", name);
- log().warning("unable to find data named {1} in source collection", name);
+ log().warning(MW_1_DATA_1_NOT_FOUND, name);
return std::unique_ptr<plib::pistream>(nullptr);
}