Improvements in new SigMap

This commit is contained in:
Clifford Wolf 2015-10-28 00:39:53 +01:00
parent 0c202a2549
commit e69efec588
1 changed files with 16 additions and 5 deletions

View File

@ -253,18 +253,29 @@ struct SigMap
for (int i = 0; i < GetSize(from); i++) for (int i = 0; i < GetSize(from); i++)
{ {
RTLIL::SigBit &bf = from[i]; RTLIL::SigBit bf = database.find(from[i]);
RTLIL::SigBit &bt = to[i]; RTLIL::SigBit bt = database.find(to[i]);
if (bf.wire != nullptr) if (bf.wire || bt.wire)
{
database.merge(bf, bt); database.merge(bf, bt);
if (bf.wire == nullptr)
database.promote(bf);
if (bt.wire == nullptr)
database.promote(bt);
}
} }
} }
void add(RTLIL::SigSpec sig) void add(RTLIL::SigSpec sig)
{ {
for (auto &bit : sig) for (auto &bit : sig) {
database.promote(bit); RTLIL::SigBit b = database.find(bit);
if (b.wire != nullptr)
database.promote(bit);
}
} }
void apply(RTLIL::SigBit &bit) const void apply(RTLIL::SigBit &bit) const