diff --git a/libraries/technology/eth_10g/hdllib.cfg b/libraries/technology/eth_10g/hdllib.cfg
index 9038a3c5daf1f09b4c17e526ee0da8b01dd4fb5f..65a2fcd18c1ff1b7dea5f8aea37cea133b017324 100644
--- a/libraries/technology/eth_10g/hdllib.cfg
+++ b/libraries/technology/eth_10g/hdllib.cfg
@@ -9,6 +9,7 @@ build_dir_synth = $HDL_BUILD_DIR
 synth_files =
     tech_eth_10g_stratixiv.vhd
     tech_eth_10g_arria10.vhd
+    tech_eth_10g_clocks.vhd
     tech_eth_10g.vhd
 
 test_bench_files =
diff --git a/libraries/technology/eth_10g/tb_tech_eth_10g.vhd b/libraries/technology/eth_10g/tb_tech_eth_10g.vhd
index 48f6e909ca727fd10876ec2dce0e961351d59381..3350ce6b33bdbf7171cd9b986359fc4ab26ec1be 100644
--- a/libraries/technology/eth_10g/tb_tech_eth_10g.vhd
+++ b/libraries/technology/eth_10g/tb_tech_eth_10g.vhd
@@ -102,26 +102,22 @@ ARCHITECTURE tb OF tb_tech_eth_10g IS
   SIGNAL mm_clk            : STD_LOGIC := '0';  -- memory-mapped bus clock
   SIGNAL mm_rst            : STD_LOGIC;         -- reset synchronous with mm_clk
   
-  -- . 10base_r clocks
-  SIGNAL tr_ref_clk_644    : STD_LOGIC := '1';
-  SIGNAL clk_312           : STD_LOGIC;
-  SIGNAL clk_156           : STD_LOGIC;
-  SIGNAL rst_156           : STD_LOGIC;
+  -- External reference clocks
+  SIGNAL tr_ref_clk_644    : STD_LOGIC := '1';  -- 10GBASE-R
+  SIGNAL tr_ref_clk_312    : STD_LOGIC;         -- 10GBASE-R
+  SIGNAL tr_ref_clk_156    : STD_LOGIC := '1';  -- 10GBASE-R or XAUI
+  SIGNAL tr_ref_rst_156    : STD_LOGIC;         -- 10GBASE-R or XAUI
 
-  -- . XAUI clocks
-  SIGNAL tr_ref_clk_156    : STD_LOGIC := '1';
-  SIGNAL tr_ref_rst_156    : STD_LOGIC := '1';
-  SIGNAL tx_rst_arr        : STD_LOGIC_VECTOR(0 DOWNTO 0);
+  -- XAUI clocks
+  SIGNAL tx_rst_arr_out    : STD_LOGIC_VECTOR(0 DOWNTO 0);
   SIGNAL rx_clk_arr_out    : STD_LOGIC_VECTOR(0 DOWNTO 0);
-  SIGNAL rx_rst_arr        : STD_LOGIC_VECTOR(0 DOWNTO 0);
+  SIGNAL rx_rst_arr_out    : STD_LOGIC_VECTOR(0 DOWNTO 0);
  
   -- . Test bench top level clocks 
   SIGNAL tb_ref_clk_644    : STD_LOGIC;
+  SIGNAL tb_ref_clk_312    : STD_LOGIC;
   SIGNAL tb_ref_clk_156    : STD_LOGIC;
   SIGNAL tb_ref_rst_156    : STD_LOGIC;
-  SIGNAL tb_clk_312        : STD_LOGIC;
-  SIGNAL tb_clk_156        : STD_LOGIC;
-  SIGNAL tb_rst_156        : STD_LOGIC;
   SIGNAL tb_tx_clk         : STD_LOGIC;
   SIGNAL tb_tx_rst         : STD_LOGIC;
   SIGNAL tb_rx_clk         : STD_LOGIC;
@@ -220,21 +216,15 @@ BEGIN
   rx_siso_arr(0) <= rx_siso;
   rx_sosi        <= rx_sosi_arr(0);
   
-  -- Connect the clocks from test bench top level (down such that they have their rising_edge() aligned without any delta-delay)
-  gen_tb_clocks_xaui : IF g_technology=c_tech_stratixiv GENERATE
+  -- Generate reference clocks
+  gen_ref_clocks_xaui : IF g_technology=c_tech_stratixiv GENERATE
     tr_ref_clk_644 <= 'X';
+    tr_ref_clk_312 <= 'X';
     tr_ref_clk_156 <= NOT tr_ref_clk_156 AFTER g_ref_clk_156_period/2;
     tr_ref_rst_156 <= '0' AFTER g_ref_clk_156_period*5;
-    
-    tb_ref_clk_156 <= tr_ref_clk_156;
-    tb_ref_rst_156 <= tr_ref_rst_156;
-    tb_tx_clk      <= tr_ref_clk_156;
-    tb_rx_clk      <= rx_clk_arr_out(0);
-    tb_tx_rst      <= tx_rst_arr(0);
-    tb_rx_rst      <= rx_rst_arr(0);
   END GENERATE;
     
-  gen_tb_clocks_10gbase_r : IF g_technology=c_tech_arria10 GENERATE
+  gen_ref_clocks_10gbase_r : IF g_technology=c_tech_arria10 GENERATE
     tr_ref_clk_644 <= NOT tr_ref_clk_644 AFTER g_ref_clk_644_period/2;
   
     pll : ENTITY tech_pll_lib.tech_pll_xgmii_mac_clocks
@@ -243,20 +233,47 @@ BEGIN
     )
     PORT MAP (
       refclk_644 => tr_ref_clk_644,
-      clk_156    => clk_156,
-      clk_312    => clk_312,
-      rst_156    => rst_156,
+      clk_156    => tr_ref_clk_156,
+      clk_312    => tr_ref_clk_312,
+      rst_156    => tr_ref_rst_156,
       rst_312    => OPEN
     );
-  
-    tb_ref_clk_644 <= tr_ref_clk_644;
-    tb_clk_312     <= clk_312;
-    tb_clk_156     <= clk_156;
-    tb_rst_156     <= rst_156;
-    tb_tx_clk      <= clk_156;
-    tb_rx_clk      <= clk_156;
   END GENERATE;
   
+  -- Apply the clocks from top level down such that they have their rising_edge() aligned without any delta-delay
+  u_tech_eth_10g_clocks : ENTITY work.tech_eth_10g_clocks
+  GENERIC MAP (
+    g_technology     => g_technology,
+    g_nof_channels   => 1
+  )
+  PORT MAP (
+    -- Input clocks
+    -- . Reference
+    tr_ref_clk_644    => tr_ref_clk_644,
+    tr_ref_clk_312    => tr_ref_clk_312,
+    tr_ref_clk_156    => tr_ref_clk_156,
+    tr_ref_rst_156    => tr_ref_rst_156,
+    
+    -- . XAUI
+    tx_rst_arr        => tx_rst_arr_out,
+    rx_clk_arr        => rx_clk_arr_out,
+    rx_rst_arr        => rx_rst_arr_out,
+    
+    -- Output clocks
+    -- . Reference
+    eth_ref_clk_644   => tb_ref_clk_644,
+    eth_ref_clk_312   => tb_ref_clk_312,
+    eth_ref_clk_156   => tb_ref_clk_156,
+    eth_ref_rst_156   => tb_ref_rst_156,
+    
+    -- . Data
+    eth_tx_clk_arr(0) => tb_tx_clk,
+    eth_tx_rst_arr(0) => tb_tx_rst,
+    
+    eth_rx_clk_arr(0) => tb_rx_clk,
+    eth_rx_rst_arr(0) => tb_rx_rst
+  );  
+  
   no_dut : IF c_st_loopback=TRUE GENERATE
     rx_sosi <= tx_sosi;
     tx_siso <= rx_siso;
