If d_bit already in sigbit_chain_next, create extra wire

This commit is contained in:
Eddie Hung 2019-06-10 16:16:40 -07:00
parent 6e8fda8bf0
commit e1fff34dde
1 changed files with 6 additions and 3 deletions

View File

@ -140,10 +140,13 @@ struct ShregmapWorker
if (opts.init || sigbit_init.count(q_bit) == 0)
{
if (sigbit_chain_next.count(d_bit)) {
auto r = sigbit_chain_next.insert(std::make_pair(d_bit, cell));
if (!r.second) {
sigbit_with_non_chain_users.insert(d_bit);
} else
sigbit_chain_next[d_bit] = cell;
Wire *wire = module->addWire(NEW_ID);
module->connect(wire, d_bit);
sigbit_chain_next.insert(std::make_pair(wire, cell));
}
sigbit_chain_prev[q_bit] = cell;
continue;