From c841b84867aea193819164a661dad728715b45bd Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Sun, 30 Dec 2018 13:37:52 +0100 Subject: [PATCH] WIP: some minor refactoring. --- src/db/db/dbNetlist.cc | 11 +- src/db/db/dbNetlist.h | 3 +- src/db/db/dbNetlistExtractor.cc | 4 +- src/db/db/gsiDeclDbNetlist.cc | 7 +- .../unit_tests/dbNetlistDeviceClassesTests.cc | 140 +++++++++--------- src/db/unit_tests/dbNetlistTests.cc | 26 ++-- 6 files changed, 89 insertions(+), 102 deletions(-) diff --git a/src/db/db/dbNetlist.cc b/src/db/db/dbNetlist.cc index d301a75b9..1f740ef0f 100644 --- a/src/db/db/dbNetlist.cc +++ b/src/db/db/dbNetlist.cc @@ -559,9 +559,7 @@ Circuit &Circuit::operator= (const Circuit &other) m_subcircuit_by_name.invalidate (); m_net_by_name.invalidate (); - for (const_pin_iterator i = other.begin_pins (); i != other.end_pins (); ++i) { - add_pin (*i); - } + m_pins = other.m_pins; std::map device_table; for (const_device_iterator i = other.begin_devices (); i != other.end_devices (); ++i) { @@ -711,9 +709,9 @@ Circuit::const_child_circuit_iterator Circuit::end_parents () const return reinterpret_cast &> (mp_netlist->parent_circuits (const_cast (this))).end (); } -const Pin &Circuit::add_pin (const Pin &pin) +const Pin &Circuit::add_pin (const std::string &name) { - m_pins.push_back (pin); + m_pins.push_back (Pin (name)); m_pins.back ().set_id (m_pins.size () - 1); return m_pins.back (); } @@ -1503,8 +1501,7 @@ void Netlist::make_top_level_pins () // create pins for the named nets and connect them for (Circuit::net_iterator n = circuit->begin_nets (); n != circuit->end_nets (); ++n) { if (! n->name ().empty () && n->terminal_count () + n->pin_count () > 0) { - Pin pin (n->name ()); - pin = circuit->add_pin (pin); + Pin pin = circuit->add_pin (n->name ()); circuit->connect_pin (pin.id (), n.operator-> ()); } } diff --git a/src/db/db/dbNetlist.h b/src/db/db/dbNetlist.h index 25bf3d054..b1b627ffc 100644 --- a/src/db/db/dbNetlist.h +++ b/src/db/db/dbNetlist.h @@ -640,7 +640,6 @@ public: private: friend class Circuit; - tl::weak_ptr m_circuit; std::string m_name; size_t m_id; @@ -1187,7 +1186,7 @@ public: * @brief Adds a pin to this circuit * The circuit takes over ownership of the object. */ - const Pin &add_pin(const Pin &pin); + const Pin &add_pin(const std::string &name); /** * @brief Begin iterator for the pins of the circuit (non-const version) diff --git a/src/db/db/dbNetlistExtractor.cc b/src/db/db/dbNetlistExtractor.cc index 91650e852..6dfd810eb 100644 --- a/src/db/db/dbNetlistExtractor.cc +++ b/src/db/db/dbNetlistExtractor.cc @@ -171,9 +171,7 @@ void NetlistExtractor::make_and_connect_subcircuits (db::Circuit *circuit, size_t NetlistExtractor::make_pin (db::Circuit *circuit, db::Net *net) { - db::Pin pin (net->name ()); - - size_t pin_id = circuit->add_pin (pin).id (); + size_t pin_id = circuit->add_pin (net->name ()).id (); net->add_pin (db::NetPinRef (pin_id)); circuit->connect_pin (pin_id, net); diff --git a/src/db/db/gsiDeclDbNetlist.cc b/src/db/db/gsiDeclDbNetlist.cc index 33d98a3d9..194ad572e 100644 --- a/src/db/db/gsiDeclDbNetlist.cc +++ b/src/db/db/gsiDeclDbNetlist.cc @@ -597,11 +597,6 @@ Class decl_GenericDeviceClass (decl_dbDeviceClass, "db", "Ge "This class has been added in version 0.26." ); -static const db::Pin &create_pin (db::Circuit *c, const std::string &name) -{ - return c->add_pin (db::Pin (name)); -} - static db::Net *create_net (db::Circuit *c, const std::string &name) { db::Net *n = new db::Net (); @@ -649,7 +644,7 @@ static void circuit_disconnect_pin1 (db::Circuit *c, const db::Pin *pin) } Class decl_dbCircuit ("db", "Circuit", - gsi::method_ext ("create_pin", &gsi::create_pin, gsi::arg ("name"), + gsi::method ("create_pin", &db::Circuit::add_pin, gsi::arg ("name"), "@brief Creates a new \\Pin object inside the circuit\n" "This object will describe a pin of the circuit. A circuit connects " "to the outside through such a pin. The pin is added after all existing " diff --git a/src/db/unit_tests/dbNetlistDeviceClassesTests.cc b/src/db/unit_tests/dbNetlistDeviceClassesTests.cc index 2864e8cfe..510f85ee6 100644 --- a/src/db/unit_tests/dbNetlistDeviceClassesTests.cc +++ b/src/db/unit_tests/dbNetlistDeviceClassesTests.cc @@ -43,8 +43,8 @@ TEST(1_SerialResistors) db::Circuit *circuit = new db::Circuit (); nl.add_circuit (circuit); - db::Pin pin_a = circuit->add_pin (db::Pin ("A")); - db::Pin pin_b = circuit->add_pin (db::Pin ("B")); + db::Pin pin_a = circuit->add_pin ("A"); + db::Pin pin_b = circuit->add_pin ("B"); circuit->add_device (r1); circuit->add_device (r2); @@ -94,8 +94,8 @@ TEST(2_SerialResistors1Swapped) db::Circuit *circuit = new db::Circuit (); nl.add_circuit (circuit); - db::Pin pin_a = circuit->add_pin (db::Pin ("A")); - db::Pin pin_b = circuit->add_pin (db::Pin ("B")); + db::Pin pin_a = circuit->add_pin ("A"); + db::Pin pin_b = circuit->add_pin ("B"); circuit->add_device (r1); circuit->add_device (r2); @@ -145,8 +145,8 @@ TEST(3_SerialResistors1OtherSwapped) db::Circuit *circuit = new db::Circuit (); nl.add_circuit (circuit); - db::Pin pin_a = circuit->add_pin (db::Pin ("A")); - db::Pin pin_b = circuit->add_pin (db::Pin ("B")); + db::Pin pin_a = circuit->add_pin ("A"); + db::Pin pin_b = circuit->add_pin ("B"); circuit->add_device (r1); circuit->add_device (r2); @@ -196,8 +196,8 @@ TEST(4_SerialResistors2Swapped) db::Circuit *circuit = new db::Circuit (); nl.add_circuit (circuit); - db::Pin pin_a = circuit->add_pin (db::Pin ("A")); - db::Pin pin_b = circuit->add_pin (db::Pin ("B")); + db::Pin pin_a = circuit->add_pin ("A"); + db::Pin pin_b = circuit->add_pin ("B"); circuit->add_device (r1); circuit->add_device (r2); @@ -247,9 +247,9 @@ TEST(5_SerialResistorsNoCombination) db::Circuit *circuit = new db::Circuit (); nl.add_circuit (circuit); - db::Pin pin_a = circuit->add_pin (db::Pin ("A")); - db::Pin pin_b = circuit->add_pin (db::Pin ("B")); - db::Pin pin_c = circuit->add_pin (db::Pin ("C")); + db::Pin pin_a = circuit->add_pin ("A"); + db::Pin pin_b = circuit->add_pin ("B"); + db::Pin pin_c = circuit->add_pin ("C"); circuit->add_device (r1); circuit->add_device (r2); @@ -301,8 +301,8 @@ TEST(6_ParallelResistors) db::Circuit *circuit = new db::Circuit (); nl.add_circuit (circuit); - db::Pin pin_a = circuit->add_pin (db::Pin ("A")); - db::Pin pin_b = circuit->add_pin (db::Pin ("B")); + db::Pin pin_a = circuit->add_pin ("A"); + db::Pin pin_b = circuit->add_pin ("B"); circuit->add_device (r1); circuit->add_device (r2); @@ -349,8 +349,8 @@ TEST(7_ParallelResistors1Swapped) db::Circuit *circuit = new db::Circuit (); nl.add_circuit (circuit); - db::Pin pin_a = circuit->add_pin (db::Pin ("A")); - db::Pin pin_b = circuit->add_pin (db::Pin ("B")); + db::Pin pin_a = circuit->add_pin ("A"); + db::Pin pin_b = circuit->add_pin ("B"); circuit->add_device (r1); circuit->add_device (r2); @@ -397,8 +397,8 @@ TEST(8_ParallelResistors1OtherSwapped) db::Circuit *circuit = new db::Circuit (); nl.add_circuit (circuit); - db::Pin pin_a = circuit->add_pin (db::Pin ("A")); - db::Pin pin_b = circuit->add_pin (db::Pin ("B")); + db::Pin pin_a = circuit->add_pin ("A"); + db::Pin pin_b = circuit->add_pin ("B"); circuit->add_device (r1); circuit->add_device (r2); @@ -445,8 +445,8 @@ TEST(9_ParallelResistors2Swapped) db::Circuit *circuit = new db::Circuit (); nl.add_circuit (circuit); - db::Pin pin_a = circuit->add_pin (db::Pin ("A")); - db::Pin pin_b = circuit->add_pin (db::Pin ("B")); + db::Pin pin_a = circuit->add_pin ("A"); + db::Pin pin_b = circuit->add_pin ("B"); circuit->add_device (r1); circuit->add_device (r2); @@ -506,8 +506,8 @@ TEST(10_ComplexRegistorCombination) db::Circuit *circuit = new db::Circuit (); nl.add_circuit (circuit); - db::Pin pin_a = circuit->add_pin (db::Pin ("A")); - db::Pin pin_b = circuit->add_pin (db::Pin ("B")); + db::Pin pin_a = circuit->add_pin ("A"); + db::Pin pin_b = circuit->add_pin ("B"); circuit->add_device (r1); circuit->add_device (r2); @@ -568,8 +568,8 @@ TEST(11_SerialInductors) db::Circuit *circuit = new db::Circuit (); nl.add_circuit (circuit); - db::Pin pin_a = circuit->add_pin (db::Pin ("A")); - db::Pin pin_b = circuit->add_pin (db::Pin ("B")); + db::Pin pin_a = circuit->add_pin ("A"); + db::Pin pin_b = circuit->add_pin ("B"); circuit->add_device (l1); circuit->add_device (l2); @@ -619,8 +619,8 @@ TEST(12_ParallelInductors) db::Circuit *circuit = new db::Circuit (); nl.add_circuit (circuit); - db::Pin pin_a = circuit->add_pin (db::Pin ("A")); - db::Pin pin_b = circuit->add_pin (db::Pin ("B")); + db::Pin pin_a = circuit->add_pin ("A"); + db::Pin pin_b = circuit->add_pin ("B"); circuit->add_device (l1); circuit->add_device (l2); @@ -667,8 +667,8 @@ TEST(13_SerialCapacitors) db::Circuit *circuit = new db::Circuit (); nl.add_circuit (circuit); - db::Pin pin_a = circuit->add_pin (db::Pin ("A")); - db::Pin pin_b = circuit->add_pin (db::Pin ("B")); + db::Pin pin_a = circuit->add_pin ("A"); + db::Pin pin_b = circuit->add_pin ("B"); circuit->add_device (c1); circuit->add_device (c2); @@ -718,8 +718,8 @@ TEST(14_ParallelCapacitors) db::Circuit *circuit = new db::Circuit (); nl.add_circuit (circuit); - db::Pin pin_a = circuit->add_pin (db::Pin ("A")); - db::Pin pin_b = circuit->add_pin (db::Pin ("B")); + db::Pin pin_a = circuit->add_pin ("A"); + db::Pin pin_b = circuit->add_pin ("B"); circuit->add_device (c1); circuit->add_device (c2); @@ -766,8 +766,8 @@ TEST(15_SerialDiodes) db::Circuit *circuit = new db::Circuit (); nl.add_circuit (circuit); - db::Pin pin_a = circuit->add_pin (db::Pin ("A")); - db::Pin pin_b = circuit->add_pin (db::Pin ("B")); + db::Pin pin_a = circuit->add_pin ("A"); + db::Pin pin_b = circuit->add_pin ("B"); circuit->add_device (d1); circuit->add_device (d2); @@ -820,8 +820,8 @@ TEST(16_ParallelDiodes) db::Circuit *circuit = new db::Circuit (); nl.add_circuit (circuit); - db::Pin pin_a = circuit->add_pin (db::Pin ("A")); - db::Pin pin_b = circuit->add_pin (db::Pin ("B")); + db::Pin pin_a = circuit->add_pin ("A"); + db::Pin pin_b = circuit->add_pin ("B"); circuit->add_device (d1); circuit->add_device (d2); @@ -868,8 +868,8 @@ TEST(17_AntiParallelDiodes) db::Circuit *circuit = new db::Circuit (); nl.add_circuit (circuit); - db::Pin pin_a = circuit->add_pin (db::Pin ("A")); - db::Pin pin_b = circuit->add_pin (db::Pin ("B")); + db::Pin pin_a = circuit->add_pin ("A"); + db::Pin pin_b = circuit->add_pin ("B"); circuit->add_device (d1); circuit->add_device (d2); @@ -925,9 +925,9 @@ TEST(20_ParallelMOS3Transistors) db::Circuit *circuit = new db::Circuit (); nl.add_circuit (circuit); - db::Pin pin_a = circuit->add_pin (db::Pin ("A")); - db::Pin pin_b = circuit->add_pin (db::Pin ("B")); - db::Pin pin_c = circuit->add_pin (db::Pin ("C")); + db::Pin pin_a = circuit->add_pin ("A"); + db::Pin pin_b = circuit->add_pin ("B"); + db::Pin pin_c = circuit->add_pin ("C"); circuit->add_device (d1); circuit->add_device (d2); @@ -986,9 +986,9 @@ TEST(21_AntiParallelMOS3Transistors) db::Circuit *circuit = new db::Circuit (); nl.add_circuit (circuit); - db::Pin pin_a = circuit->add_pin (db::Pin ("A")); - db::Pin pin_b = circuit->add_pin (db::Pin ("B")); - db::Pin pin_c = circuit->add_pin (db::Pin ("C")); + db::Pin pin_a = circuit->add_pin ("A"); + db::Pin pin_b = circuit->add_pin ("B"); + db::Pin pin_c = circuit->add_pin ("C"); circuit->add_device (d1); circuit->add_device (d2); @@ -1047,10 +1047,10 @@ TEST(22_ParallelMOS3TransistorsDisconnectedGates) db::Circuit *circuit = new db::Circuit (); nl.add_circuit (circuit); - db::Pin pin_a = circuit->add_pin (db::Pin ("A")); - db::Pin pin_b = circuit->add_pin (db::Pin ("B")); - db::Pin pin_c1 = circuit->add_pin (db::Pin ("C1")); - db::Pin pin_c2 = circuit->add_pin (db::Pin ("C2")); + db::Pin pin_a = circuit->add_pin ("A"); + db::Pin pin_b = circuit->add_pin ("B"); + db::Pin pin_c1 = circuit->add_pin ("C1"); + db::Pin pin_c2 = circuit->add_pin ("C2"); circuit->add_device (d1); circuit->add_device (d2); @@ -1116,9 +1116,9 @@ TEST(23_ParallelMOS3TransistorsDifferentLength) db::Circuit *circuit = new db::Circuit (); nl.add_circuit (circuit); - db::Pin pin_a = circuit->add_pin (db::Pin ("A")); - db::Pin pin_b = circuit->add_pin (db::Pin ("B")); - db::Pin pin_c = circuit->add_pin (db::Pin ("C")); + db::Pin pin_a = circuit->add_pin ("A"); + db::Pin pin_b = circuit->add_pin ("B"); + db::Pin pin_c = circuit->add_pin ("C"); circuit->add_device (d1); circuit->add_device (d2); @@ -1180,10 +1180,10 @@ TEST(30_ParallelMOS4Transistors) db::Circuit *circuit = new db::Circuit (); nl.add_circuit (circuit); - db::Pin pin_a = circuit->add_pin (db::Pin ("A")); - db::Pin pin_b = circuit->add_pin (db::Pin ("B")); - db::Pin pin_c = circuit->add_pin (db::Pin ("C")); - db::Pin pin_d = circuit->add_pin (db::Pin ("D")); + db::Pin pin_a = circuit->add_pin ("A"); + db::Pin pin_b = circuit->add_pin ("B"); + db::Pin pin_c = circuit->add_pin ("C"); + db::Pin pin_d = circuit->add_pin ("D"); circuit->add_device (d1); circuit->add_device (d2); @@ -1248,10 +1248,10 @@ TEST(31_AntiParallelMOS4Transistors) db::Circuit *circuit = new db::Circuit (); nl.add_circuit (circuit); - db::Pin pin_a = circuit->add_pin (db::Pin ("A")); - db::Pin pin_b = circuit->add_pin (db::Pin ("B")); - db::Pin pin_c = circuit->add_pin (db::Pin ("C")); - db::Pin pin_d = circuit->add_pin (db::Pin ("D")); + db::Pin pin_a = circuit->add_pin ("A"); + db::Pin pin_b = circuit->add_pin ("B"); + db::Pin pin_c = circuit->add_pin ("C"); + db::Pin pin_d = circuit->add_pin ("D"); circuit->add_device (d1); circuit->add_device (d2); @@ -1316,11 +1316,11 @@ TEST(32_ParallelMOS4TransistorsDisconnectedGates) db::Circuit *circuit = new db::Circuit (); nl.add_circuit (circuit); - db::Pin pin_a = circuit->add_pin (db::Pin ("A")); - db::Pin pin_b = circuit->add_pin (db::Pin ("B")); - db::Pin pin_c1 = circuit->add_pin (db::Pin ("C1")); - db::Pin pin_c2 = circuit->add_pin (db::Pin ("C2")); - db::Pin pin_d = circuit->add_pin (db::Pin ("D")); + db::Pin pin_a = circuit->add_pin ("A"); + db::Pin pin_b = circuit->add_pin ("B"); + db::Pin pin_c1 = circuit->add_pin ("C1"); + db::Pin pin_c2 = circuit->add_pin ("C2"); + db::Pin pin_d = circuit->add_pin ("D"); circuit->add_device (d1); circuit->add_device (d2); @@ -1392,11 +1392,11 @@ TEST(33_ParallelMOS4TransistorsDisconnectedBulk) db::Circuit *circuit = new db::Circuit (); nl.add_circuit (circuit); - db::Pin pin_a = circuit->add_pin (db::Pin ("A")); - db::Pin pin_b = circuit->add_pin (db::Pin ("B")); - db::Pin pin_c = circuit->add_pin (db::Pin ("C")); - db::Pin pin_d1 = circuit->add_pin (db::Pin ("D1")); - db::Pin pin_d2 = circuit->add_pin (db::Pin ("D2")); + db::Pin pin_a = circuit->add_pin ("A"); + db::Pin pin_b = circuit->add_pin ("B"); + db::Pin pin_c = circuit->add_pin ("C"); + db::Pin pin_d1 = circuit->add_pin ("D1"); + db::Pin pin_d2 = circuit->add_pin ("D2"); circuit->add_device (d1); circuit->add_device (d2); @@ -1468,10 +1468,10 @@ TEST(34_ParallelMOS4TransistorsDifferentLength) db::Circuit *circuit = new db::Circuit (); nl.add_circuit (circuit); - db::Pin pin_a = circuit->add_pin (db::Pin ("A")); - db::Pin pin_b = circuit->add_pin (db::Pin ("B")); - db::Pin pin_c = circuit->add_pin (db::Pin ("C")); - db::Pin pin_d = circuit->add_pin (db::Pin ("D")); + db::Pin pin_a = circuit->add_pin ("A"); + db::Pin pin_b = circuit->add_pin ("B"); + db::Pin pin_c = circuit->add_pin ("C"); + db::Pin pin_d = circuit->add_pin ("D"); circuit->add_device (d1); circuit->add_device (d2); diff --git a/src/db/unit_tests/dbNetlistTests.cc b/src/db/unit_tests/dbNetlistTests.cc index 5a947e847..ad9ab0407 100644 --- a/src/db/unit_tests/dbNetlistTests.cc +++ b/src/db/unit_tests/dbNetlistTests.cc @@ -130,10 +130,8 @@ TEST(3_CircuitBasic) c.set_name ("name"); EXPECT_EQ (c.name (), "name"); - db::Pin p1 ("p1"); - db::Pin p2 ("p2"); - c.add_pin (p1); - c.add_pin (p2); + db::Pin p1 = c.add_pin ("p1"); + db::Pin p2 = c.add_pin ("p2"); EXPECT_EQ (pins2string (c), "p1#0,p2#1"); EXPECT_EQ (c.pin_by_id (0)->name (), "p1"); @@ -449,8 +447,8 @@ TEST(4_NetlistSubcircuits) c1->set_cell_index (17); EXPECT_EQ (c1->netlist (), 0); c1->set_name ("c1"); - c1->add_pin (db::Pin ("c1p1")); - c1->add_pin (db::Pin ("c1p2")); + c1->add_pin ("c1p1"); + c1->add_pin ("c1p2"); nl->add_circuit (c1); EXPECT_EQ (c1->netlist (), nl.get ()); EXPECT_EQ (nl->circuit_by_name ("c1") == c1, true); @@ -460,8 +458,8 @@ TEST(4_NetlistSubcircuits) db::Circuit *c2 = new db::Circuit (); c2->set_name ("c2x"); - c2->add_pin (db::Pin ("c2p1")); - c2->add_pin (db::Pin ("c2p2")); + c2->add_pin ("c2p1"); + c2->add_pin ("c2p2"); c2->set_cell_index (41); nl->add_circuit (c2); EXPECT_EQ (nl->circuit_by_name ("c2x") == c2, true); @@ -726,18 +724,18 @@ TEST(8_NetSubCircuitsEditing) { db::Circuit c; c.set_name ("c"); - c.add_pin (db::Pin ("X")); - c.add_pin (db::Pin ("Y")); + c.add_pin ("X"); + c.add_pin ("Y"); db::Circuit cc1; cc1.set_name ("sc1"); - cc1.add_pin (db::Pin ("A")); - cc1.add_pin (db::Pin ("B")); + cc1.add_pin ("A"); + cc1.add_pin ("B"); db::Circuit cc2; cc2.set_name ("sc2"); - cc2.add_pin (db::Pin ("A")); - cc2.add_pin (db::Pin ("B")); + cc2.add_pin ("A"); + cc2.add_pin ("B"); db::SubCircuit *sc1 = new db::SubCircuit (&cc1, "sc1"); c.add_subcircuit (sc1);