Added cluster_id property to db::Net

This commit is contained in:
Matthias Koefferlein 2018-12-21 21:53:48 +01:00
parent 80999475f4
commit 83a38037e5
3 changed files with 44 additions and 0 deletions

View File

@ -145,11 +145,13 @@ const Pin *NetPinRef::pin (const db::Circuit *c) const
// Net class implementation // Net class implementation
Net::Net () Net::Net ()
: m_cluster_id (0)
{ {
// .. nothing yet .. // .. nothing yet ..
} }
Net::Net (const Net &other) Net::Net (const Net &other)
: m_cluster_id (0)
{ {
operator= (other); operator= (other);
} }
@ -160,6 +162,7 @@ Net &Net::operator= (const Net &other)
m_name = other.m_name; m_name = other.m_name;
m_pins = other.m_pins; m_pins = other.m_pins;
m_ports = other.m_ports; m_ports = other.m_ports;
m_cluster_id = other.m_cluster_id;
} }
return *this; return *this;
} }
@ -169,6 +172,7 @@ void Net::clear ()
m_name.clear (); m_name.clear ();
m_ports.clear (); m_ports.clear ();
m_pins.clear (); m_pins.clear ();
m_cluster_id = 0;
} }
void Net::set_name (const std::string &name) void Net::set_name (const std::string &name)
@ -176,6 +180,11 @@ void Net::set_name (const std::string &name)
m_name = name; m_name = name;
} }
void Net::set_cluster_id (size_t ci)
{
m_cluster_id = ci;
}
void Net::add_pin (const NetPinRef &pin) void Net::add_pin (const NetPinRef &pin)
{ {
m_pins.push_back (pin); m_pins.push_back (pin);

View File

@ -409,6 +409,22 @@ public:
return m_name; return m_name;
} }
/**
* @brief Sets the cluster ID of this net
*
* The cluster ID links the net to a cluster from the
* hierarchical layout netlist extractor.
*/
void set_cluster_id (size_t ci);
/**
* @brief Gets the cluster ID
*/
size_t cluster_id () const
{
return m_cluster_id;
}
/** /**
* @brief Adds a pin to this net * @brief Adds a pin to this net
*/ */
@ -457,6 +473,7 @@ private:
port_list m_ports; port_list m_ports;
pin_list m_pins; pin_list m_pins;
std::string m_name; std::string m_name;
size_t m_cluster_id;
void translate_devices (const std::map<const Device *, Device *> &map); void translate_devices (const std::map<const Device *, Device *> &map);
void translate_subcircuits (const std::map<const SubCircuit *, SubCircuit *> &map); void translate_subcircuits (const std::map<const SubCircuit *, SubCircuit *> &map);

View File

@ -320,3 +320,21 @@ TEST(5_SubCircuit)
EXPECT_EQ (sc2.name (), "sc"); EXPECT_EQ (sc2.name (), "sc");
EXPECT_EQ (sc2.trans ().to_string (), "r0 *2.5 0,0"); EXPECT_EQ (sc2.trans ().to_string (), "r0 *2.5 0,0");
} }
TEST(6_Net)
{
db::Net n, n2;
n.set_name ("n");
EXPECT_EQ (n.name (), "n");
n.set_cluster_id (17);
EXPECT_EQ (int (n.cluster_id ()), 17);
n2 = n;
EXPECT_EQ (n2.name (), "n");
EXPECT_EQ (int (n2.cluster_id ()), 17);
n.clear ();
EXPECT_EQ (n.name (), "");
EXPECT_EQ (int (n.cluster_id ()), 0);
}