Added ## selection operator (union all on stack)

This commit is contained in:
Clifford Wolf 2013-03-08 08:47:29 +01:00
parent 653f0049a8
commit 79b3afa011
1 changed files with 9 additions and 0 deletions

View File

@ -325,6 +325,12 @@ static void select_stmt(RTLIL::Design *design, std::string arg)
if (design->selection_stack.size() > 0)
work_stack.push_back(design->selection_stack.back());
} else
if (arg == "##") {
while (work_stack.size() > 1) {
select_op_union(design, work_stack.front(), work_stack.back());
work_stack.pop_back();
}
} else
if (arg == "#n") {
if (work_stack.size() < 1)
log_cmd_error("Must have at least one element on stack for operator #n.\n");
@ -617,6 +623,9 @@ struct SelectPass : public Pass {
log(" #\n");
log(" push a copy of the current selection to the stack\n");
log("\n");
log(" ##\n");
log(" replace the stack with a union of all elements on it\n");
log("\n");
log(" #n\n");
log(" replace top set with its invert\n");
log("\n");