Xilinx IP cores like to do like this (example from MIG 1.9 XADC):

// Reset sync
(* ASYNC_REG = "TRUE" *)  reg rst_r1;
(* ASYNC_REG = "TRUE" *)  reg rst_r2;
// Synchronization rst to XADC clock domain
always @(posedge xadc_clk) begin
    rst_r1 <= rst;
    rst_r2 <= rst_r1;

ASYNC_REG appears to affect simulation only. UG625 says: “The ASYNC_REG (Asynchronous Register) constraint:

  • Is a timing constraint.
  • Is used to improve the behavior of asynchronously clocked data for simulation.
  • Disables X propagation during timing simulation. In the event of a timing violation, the previous value is retained on the output instead of going unknown.”

References / papers

cdc.txt · Last modified: 2013/11/05 13:12 by sky
Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution 4.0 International
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki