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:
parent
dbc2611dd6
commit
911a3ae759
|
@ -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;
|
||||
|
||||
|
|
39
tests/select/boxes_setattr.ys
Normal file
39
tests/select/boxes_setattr.ys
Normal 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
|
Loading…
Reference in a new issue