Intel® Quartus® Prime Software
Intel® Quartus® Prime Design Software, Design Entry, Synthesis, Simulation, Verification, Timing Analysis, System Design (Platform Designer, formerly Qsys)
Announcements
Intel Support hours are Monday-Fridays, 8am-5pm PST, except Holidays. Thanks to our community members who provide support during our down time or before we get to your questions. We appreciate you!

Need Forum Guidance? Click here
Search our FPGA Knowledge Articles here.
15467 Discussions

Ignoring clock skews in set_max_delay constraint

UserQuartus19-3
Beginner
502 Views

Hi 

I have a clock domain crossing in my design  and I have placed synchronisers at the crossing paths. I have specified the constraint set_max_delay -from [src clk] -to [dest_clk] [time period of src clk] for avoiding timing errors on the crossing paths. 

However Quartus is throwing timing errors with huge clock skews between the 2 clocks. I wanted to know how we can specify to ignore the clock path skews in such a scenario. 

I have seen related discussions (https://community.intel.com/t5/Programmable-Devices/set-max-delay-vs-set-net-delay/td-p/232670) but couldn't understand any solution out of it. 

I am using Arria 10 FPGA and Quartus 19.3 Prime Pro Version.

 

0 Kudos
1 Solution
sstrell
Honored Contributor III
449 Views

Without looking at your design, if these clock domains are asynchronous, you should use set_clock_groups to simply cut all paths between them.  By using set_max[min]_delay, the tool will still analyze timing on paths that go between these clock domains and you see what's happening.

So simply try this instead of set_max[min]_delay:

set_clock_groups -asynchronous -group src_clock -group dest_clk

If the clock domains are synchronous to each other and you're still getting timing failures, then you may need to look into using multicycles or, better yet, adding registers or using a FIFO to handle the clock crossings.

#iwork4intel

View solution in original post

6 Replies
KhaiChein_Y_Intel
467 Views

Hi,

Can you share the design.qar for investigation?

Thanks.

Best regards,

KhaiY

UserQuartus19-3
Beginner
461 Views

Hi KhaiY

Please find attached .

sstrell
Honored Contributor III
450 Views

Without looking at your design, if these clock domains are asynchronous, you should use set_clock_groups to simply cut all paths between them.  By using set_max[min]_delay, the tool will still analyze timing on paths that go between these clock domains and you see what's happening.

So simply try this instead of set_max[min]_delay:

set_clock_groups -asynchronous -group src_clock -group dest_clk

If the clock domains are synchronous to each other and you're still getting timing failures, then you may need to look into using multicycles or, better yet, adding registers or using a FIFO to handle the clock crossings.

#iwork4intel

KhaiChein_Y_Intel
429 Views

Hi,


Have you tried Sstrell's suggestions?


Thanks.

Best regards,

KhaiY


UserQuartus19-3
Beginner
420 Views

Yes KhaiY I've cleaned timing using Sstrell's suggestions and my sof file works correctly.

Thanks.  

KhaiChein_Y_Intel
412 Views

Hi,

 

Thanks for your updates. I will now transition this thread to community support. If you have a new question, feel free to open a new thread to get the support from Intel experts. Otherwise, the community users will continue to help you on this thread. Thank you

Best regards,

KhaiY

 

Reply