From 1b3e8e14c5f78e30c22828b9a2ec8deff1445927 Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Mon, 6 Mar 2023 22:38:10 +0100 Subject: [PATCH] Netlist reader: anonymous circuits are not checked for known parameters --- src/db/db/dbNetlistSpiceReader.cc | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/db/db/dbNetlistSpiceReader.cc b/src/db/db/dbNetlistSpiceReader.cc index 978662e3e..46e6ce391 100644 --- a/src/db/db/dbNetlistSpiceReader.cc +++ b/src/db/db/dbNetlistSpiceReader.cc @@ -227,11 +227,21 @@ public: typedef pin_list_type::const_iterator pin_const_iterator; SpiceCachedCircuit (const std::string &name) - : m_name (name) + : m_name (name), m_anonymous (false) { // .. nothing yet .. } + bool is_anonymous () const + { + return m_anonymous; + } + + void set_anonymous (bool f) + { + m_anonymous = f; + } + const std::string &name () const { return m_name; @@ -305,6 +315,7 @@ private: parameters_type m_parameters; pin_list_type m_pins; cards_type m_cards; + bool m_anonymous; }; static std::string @@ -1067,12 +1078,15 @@ SpiceNetlistBuilder::process_element (tl::Extractor &ex, const std::string &pref error (tl::sprintf (tl::to_string (tr ("Subcircuit '%s' not found in netlist")), model)); } else { db::SpiceCachedCircuit *cc_nc = mp_dict->create_cached_circuit (model); + cc_nc->set_anonymous (true); cc = cc_nc; std::vector pins; pins.resize (nn.size ()); cc_nc->set_pins (pins); } - } else { + } + + if (! cc->is_anonymous ()) { // issue warnings on unknown parameters which are skipped otherwise for (auto p = pv.begin (); p != pv.end (); ++p) { if (cc->parameters ().find (p->first) == cc->parameters ().end ()) {