summaryrefslogtreecommitdiff
path: root/kernel/select.cc
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/select.cc')
-rw-r--r--kernel/select.cc14
1 files changed, 12 insertions, 2 deletions
diff --git a/kernel/select.cc b/kernel/select.cc
index 730f47b4..fa1c3db0 100644
--- a/kernel/select.cc
+++ b/kernel/select.cc
@@ -346,8 +346,18 @@ static void select_op_expand(RTLIL::Design *design, std::string arg, char mode)
size_t endpos = arg.find(':', pos);
if (endpos == std::string::npos)
endpos = arg.size();
- if (int(endpos) > pos)
- limits.insert(RTLIL::escape_id(arg.substr(pos, endpos-pos)));
+ if (int(endpos) > pos) {
+ std::string str = arg.substr(pos, endpos-pos);
+ if (str[0] == '@') {
+ str = RTLIL::escape_id(str.substr(1));
+ if (design->selection_vars.count(str) > 0) {
+ for (auto i1 : design->selection_vars.at(str).selected_members)
+ for (auto i2 : i1.second)
+ limits.insert(i2);
+ }
+ } else
+ limits.insert(RTLIL::escape_id(str));
+ }
pos = endpos;
}
}