I'm trying to get litepcie to work on a custom board with a kintex.
While looking at the vivado output, I noticed many inter clock paths failing.
I also tried the sqrl_acorn board and it also has the same failing paths:
Example vivado timing log from sqrl_acorn with pcie enabled:
The current version doesn't even set the false path. Vivado prints:
CRITICAL WARNING: [Vivado 12-4739] set_clock_groups:No valid object(s) found for '-group [get_clocks -include_generated_clocks -of [get_nets pcie_clk]]'
Hi all,
I'm trying to get litepcie to work on a custom board with a kintex. While looking at the vivado output, I noticed many inter clock paths failing. I also tried the sqrl_acorn board and it also has the same failing paths:
Example vivado timing log from sqrl_acorn with pcie enabled:
I discovered that https://github.com/enjoy-digital/litex/blob/0c326f0ed009ce6cf8b000bb4b6c67ff595a766e/litex/soc/integration/soc.py#L2024 sets everything between sys_clk and pcie to a false path. But I'm not sure what the pcie clock domain is and if that is maybe the source of my problem. In https://github.com/enjoy-digital/litepcie/blob/a20bf8827793bf2aca69f131b4da2f6f212c4f43/litepcie/phy/s7pciephy.py#L230 pcie clock domain is only about the axi output clk. Does anybody know how that is supposed to work, should all paths between the clocks in litepci and sys_clk be set to false paths? In my opinion, the false path should be set between the pcie ref input clock (for sqrl_acorn that would be pcie_x4_clk_p) and sys_clock so that all clocks generated inside litepcie are also considered false paths instead of now where the false path is between "pcie" (The axi output clk inside litepcie) and "sys_clk".
The current version doesn't even set the false path. Vivado prints:
CRITICAL WARNING: [Vivado 12-4739] set_clock_groups:No valid object(s) found for '-group [get_clocks -include_generated_clocks -of [get_nets pcie_clk]]'
Relevant lines from the generated XDC file:
Maybe I'm totally on this. Thanks in advance for any hints on this.