3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2025-04-15 13:28:59 +00:00

setattr.cc: Use new selection helpers

Also test they work as expected.
This commit is contained in:
Krystine Sherwin 2025-04-08 15:34:48 +12:00
parent dbc2611dd6
commit 911a3ae759
No known key found for this signature in database
2 changed files with 44 additions and 29 deletions

View file

@ -96,32 +96,16 @@ struct SetattrPass : public Pass {
}
extra_args(args, argidx, design);
for (auto module : design->modules())
for (auto module : design->all_selected_modules())
{
if (flag_mod) {
if (design->selected_whole_module(module->name))
if (module->is_selected_whole())
do_setunset(module->attributes, setunset_list);
continue;
}
if (!design->selected(module))
continue;
for (auto wire : module->wires())
if (design->selected(module, wire))
do_setunset(wire->attributes, setunset_list);
for (auto &it : module->memories)
if (design->selected(module, it.second))
do_setunset(it.second->attributes, setunset_list);
for (auto cell : module->cells())
if (design->selected(module, cell))
do_setunset(cell->attributes, setunset_list);
for (auto &it : module->processes)
if (design->selected(module, it.second))
do_setunset(it.second->attributes, setunset_list);
for (auto memb : module->selected_members())
do_setunset(memb->attributes, setunset_list);
}
}
} SetattrPass;
@ -152,16 +136,8 @@ struct WbflipPass : public Pass {
}
extra_args(args, argidx, design);
for (Module *module : design->modules())
{
if (!design->selected(module))
continue;
if (module->get_bool_attribute(ID::blackbox))
continue;
for (auto *module : design->selected_modules(RTLIL::SELECT_ALL, RTLIL::SB_EXCL_BB_ONLY))
module->set_bool_attribute(ID::whitebox, !module->get_bool_attribute(ID::whitebox));
}
}
} WbflipPass;

View file

@ -0,0 +1,39 @@
read_verilog -specify boxes.v
design -save read
select -assert-none =a:test_attr
select -assert-none =A:test_attr
# setattr =* affects all modules
setattr -set test_attr 1 =*
select -assert-mod-count 3 =a:test_attr
select -assert-none =A:test_attr
design -load read
setattr -mod -set test_attr 1 =*
select -assert-none =a:test_attr
select -assert-mod-count 3 =A:test_attr
# setattr * doesn't affect boxed modules
design -load read
setattr -mod -set test_attr 1 *
select -assert-mod-count 1 =A:test_attr
# setattr can set and unset whitebox attr
design -load read
setattr -mod -unset whitebox =wb
select -assert-mod-count 2 *
setattr -mod -set whitebox 1 wb
select -assert-mod-count 1 *
# wbflip works on all non-bb in selection
design -load read
select -assert-mod-count 1 =A:whitebox
wbflip
select -assert-mod-count 2 =A:whitebox
wbflip
select -assert-mod-count 2 =A:whitebox
wbflip =wb
select -assert-mod-count 1 =A:whitebox
wbflip =bb
select -assert-mod-count 1 =A:whitebox