summaryrefslogtreecommitdiff
path: root/passes/cmds/setattr.cc
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2015-04-07 19:21:30 +0200
committerClifford Wolf <clifford@clifford.at>2015-04-07 19:21:30 +0200
commit1f33b2a490cf44ec24de5e085ff2957a680519fb (patch)
treecfc2922711a80d3f489e8827997bd6d816e8a5be /passes/cmds/setattr.cc
parent590f74d8f0978c58e7383e5ca3d16a759a006638 (diff)
Added "chparam -list"
Diffstat (limited to 'passes/cmds/setattr.cc')
-rw-r--r--passes/cmds/setattr.cc21
1 files changed, 21 insertions, 0 deletions
diff --git a/passes/cmds/setattr.cc b/passes/cmds/setattr.cc
index 0a859f6f..e4ad1f37 100644
--- a/passes/cmds/setattr.cc
+++ b/passes/cmds/setattr.cc
@@ -192,11 +192,17 @@ struct ChparamPass : public Pass {
log("Re-evaluate the selected modules with new parameters. String values must be\n");
log("passed in double quotes (\").\n");
log("\n");
+ log("\n");
+ log(" chparam -list [selection]\n");
+ log("\n");
+ log("List the available parameters of the selected modules.\n");
+ log("\n");
}
virtual void execute(std::vector<std::string> args, RTLIL::Design *design)
{
std::vector<setunset_t> setunset_list;
dict<RTLIL::IdString, RTLIL::Const> new_parameters;
+ bool list_mode = false;
size_t argidx;
for (argidx = 1; argidx < args.size(); argidx++)
@@ -209,10 +215,25 @@ struct ChparamPass : public Pass {
argidx--;
continue;
}
+ if (arg == "-list") {
+ list_mode = true;
+ continue;
+ }
break;
}
extra_args(args, argidx, design);
+ if (list_mode) {
+ if (!new_parameters.empty())
+ log_cmd_error("The options -set and -list cannot be used together.\n");
+ for (auto module : design->selected_modules()) {
+ log("%s:\n", log_id(module));
+ for (auto param : module->avail_parameters)
+ log(" %s\n", log_id(param));
+ }
+ return;
+ }
+
pool<IdString> modnames, old_modnames;
for (auto module : design->selected_modules()) {
if (design->selected_whole_module(module))