UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Visitor sumeetmaini
Visitor
468 Views
Registered: ‎05-30-2019

CDC 2 Flip Flop synchronizer for Zynq

Hi,

I am trying to solve a CDC error by using a 2 Flip Flop synchronizer technique as shown below. But Vivado is not recognizing it as a CDC circuit and flagging an error for the first Flip Flop which is signal1.  

attribute ASYNC_REG                    : string;                    

attribute ASYNC_REG of signal1: signal is "TRUE";

attribute ASYNC_REG of signal2: signal is "TRUE";

                CDC_sync: process(clk) begin

                                if rising_edge(clk) then

                                               signal1 <= in_signal;

                                                signal2 <= signal1;

                                end if;

                end process;

 

Thanks in advance. 

0 Kudos
7 Replies
Xilinx Employee
Xilinx Employee
445 Views
Registered: ‎05-14-2008

Re: CDC 2 Flip Flop synchronizer for Zynq

What error did you receive about signal1?

-vivian

-------------------------------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------------------------------------
0 Kudos
Visitor sumeetmaini
Visitor
432 Views
Registered: ‎05-30-2019

Re: CDC 2 Flip Flop synchronizer for Zynq

Hi,

Thanks for the response. I get the following warning when I run report clock interaction 

NameSlackLevelsHigh FanoutFromToTotal DelayLogic DelayNet DelayLogic %Net %RequirementSource ClockDestination ClockExceptionSkew
Constrained Paths (1)
clk_1x_PLL_CLK_DDR_In (10)
Path 1-8.6744design_1_i/TopLevel_1/U0/U55/in_signal_reg/Cdesign_1_i/TopLevel_1/U0/U7/U1/signal1_reg/D3.721.152.5830.7769.230.00clk_50Mhz_PLL_40Mhzclk_1x_PLL_CLK_DDR_In -4.62
0 Kudos
428 Views
Registered: ‎09-17-2018

Re: CDC 2 Flip Flop synchronizer for Zynq

In Vivado,

All data crossings are assummed synchronous by default, so you must exclude the clock domain crossing path with a constraint.  Then your timing error will go away.

l.e.o.

 

0 Kudos
Visitor peterk
Visitor
389 Views
Registered: ‎04-08-2018

Re: CDC 2 Flip Flop synchronizer for Zynq

As indicated by lowearthorbit, all clocks are related by default. Using sync flops with "ASYNC_REG" property would tell the tool to place the two flops in the same CLB. You still need to add a false path constraint to the signal1 flop.

Peter Kwan, Senior FPGA Engineer
Designlinx Hardware Solution, Inc
0 Kudos
Guide avrumw
Guide
377 Views
Registered: ‎01-23-2009

Re: CDC 2 Flip Flop synchronizer for Zynq

You still need to add a false path constraint to the signal1 flop

Careful - "You still need to add an exception to the path ending at the signal1 flop". The correct exception isn't always a "set_false_path" - depending on the characteristics of the clock domain crossing circuit, it may need to be a "set_max_delay -datapath_only"...

Avrum

0 Kudos
Visitor sumeetmaini
Visitor
372 Views
Registered: ‎05-30-2019

Re: CDC 2 Flip Flop synchronizer for Zynq

Can I use XPM_CDC_SINGLE so that Vivado can recognize it as a synchronizer solution for CDC and will not flag critical warning for signal1. 

0 Kudos
Visitor peterk
Visitor
350 Views
Registered: ‎04-08-2018

Re: CDC 2 Flip Flop synchronizer for Zynq

Accoring to AR# 67738, it will add false path to the receiving flop. You still need to becareful as per @avrumw  comment. 

Peter Kwan, Senior FPGA Engineer
Designlinx Hardware Solution, Inc
0 Kudos