diff options
Diffstat (limited to 'techlibs/common')
| -rw-r--r-- | techlibs/common/prep.cc | 22 | 
1 files changed, 13 insertions, 9 deletions
diff --git a/techlibs/common/prep.cc b/techlibs/common/prep.cc index 3dfc60383..cc977f97e 100644 --- a/techlibs/common/prep.cc +++ b/techlibs/common/prep.cc @@ -55,13 +55,14 @@ struct PrepPass : public ScriptPass  		log("\n");  		log("    -memx\n");  		log("        simulate verilog simulation behavior for out-of-bounds memory accesses\n"); -		log("        using the 'memory_memx' pass. This option implies -nordff.\n"); +		log("        using the 'memory_memx' pass.\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("    -rdff\n"); +		log("        do not pass -nordff to 'memory_dff'. This enables merging of FFs into\n"); +		log("        memory read ports.\n");  		log("\n");  		log("    -nokeepdc\n");  		log("        do not call opt_* with -keepdc\n"); @@ -77,13 +78,12 @@ struct PrepPass : public ScriptPass  		log("\n");  	} -	string top_module, fsm_opts, memory_opts; -	bool autotop, flatten, ifxmode, memxmode, nomemmode, nokeepdc; +	string top_module, fsm_opts; +	bool autotop, flatten, ifxmode, memxmode, nomemmode, nokeepdc, nordff;  	virtual void clear_flags() YS_OVERRIDE  	{  		top_module.clear(); -		memory_opts.clear();  		autotop = false;  		flatten = false; @@ -91,6 +91,7 @@ struct PrepPass : public ScriptPass  		memxmode = false;  		nomemmode = false;  		nokeepdc = false; +		nordff = true;  	}  	virtual void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE @@ -129,7 +130,6 @@ struct PrepPass : public ScriptPass  			}  			if (args[argidx] == "-memx") {  				memxmode = true; -				memory_opts += " -nordff";  				continue;  			}  			if (args[argidx] == "-nomem") { @@ -137,7 +137,11 @@ struct PrepPass : public ScriptPass  				continue;  			}  			if (args[argidx] == "-nordff") { -				memory_opts += " -nordff"; +				nordff = true; +				continue; +			} +			if (args[argidx] == "-rdff") { +				nordff = false;  				continue;  			}  			if (args[argidx] == "-nokeepdc") { @@ -196,7 +200,7 @@ struct PrepPass : public ScriptPass  					run(memxmode ? "wreduce -memx" : "wreduce");  			}  			if (!nomemmode) { -				run("memory_dff" + (help_mode ? " [-nordff]" : memory_opts)); +				run(string("memory_dff") + (help_mode ? " [-nordff]" : nordff ? " -nordff" : ""));  				if (help_mode || memxmode)  					run("memory_memx", "(if -memx)");  				run("opt_clean");  | 
