diff --git a/applications/apertif/systems/apertif_bf_xc/hdllib.cfg b/applications/apertif/systems/apertif_bf_xc/hdllib.cfg
index 4633d5e573f8293629107bc08f72c2635e45b1de..abf264eb9f6ce09e502412080cc83f59cf914435 100644
--- a/applications/apertif/systems/apertif_bf_xc/hdllib.cfg
+++ b/applications/apertif/systems/apertif_bf_xc/hdllib.cfg
@@ -1,7 +1,7 @@
 hdl_lib_name = apertif_bf_xc
 hdl_library_clause_name = apertif_bf_xc_lib
 hdl_lib_uses_synth =
-hdl_lib_uses_sim = apertif_unb1_correlator apertif_fn_beamformer
+hdl_lib_uses_sim = apertif_unb1_correlator apertif_unb1_fn_beamformer
 hdl_lib_technology = ip_stratixiv
 
 modelsim_copy_files = 
diff --git a/applications/apertif/systems/apertif_bg_xc/hdllib.cfg b/applications/apertif/systems/apertif_bg_xc/hdllib.cfg
index 38e71166cfeacc8dc78248d863f8ea625b0c5e0d..9bbd82cf4ee6d0964c8ac28f6c7acf01511101ce 100644
--- a/applications/apertif/systems/apertif_bg_xc/hdllib.cfg
+++ b/applications/apertif/systems/apertif_bg_xc/hdllib.cfg
@@ -1,11 +1,13 @@
 hdl_lib_name = apertif_bg_xc
 hdl_library_clause_name = apertif_bg_xc_lib
 hdl_lib_uses_synth =
-hdl_lib_uses_sim = apertif_unb1_correlator apertif_fn_bf_emu
+hdl_lib_uses_sim = apertif_unb1_correlator apertif_unb1_fn_bf_emu
 
 hdl_lib_technology = ip_stratixiv
 
 modelsim_copy_files = 
+    ../../designs/apertif_unb1_fn_bf_emu/src/hex/ hex/
+    $UNB/Firmware/dsp/filter/build/data/ mif
 
 synth_files =
     
diff --git a/applications/apertif/systems/apertif_bg_xc/tb/vhdl/tb_apertif_bg_xc.vhd b/applications/apertif/systems/apertif_bg_xc/tb/vhdl/tb_apertif_bg_xc.vhd
index 2a2645cff644ca0ad8f9e9cffe533acf3c00aa53..a0f5f15bba9f0adcc22565d660348006f56eca71 100644
--- a/applications/apertif/systems/apertif_bg_xc/tb/vhdl/tb_apertif_bg_xc.vhd
+++ b/applications/apertif/systems/apertif_bg_xc/tb/vhdl/tb_apertif_bg_xc.vhd
@@ -1,6 +1,6 @@
 -------------------------------------------------------------------------------
 --
--- Copyright (C) 2014
+-- Copyright (C) 2015
 -- ASTRON (Netherlands Institute for Radio Astronomy) <http://www.astron.nl/>
 -- JIVE (Joint Institute for VLBI in Europe) <http://www.jive.nl/>
 -- P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
@@ -28,150 +28,108 @@
 --   . 2) Instantiate 3x fn_beamformer
 -- Usage:
 
-LIBRARY ip_stratixiv_ddr3_mem_model_lib;
-LIBRARY IEEE, common_lib, unb1_board_lib, i2c_lib, tech_ddr_lib;
+LIBRARY IEEE, common_lib, unb1_board_lib, apertif_unb1_fn_bf_emu_lib, apertif_unb1_correlator_lib;
 USE IEEE.std_logic_1164.ALL;
 USE IEEE.numeric_std.ALL;
 USE common_lib.common_pkg.ALL;
 USE unb1_board_lib.unb1_board_pkg.ALL;
 USE common_lib.tb_common_pkg.ALL; 
-USE tech_ddr_lib.tech_ddr_pkg.ALL;
 
-ENTITY tb_apertif_bf_xc IS
-END tb_apertif_bf_xc;
+ENTITY tb_apertif_bg_xc IS
+END tb_apertif_bg_xc;
 
-ARCHITECTURE tb OF tb_apertif_bf_xc IS
+ARCHITECTURE tb OF tb_apertif_bg_xc IS
 
   CONSTANT c_sim             : BOOLEAN := TRUE;
 
-  CONSTANT c_unb_nr          : NATURAL := 0; -- UniBoard 0
-  CONSTANT c_node_nr         : NATURAL := 7; -- Back node 3
-  CONSTANT c_id              : STD_LOGIC_VECTOR(7 DOWNTO 0) := TO_UVEC(c_unb_nr, c_unb1_board_nof_uniboard_w) & TO_UVEC(c_node_nr, c_unb1_board_nof_chip_w);
+  CONSTANT c_unb_nr          : NATURAL := 0;
+  CONSTANT c_node_nr         : NATURAL := 0;
+  CONSTANT c_id              : STD_LOGIC_VECTOR(7 DOWNTO 0) := TO_UVEC(c_unb_nr, 5) & TO_UVEC(c_node_nr, 3);
 
