Vivado 中的时序报告可以快速定位时序违例的原因,因此,学会阅读时序报告有助于分析时序路径。Xilinx 官方文档 UG906 中介绍了如何在 Vivado 中阅读时序报告。
The Timing Path Summary displays the important information from the timing path details. You can review it to find out about the cause of a violation without having to analyze the details of the timing path. It includes slack, path requirement, datapath delay, cell delay, route delay, clock skew, and clock uncertainty. It does not provide any information about cell placement.
ug906
通常,Vivado 的时序报告由四部分构成:
- 总结(Summary)
- 源时钟路径(Source Clock Path)
- 数据路径(Data Path)
- 目的时钟路径(Destination Clock Path)
下面结合实例介绍如何在 Vivado 中阅读时序报告。
一、总结(Summary)
在这部分可以看到时序路径的总体状况,如图 2 所示。
标记①为 Slack,若其为负,则表明时序未收敛。
标记②可帮助确定发送时钟和接收时钟,并可获知时钟周期,进而可判定该路径是否为跨时钟域路径。结合标记④可进一步判断 Requirement 是否合理。例如,对于单时钟域下的路径,Requirement 通常为一个时钟周期;对于跨时钟域路径,Requirement 数值会有所变化,但如果数值为 0.1,显然是不合理的。
标记③显示了路径类型,是 Setup 还是 Hold。
标记⑤显示了数据路径延迟。该延迟由两部分构成:逻辑延迟和布线延迟。这两个延迟占总延迟的百分比可用于判断两者对总延迟的贡献。例如,对于违例路径,若布线延迟超过 50%,说明该延迟是导致时序不能收敛的主要因素,因此可围绕降低布线延迟这一靶心达到时序收敛。
标记⑥显示了逻辑级数以及逻辑级数的构成,据此可判断逻辑级数是否过高。
标记⑦显示了 Clock Skew,当其绝对值超过 500ps 时,应引起关注。
标记⑧显示了 Clock Uncertainty,当该数值超过 100ps 时,应引起关注。
二、源时钟路径(Source Clock Path)
时序报告的第二部分为源时钟也就是发送时钟路径报告。这部分显示了源时钟路径的组成单元,如图 3 所示。
由图中的标记①至标记⑩可看出,时钟由管脚 clk_in1_0 进入,经 IBUF 输出到 MMCM,之后由 MMCM 的端口 CLKOUT2 输出,该端口连接 BUFG 进入 BUGCTRL,之后再进入全局时钟网络。标记⑩显示了源时钟的“落脚点”,也就是时序路径的起点。在这部分,需要注意时钟路径是否“干净”,例如,出现 BUFG 级联,则说明时钟路径不“干净”。上述实例中,出现了 BUFG 级联。
三、数据路径(Data Path)
时序报告的第三部分为数据路径报告,如图 4 所示。
标记①为数据路径的起点逻辑单元,也是该时序路径的起点逻辑单元,对应逻辑延迟为 0.348ns,结合红色实线框内的逻辑延迟,可得总的逻辑延迟为 1.622ns,与图 2 中的标记⑤相对应。红色虚线框内的为布线延迟,总和为 3.329ns,与图 2 中的标记⑤相对应。经过一级级累加最终获得 Arrival Time,8.376ns。
四、目的时钟路径(Destination Clock Path)
时序报告的第四部分为目的时钟也就是接收时钟(捕获时钟)路径报告,如图 5 所示。
标记①到标记⑩串联起来即为完整的时钟链路,可用于检查时钟网络是否“干净”。最终获得 Required Time,对应标记⑩中的数字 40.023ns。该数字与图中的 Arrival Time 相减,即可获得 Slack,与图 2 中标记①的数字相对应。
对于 SSI 器件中的跨 die 路径,在时序报告的 Summary 中会有一行 Inter-SLR Compensation。同时在数据路径或者时钟路径中会显示跨 die 标记,如图中的 SLR Crossing[0->1],表明这个 net 是从 SLR0 到 SLR1。
扫码关注尚为网微信公众号
原创文章,作者:sunev,如若转载,请注明出处:https://www.sunev.cn/embedded/1277.html