mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 11:42:30 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			63 lines
		
	
	
	
		
			903 B
		
	
	
	
		
			Verilog
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
	
		
			903 B
		
	
	
	
		
			Verilog
		
	
	
	
	
	
| module scopes_test_01(input [3:0] k, output reg [15:0] x, y);
 | |
| 	function [15:0] func_01;
 | |
| 		input [15:0] x, y;
 | |
| 		begin
 | |
| 			func_01 = x + y;
 | |
| 			begin:blk
 | |
| 				reg [15:0] x;
 | |
| 				x = y;
 | |
| 				func_01 = func_01 ^ x;
 | |
| 			end
 | |
| 			func_01 = func_01 ^ x;
 | |
| 		end
 | |
| 	endfunction
 | |
| 
 | |
| 	function [15:0] func_02;
 | |
| 		input [15:0] x, y;
 | |
| 		begin
 | |
| 			func_02 = x - y;
 | |
| 			begin:blk
 | |
| 				reg [15:0] func_02;
 | |
| 				func_02 = 0;
 | |
| 			end
 | |
| 		end
 | |
| 	endfunction
 | |
| 
 | |
| 	task task_01;
 | |
| 		input [3:0] a;
 | |
| 		reg [15:0] y;
 | |
| 		begin
 | |
| 			y = a * 23;
 | |
| 			x = x + y;
 | |
| 		end
 | |
| 	endtask
 | |
| 
 | |
| 	task task_02;
 | |
| 		input [3:0] a;
 | |
| 		begin:foo
 | |
| 			reg [15:0] x, z;
 | |
| 			x = y;
 | |
| 			begin:bar
 | |
| 				reg [15:0] x;
 | |
| 				x = 77 + a;
 | |
| 				z = -x;
 | |
| 			end
 | |
| 			y = x ^ z;
 | |
| 		end
 | |
| 	endtask
 | |
| 
 | |
| 	always @* begin
 | |
| 		x = func_01(11, 22);
 | |
| 		y = func_02(33, 44);
 | |
| 		task_01(k);
 | |
| 		task_02(k);
 | |
| 		begin:foo
 | |
| 			reg [15:0] y;
 | |
| 			y = x;
 | |
| 			y = y + k;
 | |
| 			x = y;
 | |
| 		end
 | |
| 		x = func_01(y, x);
 | |
| 		y = func_02(y, x);
 | |
| 	end
 | |
| endmodule
 |