Add comment as per @cliffordwolf

This commit is contained in:
Eddie Hung 2019-06-20 16:57:54 -07:00
parent 45c2a5f876
commit 9c61fb0e0c
1 changed files with 11 additions and 0 deletions

View File

@ -295,7 +295,18 @@ struct ShregmapWorker
{ {
auto r = sigbit_chain_next.insert(std::make_pair(d_bit, cell)); auto r = sigbit_chain_next.insert(std::make_pair(d_bit, cell));
if (!r.second) { if (!r.second) {
// Insertion not successful means that d_bit is already
// connected to another register, thus mark it as a
// non chain user ...
sigbit_with_non_chain_users.insert(d_bit); sigbit_with_non_chain_users.insert(d_bit);
// ... and clone d_bit into another wire, and use that
// wire as a different key in the d_bit-to-cell dictionary
// so that it can be identified as another chain
// (omitting this common flop)
// Link: https://github.com/YosysHQ/yosys/pull/1085
// NB: This relies on us not updating sigmap with this
// alias otherwise it would think they are the same
// wire
Wire *wire = module->addWire(NEW_ID); Wire *wire = module->addWire(NEW_ID);
module->connect(wire, d_bit); module->connect(wire, d_bit);
sigbit_chain_next.insert(std::make_pair(wire, cell)); sigbit_chain_next.insert(std::make_pair(wire, cell));