3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2025-07-29 23:43:16 +00:00

Added help messages for opt_* passes

This commit is contained in:
Clifford Wolf 2013-03-01 08:58:55 +01:00
parent 1bc0f04789
commit 36954471a6
7 changed files with 127 additions and 11 deletions

View file

@ -396,7 +396,20 @@ struct OptMuxtreeWorker
};
struct OptMuxtreePass : public Pass {
OptMuxtreePass() : Pass("opt_muxtree") { }
OptMuxtreePass() : Pass("opt_muxtree", "eliminate dead trees in multiplexer trees") { }
virtual void help()
{
// |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
log("\n");
log(" opt_muxtree [selection]\n");
log("\n");
log("This pass analyzes the control signals for the multiplexer trees in the design\n");
log("and identifies inputs that can never be active. In then removes this dead\n");
log("branches from the multiplexer trees.\n");
log("\n");
log("This pass only operates on completely selected modules without processes.\n");
log("\n");
}
virtual void execute(std::vector<std::string> args, RTLIL::Design *design)
{
log_header("Executing OPT_MUXTREE pass (detect dead branches in mux trees).\n");
@ -404,8 +417,13 @@ struct OptMuxtreePass : public Pass {
int total_count = 0;
for (auto &mod_it : design->modules) {
if (!design->selected_whole_module(mod_it.first)) {
if (design->selected(mod_it.second))
log("Skipping module %s as it is only partially selected.\n", id2cstr(mod_it.second->name));
continue;
}
if (mod_it.second->processes.size() > 0) {
log("Skipping module %s as it contains processes.\n", mod_it.second->name.c_str());
log("Skipping module %s as it contains processes.\n", id2cstr(mod_it.second->name));
} else {
OptMuxtreeWorker worker(design, mod_it.second);
total_count += worker.removed_count;