mirror of https://github.com/YosysHQ/yosys.git
bbox_derive: Fix `done` base type confusion
This commit is contained in:
parent
44b0fdc2bf
commit
88af059fad
|
@ -54,7 +54,7 @@ struct BboxDerivePass : Pass {
|
|||
log_cmd_error("Base module %s not found.\n", log_id(base_name));
|
||||
}
|
||||
|
||||
dict<dict<RTLIL::IdString, RTLIL::Const>, Module*> done;
|
||||
dict<std::pair<RTLIL::IdString, dict<RTLIL::IdString, RTLIL::Const>>, Module*> done;
|
||||
|
||||
for (auto module : d->selected_modules()) {
|
||||
for (auto cell : module->selected_cells()) {
|
||||
|
@ -62,13 +62,15 @@ struct BboxDerivePass : Pass {
|
|||
if (!inst_module || !inst_module->get_blackbox_attribute())
|
||||
continue;
|
||||
|
||||
if (cell->parameters.empty() || done.count(cell->parameters))
|
||||
continue;
|
||||
|
||||
Module *base = inst_module;
|
||||
if (base_override)
|
||||
base = base_override;
|
||||
|
||||
auto index = std::make_pair(base->name, cell->parameters);
|
||||
|
||||
if (cell->parameters.empty() || done.count(index))
|
||||
continue;
|
||||
|
||||
IdString derived_type = base->derive(d, cell->parameters);
|
||||
Module *derived = d->module(derived_type);
|
||||
log_assert(derived && "Failed to derive module\n");
|
||||
|
@ -83,7 +85,7 @@ struct BboxDerivePass : Pass {
|
|||
d->rename(derived, new_name);
|
||||
}
|
||||
|
||||
done[cell->parameters] = derived;
|
||||
done[index] = derived;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue