3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2025-04-27 02:45:52 +00:00

Do not treat $__ABC_FF_ as a user cell

This commit is contained in:
Eddie Hung 2019-06-15 19:36:55 -07:00
parent 9ec57b46c2
commit 2309459605
2 changed files with 15 additions and 30 deletions

View file

@ -512,26 +512,18 @@ void abc9_module(RTLIL::Design *design, RTLIL::Module *current_module, std::stri
}
}
// Remove all AND, NOT, and ABC box instances
// in preparation for stitching mapped_mod in
// Short $_FF_ cells used by ABC (FIXME)
dict<IdString, decltype(RTLIL::Cell::parameters)> erased_boxes;
std::vector<RTLIL::Cell*> abc_dff;
for (auto it = module->cells_.begin(); it != module->cells_.end(); ) {
RTLIL::Cell* cell = it->second;
if (cell->type.in("$_AND_", "$_NOT_")) {
if (cell->type.in("$_AND_", "$_NOT_", "$__ABC_FF_")) {
it = module->cells_.erase(it);
continue;
}
if (cell->type.in("$__ABC_FF_"))
abc_dff.emplace_back(cell);
else {
RTLIL::Module* box_module = design->module(cell->type);
if (box_module && box_module->attributes.count("\\abc_box_id")) {
erased_boxes.insert(std::make_pair(it->first, std::move(cell->parameters)));
it = module->cells_.erase(it);
continue;
}
RTLIL::Module* box_module = design->module(cell->type);
if (box_module && box_module->attributes.count("\\abc_box_id")) {
erased_boxes.insert(std::make_pair(it->first, std::move(cell->parameters)));
it = module->cells_.erase(it);
continue;
}
++it;
}
@ -695,13 +687,6 @@ void abc9_module(RTLIL::Design *design, RTLIL::Module *current_module, std::stri
}
}
for (auto cell : abc_dff) {
RTLIL::SigBit D = cell->getPort("\\D");
RTLIL::SigBit Q = cell->getPort("\\Q");
module->connect(Q, D);
module->remove(cell);
}
//log("ABC RESULTS: internal signals: %8d\n", int(signal_list.size()) - in_wires - out_wires);
log("ABC RESULTS: input signals: %8d\n", in_wires);
log("ABC RESULTS: output signals: %8d\n", out_wires);