aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--techlibs/common/prep.cc22
1 files changed, 16 insertions, 6 deletions
diff --git a/techlibs/common/prep.cc b/techlibs/common/prep.cc
index f797f5db7..fac6c4bac 100644
--- a/techlibs/common/prep.cc
+++ b/techlibs/common/prep.cc
@@ -57,6 +57,9 @@ struct PrepPass : public ScriptPass
log(" simulate verilog simulation behavior for out-of-bounds memory accesses\n");
log(" using the 'memory_memx' pass. This option implies -nordff.\n");
log("\n");
+ log(" -nomem\n");
+ log(" do not run any of the memory_* passes\n");
+ log("\n");
log(" -nordff\n");
log(" passed to 'memory_dff'. prohibits merging of FFs into memory read ports\n");
log("\n");
@@ -72,7 +75,7 @@ struct PrepPass : public ScriptPass
}
string top_module, fsm_opts, memory_opts;
- bool autotop, flatten, ifxmode, memxmode;
+ bool autotop, flatten, ifxmode, memxmode, nomemmode;
virtual void clear_flags() YS_OVERRIDE
{
@@ -83,6 +86,7 @@ struct PrepPass : public ScriptPass
flatten = false;
ifxmode = false;
memxmode = false;
+ nomemmode = false;
}
virtual void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE
@@ -124,6 +128,10 @@ struct PrepPass : public ScriptPass
memory_opts += " -nordff";
continue;
}
+ if (args[argidx] == "-nomem") {
+ nomemmode = true;
+ continue;
+ }
if (args[argidx] == "-nordff") {
memory_opts += " -nordff";
continue;
@@ -179,11 +187,13 @@ struct PrepPass : public ScriptPass
else
run(memxmode ? "wreduce -memx" : "wreduce");
}
- run("memory_dff" + (help_mode ? " [-nordff]" : memory_opts));
- if (help_mode || memxmode)
- run("memory_memx", "(if -memx)");
- run("opt_clean");
- run("memory_collect");
+ if (!nomemmode) {
+ run("memory_dff" + (help_mode ? " [-nordff]" : memory_opts));
+ if (help_mode || memxmode)
+ run("memory_memx", "(if -memx)");
+ run("opt_clean");
+ run("memory_collect");
+ }
run("opt -keepdc -fast");
}