diff options
author | Clifford Wolf <clifford@clifford.at> | 2014-02-05 18:46:36 +0100 |
---|---|---|
committer | Clifford Wolf <clifford@clifford.at> | 2014-02-05 18:46:36 +0100 |
commit | 7ea97a04717d32518559c0f80cf453f75ab9c4bd (patch) | |
tree | 77f218f4f200634379f0de7ef1f81445077b29f2 /passes/cmds/select.cc | |
parent | 3b5c462273686d7d479a988718a26468f0bc3ef5 (diff) | |
parent | 3c0b5139a19292b6a3172887b799e15dbe85a086 (diff) | |
download | yosys-7ea97a04717d32518559c0f80cf453f75ab9c4bd.tar.gz yosys-7ea97a04717d32518559c0f80cf453f75ab9c4bd.tar.bz2 yosys-7ea97a04717d32518559c0f80cf453f75ab9c4bd.zip |
Merge pull request #22 from hansiglaser/master
Little improvements for "select"
Diffstat (limited to 'passes/cmds/select.cc')
-rw-r--r-- | passes/cmds/select.cc | 31 |
1 files changed, 24 insertions, 7 deletions
diff --git a/passes/cmds/select.cc b/passes/cmds/select.cc index 2561e8f64..963b6940f 100644 --- a/passes/cmds/select.cc +++ b/passes/cmds/select.cc @@ -664,6 +664,20 @@ void handle_extra_select_args(Pass *pass, std::vector<std::string> args, size_t design->selection_stack.push_back(RTLIL::Selection(false)); } +std::string list_nonopt_args(std::vector<std::string> args) +{ + size_t argidx; + std::string result = ""; + for (argidx = 1; argidx < args.size(); argidx++) + { + std::string arg = args[argidx]; + if (arg.size() > 0 && arg[0] == '-') + continue; + result += arg + " "; + } + return result; +} + struct SelectPass : public Pass { SelectPass() : Pass("select", "modify and view the list of selected objects") { } virtual void help() @@ -690,15 +704,18 @@ struct SelectPass : public Pass { log("\n"); log(" -set <name>\n"); log(" do not modify the current selection. instead save the new selection\n"); - log(" under the given name (see @<name> below).\n"); + log(" under the given name (see @<name> below). to save the current selection,\n"); + log(" use \"select -set <name> %%\"\n"); log("\n"); log(" -assert-none\n"); - log(" asserts that the given selection is empty. i.e. produce an error if\n"); - log(" any object matching the selection is found.\n"); + log(" do not modify the current selection. instead assert that the given\n"); + log(" selection is empty. i.e. produce an error if any object matching the\n"); + log(" selection is found.\n"); log("\n"); log(" -assert-any\n"); - log(" asserts that the given selection is non-empty. i.e. produce an error\n"); - log(" if no object matching the selection is found.\n"); + log(" do not modify the current selection. instead assert that the given\n"); + log(" selection is non-empty. i.e. produce an error if no object matching\n"); + log(" the selection is found.\n"); log("\n"); log(" -list\n"); log(" list all objects in the current selection\n"); @@ -1001,7 +1018,7 @@ struct SelectPass : public Pass { if (work_stack.size() == 0) log_cmd_error("No selection to check.\n"); if (!work_stack.back().empty()) - log_error("Assertation failed: selection is not empty.\n"); + log_error("Assertation failed: selection is not empty: %s\n",list_nonopt_args(args).c_str()); return; } @@ -1010,7 +1027,7 @@ struct SelectPass : public Pass { if (work_stack.size() == 0) log_cmd_error("No selection to check.\n"); if (work_stack.back().empty()) - log_error("Assertation failed: selection is empty.\n"); + log_error("Assertation failed: selection is empty: %s\n",list_nonopt_args(args).c_str()); return; } |