From ace0788f85736ae80d97c71a29456794f25fcbdd Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Sun, 7 Jul 2019 00:05:22 +0200 Subject: [PATCH] WIP: Spice reader reads pin names from nets --- src/db/db/dbCircuit.cc | 7 +++++++ src/db/db/dbCircuit.h | 5 +++++ src/db/db/dbNetlistSpiceReader.cc | 2 ++ src/db/db/dbPin.h | 5 +++++ 4 files changed, 19 insertions(+) diff --git a/src/db/db/dbCircuit.cc b/src/db/db/dbCircuit.cc index 7a9fe43d0..9220a69e3 100644 --- a/src/db/db/dbCircuit.cc +++ b/src/db/db/dbCircuit.cc @@ -145,6 +145,13 @@ const Pin *Circuit::pin_by_id (size_t id) const } } +void Circuit::rename_pin (size_t id, const std::string &name) +{ + if (id < m_pins.size ()) { + m_pins [id].set_name (name); + } +} + const Pin *Circuit::pin_by_name (const std::string &name) const { for (Circuit::const_pin_iterator p = begin_pins (); p != end_pins (); ++p) { diff --git a/src/db/db/dbCircuit.h b/src/db/db/dbCircuit.h index 6e84784e2..39a59fc09 100644 --- a/src/db/db/dbCircuit.h +++ b/src/db/db/dbCircuit.h @@ -656,6 +656,11 @@ public: */ void connect_pin (size_t pin_id, Net *net); + /** + * @brief Renames the pin with the given ID + */ + void rename_pin (size_t pin_id, const std::string &name); + /** * @brief Purge unused nets * diff --git a/src/db/db/dbNetlistSpiceReader.cc b/src/db/db/dbNetlistSpiceReader.cc index 055b7dcf9..d99d3973e 100644 --- a/src/db/db/dbNetlistSpiceReader.cc +++ b/src/db/db/dbNetlistSpiceReader.cc @@ -804,6 +804,8 @@ void NetlistSpiceReader::read_circuit (tl::Extractor &ex, const std::string &nc) for (std::vector::const_iterator i = nn.begin (); i != nn.end (); ++i) { db::Net *net = make_net (*i); + // use the net name to name the pin (otherwise SPICE pins are always unnamed) + // @@@ mp_circuit->rename_pin (i - nn.begin (), net->name ()); mp_circuit->connect_pin (i - nn.begin (), net); } diff --git a/src/db/db/dbPin.h b/src/db/db/dbPin.h index 2ee33cf6c..1c9dd9714 100644 --- a/src/db/db/dbPin.h +++ b/src/db/db/dbPin.h @@ -80,6 +80,11 @@ private: { m_id = id; } + + void set_name (const std::string &name) + { + m_name = name; + } }; }