如上图所示,综合后给出的时序报告,可以看到ADC的时钟出现了hold时序违例,clk_out1_1出现了setup违例。然后进行实现,实现完成后hold违例消失(正如上面所述,保持时间往往可以修改布线长度来保证),如下图所示为实现后的结果,目前只存在3条路径出现setup违例,即建立时间裕量为负。
以path201为例:选中path201,按F4(或右键schematic),打开路径的原理图,如下图所示,可以看到该路径经历多个模块,时序路径较长。
双击path201,会显示该路径的具体信息,点击slack可以弹出相应的需求时间和实际的到达时间,可以清晰的看到实际到达时间是长于需求时间的,所以出现时序违例的情况。
详细的原时钟时序、数据路径时序、目标时钟时序的各延迟数据如下图所示。值得注意的是数据路径信息,其中包括Tco延迟和布线延迟,各级累加之后得到总的延迟时间。通过观察各中间过程,分析其中延迟较大的环节,可以做相应的优化约束或代码有效。
一般而已,少量的时序违例(如本工程,只有3条路径违例),是可以通过实现策略(strategy)的修改达到要求。如果时序违例较严重,那么就需要详细的分析各时钟之间的关系(同步or异步)、是否分析该路径等各方面进行深刻的分析,然后修改时序约束文件,更严重的可能要手动布局及修改布线,我对这方面还理解的不是很透,所以等弄明白了再总结。
参考文献:1.《VIVADO从此开始》——高亚军著(强烈推荐此书!!!!)