diff options
Diffstat (limited to 'src/lib/netlist/nl_setup.cpp')
-rw-r--r-- | src/lib/netlist/nl_setup.cpp | 274 |
1 files changed, 130 insertions, 144 deletions
diff --git a/src/lib/netlist/nl_setup.cpp b/src/lib/netlist/nl_setup.cpp index 21b2c0e8999..5cda3e03d64 100644 --- a/src/lib/netlist/nl_setup.cpp +++ b/src/lib/netlist/nl_setup.cpp @@ -36,10 +36,10 @@ namespace netlist void nlparse_t::register_dip_alias_arr(const pstring &terms) { std::vector<pstring> list(plib::psplit(terms,", ")); - if (list.size() == 0 || (list.size() % 2) == 1) + if (list.empty() || (list.size() % 2) == 1) { log().fatal(MF_DIP_PINS_MUST_BE_AN_EQUAL_NUMBER_OF_PINS_1(build_fqn(""))); - plib::pthrow<nl_exception>(MF_DIP_PINS_MUST_BE_AN_EQUAL_NUMBER_OF_PINS_1(build_fqn(""))); + throw nl_exception(MF_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++) @@ -80,7 +80,7 @@ namespace netlist register_dev(classname, name); - if (params_and_connections.size() > 0) + if (!params_and_connections.empty()) { auto ptok(params_and_connections.begin()); auto ptok_end(params_and_connections.end()); @@ -94,7 +94,7 @@ namespace netlist { auto err(MF_PARAM_COUNT_MISMATCH_2(name, params_and_connections.size())); log().fatal(err); - plib::pthrow<nl_exception>(err); + throw nl_exception(err); //break; } pstring output_name = *ptok; @@ -116,16 +116,14 @@ namespace netlist { auto err(MF_PARAM_COUNT_MISMATCH_2(name, params_and_connections.size())); log().fatal(err); - plib::pthrow<nl_exception>(err); + throw nl_exception(err); } pstring paramfq = name + "." + tp; log().debug("Defparam: {1}\n", paramfq); - // remove quotes - if (plib::startsWith(*ptok, "\"") && plib::endsWith(*ptok, "\"")) - register_param(paramfq, ptok->substr(1, ptok->length() - 2)); - else - register_param(paramfq, *ptok); + + register_param(paramfq, *ptok); + ++ptok; } } @@ -133,7 +131,7 @@ namespace netlist { auto err(MF_PARAM_COUNT_EXCEEDED_2(name, params_and_connections.size())); log().fatal(err); - plib::pthrow<nl_exception>(err); + throw nl_exception(err); } } } @@ -144,21 +142,19 @@ namespace netlist if (f == nullptr) { log().fatal(MF_CLASS_1_NOT_FOUND(classname)); - plib::pthrow<nl_exception>(MF_CLASS_1_NOT_FOUND(classname)); + throw nl_exception(MF_CLASS_1_NOT_FOUND(classname)); } - else + + // make sure we parse macro library entries + f->macro_actions(*this, name); + pstring key = build_fqn(name); + if (device_exists(key)) { - // make sure we parse macro library entries - f->macro_actions(*this, name); - pstring key = build_fqn(name); - if (device_exists(key)) - { - log().fatal(MF_DEVICE_ALREADY_EXISTS_1(name)); - plib::pthrow<nl_exception>(MF_DEVICE_ALREADY_EXISTS_1(name)); - } - else - m_device_factory.insert(m_device_factory.end(), {key, f}); + log().fatal(MF_DEVICE_ALREADY_EXISTS_1(name)); + throw nl_exception(MF_DEVICE_ALREADY_EXISTS_1(name)); } + + m_device_factory.insert(m_device_factory.end(), {key, f}); } void nlparse_t::register_link(const pstring &sin, const pstring &sout) @@ -172,7 +168,7 @@ namespace netlist if (list.size() < 2) { log().fatal(MF_NET_C_NEEDS_AT_LEAST_2_TERMINAL()); - plib::pthrow<nl_exception>(MF_NET_C_NEEDS_AT_LEAST_2_TERMINAL()); + throw nl_exception(MF_NET_C_NEEDS_AT_LEAST_2_TERMINAL()); } for (std::size_t i = 1; i < list.size(); i++) { @@ -188,7 +184,7 @@ namespace netlist })) return; log().fatal(MF_NOT_FOUND_IN_SOURCE_COLLECTION(netlist_name)); - plib::pthrow<nl_exception>(MF_NOT_FOUND_IN_SOURCE_COLLECTION(netlist_name)); + throw nl_exception(MF_NOT_FOUND_IN_SOURCE_COLLECTION(netlist_name)); } @@ -218,21 +214,26 @@ namespace netlist void nlparse_t::register_param(const pstring ¶m, const pstring &value) { pstring fqn = build_fqn(param); + pstring val(value); + + // strip " from stringified strings + if (plib::startsWith(value, "\"") && plib::endsWith(value, "\"")) + val = value.substr(1, value.length() - 2); auto idx = m_param_values.find(fqn); if (idx == m_param_values.end()) { - if (!m_param_values.insert({fqn, value}).second) + if (!m_param_values.insert({fqn, val}).second) { log().fatal(MF_ADDING_PARAMETER_1_TO_PARAMETER_LIST(param)); - plib::pthrow<nl_exception>(MF_ADDING_PARAMETER_1_TO_PARAMETER_LIST(param)); + throw nl_exception(MF_ADDING_PARAMETER_1_TO_PARAMETER_LIST(param)); } } else { log().warning(MW_OVERWRITING_PARAM_1_OLD_2_NEW_3(fqn, idx->second, - value)); - m_param_values[fqn] = value; + val)); + m_param_values[fqn] = val; } } @@ -241,7 +242,7 @@ namespace netlist m_factory.register_device(plib::make_unique<factory::library_element_t>(name, name, "", sourcefile)); } - void nlparse_t::register_frontier(const pstring &attach, const nl_fptype r_IN, const nl_fptype r_OUT) + void nlparse_t::register_frontier(const pstring &attach, const pstring &r_IN, const pstring &r_OUT) { pstring frontier_name = plib::pfmt("frontier_{1}")(m_frontier_cnt); m_frontier_cnt++; @@ -268,7 +269,7 @@ namespace netlist if (!found) { log().fatal(MF_FOUND_NO_OCCURRENCE_OF_1(attach)); - plib::pthrow<nl_exception>(MF_FOUND_NO_OCCURRENCE_OF_1(attach)); + throw nl_exception(MF_FOUND_NO_OCCURRENCE_OF_1(attach)); } register_link(attach, frontier_name + ".Q"); } @@ -281,11 +282,8 @@ namespace netlist pstring nlparse_t::build_fqn(const pstring &obj_name) const { - if (m_namespace_stack.empty()) - //return netlist().name() + "." + obj_name; - return obj_name; - else - return m_namespace_stack.top() + "." + obj_name; + return (m_namespace_stack.empty()) ? obj_name + : m_namespace_stack.top() + "." + obj_name; } void nlparse_t::register_alias_nofqn(const pstring &alias, const pstring &out) @@ -293,7 +291,7 @@ namespace netlist if (!m_alias.insert({alias, out}).second) { log().fatal(MF_ADDING_ALI1_TO_ALIAS_LIST(alias)); - plib::pthrow<nl_exception>(MF_ADDING_ALI1_TO_ALIAS_LIST(alias)); + throw nl_exception(MF_ADDING_ALI1_TO_ALIAS_LIST(alias)); } } @@ -343,7 +341,7 @@ setup_t::setup_t(netlist_state_t &nlstate) { } -pstring setup_t::termtype_as_str(detail::core_terminal_t &in) const +pstring setup_t::termtype_as_str(detail::core_terminal_t &in) { switch (in.type()) { @@ -362,10 +360,7 @@ pstring setup_t::termtype_as_str(detail::core_terminal_t &in) const pstring setup_t::get_initial_param_val(const pstring &name, const pstring &def) const { auto i = m_param_values.find(name); - if (i != m_param_values.end()) - return i->second; - else - return def; + return (i != m_param_values.end()) ? i->second : def; } void setup_t::register_term(detail::core_terminal_t &term) @@ -374,10 +369,16 @@ void setup_t::register_term(detail::core_terminal_t &term) if (!m_terminals.insert({term.name(), &term}).second) { log().fatal(MF_ADDING_1_2_TO_TERMINAL_LIST(termtype_as_str(term), term.name())); - plib::pthrow<nl_exception>(MF_ADDING_1_2_TO_TERMINAL_LIST(termtype_as_str(term), term.name())); + throw nl_exception(MF_ADDING_1_2_TO_TERMINAL_LIST(termtype_as_str(term), term.name())); } } +void setup_t::register_term(terminal_t &term, terminal_t &other_term) +{ + this->register_term(term); + m_connected_terminals.insert({&term, &other_term}); +} + void setup_t::remove_connections(const pstring &pin) { pstring pinfn = build_fqn(pin); @@ -397,7 +398,7 @@ void setup_t::remove_connections(const pstring &pin) if (!found) { log().fatal(MF_FOUND_NO_OCCURRENCE_OF_1(pin)); - plib::pthrow<nl_exception>(MF_FOUND_NO_OCCURRENCE_OF_1(pin)); + throw nl_exception(MF_FOUND_NO_OCCURRENCE_OF_1(pin)); } } @@ -406,7 +407,7 @@ void setup_t::register_param_t(const pstring &name, param_t ¶m) if (!m_params.insert({param.name(), param_ref_t(param.name(), param.device(), param)}).second) { log().fatal(MF_ADDING_PARAMETER_1_TO_PARAMETER_LIST(name)); - plib::pthrow<nl_exception>(MF_ADDING_PARAMETER_1_TO_PARAMETER_LIST(name)); + throw nl_exception(MF_ADDING_PARAMETER_1_TO_PARAMETER_LIST(name)); } } @@ -502,7 +503,7 @@ detail::core_terminal_t *setup_t::find_terminal(const pstring &terminal_in, bool if (term == nullptr && required) { log().fatal(MF_TERMINAL_1_2_NOT_FOUND(terminal_in, tname)); - plib::pthrow<nl_exception>(MF_TERMINAL_1_2_NOT_FOUND(terminal_in, tname)); + throw nl_exception(MF_TERMINAL_1_2_NOT_FOUND(terminal_in, tname)); } if (term != nullptr) { @@ -527,7 +528,7 @@ detail::core_terminal_t *setup_t::find_terminal(const pstring &terminal_in, if (ret == m_terminals.end() && required) { log().fatal(MF_TERMINAL_1_2_NOT_FOUND(terminal_in, tname)); - plib::pthrow<nl_exception>(MF_TERMINAL_1_2_NOT_FOUND(terminal_in, tname)); + throw nl_exception(MF_TERMINAL_1_2_NOT_FOUND(terminal_in, tname)); } detail::core_terminal_t *term = (ret == m_terminals.end() ? nullptr : ret->second); @@ -536,10 +537,10 @@ detail::core_terminal_t *setup_t::find_terminal(const pstring &terminal_in, if (required) { log().fatal(MF_OBJECT_1_2_WRONG_TYPE(terminal_in, tname)); - plib::pthrow<nl_exception>(MF_OBJECT_1_2_WRONG_TYPE(terminal_in, tname)); + throw nl_exception(MF_OBJECT_1_2_WRONG_TYPE(terminal_in, tname)); } - else - term = nullptr; + + term = nullptr; } if (term != nullptr) log().debug("Found input {1}\n", tname); @@ -556,7 +557,7 @@ param_t *setup_t::find_param(const pstring ¶m_in, bool required) const if (ret == m_params.end() && required) { log().fatal(MF_PARAMETER_1_2_NOT_FOUND(param_in_fqn, outname)); - plib::pthrow<nl_exception>(MF_PARAMETER_1_2_NOT_FOUND(param_in_fqn, outname)); + throw nl_exception(MF_PARAMETER_1_2_NOT_FOUND(param_in_fqn, outname)); } if (ret != m_params.end()) log().debug("Found parameter {1}\n", outname); @@ -570,39 +571,38 @@ devices::nld_base_proxy *setup_t::get_d_a_proxy(detail::core_terminal_t &out) auto &out_cast = static_cast<logic_output_t &>(out); auto iter_proxy(m_proxies.find(&out)); - if (iter_proxy == m_proxies.end()) - { - // create a new one ... - pstring x = plib::pfmt("proxy_da_{1}_{2}")(out.name())(m_proxy_cnt); - auto new_proxy = - out_cast.logic_family()->create_d_a_proxy(m_nlstate, x, &out_cast); - m_proxy_cnt++; - // connect all existing terminals to new net + if (iter_proxy != m_proxies.end()) + return iter_proxy->second; - for (auto & p : out.net().core_terms()) + // create a new one ... + pstring x = plib::pfmt("proxy_da_{1}_{2}")(out.name())(m_proxy_cnt); + auto new_proxy = + out_cast.logic_family()->create_d_a_proxy(m_nlstate, x, &out_cast); + m_proxy_cnt++; + // connect all existing terminals to new net + + for (auto & p : out.net().core_terms()) + { + p->clear_net(); // de-link from all nets ... + if (!connect(new_proxy->proxy_term(), *p)) { - p->clear_net(); // de-link from all nets ... - if (!connect(new_proxy->proxy_term(), *p)) - { - log().fatal(MF_CONNECTING_1_TO_2( - new_proxy->proxy_term().name(), (*p).name())); - plib::pthrow<nl_exception>(MF_CONNECTING_1_TO_2( - new_proxy->proxy_term().name(), (*p).name())); - } + log().fatal(MF_CONNECTING_1_TO_2( + new_proxy->proxy_term().name(), (*p).name())); + throw nl_exception(MF_CONNECTING_1_TO_2( + new_proxy->proxy_term().name(), (*p).name())); } - out.net().core_terms().clear(); + } + out.net().core_terms().clear(); - out.net().add_terminal(new_proxy->in()); + out.net().add_terminal(new_proxy->in()); - auto proxy(new_proxy.get()); - if (!m_proxies.insert({&out, proxy}).second) - plib::pthrow<nl_exception>(MF_DUPLICATE_PROXY_1(out.name())); + auto proxy(new_proxy.get()); + if (!m_proxies.insert({&out, proxy}).second) + throw nl_exception(MF_DUPLICATE_PROXY_1(out.name())); + + m_nlstate.register_device(new_proxy->name(), std::move(new_proxy)); + return proxy; - m_nlstate.register_device(new_proxy->name(), std::move(new_proxy)); - return proxy; - } - else - return iter_proxy->second; } devices::nld_base_proxy *setup_t::get_a_d_proxy(detail::core_terminal_t &inp) @@ -615,42 +615,40 @@ devices::nld_base_proxy *setup_t::get_a_d_proxy(detail::core_terminal_t &inp) if (iter_proxy != m_proxies.end()) return iter_proxy->second; - else - { - log().debug("connect_terminal_input: connecting proxy\n"); - pstring x = plib::pfmt("proxy_ad_{1}_{2}")(inp.name())(m_proxy_cnt); - auto new_proxy = incast.logic_family()->create_a_d_proxy(m_nlstate, x, &incast); - //auto new_proxy = plib::owned_ptr<devices::nld_a_to_d_proxy>::Create(netlist(), x, &incast); - auto ret(new_proxy.get()); + log().debug("connect_terminal_input: connecting proxy\n"); + pstring x = plib::pfmt("proxy_ad_{1}_{2}")(inp.name())(m_proxy_cnt); + auto new_proxy = incast.logic_family()->create_a_d_proxy(m_nlstate, x, &incast); + //auto new_proxy = plib::owned_ptr<devices::nld_a_to_d_proxy>::Create(netlist(), x, &incast); - if (!m_proxies.insert({&inp, ret}).second) - plib::pthrow<nl_exception>(MF_DUPLICATE_PROXY_1(inp.name())); + auto ret(new_proxy.get()); - m_proxy_cnt++; + if (!m_proxies.insert({&inp, ret}).second) + throw nl_exception(MF_DUPLICATE_PROXY_1(inp.name())); - // connect all existing terminals to new net + m_proxy_cnt++; - if (inp.has_net()) + // connect all existing terminals to new net + + if (inp.has_net()) + { + for (auto & p : inp.net().core_terms()) { - for (auto & p : inp.net().core_terms()) + p->clear_net(); // de-link from all nets ... + if (!connect(ret->proxy_term(), *p)) { - p->clear_net(); // de-link from all nets ... - if (!connect(ret->proxy_term(), *p)) - { - log().fatal(MF_CONNECTING_1_TO_2( - ret->proxy_term().name(), (*p).name())); - plib::pthrow<nl_exception>(MF_CONNECTING_1_TO_2( - ret->proxy_term().name(), (*p).name())); + log().fatal(MF_CONNECTING_1_TO_2( + ret->proxy_term().name(), (*p).name())); + throw nl_exception(MF_CONNECTING_1_TO_2( + ret->proxy_term().name(), (*p).name())); - } } - inp.net().core_terms().clear(); // clear the list } - ret->out().net().add_terminal(inp); - m_nlstate.register_device(new_proxy->name(), std::move(new_proxy)); - return ret; + inp.net().core_terms().clear(); // clear the list } + ret->out().net().add_terminal(inp); + m_nlstate.register_device(new_proxy->name(), std::move(new_proxy)); + return ret; } detail::core_terminal_t &setup_t::resolve_proxy(detail::core_terminal_t &term) @@ -677,7 +675,7 @@ void setup_t::merge_nets(detail::net_t &thisnet, detail::net_t &othernet) if (thisnet.isRailNet() && othernet.isRailNet()) { log().fatal(MF_MERGE_RAIL_NETS_1_AND_2(thisnet.name(), othernet.name())); - plib::pthrow<nl_exception>(MF_MERGE_RAIL_NETS_1_AND_2(thisnet.name(), othernet.name())); + throw nl_exception(MF_MERGE_RAIL_NETS_1_AND_2(thisnet.name(), othernet.name())); } if (othernet.isRailNet()) @@ -737,7 +735,7 @@ void setup_t::connect_terminal_input(terminal_t &term, detail::core_terminal_t & else { log().fatal(MF_OBJECT_INPUT_TYPE_1(inp.name())); - plib::pthrow<nl_exception>(MF_OBJECT_INPUT_TYPE_1(inp.name())); + throw nl_exception(MF_OBJECT_INPUT_TYPE_1(inp.name())); } } @@ -762,7 +760,7 @@ void setup_t::connect_terminal_output(terminal_t &in, detail::core_terminal_t &o else { log().fatal(MF_OBJECT_OUTPUT_TYPE_1(out.name())); - plib::pthrow<nl_exception>(MF_OBJECT_OUTPUT_TYPE_1(out.name())); + throw nl_exception(MF_OBJECT_OUTPUT_TYPE_1(out.name())); } } @@ -844,7 +842,7 @@ bool setup_t::connect(detail::core_terminal_t &t1_in, detail::core_terminal_t &t if (t2.has_net() && t2.net().isRailNet()) { log().fatal(MF_INPUT_1_ALREADY_CONNECTED(t2.name())); - plib::pthrow<nl_exception>(MF_INPUT_1_ALREADY_CONNECTED(t2.name())); + throw nl_exception(MF_INPUT_1_ALREADY_CONNECTED(t2.name())); } connect_input_output(t2, t1); } @@ -853,7 +851,7 @@ bool setup_t::connect(detail::core_terminal_t &t1_in, detail::core_terminal_t &t if (t1.has_net() && t1.net().isRailNet()) { log().fatal(MF_INPUT_1_ALREADY_CONNECTED(t1.name())); - plib::pthrow<nl_exception>(MF_INPUT_1_ALREADY_CONNECTED(t1.name())); + throw nl_exception(MF_INPUT_1_ALREADY_CONNECTED(t1.name())); } connect_input_output(t1, t2); } @@ -895,7 +893,7 @@ void setup_t::resolve_inputs() // after all other terminals were connected. unsigned tries = m_netlist_params->m_max_link_loops(); - while (m_links.size() > 0 && tries > 0) + while (!m_links.empty() > 0 && tries > 0) { for (auto li = m_links.begin(); li != m_links.end(); ) @@ -919,7 +917,7 @@ void setup_t::resolve_inputs() log().warning(MF_CONNECTING_1_TO_2(setup().de_alias(link.first), setup().de_alias(link.second))); log().fatal(MF_LINK_TRIES_EXCEEDED(m_netlist_params->m_max_link_loops())); - plib::pthrow<nl_exception>(MF_LINK_TRIES_EXCEEDED(m_netlist_params->m_max_link_loops())); + throw nl_exception(MF_LINK_TRIES_EXCEEDED(m_netlist_params->m_max_link_loops())); } log().verbose("deleting empty nets ..."); @@ -964,7 +962,7 @@ void setup_t::resolve_inputs() if (err) { log().fatal(MF_TERMINALS_WITHOUT_NET()); - plib::pthrow<nl_exception>(MF_TERMINALS_WITHOUT_NET()); + throw nl_exception(MF_TERMINALS_WITHOUT_NET()); } } @@ -1006,11 +1004,11 @@ void models_t::register_model(const pstring &model_in) { auto pos = model_in.find(' '); if (pos == pstring::npos) - plib::pthrow<nl_exception>(MF_UNABLE_TO_PARSE_MODEL_1(model_in)); + throw nl_exception(MF_UNABLE_TO_PARSE_MODEL_1(model_in)); pstring model = plib::ucase(plib::trim(plib::left(model_in, pos))); pstring def = plib::trim(model_in.substr(pos + 1)); if (!m_models.insert({model, def}).second) - plib::pthrow<nl_exception>(MF_MODEL_ALREADY_EXISTS_1(model_in)); + throw nl_exception(MF_MODEL_ALREADY_EXISTS_1(model_in)); } void models_t::model_parse(const pstring &model_in, model_map_t &map) @@ -1027,7 +1025,7 @@ void models_t::model_parse(const pstring &model_in, model_map_t &map) key = plib::ucase(model); auto i = m_models.find(key); if (i == m_models.end()) - plib::pthrow<nl_exception>(MF_MODEL_NOT_FOUND(model)); + throw nl_exception(MF_MODEL_NOT_FOUND(model)); model = i->second; } pstring xmodel = plib::left(model, pos); @@ -1040,12 +1038,12 @@ void models_t::model_parse(const pstring &model_in, model_map_t &map) if (i != m_models.end()) model_parse(xmodel, map); else - plib::pthrow<nl_exception>(MF_MODEL_NOT_FOUND(model_in)); + throw nl_exception(MF_MODEL_NOT_FOUND(model_in)); } pstring remainder = plib::trim(model.substr(pos + 1)); if (!plib::endsWith(remainder, ")")) - plib::pthrow<nl_exception>(MF_MODEL_ERROR_1(model)); + throw nl_exception(MF_MODEL_ERROR_1(model)); // FIMXE: Not optimal remainder = plib::left(remainder, remainder.size() - 1); @@ -1054,7 +1052,7 @@ void models_t::model_parse(const pstring &model_in, model_map_t &map) { auto pose = pe.find('='); if (pose == pstring::npos) - plib::pthrow<nl_exception>(MF_MODEL_ERROR_ON_PAIR_1(model)); + throw nl_exception(MF_MODEL_ERROR_ON_PAIR_1(model)); map[plib::ucase(plib::left(pe, pose))] = pe.substr(pose + 1); } } @@ -1073,26 +1071,22 @@ pstring models_t::value_str(const pstring &model, const pstring &entity) { model_map_t &map = m_cache[model]; - if (map.size() == 0) + if (map.empty()) model_parse(model , map); - pstring ret; - if (entity != plib::ucase(entity)) - plib::pthrow<nl_exception>(MF_MODEL_PARAMETERS_NOT_UPPERCASE_1_2(entity, model_string(map))); + throw nl_exception(MF_MODEL_PARAMETERS_NOT_UPPERCASE_1_2(entity, model_string(map))); if (map.find(entity) == map.end()) - plib::pthrow<nl_exception>(MF_ENTITY_1_NOT_FOUND_IN_MODEL_2(entity, model_string(map))); - else - ret = map[entity]; + throw nl_exception(MF_ENTITY_1_NOT_FOUND_IN_MODEL_2(entity, model_string(map))); - return ret; + return map[entity]; } nl_fptype models_t::value(const pstring &model, const pstring &entity) { model_map_t &map = m_cache[model]; - if (map.size() == 0) + if (map.empty()) model_parse(model , map); pstring tmp = value_str(model, entity); @@ -1112,7 +1106,7 @@ nl_fptype models_t::value(const pstring &model, const pstring &entity) case 'a': factor = nlconst::magic(1e-18); break; default: if (*p < '0' || *p > '9') - plib::pthrow<nl_exception>(MF_UNKNOWN_NUMBER_FACTOR_IN_1(entity)); + throw nl_exception(MF_UNKNOWN_NUMBER_FACTOR_IN_1(entity)); } if (factor != nlconst::one()) tmp = plib::left(tmp, tmp.size() - 1); @@ -1121,7 +1115,7 @@ nl_fptype models_t::value(const pstring &model, const pstring &entity) bool err(false); auto val = plib::pstonum_ne<nl_fptype>(tmp, err); if (err) - plib::pthrow<nl_exception>(MF_MODEL_NUMBER_CONVERSION_ERROR(entity, tmp, "double", model)); + throw nl_exception(MF_MODEL_NUMBER_CONVERSION_ERROR(entity, tmp, "double", model)); return val * factor; } @@ -1159,7 +1153,6 @@ const logic_family_desc_t *setup_t::family_from_model(const pstring &model) auto ret = plib::make_unique<logic_family_std_proxy_t>(); - ret->m_fixed_V = m_models.value(model, "FV"); ret->m_low_thresh_PCNT = m_models.value(model, "IVL"); ret->m_high_thresh_PCNT = m_models.value(model, "IVH"); ret->m_low_VO = m_models.value(model, "OVL"); @@ -1204,8 +1197,7 @@ void setup_t::delete_empty_nets() x->state().run_state_manager().remove_save_items(x.get()); return true; } - else - return false; + return false; }), m_nlstate.nets().end()); } @@ -1269,7 +1261,7 @@ void setup_t::prepare_to_run() } } - bool use_deactivate = m_netlist_params->m_use_deactivate() ? true : false; + const bool use_deactivate = m_netlist_params->m_use_deactivate(); for (auto &d : m_nlstate.devices()) { @@ -1284,7 +1276,7 @@ void setup_t::prepare_to_run() if (err || plib::abs(v - plib::floor(v)) > nlconst::magic(1e-6) ) { log().fatal(MF_HND_VAL_NOT_SUPPORTED(p->second)); - plib::pthrow<nl_exception>(MF_HND_VAL_NOT_SUPPORTED(p->second)); + throw nl_exception(MF_HND_VAL_NOT_SUPPORTED(p->second)); } // FIXME comparison with zero d.second->set_hint_deactivate(v == nlconst::zero()); @@ -1318,7 +1310,7 @@ void setup_t::prepare_to_run() if (p->is_analog()) { log().fatal(MF_NO_SOLVER()); - plib::pthrow<nl_exception>(MF_NO_SOLVER()); + throw nl_exception(MF_NO_SOLVER()); } } else @@ -1340,10 +1332,7 @@ void setup_t::prepare_to_run() bool source_netlist_t::parse(nlparse_t &setup, const pstring &name) { auto strm(stream(name)); - if (strm) - return setup.parse_stream(std::move(strm), name); - else - return false; + return (strm) ? setup.parse_stream(std::move(strm), name) : false; } source_string_t::stream_ptr source_string_t::stream(const pstring &name) @@ -1366,10 +1355,7 @@ source_file_t::stream_ptr source_file_t::stream(const pstring &name) { plib::unused_var(name); auto ret(plib::make_unique<std::ifstream>(plib::filesystem::u8path(m_filename))); - if (ret->is_open()) - return std::move(ret); - else - return stream_ptr(nullptr); + return (ret->is_open()) ? std::move(ret) : stream_ptr(nullptr); } bool source_proc_t::parse(nlparse_t &setup, const pstring &name) @@ -1379,8 +1365,8 @@ bool source_proc_t::parse(nlparse_t &setup, const pstring &name) m_setup_func(setup); return true; } - else - return false; + + return false; } source_proc_t::stream_ptr source_proc_t::stream(const pstring &name) |