diff options
Diffstat (limited to 'passes/fsm/fsm.cc')
-rw-r--r-- | passes/fsm/fsm.cc | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/passes/fsm/fsm.cc b/passes/fsm/fsm.cc index 3b537ecd8..997558b85 100644 --- a/passes/fsm/fsm.cc +++ b/passes/fsm/fsm.cc @@ -59,6 +59,9 @@ struct FsmPass : public Pass { log(" -expand, -norecode, -export, -nomap\n"); log(" enable or disable passes as indicated above\n"); log("\n"); + log(" -fullexpand\n"); + log(" call expand with -full option\n"); + log("\n"); log(" -encoding type\n"); log(" -fm_set_fsm_file file\n"); log(" -encfile file\n"); @@ -71,6 +74,7 @@ struct FsmPass : public Pass { bool flag_norecode = false; bool flag_nodetect = false; bool flag_expand = false; + bool flag_fullexpand = false; bool flag_export = false; std::string fm_set_fsm_file_opt; std::string encfile_opt; @@ -110,6 +114,10 @@ struct FsmPass : public Pass { flag_expand = true; continue; } + if (arg == "-fullexpand") { + flag_fullexpand = true; + continue; + } if (arg == "-export") { flag_export = true; continue; @@ -126,8 +134,8 @@ struct FsmPass : public Pass { Pass::call(design, "opt_clean"); Pass::call(design, "fsm_opt"); - if (flag_expand) { - Pass::call(design, "fsm_expand"); + if (flag_expand || flag_fullexpand) { + Pass::call(design, flag_fullexpand ? "fsm_expand -full" : "fsm_expand"); Pass::call(design, "opt_clean"); Pass::call(design, "fsm_opt"); } |