diff --git a/libraries/technology/ip_arria10_e1sg/jesd204b/ip_arria10_e1sg_jesd204b_v2.vhd b/libraries/technology/ip_arria10_e1sg/jesd204b/ip_arria10_e1sg_jesd204b_v2.vhd
index fbec2621015bcb2d8ae7ba9e228e50701cd57d39..127c5a2b6e3bf0f8af8c1d240af7e32a1061252e 100644
--- a/libraries/technology/ip_arria10_e1sg/jesd204b/ip_arria10_e1sg_jesd204b_v2.vhd
+++ b/libraries/technology/ip_arria10_e1sg/jesd204b/ip_arria10_e1sg_jesd204b_v2.vhd
@@ -117,13 +117,14 @@ architecture str of ip_arria10_e1sg_jesd204b_v2 is
   signal pll_reset_arr              : std_logic_vector(g_nof_streams - 1 downto 0);
   signal xcvr_rst_arr               : std_logic_vector(g_nof_streams - 1 downto 0) := (others => '1');
   signal rx_avs_rst_arr             : std_logic_vector(g_nof_streams - 1 downto 0);
+  signal rx_avs_rst_n_arr           : std_logic_vector(g_nof_streams - 1 downto 0);
   signal rxlink_rst_async_arr       : std_logic_vector(g_nof_streams - 1 downto 0);
   signal rxlink_rst_arr             : std_logic_vector(g_nof_streams - 1 downto 0);
-  signal rxlink_rst                 : std_logic;
-  signal rx_avs_rst_n_arr           : std_logic_vector(g_nof_streams - 1 downto 0);
   signal rxlink_rst_n_arr           : std_logic_vector(g_nof_streams - 1 downto 0);
   signal core_pll_locked            : std_logic;
   signal mm_core_pll_locked         : std_logic;
+  signal wr_core_pll_locked         : std_logic;
+  signal wr_rst                     : std_logic := '1';
   signal rxlink_sysref_1            : std_logic;
   signal rxlink_sysref_2            : std_logic;
   signal rxlink_sysref_3            : std_logic;
@@ -483,9 +484,6 @@ begin
       end process;
     end generate;  -- gen_jesd204b_rx_channels : for I in 0 to g_nof_streams-1 generate
 
-    -- Combine into single reset
-    rxlink_rst <= vector_or(rxlink_rst_arr) when rising_edge(rxlink_clk);
-
     -----------------------------------------------------------------------------
     -- Cross from 100 MHz rxlink_clk domain to 200MHz dp_clk domain using a FIFO
     -----------------------------------------------------------------------------
@@ -494,6 +492,8 @@ begin
     -- control the FIFO uses src_in_arr(0).ready as read strobe. Using only input (0) is
     -- possible, because all snk_in_arr() inputs will have same ctrl and info when Rx
     -- JESD204B IP is synchronized.
+    wr_rst <= not wr_core_pll_locked;
+
     u_dp_fifo_dc_arr : entity dp_lib.dp_fifo_dc_arr
       generic map (
         g_nof_streams    => g_nof_streams,
@@ -504,7 +504,7 @@ begin
         g_fifo_size      => c_fifo_size
       )
       port map (
-        wr_rst           => rxlink_rst,
+        wr_rst           => wr_rst,
         wr_clk           => rxlink_clk,
         rd_rst           => dp_rst,
         rd_clk           => dp_clk,
@@ -514,7 +514,6 @@ begin
         src_out_arr      => dplink_sosi_arr
       );
 
-
     dplink_siso_arr <= func_dp_stream_arr_set(dplink_siso_arr, dp_ready, "READY");
 
     -- The dp_clk at 200 MHz and rxlink_clk at 100 MHz are locked to same reference.
@@ -601,7 +600,18 @@ begin
       );
     end generate;
 
