mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 11:42:30 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			36 lines
		
	
	
	
		
			625 B
		
	
	
	
		
			Verilog
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
	
		
			625 B
		
	
	
	
		
			Verilog
		
	
	
	
	
	
| module repwhile_test001(input [5:0] a, output [7:0] y, output [31:0] x);
 | |
| 
 | |
| 	function [7:0] mylog2;
 | |
| 		input [31:0] value;
 | |
| 		begin
 | |
| 			mylog2 = 0;
 | |
| 			while (value > 0) begin
 | |
| 				value = value >> 1;
 | |
| 				mylog2 = mylog2 + 1;
 | |
| 			end
 | |
| 		end
 | |
| 	endfunction
 | |
| 
 | |
| 	function [31:0] myexp2;
 | |
| 		input [7:0] value;
 | |
| 		begin
 | |
| 			myexp2 = 1;
 | |
| 			repeat (value)
 | |
| 				myexp2 = myexp2 << 1;
 | |
| 		end
 | |
| 	endfunction
 | |
| 
 | |
| 	reg [7:0] y_table [63:0];
 | |
| 	reg [31:0] x_table [63:0];
 | |
| 
 | |
| 	integer i;
 | |
| 	initial begin
 | |
| 		for (i = 0; i < 64; i = i+1) begin
 | |
| 			y_table[i] <= mylog2(i);
 | |
| 			x_table[i] <= myexp2(i);
 | |
| 		end
 | |
| 	end
 | |
| 
 | |
| 	assign y = y_table[a];
 | |
| 	assign x = x_table[a];
 | |
| endmodule
 |