diff --git a/libraries/base/common/src/vhdl/common_pkg.vhd b/libraries/base/common/src/vhdl/common_pkg.vhd
index 6153caf04a8c55f7cfdb2b77674b7407161229a4..13d8042484abd05f906b0b30d243174e12139cb2 100644
--- a/libraries/base/common/src/vhdl/common_pkg.vhd
+++ b/libraries/base/common/src/vhdl/common_pkg.vhd
@@ -473,7 +473,9 @@ PACKAGE common_pkg IS
   
   FUNCTION SHIFT_UVEC(vec : STD_LOGIC_VECTOR; shift : INTEGER) RETURN STD_LOGIC_VECTOR;  -- < 0 shift left, > 0 shift right
   FUNCTION SHIFT_SVEC(vec : STD_LOGIC_VECTOR; shift : INTEGER) RETURN STD_LOGIC_VECTOR;  -- < 0 shift left, > 0 shift right
-  
+
+  FUNCTION ROTATE_UVEC(vec : STD_LOGIC_VECTOR; shift : INTEGER) RETURN STD_LOGIC_VECTOR;  -- < 0 rotate left, > 0 rotate right
+
   FUNCTION offset_binary(a : STD_LOGIC_VECTOR) RETURN STD_LOGIC_VECTOR;
   
   FUNCTION truncate(                vec : STD_LOGIC_VECTOR; n              : NATURAL) RETURN STD_LOGIC_VECTOR;  -- remove n LSBits from vec, so result has width vec'LENGTH-n
@@ -2271,6 +2273,17 @@ PACKAGE BODY common_pkg IS
     END IF;
   END;
 
+  FUNCTION ROTATE_UVEC(vec : STD_LOGIC_VECTOR; shift : INTEGER) RETURN STD_LOGIC_VECTOR IS
+  BEGIN
+    IF shift < 0 THEN
+      RETURN STD_LOGIC_VECTOR(ROTATE_LEFT(UNSIGNED(vec), -shift));  -- /<-- vec <--\
+                                                                    -- \---------->/
+    ELSE
+      RETURN STD_LOGIC_VECTOR(ROTATE_RIGHT(UNSIGNED(vec), shift));  -- /--> vec -->\
+                                                                    -- \<----------/
+    END IF;
+  END;
+
   --
   -- offset_binary() : maps offset binary to or from two-complement binary.
   --