bugpoint: skip ports with (* keep *) on; add header

This commit is contained in:
Eddie Hung 2020-04-24 11:17:09 -07:00
parent bf021a0e1f
commit 4bfe6ebea9
1 changed files with 18 additions and 9 deletions

View File

@ -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;