06-12-2017 10:40 PM
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?
06-12-2017 11:15 PM
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.
06-13-2017 09:21 AM
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.
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.
06-29-2017 05:14 AM