From: Eddie Hung Date: Fri, 24 Apr 2020 18:17:09 +0000 (-0700) Subject: bugpoint: skip ports with (* keep *) on; add header X-Git-Tag: working-ls180~584^2~2 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=4bfe6ebea929fb221853f775570ec5c7ccc5fac4;p=yosys.git bugpoint: skip ports with (* keep *) on; add header --- diff --git a/passes/cmds/bugpoint.cc b/passes/cmds/bugpoint.cc index 4668da4bd..2bdd551af 100644 --- a/passes/cmds/bugpoint.cc +++ b/passes/cmds/bugpoint.cc @@ -66,7 +66,8 @@ struct BugpointPass : public Pass { log(" try to remove modules.\n"); log("\n"); log(" -ports\n"); - log(" try to remove module 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("\n"); log(" -cells\n"); log(" try to remove cells.\n"); @@ -162,18 +163,21 @@ struct BugpointPass : public Pass { for (auto wire : mod->wires()) { + if (!wire->port_id) + continue; + if (!stage2 && wire->get_bool_attribute(ID($bugpoint))) continue; - if (wire->port_input || wire->port_output) + if (wire->get_bool_attribute(ID::keep)) + continue; + + if (index++ == seed) { - if (index++ == seed) - { - log("Trying to remove module port %s.\n", log_signal(wire)); - wire->port_input = wire->port_output = false; - mod->fixup_ports(); - return design_copy; - } + log("Trying to remove module port %s.\n", log_signal(wire)); + wire->port_input = wire->port_output = false; + mod->fixup_ports(); + return design_copy; } } } @@ -306,6 +310,9 @@ struct BugpointPass : public Pass { bool fast = false, clean = false; bool modules = false, ports = false, cells = false, connections = false, assigns = false, updates = false, has_part = false; + log_header(design, "Executing BUGPOINT pass (minimize testcases).\n"); + log_push(); + size_t argidx; for (argidx = 1; argidx < args.size(); argidx++) { @@ -449,6 +456,8 @@ struct BugpointPass : public Pass { design->add(module->clone()); delete crashing_design; } + + log_pop(); } } BugpointPass;