From f566b4356e8e5e76b9469d3fa8293bc070306a78 Mon Sep 17 00:00:00 2001
From: Erik Kooistra <kooistra@astron.nl>
Date: Wed, 13 Dec 2017 12:26:23 +0000
Subject: [PATCH] true_log_pow2(n) = 2**true_log2(n) to return power of 2 that
 is >= n.

---
 libraries/base/common/src/vhdl/common_pkg.vhd | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/libraries/base/common/src/vhdl/common_pkg.vhd b/libraries/base/common/src/vhdl/common_pkg.vhd
index 4fa4c63d18..d1417f9cf7 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
-- 
GitLab