diff options
author | Clifford Wolf <clifford@clifford.at> | 2013-08-11 13:59:14 +0200 |
---|---|---|
committer | Clifford Wolf <clifford@clifford.at> | 2013-08-11 13:59:14 +0200 |
commit | a5836af172a154bc0b8f9fdea34e140a5662bc99 (patch) | |
tree | 9e5f15a4290e98cfd79378786973146fcb3890d2 /passes/opt | |
parent | 080f0aac3490114c483cc37c1febd0698970d0fe (diff) | |
download | yosys-a5836af172a154bc0b8f9fdea34e140a5662bc99.tar.gz yosys-a5836af172a154bc0b8f9fdea34e140a5662bc99.tar.bz2 yosys-a5836af172a154bc0b8f9fdea34e140a5662bc99.zip |
Added "clean -purge" and ";;;" support
Diffstat (limited to 'passes/opt')
-rw-r--r-- | passes/opt/opt_clean.cc | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/passes/opt/opt_clean.cc b/passes/opt/opt_clean.cc index 17f4168da..96c4c7a18 100644 --- a/passes/opt/opt_clean.cc +++ b/passes/opt/opt_clean.cc @@ -277,6 +277,7 @@ struct OptCleanPass : public Pass { purge_mode = true; continue; } + break; } extra_args(args, argidx, design); @@ -309,17 +310,31 @@ struct CleanPass : public Pass { { // |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---| log("\n"); - log(" clean [selection]\n"); + log(" clean [options] [selection]\n"); log("\n"); - log("This is identical to opt_clean, but less verbose.\n"); + log("This is identical to 'opt_clean', but less verbose.\n"); log("\n"); log("When commands are seperated using the ';;' token, this command will be executed\n"); log("between the commands.\n"); log("\n"); + log("When commands are seperated using the ';;;' token, this command will be executed\n"); + log("in -purge mode between the commands.\n"); + log("\n"); } virtual void execute(std::vector<std::string> args, RTLIL::Design *design) { - extra_args(args, 1, design); + bool purge_mode = false; + + size_t argidx; + for (argidx = 1; argidx < args.size(); argidx++) { + if (args[argidx] == "-purge") { + purge_mode = true; + continue; + } + break; + } + if (argidx < args.size()) + extra_args(args, argidx, design); ct.setup_internals(); ct.setup_internals_mem(); @@ -333,7 +348,7 @@ struct CleanPass : public Pass { if (design->selected_whole_module(mod_it.first) && mod_it.second->processes.size() == 0) do { OPT_DID_SOMETHING = false; - rmunused_module(mod_it.second, false, false); + rmunused_module(mod_it.second, purge_mode, false); } while (OPT_DID_SOMETHING); } |