Altera_Forum
Honored Contributor
14 years agoTimeQuest – Problem with Crossing Clock Domains
Hi everyone!
I use Cyclone III (speed grade C8). There are two clock domains in my project. The first one is clocked by output frequency rx_outclock = 40 MHz of ALTLVDS_Rx module. Option “Use External PLL” of ALTLVDS_Rx is disabled. The second domain is clocked by 50 MHz which is formed by main PLL of project. Here is the report of clocks in my project: https://www.alteraforum.com/forum/attachment.php?attachmentid=5352 Here is the contents of .sdc file: https://www.alteraforum.com/forum/attachment.php?attachmentid=5353 The project was compiled. Many negative slacks of Setup appeared on the boundary between clock domains (launch and latch clocks belong to different clock domains). Here is an example of worst-case timing paths: https://www.alteraforum.com/forum/attachment.php?attachmentid=5354 The worst-case setup slack is -2,247 ns. You can see from the report that the relationship of launch and latch clocks is only 1.562 ns. This is because of Quartus automatically assigned phase shift = -22,5 deg for launch clock (see the report of clocks above). I decided to increase the relationship between launch and latch clocks (i.e. “shifting the window”) by command (added in .sdc file): set_multicycle_path -setup -from [get_clocks inst4|altlvds_rx_component|auto_generated|lvds_rx_pll|clk[1]] -to [get_clocks inst2|altpll_component|auto_generated|pll1|clk[0]] 2 After recompilation all negative slacks of Setup was eliminated and relationship between launch and latch clock became 16,652 ns. But many negative slacks of Hold appeared. Here is an example of worst-case timing paths after recompilation: https://www.alteraforum.com/forum/attachment.php?attachmentid=5355 How can I fix timing problems described above ? Or may it be impossible to eliminate them ? Thank you.