diff --git a/modules/common/gc_sync.vhd b/modules/common/gc_sync.vhd
index df946220ce6c36ee8558f8d64cd263c79f15b4fa..0b8c6e7a16e5a5353218c5f0af2d84e36da85be5 100644
--- a/modules/common/gc_sync.vhd
+++ b/modules/common/gc_sync.vhd
@@ -30,8 +30,7 @@ entity gc_sync is
     clk_i     : in  std_logic;
     rst_n_a_i : in  std_logic;
     d_i       : in  std_logic;
-    q_o       : out std_logic
-    );
+    q_o       : out std_logic);
 end gc_sync;
 
 -- make Altera Quartus quiet regarding unknown attributes:
@@ -56,6 +55,9 @@ architecture rtl of gc_sync is
   attribute keep of sync0          : signal is "true";
   attribute keep of sync1          : signal is "true";
 
+  attribute keep_hierarchy        : string;
+  attribute keep_hierarchy of rtl : architecture is "true";
+
   attribute async_reg                   : string;
   attribute async_reg of gc_sync_ffs_in : signal is "true";
   attribute async_reg of sync0          : signal is "true";
diff --git a/modules/common/gc_sync_ffs.vhd b/modules/common/gc_sync_ffs.vhd
index 3b6fafbfd8fb57ce8b36d37ad83994bf29c4c6f1..1a1d08c42e022227163866ed47dfa6d4ad79add3 100644
--- a/modules/common/gc_sync_ffs.vhd
+++ b/modules/common/gc_sync_ffs.vhd
@@ -62,6 +62,9 @@ architecture arch of gc_sync_ffs is
 
   attribute keep of gc_sync_ffs_in : signal is "true";
 
+  attribute keep_hierarchy         : string;
+  attribute keep_hierarchy of arch : architecture is "true";
+
   -- synchronizer attribute for Vivado
   attribute ASYNC_REG          : string;
   attribute ASYNC_REG of sync0 : signal is "true";
diff --git a/modules/common/gc_sync_register.vhd b/modules/common/gc_sync_register.vhd
index 1f21662a010e9d53a887c4f286804c9423b26e84..85624d24f53671fbeef5dd5961ce74d086997de4 100644
--- a/modules/common/gc_sync_register.vhd
+++ b/modules/common/gc_sync_register.vhd
@@ -53,7 +53,10 @@ architecture rtl of gc_sync_register is
   attribute keep of gc_sync_register_in : signal is "true";
   attribute keep of sync0               : signal is "true";
   attribute keep of sync1               : signal is "true";
-  
+
+  attribute keep_hierarchy        : string;
+  attribute keep_hierarchy of rtl : architecture is "true";
+
   attribute async_reg                        : string;
   attribute async_reg of gc_sync_register_in : signal is "true";
   attribute async_reg of sync0               : signal is "true";
diff --git a/modules/genrams/common/inferred_async_fifo.vhd b/modules/genrams/common/inferred_async_fifo.vhd
index e88480301263545d559fd0f3286ab5c01c9be601..f2cf45d89b5d7bf32d227c114808b16e4393c73b 100644
--- a/modules/genrams/common/inferred_async_fifo.vhd
+++ b/modules/genrams/common/inferred_async_fifo.vhd
@@ -83,6 +83,10 @@ entity inferred_async_fifo is
     rd_count_o        : out std_logic_vector(f_log2_size(g_size)-1 downto 0)
     );
 
+  attribute keep_hierarchy : string;
+  attribute keep_hierarchy of
+    inferred_async_fifo : entity is "true";
+
 end inferred_async_fifo;
 
 
diff --git a/modules/genrams/common/inferred_async_fifo_dual_rst.vhd b/modules/genrams/common/inferred_async_fifo_dual_rst.vhd
index 89e6eb3cc6c00562bbb3950cb4d335e51a998467..23e900f2165017b21322928292c274a3839331e4 100644
--- a/modules/genrams/common/inferred_async_fifo_dual_rst.vhd
+++ b/modules/genrams/common/inferred_async_fifo_dual_rst.vhd
@@ -74,6 +74,10 @@ entity inferred_async_fifo_dual_rst is
     rd_count_o        : out std_logic_vector(f_log2_size(g_size)-1 downto 0)
     );
 
+  attribute keep_hierarchy : string;
+  attribute keep_hierarchy of
+    inferred_async_fifo_dual_rst : entity is "true";
+
 end inferred_async_fifo_dual_rst;