diff options
author | Clifford Wolf <clifford@clifford.at> | 2013-03-21 09:11:06 +0100 |
---|---|---|
committer | Clifford Wolf <clifford@clifford.at> | 2013-03-21 09:11:06 +0100 |
commit | 8d37d1e08bec8c789b3e8c6ccec5e002265f74ab (patch) | |
tree | 64b8e73c831a0682a3a1ad0fcb2cd621e1a6b52e /passes/memory/memory.cc | |
parent | 0d39366e2ce9f7a23d47ae1191371ff305a08eb0 (diff) | |
download | yosys-8d37d1e08bec8c789b3e8c6ccec5e002265f74ab.tar.gz yosys-8d37d1e08bec8c789b3e8c6ccec5e002265f74ab.tar.bz2 yosys-8d37d1e08bec8c789b3e8c6ccec5e002265f74ab.zip |
Added -nomap option to memory pass
Diffstat (limited to 'passes/memory/memory.cc')
-rw-r--r-- | passes/memory/memory.cc | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/passes/memory/memory.cc b/passes/memory/memory.cc index 79f0770b8..6968d58ba 100644 --- a/passes/memory/memory.cc +++ b/passes/memory/memory.cc @@ -28,26 +28,40 @@ struct MemoryPass : public Pass { { // |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| log("\n"); - log(" memory [selection]\n"); + log(" memory [-nomap] [selection]\n"); log("\n"); log("This pass calls all the other memory_* passes in a useful order:\n"); log("\n"); log(" memory_dff\n"); log(" memory_collect\n"); - log(" memory_map\n"); + log(" memory_map (skipped if called with -nomap)\n"); log("\n"); - log("This converts memories to word-wide DFFs and address decoders.\n"); + log("This converts memories to word-wide DFFs and address decoders\n"); + log("or moultiport memory blocks if called with the -nomap option.\n"); log("\n"); } virtual void execute(std::vector<std::string> args, RTLIL::Design *design) { + bool flag_nomap = false; + log_header("Executing MEMORY pass.\n"); log_push(); - extra_args(args, 1, design); + size_t argidx; + for (argidx = 1; argidx < args.size(); argidx++) { + if (args[argidx] == "-nomap") { + flag_nomap = true; + continue; + } + break; + } + extra_args(args, argidx, design); + Pass::call(design, "memory_dff"); Pass::call(design, "memory_collect"); - Pass::call(design, "memory_map"); + + if (!flag_nomap) + Pass::call(design, "memory_map"); log_pop(); } |