Vivado Critical Warning: Invalid clock redefinition on a clock tree

Andrzej Wojciechowski

How to resolve Invalid clock redefinition on a clock tree timing critical warning in Xilinx Vivado. What is the reason for this to occur and how to prevent the warning from occurring.

Overview

I’ve recently stumbled upon the TIMING-2 and TIMING-4 Critical Warnings in Vivado – both regarding the same IP instance. In the picture below you can find the screenshot of the actual critical warnings descriptions.

Clearly the critical warning is about one of the ports of the instantiated module. I’ve added the schematic diagram of this part of the design below.

How to resolve the Invalid clock redefinition on a clock tree critical warning?

The problem is actually caused by additional XDC constraints file generated by the Clocking Wizard tool. It conflicts with the rest of the design. But how can we fix the critical warning without manually editing the generated files? It turns out there is an often overlooked option the Clocking Wizard window that influences the problematic constraints. You can find the screenshot of the Clocking Wizard in the picture below. The marked drop-down menu is the setting that needs to be changed.

By default, this is set to Single ended clock capable pin. We can select a differential input here as well. But it’s often forgotten that more values/settings are allowed. In this case I’ve selected the Global buffer option. After modification and fresh implementation, the critical warning was not present anymore!

How to prevent the Invalid clock redefinition on a clock tree critical warning?

We can avoid these types of critical warnings by not using the Clocking Wizard in the first place. In all Vivado designs we can directly instantiate the MMCM or PLL primitive. This way there is no additional XDC file generated that can result in such warnings. We can configure all of the parameters in the VHDL or (System)Verilog code ourselves, instead of using a GUI tool such as the Clocking Wizard.

Sometimes it might be a bit more difficult to use a primitive. But overall it can provide more control over the whole design.

References: