From: Eddie Hung Date: Fri, 24 Apr 2020 20:26:04 +0000 (-0700) Subject: bugpoint: (* keep *) to (* bugpoint_keep *); also apply to modules/cells X-Git-Tag: working-ls180~584^2~1 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e6021848565f3f5e58b8a33927c53ce761f5b927;p=yosys.git bugpoint: (* keep *) to (* bugpoint_keep *); also apply to modules/cells --- diff --git a/kernel/constids.inc b/kernel/constids.inc index 68a5782fd..2d8b8f791 100644 --- a/kernel/constids.inc +++ b/kernel/constids.inc @@ -29,6 +29,7 @@ X(B) X(BI) X(blackbox) X(B_SIGNED) +X(bugpoint_keep) X(B_WIDTH) X(C) X(cells_not_processed) diff --git a/passes/cmds/bugpoint.cc b/passes/cmds/bugpoint.cc index 2bdd551af..0e9bd9dc3 100644 --- a/passes/cmds/bugpoint.cc +++ b/passes/cmds/bugpoint.cc @@ -63,14 +63,16 @@ struct BugpointPass : public Pass { log("will be considered.\n"); log("\n"); log(" -modules\n"); - log(" try to remove modules.\n"); + log(" try to remove modules. modules with a (* bugpoint_keep *) attribute\n"); + log(" will be skipped.\n"); log("\n"); log(" -ports\n"); - log(" try to remove module ports. ports with a (* keep *) attribute will be\n"); - log(" skipped (useful for clocks, resets, etc.)\n"); + log(" try to remove module ports. ports with a (* bugpoint_keep *) attribute\n"); + log(" will be skipped (useful for clocks, resets, etc.)\n"); log("\n"); log(" -cells\n"); - log(" try to remove cells.\n"); + log(" try to remove cells. cells with a (* bugpoint_keep *) attribute will\n"); + log(" be skipped.\n"); log("\n"); log(" -connections\n"); log(" try to reconnect ports to 'x.\n"); @@ -142,6 +144,9 @@ struct BugpointPass : public Pass { if (module->get_blackbox_attribute()) continue; + if (module->get_bool_attribute(ID::bugpoint_keep)) + continue; + if (index++ == seed) { log("Trying to remove module %s.\n", module->name.c_str()); @@ -169,7 +174,7 @@ struct BugpointPass : public Pass { if (!stage2 && wire->get_bool_attribute(ID($bugpoint))) continue; - if (wire->get_bool_attribute(ID::keep)) + if (wire->get_bool_attribute(ID::bugpoint_keep)) continue; if (index++ == seed) @@ -189,9 +194,13 @@ struct BugpointPass : public Pass { if (mod->get_blackbox_attribute()) continue; + Cell *removed_cell = nullptr; for (auto cell : mod->cells()) { + if (cell->get_bool_attribute(ID::bugpoint_keep)) + continue; + if (index++ == seed) { log("Trying to remove cell %s.%s.\n", mod->name.c_str(), cell->name.c_str());