diff --git a/libraries/base/common/src/vhdl/common_pkg.vhd b/libraries/base/common/src/vhdl/common_pkg.vhd index 4fa4c63d18923840b6e0ffece6c9b980de50791d..d1417f9cf73cb621998d613ddbe0069f8ac278b8 100644 --- a/libraries/base/common/src/vhdl/common_pkg.vhd +++ b/libraries/base/common/src/vhdl/common_pkg.vhd @@ -162,7 +162,8 @@ PACKAGE common_pkg IS FUNCTION floor_log10(n : NATURAL) RETURN NATURAL; - FUNCTION is_pow2(n : NATURAL) RETURN BOOLEAN; -- return TRUE when n is a power of 2, so 0, 1, 2, 4, 8, 16, ... + FUNCTION is_pow2(n : NATURAL) RETURN BOOLEAN; -- return TRUE when n is a power of 2, so 0, 1, 2, 4, 8, 16, ... + FUNCTION true_log_pow2(n : NATURAL) RETURN NATURAL; -- 2**true_log2(n), return power of 2 that is >= n FUNCTION ratio( n, d : NATURAL) RETURN NATURAL; -- return n/d when n MOD d = 0 else return 0, so ratio * d = n only when integer ratio > 0 FUNCTION ratio2(n, m : NATURAL) RETURN NATURAL; -- return integer ratio of n/m or m/n, whichever is the largest @@ -498,6 +499,11 @@ PACKAGE BODY common_pkg IS RETURN n=2**true_log2(n); END; + FUNCTION true_log_pow2(n : NATURAL) RETURN NATURAL IS + BEGIN + RETURN 2**true_log2(n); + END; + FUNCTION ratio(n, d : NATURAL) RETURN NATURAL IS BEGIN IF n MOD d = 0 THEN