mirror of
https://github.com/YosysHQ/yosys
synced 2025-04-13 04:28:18 +00:00
abc9_ops: Don't leave unused derived modules lying around
These later become accidentally used for techmap replacements for blackboxes that we don't actually want. Signed-off-by: gatecat <gatecat@ds0.me>
This commit is contained in:
parent
0b1a1a576b
commit
166a175983
|
@ -155,6 +155,9 @@ void prep_hier(RTLIL::Design *design, bool dff_mode)
|
||||||
r.first->second = new Design;
|
r.first->second = new Design;
|
||||||
Design *unmap_design = r.first->second;
|
Design *unmap_design = r.first->second;
|
||||||
|
|
||||||
|
// Keep track of derived versions of modules that we haven't used, to prevent these being used for unwanted techmaps later on.
|
||||||
|
pool<IdString> unused_derived;
|
||||||
|
|
||||||
for (auto module : design->selected_modules())
|
for (auto module : design->selected_modules())
|
||||||
for (auto cell : module->cells()) {
|
for (auto cell : module->cells()) {
|
||||||
auto inst_module = design->module(cell->type);
|
auto inst_module = design->module(cell->type);
|
||||||
|
@ -169,6 +172,7 @@ void prep_hier(RTLIL::Design *design, bool dff_mode)
|
||||||
else {
|
else {
|
||||||
derived_type = inst_module->derive(design, cell->parameters);
|
derived_type = inst_module->derive(design, cell->parameters);
|
||||||
derived_module = design->module(derived_type);
|
derived_module = design->module(derived_type);
|
||||||
|
unused_derived.insert(derived_type);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (derived_module->get_bool_attribute(ID::abc9_flop)) {
|
if (derived_module->get_bool_attribute(ID::abc9_flop)) {
|
||||||
|
@ -192,6 +196,7 @@ void prep_hier(RTLIL::Design *design, bool dff_mode)
|
||||||
// as a compatible type, yet will be safely unmapped later
|
// as a compatible type, yet will be safely unmapped later
|
||||||
cell->type = derived_type;
|
cell->type = derived_type;
|
||||||
cell->parameters.clear();
|
cell->parameters.clear();
|
||||||
|
unused_derived.erase(derived_type);
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -250,7 +255,11 @@ void prep_hier(RTLIL::Design *design, bool dff_mode)
|
||||||
|
|
||||||
cell->type = derived_type;
|
cell->type = derived_type;
|
||||||
cell->parameters.clear();
|
cell->parameters.clear();
|
||||||
|
unused_derived.erase(derived_type);
|
||||||
}
|
}
|
||||||
|
for (auto unused : unused_derived) {
|
||||||
|
design->remove(design->module(unused));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void prep_bypass(RTLIL::Design *design)
|
void prep_bypass(RTLIL::Design *design)
|
||||||
|
|
Loading…
Reference in a new issue