mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 03:32:29 +00:00 
			
		
		
		
	Replace `cutpoint -blackbox` behaviour with `cutpoint -blackbox -instances` behaviour. Drop `-instances` flag. Add `-noscopeinfo` flag. Use `RTLIL::Selection::boxed_module()` helper to shortcut blackbox check. Update `cutpoint_blackbox.ys` tests to match.
		
			
				
	
	
		
			72 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| read_verilog -specify << EOT
 | |
| module top(input a, b, output o);
 | |
|     wire c, d, e;
 | |
|     bb #(.SOME_PARAM(1)) bb1 (.a (a), .b (b), .o (c));
 | |
|     bb #(.SOME_PARAM(2)) bb2 (.a (a), .b (b), .o (d));
 | |
|     wb wb1 (.a (a), .b (b), .o (e));
 | |
|     some_mod some_inst (.a (c), .b (d), .c (e), .o (o));
 | |
| endmodule
 | |
| 
 | |
| (* blackbox *)
 | |
| module bb #( parameter SOME_PARAM=0 ) (input a, b, output o);
 | |
| assign o = a | b;
 | |
| specify
 | |
| 	(a => o) = 1;
 | |
| endspecify
 | |
| endmodule
 | |
| 
 | |
| (* whitebox *)
 | |
| module wb(input a, b, output o);
 | |
| assign o = a ^ b;
 | |
| endmodule
 | |
| 
 | |
| module some_mod(input a, b, c, output o);
 | |
| assign o = a & (b | c);
 | |
| endmodule
 | |
| EOT
 | |
| 
 | |
| hierarchy -top top
 | |
| design -save hier
 | |
| 
 | |
| select -assert-none t:$anyseq
 | |
| select -assert-count 3 =t:?b
 | |
| cutpoint -blackbox
 | |
| 
 | |
| select -assert-none =t:?b
 | |
| select -assert-none r:SOME_PARAM
 | |
| 
 | |
| select -assert-count 3 t:$anyseq
 | |
| select -assert-count 3 t:$scopeinfo
 | |
| select -assert-count 3 t:$scopeinfo r:TYPE=blackbox %i
 | |
| select -assert-count 3 t:$scopeinfo n:*cutpoint.cc* %i
 | |
| 
 | |
| # -noscopeinfo works with -blackbox
 | |
| design -load hier
 | |
| cutpoint -blackbox -noscopeinfo
 | |
| select -assert-none t:$scopeinfo
 | |
| 
 | |
| # cutpoint -blackbox === cutpoint =A:whitebox =A:blackbox %u %C
 | |
| #                        (simplified to =A:*box %C)
 | |
| design -load hier
 | |
| cutpoint -blackbox
 | |
| rename -enumerate -pattern A_% t:$scopeinfo
 | |
| rename -enumerate -pattern B_% t:$anyseq
 | |
| rename -enumerate -pattern C_% w:*Anyseq*
 | |
| design -save gold
 | |
| select -write cutpoint.gold.sel =*
 | |
| 
 | |
| design -load hier
 | |
| cutpoint =A:*box %C
 | |
| rename -enumerate -pattern A_% t:$scopeinfo
 | |
| rename -enumerate -pattern B_% t:$anyseq
 | |
| rename -enumerate -pattern C_% w:*Anyseq*
 | |
| design -save gate
 | |
| select -write cutpoint.gate.sel
 | |
| select -read cutpoint.gold.sel
 | |
| # nothing in gate but not gold
 | |
| select -assert-none % %n
 | |
| 
 | |
| design -load gold
 | |
| select -read cutpoint.gate.sel
 | |
| # nothing in gold but not gate
 | |
| select -assert-none % %n
 |