From: Alberto Gonzalez Date: Fri, 27 Mar 2020 22:36:27 +0000 (+0000) Subject: Add `-duplicate` option to the `design` command. X-Git-Tag: working-ls180~641^2~25 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=409e2ac09de7f6384cf745ac5fe3a6649b562d51;p=yosys.git Add `-duplicate` option to the `design` command. --- diff --git a/passes/cmds/design.cc b/passes/cmds/design.cc index 7ea0be9ee..01daa3678 100644 --- a/passes/cmds/design.cc +++ b/passes/cmds/design.cc @@ -60,6 +60,11 @@ struct DesignPass : public Pass { log("Push the current design to the stack and then clear the current design.\n"); log("\n"); log("\n"); + log(" design -duplicate\n"); + log("\n"); + log("Push the current design to the stack without clearing the current design.\n"); + log("\n"); + log("\n"); log(" design -pop\n"); log("\n"); log("Reset the current design and pop the last design from the stack.\n"); @@ -101,6 +106,7 @@ struct DesignPass : public Pass { bool reset_mode = false; bool reset_vlog_mode = false; bool push_mode = false; + bool duplicate_mode = false; bool pop_mode = false; bool import_mode = false; RTLIL::Design *copy_from_design = NULL, *copy_to_design = NULL; @@ -126,6 +132,11 @@ struct DesignPass : public Pass { push_mode = true; continue; } + if (!got_mode && args[argidx] == "-duplicate") { + got_mode = true; + duplicate_mode = true; + continue; + } if (!got_mode && args[argidx] == "-pop") { got_mode = true; pop_mode = true; @@ -307,7 +318,7 @@ struct DesignPass : public Pass { } } - if (!save_name.empty() || push_mode) + if (!save_name.empty() || push_mode || duplicate_mode) { RTLIL::Design *design_copy = new RTLIL::Design; @@ -321,7 +332,7 @@ struct DesignPass : public Pass { if (saved_designs.count(save_name)) delete saved_designs.at(save_name); - if (push_mode) + if (push_mode || duplicate_mode) pushed_designs.push_back(design_copy); else saved_designs[save_name] = design_copy;