-    u_common_areset_pll_locked : entity common_lib.common_areset
+    u_common_areset_wr_core_pll_locked : entity common_lib.common_areset
+    generic map (
+      g_in_rst_level => '0',  -- synchronises the rising edge of input in_rst.
+      g_rst_level    => '0'
+    )
+    port map (
+      in_rst  => core_pll_locked,
+      clk     => rxlink_clk,
+      out_rst => wr_core_pll_locked
+    );
+
+    u_common_areset_mm_core_pll_locked : entity common_lib.common_areset
     generic map (
       g_in_rst_level => '0',  -- synchronises the rising edge of input in_rst.
       g_rst_level    => '0'
diff --git a/libraries/technology/ip_arria10_e2sg/jesd204b/ip_arria10_e2sg_jesd204b_v2.vhd b/libraries/technology/ip_arria10_e2sg/jesd204b/ip_arria10_e2sg_jesd204b_v2.vhd
index fd4c96984c5db8310728ad607addf25ca1fdf865..6fe0693d4810eac2c57bf73c982b26937aabcaed 100644
--- a/libraries/technology/ip_arria10_e2sg/jesd204b/ip_arria10_e2sg_jesd204b_v2.vhd
+++ b/libraries/technology/ip_arria10_e2sg/jesd204b/ip_arria10_e2sg_jesd204b_v2.vhd
@@ -117,13 +117,14 @@ architecture str of ip_arria10_e2sg_jesd204b_v2 is
   signal pll_reset_arr              : std_logic_vector(g_nof_streams - 1 downto 0);
   signal xcvr_rst_arr               : std_logic_vector(g_nof_streams - 1 downto 0) := (others => '1');
   signal rx_avs_rst_arr             : std_logic_vector(g_nof_streams - 1 downto 0);
+  signal rx_avs_rst_n_arr           : std_logic_vector(g_nof_streams - 1 downto 0);
   signal rxlink_rst_async_arr       : std_logic_vector(g_nof_streams - 1 downto 0);
   signal rxlink_rst_arr             : std_logic_vector(g_nof_streams - 1 downto 0);
-  signal rxlink_rst                 : std_logic;
-  signal rx_avs_rst_n_arr           : std_logic_vector(g_nof_streams - 1 downto 0);
   signal rxlink_rst_n_arr           : std_logic_vector(g_nof_streams - 1 downto 0);
   signal core_pll_locked            : std_logic;
   signal mm_core_pll_locked         : std_logic;
+  signal wr_core_pll_locked         : std_logic;
+  signal wr_rst                     : std_logic := '1';
   signal rxlink_sysref_1            : std_logic;
   signal rxlink_sysref_2            : std_logic;
   signal rxlink_sysref_3            : std_logic;
@@ -483,9 +484,6 @@ begin
       end process;
     end generate;  -- gen_jesd204b_rx_channels : for I in 0 to g_nof_streams-1 generate
 
-    -- Combine into single reset
-    rxlink_rst <= vector_or(rxlink_rst_arr) when rising_edge(rxlink_clk);
-
     -----------------------------------------------------------------------------
     -- Cross from 100 MHz rxlink_clk domain to 200MHz dp_clk domain using a FIFO
     -----------------------------------------------------------------------------
@@ -494,6 +492,8 @@ begin
     -- control the FIFO uses src_in_arr(0).ready as read strobe. Using only input (0) is
     -- possible, because all snk_in_arr() inputs will have same ctrl and info when Rx
     -- JESD204B IP is synchronized.
+    wr_rst <= not wr_core_pll_locked;
+
     u_dp_fifo_dc_arr : entity dp_lib.dp_fifo_dc_arr
       generic map (
         g_nof_streams    => g_nof_streams,
@@ -504,7 +504,7 @@ begin
         g_fifo_size      => c_fifo_size
       )
       port map (
-        wr_rst           => rxlink_rst,
+        wr_rst           => wr_rst,
         wr_clk           => rxlink_clk,
         rd_rst           => dp_rst,
         rd_clk           => dp_clk,
@@ -514,7 +514,6 @@ begin
         src_out_arr      => dplink_sosi_arr
       );
 
-
     dplink_siso_arr <= func_dp_stream_arr_set(dplink_siso_arr, dp_ready, "READY");
 
     -- The dp_clk at 200 MHz and rxlink_clk at 100 MHz are locked to same reference.
@@ -601,7 +600,18 @@ begin
       );
     end generate;
 
-    u_common_areset_pll_locked : entity common_lib.common_areset
+    u_common_areset_wr_core_pll_locked : entity common_lib.common_areset
+    generic map (
+      g_in_rst_level => '0',  -- synchronises the rising edge of input in_rst.
+      g_rst_level    => '0'
+    )
+    port map (
+      in_rst  => core_pll_locked,
+      clk     => rxlink_clk,
+      out_rst => wr_core_pll_locked
+    );
+
+    u_common_areset_mm_core_pll_locked : entity common_lib.common_areset
     generic map (
       g_in_rst_level => '0',  -- synchronises the rising edge of input in_rst.
       g_rst_level    => '0'