-  CONSTANT c_version         : STD_LOGIC_VECTOR(1 DOWNTO 0) := "00";
-  CONSTANT c_fw_version      : t_unb1_board_fw_version := (1, 0);
-
-  CONSTANT c_cable_delay     : TIME := 12 ns;
   CONSTANT c_eth_clk_period  : TIME := 40 ns;  -- 25 MHz XO on UniBoard
-  CONSTANT c_sa_clk_period   : TIME := 6.4 ns;  
+  CONSTANT c_tr_clk_period   : TIME := 6.4 ns;  
   CONSTANT c_clk_period      : TIME := 5 ns; 
   CONSTANT c_pps_period      : NATURAL := 1000; 
   
-  CONSTANT c_ddr             : t_c_tech_ddr := c_tech_ddr3_4g_800m_master;
-
-  -- DUT
   SIGNAL clk                 : STD_LOGIC := '0';
   SIGNAL pps                 : STD_LOGIC := '0';
   SIGNAL pps_rst             : STD_LOGIC := '0';
-  SIGNAL sa_clk              : STD_LOGIC := '1';
-  SIGNAL sb_clk              : STD_LOGIC := '1';
-
-  SIGNAL WDI                 : STD_LOGIC;
-  SIGNAL INTA                : STD_LOGIC;
-  SIGNAL INTB                : STD_LOGIC;
-
+  SIGNAL tr_clk              : STD_LOGIC := '1';
   SIGNAL eth_clk             : STD_LOGIC := '0';
-  SIGNAL eth_txp             : STD_LOGIC;
-  SIGNAL eth_rxp             : STD_LOGIC;
   
-  SIGNAL VERSION             : STD_LOGIC_VECTOR(c_unb1_board_aux.version_w-1 DOWNTO 0) := c_version; 
-  SIGNAL ID                  : STD_LOGIC_VECTOR(c_unb1_board_aux.id_w-1 DOWNTO 0)      := c_id;
-  SIGNAL TESTIO              : STD_LOGIC_VECTOR(c_unb1_board_aux.testio_w-1 DOWNTO 0);
+  SIGNAL ID                  : STD_LOGIC_VECTOR(c_unb1_board_aux.id_w-1 DOWNTO 0) := c_id;
 
-  SIGNAL sens_scl            : STD_LOGIC;
-  SIGNAL sens_sda            : STD_LOGIC;
   SIGNAL si_fn_0_tx          : STD_LOGIC_VECTOR(c_unb1_board_ci.tr.bus_w-1 DOWNTO 0) := (OTHERS => '0');  
-  SIGNAL fn_bn_0_tx          : STD_LOGIC_VECTOR(c_unb1_board_tr_mesh.bus_w-1 DOWNTO 0) := (OTHERS => '0');  
   
-  -- Signals to interface with the DDR3 memory model.
-  SIGNAL phy_in              : t_tech_ddr3_phy_in;
-  SIGNAL phy_io              : t_tech_ddr3_phy_io;
-  SIGNAL phy_ou              : t_tech_ddr3_phy_ou;   
-
 BEGIN
 
   ----------------------------------------------------------------------------
-  -- System setup
+  -- Clocks and PPS
   ----------------------------------------------------------------------------
-  clk     <= NOT clk AFTER c_clk_period/2;        -- External clock (200 MHz)
-  eth_clk <= NOT eth_clk AFTER c_eth_clk_period/2;  -- Ethernet ref clock (25 MHz)
-  sa_clk  <= NOT sa_clk  AFTER c_sa_clk_period/2;
-  sb_clk  <= NOT sb_clk  AFTER c_sa_clk_period/2;
-  
-  INTA <= 'H';  -- pull up
-  INTB <= 'H';  -- pull up
-
-  sens_scl <= 'H';  -- pull up
-  sens_sda <= 'H';  -- pull up
-
-  ------------------------------------------------------------------------------
-  -- External PPS
-  ------------------------------------------------------------------------------  
+  clk     <= NOT clk AFTER c_clk_period/2; 
+  eth_clk <= NOT eth_clk AFTER c_eth_clk_period/2;
+  tr_clk  <= NOT tr_clk  AFTER c_tr_clk_period/2;
   proc_common_gen_pulse(1, c_pps_period, '1', pps_rst, clk, pps);
   
   ------------------------------------------------------------------------------
-  -- DUT
+  -- 3x apertif_unb1_fn_bf_emu
   ------------------------------------------------------------------------------
