mirror of https://github.com/YosysHQ/yosys.git
abc9_ops -prep_hier to unmap entire module
This commit is contained in:
parent
862631d657
commit
ec8d7b1c68
|
@ -233,22 +233,23 @@ void prep_hier(RTLIL::Design *design, bool dff_mode)
|
||||||
|
|
||||||
if (derived_type != cell->type) {
|
if (derived_type != cell->type) {
|
||||||
auto unmap_module = unmap_design->addModule(derived_type);
|
auto unmap_module = unmap_design->addModule(derived_type);
|
||||||
|
auto replace_cell = unmap_module->addCell(ID::_TECHMAP_REPLACE_, cell->type);
|
||||||
for (auto port : derived_module->ports) {
|
for (auto port : derived_module->ports) {
|
||||||
auto w = unmap_module->addWire(port, derived_module->wire(port));
|
auto w = unmap_module->addWire(port, derived_module->wire(port));
|
||||||
// Do not propagate (* init *) values into the box,
|
// Do not propagate (* init *) values into the box,
|
||||||
// in fact, remove it from outside too
|
// in fact, remove it from outside too
|
||||||
if (w->port_output)
|
if (w->port_output)
|
||||||
w->attributes.erase(ID::init);
|
w->attributes.erase(ID::init);
|
||||||
|
// Attach (* techmap_autopurge *) to all ports to ensure that
|
||||||
|
// undriven inputs/unused outputs are propagated through to
|
||||||
|
// the techmapped cell
|
||||||
|
w->attributes[ID::techmap_autopurge] = 1;
|
||||||
|
|
||||||
|
replace_cell->setPort(port, w);
|
||||||
}
|
}
|
||||||
unmap_module->ports = derived_module->ports;
|
unmap_module->ports = derived_module->ports;
|
||||||
unmap_module->check();
|
unmap_module->check();
|
||||||
|
|
||||||
auto replace_cell = unmap_module->addCell(ID::_TECHMAP_REPLACE_, cell->type);
|
|
||||||
for (const auto &conn : cell->connections()) {
|
|
||||||
auto w = unmap_module->wire(conn.first);
|
|
||||||
log_assert(w);
|
|
||||||
replace_cell->setPort(conn.first, w);
|
|
||||||
}
|
|
||||||
replace_cell->parameters = cell->parameters;
|
replace_cell->parameters = cell->parameters;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue