mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-11-03 21:09:12 +00:00 
			
		
		
		
	setattr.cc: Use new selection helpers
Also test they work as expected.
This commit is contained in:
		
							parent
							
								
									dbc2611dd6
								
							
						
					
					
						commit
						911a3ae759
					
				
					 2 changed files with 44 additions and 29 deletions
				
			
		| 
						 | 
				
			
			@ -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,17 +136,9 @@ 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;
 | 
			
		||||
 | 
			
		||||
struct SetparamPass : public Pass {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										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…
	
	Add table
		Add a link
		
	
		Reference in a new issue