summaryrefslogtreecommitdiff
path: root/passes
diff options
context:
space:
mode:
Diffstat (limited to 'passes')
-rw-r--r--passes/fsm/fsm.cc10
1 files changed, 8 insertions, 2 deletions
diff --git a/passes/fsm/fsm.cc b/passes/fsm/fsm.cc
index b4d7bc46..1feeaf8b 100644
--- a/passes/fsm/fsm.cc
+++ b/passes/fsm/fsm.cc
@@ -33,7 +33,7 @@ struct FsmPass : public Pass {
log("This pass calls all the other fsm_* passes in a useful order. This performs\n");
log("FSM extraction and optimiziation. It also calls opt_rmunused as needed:\n");
log("\n");
- log(" fsm_detect\n");
+ log(" fsm_detect unless got option -nodetect\n");
log(" fsm_extract\n");
log("\n");
log(" fsm_opt\n");
@@ -65,6 +65,7 @@ struct FsmPass : public Pass {
{
bool flag_nomap = false;
bool flag_norecode = false;
+ bool flag_nodetect = false;
bool flag_expand = false;
bool flag_export = false;
std::string fm_set_fsm_file_opt;
@@ -84,6 +85,10 @@ struct FsmPass : public Pass {
encoding_opt = " -encoding " + args[++argidx];
continue;
}
+ if (arg == "-nodetect") {
+ flag_nodetect = true;
+ continue;
+ }
if (arg == "-norecode") {
flag_norecode = true;
continue;
@@ -104,7 +109,8 @@ struct FsmPass : public Pass {
}
extra_args(args, argidx, design);
- Pass::call(design, "fsm_detect");
+ if (!flag_nodetect)
+ Pass::call(design, "fsm_detect");
Pass::call(design, "fsm_extract");
Pass::call(design, "fsm_opt");