diff options
author | Clifford Wolf <clifford@clifford.at> | 2014-09-21 15:13:44 +0200 |
---|---|---|
committer | Clifford Wolf <clifford@clifford.at> | 2014-09-21 15:13:44 +0200 |
commit | d6e2ace95be79274f8707a897e3ac265ab85b11a (patch) | |
tree | 4a57b9a9833b4dae3f6a32b005f0817a35fe83ed /passes/opt | |
parent | b28be0759f46326d4d2a7ac74f1d1f79477435da (diff) | |
download | yosys-d6e2ace95be79274f8707a897e3ac265ab85b11a.tar.gz yosys-d6e2ace95be79274f8707a897e3ac265ab85b11a.tar.bz2 yosys-d6e2ace95be79274f8707a897e3ac265ab85b11a.zip |
Logic loop bugfix for "share" pass
Diffstat (limited to 'passes/opt')
-rw-r--r-- | passes/opt/share.cc | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/passes/opt/share.cc b/passes/opt/share.cc index 5ed9af009..b91a67ee0 100644 --- a/passes/opt/share.cc +++ b/passes/opt/share.cc @@ -958,13 +958,17 @@ struct ShareWorker for (auto bit : topo_sigmap(all_ctrl_signals)) for (auto c : topo_bit_drivers[bit]) - topo_cell_drivers[cell].insert(c); + topo_cell_drivers[supercell].insert(c); + + topo_cell_drivers[supercell].insert(topo_cell_drivers[cell].begin(), topo_cell_drivers[cell].end()); + topo_cell_drivers[supercell].insert(topo_cell_drivers[other_cell].begin(), topo_cell_drivers[other_cell].end()); + + topo_cell_drivers[cell] = { supercell }; + topo_cell_drivers[other_cell] = { supercell }; if (config.limit > 0) config.limit--; - topo_cell_drivers[cell].insert(topo_cell_drivers[other_cell].begin(), topo_cell_drivers[other_cell].end()); - topo_cell_drivers[other_cell] = topo_cell_drivers[cell]; break; } } |