summaryrefslogtreecommitdiff
path: root/passes/fsm/fsm_recode.cc
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2013-03-01 12:35:12 +0100
committerClifford Wolf <clifford@clifford.at>2013-03-01 12:35:12 +0100
commita338d1a082726d84210912318a9ac49977dc380c (patch)
treee025f50cbc314b882c911aaa4083f91608836cac /passes/fsm/fsm_recode.cc
parentf3a849512f2c7def98fcfa56de74d8a6bdc8b8fc (diff)
Added help messages for fsm_* passes
Diffstat (limited to 'passes/fsm/fsm_recode.cc')
-rw-r--r--passes/fsm/fsm_recode.cc23
1 files changed, 19 insertions, 4 deletions
diff --git a/passes/fsm/fsm_recode.cc b/passes/fsm/fsm_recode.cc
index 5e258f26..acb5944a 100644
--- a/passes/fsm/fsm_recode.cc
+++ b/passes/fsm/fsm_recode.cc
@@ -83,7 +83,21 @@ static void fsm_recode(RTLIL::Cell *cell, RTLIL::Module *module, FILE *fm_set_fs
}
struct FsmRecodePass : public Pass {
- FsmRecodePass() : Pass("fsm_recode") { }
+ FsmRecodePass() : Pass("fsm_recode", "recoding finite state machines") { }
+ virtual void help()
+ {
+ // |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
+ log("\n");
+ log(" fsm_recode [-fm_set_fsm_file file] [selection]\n");
+ log("\n");
+ log("This pass reassign the state encodings for FSM cells. At the moment only\n");
+ log("one-hot encoding is supported.\n");
+ log("\n");
+ log("The option -fm_set_fsm_file can be used to generate a file containing the\n");
+ log("mapping from old to new FSM encoding in form of Synopsys Formality set_fsm_*\n");
+ log("commands.\n");
+ log("\n");
+ }
virtual void execute(std::vector<std::string> args, RTLIL::Design *design)
{
FILE *fm_set_fsm_file = NULL;
@@ -103,9 +117,10 @@ struct FsmRecodePass : public Pass {
extra_args(args, argidx, design);
for (auto &mod_it : design->modules)
- for (auto &cell_it : mod_it.second->cells)
- if (cell_it.second->type == "$fsm")
- fsm_recode(cell_it.second, mod_it.second, fm_set_fsm_file);
+ if (design->selected(mod_it.second))
+ for (auto &cell_it : mod_it.second->cells)
+ if (cell_it.second->type == "$fsm" && design->selected(mod_it.second, cell_it.second))
+ fsm_recode(cell_it.second, mod_it.second, fm_set_fsm_file);
if (fm_set_fsm_file != NULL)
fclose(fm_set_fsm_file);