Vivado中无关的更改也会造成综合Out-of-Date

在项目流程中,Vivado会跟踪各个流程的依赖关系。当你执行某个操作时,Vivado会保证已经成功完成上一步的操作。例如,如果您想执行implementation,Vivado将会检查synthesis是否已经执行。同时,这种依赖关系管理也会检查目前已完成的各项操作是否是依赖最新的输入而完成的。这样可以确保上一步的输出都是有效地。例如,假设已经执行了综合,之后又修改了一个RTL文件,虽然综合已经完成,由于输入在综合之后被修改过,所以它已经过时了。在Vivado环境下,这种情况被称作“Out of Date”。

有的时候,即使所做的更改看起来似乎并不影响综合,但也会造成综合或其他步骤的Out of Date。例如,在综合完成后又添加一个“pblock”约束,这个操作是不会影响综合的,但是,综合还是会显示Out of Date,原因就在于Vivado跟踪依赖关系的间隔度过小。

综合依赖于输入的HDL,XDC和其他多种因素。当XDC出现变化,如添加了pblock,由于输入成分发生改变,所以综合会Out of Date。它并不跟踪XDC的单个命令来检查它们是否影响综合。

以上的设计思想是使得依赖树相对轻量化,但也带来了我们不想要的东西。如果遇到这种情况,请进入“Design Runs”窗口,右键单击综合选项并选择“Force Up to Date”,现在您已经可以进入下一步了,但要知道,你自己要为综合确实没有过时而负责。

因此,当你强制使综合Up-to-Date时,你需要保证:
• 明确哪个地方的更改导致了综合的Out-of-Date
• 您的更改确实不会影响综合

原文链接:
https://forums.xilinx.com/t5/Vivado-Expert-Series-Blog/Synthesis-going-O...