mirror of https://github.com/YosysHQ/yosys.git
Merge pull request #4626 from povik/select-t-at
select: Add new `t:@<name>` syntax
This commit is contained in:
commit
9432e972f7
|
@ -876,9 +876,20 @@ static void select_stmt(RTLIL::Design *design, std::string arg, bool disable_emp
|
|||
sel.selected_members[mod->name].insert(cell->name);
|
||||
} else
|
||||
if (arg_memb.compare(0, 2, "t:") == 0) {
|
||||
for (auto cell : mod->cells())
|
||||
if (match_ids(cell->type, arg_memb.substr(2)))
|
||||
sel.selected_members[mod->name].insert(cell->name);
|
||||
if (arg_memb.compare(2, 1, "@") == 0) {
|
||||
std::string set_name = RTLIL::escape_id(arg_memb.substr(3));
|
||||
if (!design->selection_vars.count(set_name))
|
||||
log_cmd_error("Selection @%s is not defined!\n", RTLIL::unescape_id(set_name).c_str());
|
||||
|
||||
auto &muster = design->selection_vars[set_name];
|
||||
for (auto cell : mod->cells())
|
||||
if (muster.selected_modules.count(cell->type))
|
||||
sel.selected_members[mod->name].insert(cell->name);
|
||||
} else {
|
||||
for (auto cell : mod->cells())
|
||||
if (match_ids(cell->type, arg_memb.substr(2)))
|
||||
sel.selected_members[mod->name].insert(cell->name);
|
||||
}
|
||||
} else
|
||||
if (arg_memb.compare(0, 2, "p:") == 0) {
|
||||
for (auto &it : mod->processes)
|
||||
|
@ -1164,6 +1175,9 @@ struct SelectPass : public Pass {
|
|||
log(" t:<pattern>\n");
|
||||
log(" all cells with a type matching the given pattern\n");
|
||||
log("\n");
|
||||
log(" t:@<name>\n");
|
||||
log(" all cells with a type matching a module in the saved selection <name>\n");
|
||||
log("\n");
|
||||
log(" p:<pattern>\n");
|
||||
log(" all processes with a name matching the given pattern\n");
|
||||
log("\n");
|
||||
|
|
|
@ -0,0 +1,52 @@
|
|||
read_rtlil <<EOT
|
||||
module \pdk_not
|
||||
|
||||
wire input 1 \A
|
||||
wire output 2 \Y
|
||||
|
||||
cell $_NOT_ \not
|
||||
connect \A \A
|
||||
connect \Y \Y
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
module \pdk_buf
|
||||
|
||||
wire input 1 \A
|
||||
wire output 2 \Y
|
||||
|
||||
cell $_BUF_ \buf
|
||||
connect \A \A
|
||||
connect \Y \Y
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
module \top
|
||||
wire input 1 \A
|
||||
wire output 2 \Y
|
||||
wire \w
|
||||
|
||||
cell \pdk_buf \buf
|
||||
connect \A \A
|
||||
connect \Y \w
|
||||
end
|
||||
|
||||
cell \pdk_not \not
|
||||
connect \A \w
|
||||
connect \Y \Y
|
||||
end
|
||||
|
||||
end
|
||||
EOT
|
||||
|
||||
cellmatch -lut_attrs *
|
||||
|
||||
select -set buffers a:lut=2'b10 %m
|
||||
select -set inverters a:lut=2'b01 %m
|
||||
|
||||
select -assert-count 1 t:@buffers t:pdk_buf %i
|
||||
select -assert-count 0 t:@buffers t:pdk_not %i
|
||||
select -assert-count 0 t:@inverters t:pdk_buf %i
|
||||
select -assert-count 1 t:@inverters t:pdk_not %i
|
Loading…
Reference in New Issue