cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Newbie
Newbie
3,832 Views
Registered: ‎12-20-2016

How to waive multiple-bits CDC critical warning?

I have a bus crossing clock domain with handshake signals. The handshake signals are crossing safely. The data bus connect directly with set_max_delay -data_only on it. 

 

But the Vivado still report the data bus as Critical (CDC-4). 

 

Is it there a way to waive that path from CDC report?

0 Kudos
4 Replies
Highlighted
3,822 Views
Registered: ‎06-07-2017

Re: How to waive multiple-bits CDC critical warning?

Setting a Maximum Delay constraint on a path does not modify the minimum requirement on that path. The hold check on that path remains the default. This is the reason why you are getting the warning.

 

I would recommend you should use an asynchronous fifo between the two clock domains, but if you don't want to use fifo then along with set_max_delay you should use a  set_false_path command, as shoun in the example below:

 

      set_max_delay 5 -from [get_pins FD1/C] -to [get_pins FD2/D]

      set_false_path -hold -from [get_pins FD1/C] -to [get_pins FD2/D]

 

The above example sets a 5ns setup requirement for the path starting on FD1/C and ending on FD2/D. There is no minimum requirement due to the set_false_path command.

0 Kudos
Highlighted
Guide
Guide
3,781 Views
Registered: ‎01-23-2009

Re: How to waive multiple-bits CDC critical warning?

bhavyamadan@lft,

 

What you say about set_max_delay not affecting the hold time check is true for "normal" set_max_delay, but is not true for set_max_delay -datapath_only. When the -datapath_only flag is used the hold check is disabled - see UG903, table 5-4.

 

Furthermore, the constraints you set on the CDC (while critically important) are not actually a factor in the DRC analysis performed by the tool. The DRC analysis is performed solely on the structure of the CDC, including the use of the ASYNC_REG property.

 

echi@imc,

 

The CDC structure you are describing sounds like a legitimate CDC (a MUX CDC with handshake). If implemented "correctly", the tools should recognize it and not flag it as an error. If the tools are flagging it as an error, then they are not properly recognizing the structure. This is either because there is something not quite right with how you coded it, or the tool simply doesn't have the appropriate template for recognizing what you have done (without seeing the actual code, I can't tell which).

 

If, however, you are sure that the CDC is correct, you are stuck (at least for the moment). There is currently no mechanism for a report_cdc "waiver" (although I have heard rumors that it is coming "soon"). But the warning itself is just a warning - other than potentially obscuring "real" issues, it should prevent you from completing your design.

 

Avrum

0 Kudos
Highlighted
3,762 Views
Registered: ‎06-07-2017

Re: How to waive multiple-bits CDC critical warning?

@avrumw

Thanks for the rectification and the reference.

 

0 Kudos
Highlighted
Moderator
Moderator
3,552 Views
Registered: ‎01-16-2013

Re: How to waive multiple-bits CDC critical warning?

To Know more about CDC warnings and CDC handling refere UFDM user guide UG949.

Thanks,
Yash