@@ -270,12 +287,12 @@ BEGIN
       g_sim_level           => g_sim_level,
       g_nof_channels        => 1,
       g_link_status_check   => g_link_status_check,
-      --g_pre_header_padding  => FALSE
       g_pre_header_padding  => TRUE
     )
     PORT MAP (
       -- Transceiver PLL reference clock
       tr_ref_clk_644   => tb_ref_clk_644,
+      tr_ref_clk_312   => tb_ref_clk_312,
       tr_ref_clk_156   => tb_ref_clk_156,
       tr_ref_rst_156   => tb_ref_rst_156,
       
@@ -286,18 +303,12 @@ BEGIN
       mac_mosi         => mm_mosi,         -- CSR = control status register
       mac_miso         => mm_miso,
       
-      -- Clocks
-      -- . 10GBASE-R
-      clk_312          => tb_clk_312,
-      clk_156          => tb_clk_156,      -- 156.25 MHz local reference
-      rst_156          => tb_rst_156,
-    
-      -- . XAUI
-      tx_clk_arr(0)    => tb_tx_clk,       -- 156.25 MHz, externally connect tr_ref_clk_156 to tx_clk_arr or connect rx_clk_arr to tx_clk_arr
-      tx_rst_arr       => tx_rst_arr,
+      -- XAUI clocks
+      tx_clk_arr_in(0) => tb_tx_clk,       -- 156.25 MHz, externally connect tr_ref_clk_156 to tx_clk_arr or connect rx_clk_arr to tx_clk_arr
+      tx_rst_arr_out   => tx_rst_arr_out,
       rx_clk_arr_out   => rx_clk_arr_out,
       rx_clk_arr_in(0) => tb_rx_clk,       -- externally connect to rx_clk_arr_out to avoid clock delta-delay
-      rx_rst_arr       => rx_rst_arr,
+      rx_rst_arr_out   => rx_rst_arr_out,
       
       -- ST
       tx_snk_in_arr    => tx_sosi_arr,     -- 64 bit data @ 156 tb_tx_clk
diff --git a/libraries/technology/eth_10g/tech_eth_10g.vhd b/libraries/technology/eth_10g/tech_eth_10g.vhd
index 7bb86574065afc1ed4a09fdcdb2471049a4f3e62..5bd36dda3a8d8d21c977076436db8ceae5f99842 100644
--- a/libraries/technology/eth_10g/tech_eth_10g.vhd
+++ b/libraries/technology/eth_10g/tech_eth_10g.vhd
@@ -23,11 +23,15 @@
 
 -- Purpose: Combine mac_10g and 10gbase_r
 -- Description:
--- . For c_tech_stratixiv: not available (yet)
+-- . For c_tech_stratixiv:
 --
---     tr_ref_clk_156
---     tr_ref_rst_156
---     cal_rec_clk
+--     cal_rec_clk    -->
+--     tr_ref_clk_156 -->
+--     tr_ref_rst_156 -->
+--
+--     tx_clk_arr_in  -->
+--     rx_clk_arr_out <--
+--     rx_clk_arr_in  -->
 --                ___________________
 --                |                 |
 --     tx_snk --->|tech_            |---> xaui_tx_arr
@@ -39,7 +43,10 @@
 --
 -- . For c_tech_arria10:
 --
---     tr_ref_clk_644
+--     tr_ref_clk_644 -->
+--     tr_ref_clk_312 -->
+--     tr_ref_clk_156 -->
+--     tr_ref_rst_156 -->
 --                ___________________
 --                |                 |
 --     tx_snk --->|tech_            |---> serial_tx
@@ -72,24 +79,19 @@ ENTITY tech_eth_10g IS
   PORT (
     -- Transceiver PLL reference clock
     tr_ref_clk_644   : IN  STD_LOGIC := '0';   -- 644.531250 MHz for 10GBASE-R
-    tr_ref_clk_156   : IN  STD_LOGIC := '0';   -- 156.25     MHz for XAUI
-    tr_ref_rst_156   : IN  STD_LOGIC := '0';   --                for XAUI
+    tr_ref_clk_312   : IN  STD_LOGIC := '0';   -- 312.5      MHz for 10GBASE-R
+    tr_ref_clk_156   : IN  STD_LOGIC := '0';   -- 156.25     MHz for 10GBASE-R or for XAUI
+    tr_ref_rst_156   : IN  STD_LOGIC := '0';   --                for 10GBASE-R or for XAUI
     
     -- Calibration & reconfig clock
     cal_rec_clk      : IN  STD_LOGIC := '0';   -- for XAUI;
     
-    -- Data clocks and reset
-    -- . 10GBASE-R
-    clk_312          : IN  STD_LOGIC := '0';
-    clk_156          : IN  STD_LOGIC := '0';
-    rst_156          : IN  STD_LOGIC := '0';
-    
-    -- . XAUI
-    tx_clk_arr       : IN  STD_LOGIC_VECTOR(g_nof_channels-1 DOWNTO 0) := (OTHERS=>'0');  -- 156.25 MHz, externally connect tr_ref_clk_156 to tx_clk_arr or connect rx_clk_arr to tx_clk_arr
-    tx_rst_arr       : OUT STD_LOGIC_VECTOR(g_nof_channels-1 DOWNTO 0);
+    -- XAUI clocks
+    tx_clk_arr_in    : IN  STD_LOGIC_VECTOR(g_nof_channels-1 DOWNTO 0) := (OTHERS=>'0');  -- 156.25 MHz, externally connect tr_ref_clk_156 to tx_clk_arr_in or connect rx_clk_arr to tx_clk_arr_in
+    tx_rst_arr_out   : OUT STD_LOGIC_VECTOR(g_nof_channels-1 DOWNTO 0);
     rx_clk_arr_out   : OUT STD_LOGIC_VECTOR(g_nof_channels-1 DOWNTO 0);
     rx_clk_arr_in    : IN  STD_LOGIC_VECTOR(g_nof_channels-1 DOWNTO 0) := (OTHERS=>'0');  -- externally connect to rx_clk_arr_out to avoid clock delta-delay
-    rx_rst_arr       : OUT STD_LOGIC_VECTOR(g_nof_channels-1 DOWNTO 0);
+    rx_rst_arr_out   : OUT STD_LOGIC_VECTOR(g_nof_channels-1 DOWNTO 0);
     
     -- MM
     mm_clk           : IN  STD_LOGIC;
@@ -141,11 +143,11 @@ BEGIN
       cal_rec_clk      => cal_rec_clk,
       
       -- Data clocks
-      tx_clk_arr       => tx_clk_arr,
-      tx_rst_arr       => tx_rst_arr,
+      tx_clk_arr_in    => tx_clk_arr_in,
+      tx_rst_arr_out   => tx_rst_arr_out,
       rx_clk_arr_out   => rx_clk_arr_out,
       rx_clk_arr_in    => rx_clk_arr_in,
-      rx_rst_arr       => rx_rst_arr,
+      rx_rst_arr_out   => rx_rst_arr_out,
       
       -- MM
       mm_clk           => mm_clk,
@@ -158,10 +160,10 @@ BEGIN
       xaui_miso        => xaui_miso,
       
       -- ST
-      tx_snk_in_arr    => tx_snk_in_arr,       -- 64 bit data @ clk_156
+      tx_snk_in_arr    => tx_snk_in_arr,       -- 64 bit data @ tx_clk_arr_in (156.25 MHz)
       tx_snk_out_arr   => tx_snk_out_arr, 
       
-      rx_src_out_arr   => rx_src_out_arr,      -- 64 bit data @ clk_156
+      rx_src_out_arr   => rx_src_out_arr,      -- 64 bit data @ rx_clk_arr (156.25 MHz)
       rx_src_in_arr    => rx_src_in_arr,
       
       -- Serial IO
@@ -184,9 +186,9 @@ BEGIN
       tr_ref_clk_644   => tr_ref_clk_644,
       
       -- Data clocks
-      clk_312          => clk_312,
-      clk_156          => clk_156,
-      rst_156          => rst_156,
+      clk_312          => tr_ref_clk_312,
+      clk_156          => tr_ref_clk_156,
+      rst_156          => tr_ref_rst_156,
       
       -- MM
       mm_clk           => mm_clk,
@@ -196,10 +198,10 @@ BEGIN
       mac_miso         => mac_miso,
       
       -- ST
-      tx_snk_in_arr    => tx_snk_in_arr,       -- 64 bit data @ clk_156
+      tx_snk_in_arr    => tx_snk_in_arr,       -- 64 bit data @ tr_ref_clk_156
       tx_snk_out_arr   => tx_snk_out_arr, 
       
-      rx_src_out_arr   => rx_src_out_arr,      -- 64 bit data @ clk_156
+      rx_src_out_arr   => rx_src_out_arr,      -- 64 bit data @ tr_ref_clk_156
       rx_src_in_arr    => rx_src_in_arr,
       
       -- Serial
diff --git a/libraries/technology/eth_10g/tech_eth_10g_clocks.vhd b/libraries/technology/eth_10g/tech_eth_10g_clocks.vhd
new file mode 100644
index 0000000000000000000000000000000000000000..464069881387895eb62e7c875eac1041a141ecb2
--- /dev/null
+++ b/libraries/technology/eth_10g/tech_eth_10g_clocks.vhd
@@ -0,0 +1,96 @@
+-------------------------------------------------------------------------------
+--
+-- Copyright (C) 2014
+-- ASTRON (Netherlands Institute for Radio Astronomy) <http://www.astron.nl/>
+-- P.O.Box 2, 7990 AA Dwingeloo, The Netherlands
+--
+-- This program is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+--
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+-- GNU General Public License for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with this program.  If not, see <http://www.gnu.org/licenses/>.
+--
+-------------------------------------------------------------------------------
+
+-- Purpose: Connect the clocks for the tech_eth_10g.
+-- Description:
+--   Apply the clocks from top level down, such that they have their
+--   rising_edge() aligned without any delta-delay. The reference clocks
+--   are also reassigned to preserve same delta-cycle phase as for the data
+--   clocks.
+
+
+LIBRARY IEEE, technology_lib;
+USE IEEE.std_logic_1164.ALL;
+USE technology_lib.technology_pkg.ALL;
+USE technology_lib.technology_select_pkg.ALL;
+
+ENTITY tech_eth_10g_clocks IS
+  GENERIC (
+    g_technology          : NATURAL := c_tech_select_default;
+    g_nof_channels        : NATURAL := 1
+  );
+  PORT (
+    -- Input clocks
+    -- . Reference
+    tr_ref_clk_644    : IN  STD_LOGIC := 'X';  -- 10GBASE-R
+    tr_ref_clk_312    : IN  STD_LOGIC := 'X';  -- 10GBASE-R
+    tr_ref_clk_156    : IN  STD_LOGIC := 'X';  -- 10GBASE-R or XAUI
+    tr_ref_rst_156    : IN  STD_LOGIC := 'X';  -- 10GBASE-R or XAUI
+    
+    -- . XAUI
+    tx_rst_arr        : IN  STD_LOGIC_VECTOR(g_nof_channels-1 DOWNTO 0) := (OTHERS=>'0');
+    rx_clk_arr        : IN  STD_LOGIC_VECTOR(g_nof_channels-1 DOWNTO 0) := (OTHERS=>'X');
+    rx_rst_arr        : IN  STD_LOGIC_VECTOR(g_nof_channels-1 DOWNTO 0) := (OTHERS=>'0');
+    
+    -- Output clocks
+    -- . Reference
+    eth_ref_clk_644   : OUT STD_LOGIC;
+    eth_ref_clk_312   : OUT STD_LOGIC;
+    eth_ref_clk_156   : OUT STD_LOGIC;
+    eth_ref_rst_156   : OUT STD_LOGIC;
+    
+    -- . Data
+    eth_tx_clk_arr    : OUT STD_LOGIC_VECTOR(g_nof_channels-1 DOWNTO 0);
+    eth_tx_rst_arr    : OUT STD_LOGIC_VECTOR(g_nof_channels-1 DOWNTO 0);
+    
+    eth_rx_clk_arr    : OUT STD_LOGIC_VECTOR(g_nof_channels-1 DOWNTO 0);
+    eth_rx_rst_arr    : OUT STD_LOGIC_VECTOR(g_nof_channels-1 DOWNTO 0)
+  );
+END tech_eth_10g_clocks;
+
+
+ARCHITECTURE str OF tech_eth_10g_clocks IS
+BEGIN
+
+  -- Reference
+  eth_ref_clk_644 <= tr_ref_clk_644;
+  eth_ref_clk_312 <= tr_ref_clk_312;
+  eth_ref_clk_156 <= tr_ref_clk_156;
+  eth_ref_rst_156 <= tr_ref_rst_156;
+  
+  gen_clocks_xaui : IF g_technology=c_tech_stratixiv GENERATE  
+    -- Data
+    eth_tx_clk_arr  <= (OTHERS=>tr_ref_clk_156);
+    eth_tx_rst_arr  <= tx_rst_arr;
+    
+    eth_rx_clk_arr  <= rx_clk_arr;
+    eth_rx_rst_arr  <= rx_rst_arr;
+  END GENERATE;
+    
+  gen_clocks_10gbase_r : IF g_technology=c_tech_arria10 GENERATE
+    eth_tx_clk_arr  <= (OTHERS=>tr_ref_clk_156);
+    eth_tx_rst_arr  <= (OTHERS=>tr_ref_rst_156);
+    
+    eth_rx_clk_arr  <= (OTHERS=>tr_ref_clk_156);
+    eth_rx_rst_arr  <= (OTHERS=>tr_ref_rst_156);
+  END GENERATE;
+  
+END str;
diff --git a/libraries/technology/eth_10g/tech_eth_10g_stratixiv.vhd b/libraries/technology/eth_10g/tech_eth_10g_stratixiv.vhd
index c4ad3d7b45d43164395a1890b089dfca5a0207e7..9b18418cbe6f2c1fa71620bcad933cd36222689e 100644
--- a/libraries/technology/eth_10g/tech_eth_10g_stratixiv.vhd
+++ b/libraries/technology/eth_10g/tech_eth_10g_stratixiv.vhd
@@ -71,11 +71,11 @@ ENTITY tech_eth_10g_stratixiv IS
     cal_rec_clk      : IN  STD_LOGIC;
     
     -- Data clocks
-    tx_clk_arr       : IN  STD_LOGIC_VECTOR(g_nof_channels-1 DOWNTO 0);  -- 156.25 MHz, externally connect tr_ref_clk_156 to tx_clk_arr or connect rx_clk_arr to tx_clk_arr
-    tx_rst_arr       : OUT STD_LOGIC_VECTOR(g_nof_channels-1 DOWNTO 0);
+    tx_clk_arr_in    : IN  STD_LOGIC_VECTOR(g_nof_channels-1 DOWNTO 0);  -- 156.25 MHz, externally connect tr_ref_clk_156 to tx_clk_arr_in or connect rx_clk_arr to tx_clk_arr_in
+    tx_rst_arr_out   : OUT STD_LOGIC_VECTOR(g_nof_channels-1 DOWNTO 0);
     rx_clk_arr_out   : OUT STD_LOGIC_VECTOR(g_nof_channels-1 DOWNTO 0);
     rx_clk_arr_in    : IN  STD_LOGIC_VECTOR(g_nof_channels-1 DOWNTO 0);  -- externally connect to rx_clk_arr_out to avoid clock delta-delay
-    rx_rst_arr       : OUT STD_LOGIC_VECTOR(g_nof_channels-1 DOWNTO 0);
+    rx_rst_arr_out   : OUT STD_LOGIC_VECTOR(g_nof_channels-1 DOWNTO 0);
     
     -- MM
     mm_clk           : IN  STD_LOGIC;
@@ -88,7 +88,7 @@ ENTITY tech_eth_10g_stratixiv IS
     xaui_miso        : OUT t_mem_miso;
     
     -- ST
-    tx_snk_in_arr    : IN  t_dp_sosi_arr(g_nof_channels-1 DOWNTO 0);      -- 64 bit data @ 156 MHz tx_clk_arr
+    tx_snk_in_arr    : IN  t_dp_sosi_arr(g_nof_channels-1 DOWNTO 0);      -- 64 bit data @ 156 MHz tx_clk_arr_in
     tx_snk_out_arr   : OUT t_dp_siso_arr(g_nof_channels-1 DOWNTO 0); 
     
     rx_src_out_arr   : OUT t_dp_sosi_arr(g_nof_channels-1 DOWNTO 0);      -- 64 bit data @ 156 MHz rx_clk_arr_in
@@ -108,13 +108,13 @@ ARCHITECTURE str OF tech_eth_10g_stratixiv IS
   SIGNAL mac_miso_arr              : t_mem_miso_arr(g_nof_channels-1 DOWNTO 0); 
 
   -- ST
-  SIGNAL i_tx_rst_arr              : STD_LOGIC_VECTOR(g_nof_channels-1 DOWNTO 0);
-  SIGNAL i_rx_rst_arr              : STD_LOGIC_VECTOR(g_nof_channels-1 DOWNTO 0);
+  SIGNAL i_tx_rst_arr_out          : STD_LOGIC_VECTOR(g_nof_channels-1 DOWNTO 0);
+  SIGNAL i_rx_rst_arr_out          : STD_LOGIC_VECTOR(g_nof_channels-1 DOWNTO 0);
   
-  SIGNAL txc_tx_ready_arr          : STD_LOGIC_VECTOR(g_nof_channels-1 DOWNTO 0);  -- tx_ready in tx_clk_arr domain, can be used for xon flow control
+  SIGNAL txc_tx_ready_arr          : STD_LOGIC_VECTOR(g_nof_channels-1 DOWNTO 0);  -- tx_ready in tx_clk_arr_in domain, can be used for xon flow control
   SIGNAL rxc_rx_ready_arr          : STD_LOGIC_VECTOR(g_nof_channels-1 DOWNTO 0);  -- rx_ready in rx_clk_arr domain, typically leave not connected
 
-  SIGNAL txc_rx_channelaligned_arr : STD_LOGIC_VECTOR(g_nof_channels-1 DOWNTO 0);  -- rx_channelaligned in tx_clk_arr domain, from PHY XAUI, indicates
+  SIGNAL txc_rx_channelaligned_arr : STD_LOGIC_VECTOR(g_nof_channels-1 DOWNTO 0);  -- rx_channelaligned in tx_clk_arr_in domain, from PHY XAUI, indicates
                                                                                    -- that all 4 RX channels are aligned when asserted
 
   -- XON control
@@ -129,11 +129,11 @@ ARCHITECTURE str OF tech_eth_10g_stratixiv IS
 BEGIN
 
   -- Clocks and reset
-  tx_rst_arr <= i_tx_rst_arr;
-  rx_rst_arr <= i_rx_rst_arr;
+  tx_rst_arr_out <= i_tx_rst_arr_out;
+  rx_rst_arr_out <= i_rx_rst_arr_out;
   
-  i_tx_rst_arr <= NOT txc_tx_ready_arr;
-  i_rx_rst_arr <= NOT rxc_rx_ready_arr;
+  i_tx_rst_arr_out <= NOT txc_tx_ready_arr;
+  i_rx_rst_arr_out <= NOT rxc_rx_ready_arr;
   
   xgmii_tx_ready_arr <= txc_tx_ready_arr;
 
@@ -141,10 +141,10 @@ BEGIN
   
     tx_snk_out_arr(I).ready <= mac_snk_out_arr(I).ready;  -- pass on MAC cycle accurate backpressure
     
-    p_xon_flow_control : PROCESS(tx_clk_arr)
+    p_xon_flow_control : PROCESS(tx_clk_arr_in)
       VARIABLE v_xgmii_link_status : STD_LOGIC_VECTOR(c_tech_mac_10g_link_status_w-1 DOWNTO 0);
     BEGIN
-      IF rising_edge(tx_clk_arr(I)) THEN
+      IF rising_edge(tx_clk_arr_in(I)) THEN
         tx_snk_out_arr(I).xon <= '0';
         v_xgmii_link_status := xgmii_link_status_arr(I) AND g_link_status_check;  -- use mask to check Tx, Rx, both or none. 
         IF xgmii_tx_ready_arr(I)='1' AND txc_rx_channelaligned_arr(I)='1' AND v_xgmii_link_status="00" THEN
@@ -166,13 +166,13 @@ BEGIN
       csr_miso          => mac_miso_arr(I),
   
       -- ST
-      tx_clk_156        => tx_clk_arr(I),
-      tx_rst            => i_tx_rst_arr(I),
+      tx_clk_156        => tx_clk_arr_in(I),
+      tx_rst            => i_tx_rst_arr_out(I),
       tx_snk_in         => tx_snk_in_arr(I),   -- 64 bit data
       tx_snk_out        => mac_snk_out_arr(I),
       
       rx_clk_156        => rx_clk_arr_in(I),
-      rx_rst            => i_rx_rst_arr(I),
+      rx_rst            => i_rx_rst_arr_out(I),
       rx_src_out        => rx_src_out_arr(I),  -- 64 bit data
       rx_src_in         => rx_src_in_arr(I),
             
@@ -206,14 +206,14 @@ BEGIN
     xaui_miso                 => xaui_miso,
     
     -- XGMII interface
-    tx_clk_arr                => tx_clk_arr,
+    tx_clk_arr                => tx_clk_arr_in,
     rx_clk_arr_out            => rx_clk_arr_out,
     rx_clk_arr_in             => rx_clk_arr_in,
     
-    txc_tx_ready_arr          => txc_tx_ready_arr,  -- tx_ready in tx_clk_arr domain, can be used for xon flow control
+    txc_tx_ready_arr          => txc_tx_ready_arr,  -- tx_ready in tx_clk_arr_in domain, can be used for xon flow control
     rxc_rx_ready_arr          => rxc_rx_ready_arr,  -- rx_ready in rx_clk_arr domain, typically leave not connected
 
-    txc_rx_channelaligned_arr => txc_rx_channelaligned_arr,  -- rx_channelaligned in tx_clk_arr domain, indicates that all 4 RX channels are aligned when asserted
+    txc_rx_channelaligned_arr => txc_rx_channelaligned_arr,  -- rx_channelaligned in tx_clk_arr_in domain, indicates that all 4 RX channels are aligned when asserted
 
     xgmii_tx_dc_arr           => xgmii_tx_dc_arr,
     xgmii_rx_dc_arr           => xgmii_rx_dc_arr,