stop check_signal_in_fanout from traversing FFs

This commit is contained in:
tklam 2018-10-13 23:11:19 +08:00
parent 3c5406c31b
commit 302edf0429
1 changed files with 12 additions and 1 deletions

View File

@ -42,6 +42,14 @@ struct EquivMakeWorker
dict<SigBit, pool<Cell*>> bit2driven; // map: bit <--> and its driven cells dict<SigBit, pool<Cell*>> bit2driven; // map: bit <--> and its driven cells
CellTypes comb_ct;
EquivMakeWorker()
{
comb_ct.setup_internals();
comb_ct.setup_stdcells();
}
void read_blacklists() void read_blacklists()
{ {
for (auto fn : blacklists) for (auto fn : blacklists)
@ -415,9 +423,12 @@ struct EquivMakeWorker
auto driven_cells = bit2driven.at(source_bit); auto driven_cells = bit2driven.at(source_bit);
for (auto driven_cell: driven_cells) for (auto driven_cell: driven_cells)
{ {
if (visited_cells.count(driven_cell) > 0) bool is_comb = comb_ct.cell_known(cell->type);
if (is_comb)
continue; continue;
if (visited_cells.count(driven_cell) > 0)
continue;
visited_cells.insert(driven_cell); visited_cells.insert(driven_cell);
for (auto &conn: driven_cell->connections()) for (auto &conn: driven_cell->connections())