This commit is contained in:
Matthias Koefferlein 2024-03-22 23:27:08 +01:00
parent 1874e95d67
commit a79d286f61
3 changed files with 11 additions and 12 deletions

View File

@ -1848,7 +1848,6 @@ public:
typename std::set<id_type>::const_iterator cc = c;
for (++cc; cc != sc->end (); ++cc) {
mp_cell_clusters->join_cluster_with (*c, *cc);
// @@@ m_soft_connections.erase (std::make_pair (*c < *cc ? *c : *cc, *c < *cc ? *cc : *c));
}
}
@ -2959,7 +2958,7 @@ hier_clusters<T>::build_hier_connections (cell_clusters_box_converter<T> &cbc, c
if (! i->has_instance ()) {
local.join_cluster_with (gcid, i->id ());
local.remove_cluster (i->id ()); // @@@ actually required?
local.remove_cluster (i->id ()); // TODO: actually required? Should work without too ...
} else {
@ -2970,7 +2969,7 @@ hier_clusters<T>::build_hier_connections (cell_clusters_box_converter<T> &cbc, c
// shouldn't happen, but duplicate instances may trigger this
} else if (other_id) {
local.join_cluster_with (gcid, other_id);
local.remove_cluster (other_id); // @@@ actually required?
local.remove_cluster (other_id); // TODO: actually required? Should work without too ...
} else {
local.add_connection (gcid, *i);
}

View File

@ -397,7 +397,7 @@ void LayoutToNetlist::join_nets (const tl::GlobPattern &cell, const std::set<std
m_joined_nets_per_cell.push_back (std::make_pair (cell, gp));
}
// @@@
#if defined(_DEBUG)
static bool check_many_pins (const db::Netlist *netlist)
{
bool ok = true;
@ -413,7 +413,7 @@ static bool check_many_pins (const db::Netlist *netlist)
}
return ok;
}
// @@@
#endif
void LayoutToNetlist::extract_netlist ()
{
@ -426,16 +426,18 @@ void LayoutToNetlist::extract_netlist ()
netex.set_include_floating_subcircuits (m_include_floating_subcircuits);
netex.extract_nets (dss (), m_layout_index, m_conn, *mp_netlist, m_net_clusters);
// @@@ NOTE: can we have multiple pins on a net? Will this happen later maybe?
tl_assert (check_many_pins (mp_netlist.get ())); // @@@
// treat soft connections
do_soft_connections ();
tl_assert (check_many_pins (mp_netlist.get ())); // @@@
// implement the "join_nets" (aka "must connect") feature
#if defined(_DEBUG)
// NOTE: the join_nets feature only works for "one pin per net" case
// TODO: either fix that or make sure we do not get multiple pins per net.
// Right now, there no known case that produces multiple pins on a net at
// this stage.
tl_assert (check_many_pins (mp_netlist.get ()));
#endif
do_join_nets ();
tl_assert (check_many_pins (mp_netlist.get ())); // @@@
if (tl::verbosity () >= 41) {
MemStatisticsCollector m (false);

View File

@ -3356,7 +3356,6 @@ TEST(15_SoftConnections)
conn.connect (rvia1, rmetal2);
// extract the nets
#if 0 // @@@
std::list<std::set<std::string> > jn;
jn.push_back (std::set<std::string> ());
@ -3373,7 +3372,6 @@ TEST(15_SoftConnections)
gp.push_back (tl::GlobPattern ("NEXT"));
gp.push_back (tl::GlobPattern ("FB"));
net_ex.set_joined_net_names (gp);
#endif
net_ex.extract_nets (dss, 0, conn, nl, cl);