-  u_apertif_unb1_fn_beamformer : ENTITY work.apertif_unb1_fn_beamformer_tp_bg
+  u_apertif_unb1_fn_bf_emu : ENTITY apertif_unb1_fn_bf_emu_lib.apertif_unb1_fn_bf_emu
     GENERIC MAP (
       g_sim         => c_sim,
       g_sim_unb_nr  => c_unb_nr,
       g_sim_node_nr => c_node_nr
     )
     PORT MAP (
-      -- GENERAL
       CLK         => clk,
       PPS         => pps,
-      WDI         => WDI,
-      INTA        => INTA,
-      INTB        => INTB,
-
-      sens_sc     => sens_scl,
-      sens_sd     => sens_sda,
-
-      -- Others
-      VERSION     => VERSION,
+      VERSION     => "00",
       ID          => ID,
-      TESTIO      => TESTIO,
 
-      -- 1GbE Control Interface
       ETH_clk     => eth_clk,
-      ETH_SGIN    => eth_rxp,
-      ETH_SGOUT   => eth_txp,
+      ETH_SGIN    => '0',
       
-      -- Transceiver clocks
-      SA_CLK      => sa_clk,  --  : IN  STD_LOGIC; -- SerDes Clock BN-BI / SI_FN
-      SB_CLK      => sb_clk,
-  
-      -- Mesh Serial I/O
-      FN_BN_0_RX  => fn_bn_0_tx, --          : IN  STD_LOGIC_VECTOR(c_unb1_board_tr_mesh.bus_w-1 DOWNTO 0) := (OTHERS=>'0');
-      FN_BN_1_RX  => fn_bn_0_tx, --          : IN  STD_LOGIC_VECTOR(c_unb1_board_tr_mesh.bus_w-1 DOWNTO 0) := (OTHERS=>'0');
-      FN_BN_2_RX  => fn_bn_0_tx, --          : IN  STD_LOGIC_VECTOR(c_unb1_board_tr_mesh.bus_w-1 DOWNTO 0) := (OTHERS=>'0');
-      FN_BN_3_RX  => fn_bn_0_tx, --          : IN  STD_LOGIC_VECTOR(c_unb1_board_tr_mesh.bus_w-1 DOWNTO 0) := (OTHERS=>'0');
+      SA_CLK      => tr_clk,
   
-      -- Serial I/O
-      SI_FN_0_RX  => si_fn_0_tx, --  : IN    STD_LOGIC_VECTOR(c_unb1_board_ci.tr.bus_w-1 DOWNTO 0);
-      SI_FN_1_RX  => si_fn_0_tx, --  : IN    STD_LOGIC_VECTOR(c_unb1_board_ci.tr.bus_w-1 DOWNTO 0);
-      SI_FN_2_RX  => si_fn_0_tx, --  : IN    STD_LOGIC_VECTOR(c_unb1_board_ci.tr.bus_w-1 DOWNTO 0);
-      SI_FN_3_RX  => si_fn_0_tx, --  : IN    STD_LOGIC_VECTOR(c_unb1_board_ci.tr.bus_w-1 DOWNTO 0);
-      
-      MB_I_in     => phy_in, 
-      MB_I_io     => phy_io, 
-      MB_I_ou     => phy_ou 
+      SI_FN_0_RX  => (OTHERS=>'0'),
+      SI_FN_1_RX  => (OTHERS=>'0'),
+      SI_FN_2_RX  => (OTHERS=>'0'),
+      SI_FN_3_RX  => (OTHERS=>'0'),
+
+      SI_FN_0_TX  => si_fn_0_tx
     );  
 
   ------------------------------------------------------------------------------
-  -- DDR3 memory model
+  -- apertif_unb1_correlator
   ------------------------------------------------------------------------------
-  u_tech_ddr_memory_model : ENTITY tech_ddr_lib.tech_ddr_memory_model
-  GENERIC MAP (
-    g_tech_ddr => c_ddr
-  )
-  PORT MAP (
-    mem3_in => phy_ou,
-    mem3_io => phy_io,
-    mem3_ou => phy_in
-  );
-    
+  u_apertif_unb1_correlator : ENTITY apertif_unb1_correlator_lib.apertif_unb1_correlator
+    GENERIC MAP (
+      g_sim         => c_sim,
+      g_sim_unb_nr  => c_unb_nr,
+      g_sim_node_nr => c_node_nr,
+      g_use_bg      => FALSE
+    )
+    PORT MAP (
+      CLK         => clk,
+      PPS         => pps,
+      VERSION     => "00",
+      ID          => ID,
+
+      ETH_clk     => eth_clk,
+      ETH_SGIN    => '0',
+      
+      SA_CLK      => tr_clk,
+      SB_CLK      => tr_clk,
+
+      SI_FN_0_RX  => si_fn_0_tx,
+      SI_FN_1_RX  => si_fn_0_tx,
+      SI_FN_2_RX  => si_fn_0_tx,
+      SI_FN_3_RX  => (OTHERS=>'0'),
+
+      FN_BN_0_RX  => (OTHERS=>'0'),
+      FN_BN_1_RX  => (OTHERS=>'0'),
+      FN_BN_2_RX  => (OTHERS=>'0'),
+      FN_BN_3_RX  => (OTHERS=>'0')
+    );
 
 END tb;