diff options
author | Alberto Gonzalez <boqwxp@airmail.cc> | 2020-03-27 22:36:27 +0000 |
---|---|---|
committer | Alberto Gonzalez <boqwxp@airmail.cc> | 2020-04-03 16:46:35 +0000 |
commit | 409e2ac09de7f6384cf745ac5fe3a6649b562d51 (patch) | |
tree | 8decedcde3e24616996a812bcd799dbd83d81ee4 /passes | |
parent | 05f74d4f315eab0fa0c7e83627482f5160113ba5 (diff) | |
download | yosys-409e2ac09de7f6384cf745ac5fe3a6649b562d51.tar.gz yosys-409e2ac09de7f6384cf745ac5fe3a6649b562d51.tar.bz2 yosys-409e2ac09de7f6384cf745ac5fe3a6649b562d51.zip |
Add `-duplicate` option to the `design` command.
Diffstat (limited to 'passes')
-rw-r--r-- | passes/cmds/design.cc | 15 |
1 files changed, 13 insertions, 2 deletions
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; |