| 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 |