package utils is
function log2(i : natural) return integer;
+ function log2ceil(i : natural) return integer;
function ispow2(i : integer) return boolean;
-
+ function round_up(i : integer; s : integer) return integer;
end utils;
package body utils is
return ret;
end function;
+ function log2ceil(i : natural) return integer is
+ variable tmp : integer := i;
+ variable ret : integer := 0;
+ begin
+ while tmp >= 1 loop
+ ret := ret + 1;
+ tmp := tmp / 2;
+ end loop;
+ return ret;
+ end function;
+
function ispow2(i : integer) return boolean is
begin
if to_integer(to_unsigned(i, 32) and to_unsigned(i - 1, 32)) = 0 then
end if;
end function;
+ function round_up(i : integer; s : integer) return integer is
+ begin
+ return ((i + (s - 1)) / s) * s;
+ end function;
end utils;