ipbus/ipbus-firmware

Remove unused clock from KCU105 example design's clock constraints

Closed this issue · 1 comments

The async clock declaration for the KCU105 example design is currently:

set_clock_groups -asynchronous -group [get_clocks -include_generated_clocks sysclk] -group [get_clocks -include_generated_clocks [get_clocks -filter {name =~ infra/eth/phy/*/rxoutclk*}]] -group [get_clocks -include_generated_clocks [get_clocks -filter {name =~ txoutclk*}]]

This works well in Vivado 2016.4. However, it causes the following error during implementation with Vivado 2017.4:

[Vivado 12-4739] set_clock_groups:No valid object(s) found for '-group [get_clocks -include_generated_clocks [get_clocks -filter {name =~ infra/eth/phy/*/rxoutclk*}]]'. 

In Vivado 2016.4, the expression [get_clocks -include_generated_clocks [get_clocks -filter {name =~ infra/eth/phy/*/rxoutclk*}]] evaluates to infra/eth/phy/U0/pcs_pma_block_i/transceiver_inst/gig_ethernet_pcs_pma_basex_156_25_gt_i/inst/rxoutclk_out[0]. However, when building with Vivado 2017.4 a newer version of the Ethernet IP core is used, and that clock no longer exists in the design; in contrast, all the design's other clocks (there's 5) remain the same from 2016.4 to 2017.4.

Deeper inspection reveals that 2016.4 builds this clock is not used for any paths, and so it can be safely removed from the async clock constraints declaration. The new declaration should be:

set_clock_groups -asynchronous -group [get_clocks -include_generated_clocks sysclk] -group [get_clocks -include_generated_clocks [get_clocks -filter {name =~ txoutclk*}]]

Resolved by pull request #63 ; closing.