Apply opt_reduce WR_EN opts to the whole mux tree driving the WR_EN port

This commit is contained in:
Clifford Wolf 2014-07-18 10:28:45 +02:00
parent 2d69c309f9
commit 309ae98246
1 changed files with 15 additions and 0 deletions

View File

@ -266,6 +266,21 @@ struct OptReduceWorker
mem_wren_sigs.add(assign_map(cell->connections["\\D"]));
}
bool keep_expanding_mem_wren_sigs = true;
while (keep_expanding_mem_wren_sigs) {
keep_expanding_mem_wren_sigs = false;
for (auto &cell_it : module->cells) {
RTLIL::Cell *cell = cell_it.second;
if (cell->type == "$mux" && mem_wren_sigs.check_any(assign_map(cell->connections["\\Y"]))) {
if (!mem_wren_sigs.check_all(assign_map(cell->connections["\\A"])) ||
!mem_wren_sigs.check_all(assign_map(cell->connections["\\B"])))
keep_expanding_mem_wren_sigs = true;
mem_wren_sigs.add(assign_map(cell->connections["\\A"]));
mem_wren_sigs.add(assign_map(cell->connections["\\B"]));
}
}
}
while (did_something)
{
did_something = false;