diff --git a/modules/wishbone/wb_irq/wb_irq_slave.vhd b/modules/wishbone/wb_irq/wb_irq_slave.vhd
index ec00fc397c27198d979be9a050553ce6f77d658f..51052d8fff4bcb18fda896fc22fb27632ee8036a 100644
--- a/modules/wishbone/wb_irq/wb_irq_slave.vhd
+++ b/modules/wishbone/wb_irq/wb_irq_slave.vhd
@@ -26,7 +26,6 @@ use ieee.numeric_std.all;
 library work;
 use work.wishbone_pkg.all;
 use work.genram_pkg.all;
-use work.eb_internals_pkg.all;
 use work.wb_irq_pkg.all;
 
 
@@ -108,21 +107,27 @@ begin
       end if;
     end process;
 
-    irqfifo : eb_fifo -- TODO: change this to some other component fifo
-    generic map(
-      g_width => g_datbits + g_adrbits + g_selbits,
-      g_size  => g_depth)
-    port map (
-      clk_i     => clk_i,
-      rstn_i    => s_rst_n,
-      w_full_o  => irq_full(I),
-      w_push_i  => irq_push(I),
-      w_dat_i   => irq_d(I),
-      r_empty_o => irq_empty(I),
-      r_pop_i   => irq_pop(I),
-      r_dat_o   => irq_q(I));
-
-  end generate;  
+   irqfifo : generic_sync_fifo
+      generic map (
+        g_data_width    => g_datbits + g_adrbits + g_selbits, 
+        g_size          => g_depth,
+        g_show_ahead    => true,
+         g_with_empty   => true,
+        g_with_full     => true)
+      port map (
+         rst_n_i        => s_rst_n,         
+         clk_i          => clk_i,
+         d_i            => irq_d(I),
+         we_i           => irq_push(I),
+         q_o            => irq_q(I),
+         rd_i           => irq_pop(I),
+         empty_o        => irq_empty(I),
+         full_o         => irq_full(I),
+         almost_empty_o => open,
+         almost_full_o  => open,
+         count_o        => open);
+
+  end generate;
   -------------------------------------------------------------------------
 
 
diff --git a/modules/wishbone/wishbone_pkg.vhd b/modules/wishbone/wishbone_pkg.vhd
index ce38c45c03f9bf9dc9bb3dc4183e53350cc4bc8a..407db7a824a5c30f964f15287271a7faa2222854 100644
--- a/modules/wishbone/wishbone_pkg.vhd
+++ b/modules/wishbone/wishbone_pkg.vhd
@@ -1137,22 +1137,25 @@ package body wishbone_pkg is
    return t_sdb_record_array is
       variable result   : t_sdb_record_array(instances-1 downto 0);  
       variable i,j, pos : natural;
-      variable dev      : t_sdb_device;
-      variable serial_no : string(1 to 3); 
+      variable dev, newdev      : t_sdb_device;
+      variable serial_no : string(1 to 3);
+      variable text_possible : boolean := false; 
    begin
+      dev := device;
+             
+      report "### Creating " & integer'image(instances) & " x " & dev.sdb_component.product.name
+      severity note;       
       for i in 0 to instances-1 loop
-         dev := device;         
+         newdev := dev;        
          if(g_enum_dev_id) then         
             dev.sdb_component.product.device_id :=  
             std_logic_vector( unsigned(dev.sdb_component.product.device_id) 
                               + to_unsigned(i+g_dev_id_offs, dev.sdb_component.product.device_id'length));        
          end if;
-         if(g_enum_dev_name) then         
+         if(g_enum_dev_name AND NOT text_possible) then         
          -- find end of name
             for j in dev.sdb_component.product.name'length downto 1 loop
-               if(dev.sdb_component.product.name(j) /= ' ') then
-                   report "Found non space " & dev.sdb_component.product.name(j) & "@" & integer'image(j)
-                  severity note;                   
+               if(dev.sdb_component.product.name(j) /= ' ') then               
                   pos := j;                  
                   exit;
                end if;
@@ -1160,19 +1163,23 @@ package body wishbone_pkg is
          -- convert i+g_dev_name_offs to string
             serial_no := f_string_fix_len(integer'image(i+g_dev_name_offs), serial_no'length);
          -- check if space is sufficient
-            assert (serial_no'length <= dev.sdb_component.product.name'length - pos)
+            assert (serial_no'length+1 <= dev.sdb_component.product.name'length - pos)
             report "Not enough space in namestring of sdb_device " & dev.sdb_component.product.name
             & " to add serial number " & serial_no & ". Space available " & 
-            integer'image(dev.sdb_component.product.name'length-pos) & ", required " 
+            integer'image(dev.sdb_component.product.name'length-pos-1) & ", required " 
             & integer'image(serial_no'length+1)    
-            severity Failure;            
-         -- insert
-            dev.sdb_component.product.name(pos+1) := '_'; 
+            severity Failure;
+            text_possible := true;
+         end if;
+         if(g_enum_dev_name AND text_possible) then
+            newdev.sdb_component.product.name(pos+1) := '_'; 
             for j in 1 to serial_no'length loop
-               dev.sdb_component.product.name(pos+1+j) := serial_no(j);
-            end loop;
+               newdev.sdb_component.product.name(pos+1+j) := serial_no(j);
+            end loop;            
          end if;
-         result(i) := f_sdb_embed_device(dev, (others=>'1'));
+          
+      -- insert
+         result(i) := f_sdb_embed_device(newdev, (others=>'1'));
       end loop;
       return result;
    end f_sdb_create_array;