04-02-2018 03:59 PM
I am having a weird problem getting my design to make timing when I am using multiple FCLK's from the Zynq. I have isolated it down to a much simpler design (block diagram snapshots attached). All I have in this test design is an AXI UART connected to the GP0 port on the Zynq, through an AXI Interconnect, and the processor system reset IP. All of this is clocked from FCLK_CLK0 on the PS, which is running at 100 MHz. When I run implementation, this builds fine and makes timing. However, if I switch to clocking it from FCLK_CLK1 on the PS, which is also running at 100 MHz, the design fails timing. What am I doing wrong?
04-02-2018 05:36 PM
Could you show me worst negative timing report, FCLK_CLK1 setting on Zynq IP ?
I suspect the following items.
- PLL type
- Location of some logic
- Jitter and/or uncertainty value (I guess they are suitable. But you need to improve it, if it is correct.)
04-02-2018 06:23 PM
Thanks for your response. I think I figured out how to fix my problem, although I don't fully understand what's going on. While researching my problem, I came upon this Answer Record: https://www.xilinx.com/support/answers/65140.html
Inspired by that, I looked at the values of the CONFIG.PCW_FCLK_CLKx_BUF properties in my project, and they were not the same for CLK0 and CLK1:
get_property CONFIG.PCW_FCLK_CLK0_BUF [get_bd_cells ps]
get_property CONFIG.PCW_FCLK_CLK1_BUF [get_bd_cells ps]
I had not set these properties (I didn't even know they existed), so these must be the default values. My vague understanding of this is that with these settings, FCLK_CLK1 is not configured for use as a "global" clock, so I think that must be why I was getting timing issues.
Once I did "set_property CONFIG.PCW_FCLK_CLK1_BUF TRUE [get_bd_cells ps]", my problems went away - the design worked fine using either FCLK_CLK0 or FCLK_CLK1.
04-03-2018 06:56 PM
Generally, designer should use specified clock buffer on clock path.
If designer doesn't use it, clock path delay becomes worse.
In this case, because of you changed the property on PCW_FCLK_CLK1_BUF from false to true. Then, the result was fine.