diff options
Diffstat (limited to 'src/lib/netlist/nl_setup.cpp')
-rw-r--r-- | src/lib/netlist/nl_setup.cpp | 98 |
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 ¶m) { 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 ¶m, 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 ¶m_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); } |