电子说
本篇博文中的分析是根据真实客户问题撰写的,该客户发现不同操作系统间 QoR 性能存在差异。虽然可以理解赛灵思无法保证不同操作系统间的可重复性,正如"赛灵思答复记录 61599"中所述,但此处案例中出现的差异量级值得进一步深入调查。
最初在 Windows 上的结果更好,但后续在 Linux 上结果更好, 最后发现,此问题与设计中存在的某些极其严重的方法违例有关。
问题说明:
用户发现相同设计在 Linux 与 Windows 上存在显著的时序差异。
在每个操作系统上运行完全相同的设计生成结果如下:在 Linux 上 WNS = -0.439ns,在 Windows 上 WNS = +26ps。
该用户在不同机器上多次运行构建,但针对各操作系统得到的结果是相同的。
以下“设计时序汇总 (Design Timing Summary)”截屏中显示了来自 Linux 的时序违例。在 Windows 上运行时,时序未出现任何错误。
注:您可使用以下选项来检查自己的设计的“时序汇总 (Timing Summary)”:
■ 在 Vivado GUI 中,转至“报告 (Reports)”选项卡 ->“时序 (Timing)”->“时序汇总报告 (Report Timing Summary)”
■运行以下 Tcl 命令:
report_timing_summary -file /timingreport.txt
Linux 运行结果:
Windows 运行结果:
根本原因分析:
首先要验证的是,在 2 个平台上运行时,所有设计源代码、约束集、综合和实现指令以及 Vivado 工具设置都完全相同。另请确保不同操作系统上应用的 Vivado 补丁不存在任何差异,并且在 Vivado_Init.tcl 文件中未设置任何工具参数。
进一步深挖设计可以发现,在布局布线后可以从 Tcl 控制台 (Tcl Console) 执行 write_xdc。这样即可验证对两个平台上的构建所应用的约束是否相同。
要检查与时钟/架构/CDC 等相关的警告/严重警告,请打开方法论报告。
要在 Vivado GUI 中打开方法论报告,请转至“报告 (Report)”选项卡 ->“方法论报告 (Report Methodology)”,或者在 Tcl 控制台 (Tcl console) 中,使用 report_methodology。
报告打开后,您可能会看到几条与设计相关的警告和严重警告。
浏览此报告时,我们发现了几项警告,这些警告与设计中的时钟关系相关的错误实践有关(这些警告的 ID 为 TIMING-6 和 TIMING-7),如下图所示。
Timing-6 Critical Warning 显示 Vivado 找到了 2 个时钟,这 2 个时钟一起定时,但并没有公用的基准时钟。
默认情况下,这 2 个报告的时钟被视为相关联时钟,并以同步方式进行定时,即使这 2 个时钟并非衍生自公共的基准时钟,且不含有已知相位关系,也同样如此。DRC 警告报告称时序引擎无法保证这些时钟处于同步状态。
Timing-7 Critical Warning 显示 Vivado 找到了 2 个时钟,这 2 个时钟一起定时,但并没有公用的节点。此 DRC 报告称时序引擎无法保证这些时钟在硬件中同步,因为它无法确定 2 个时钟树之间的公共节点。
某些方法论严重警告可能暗示设计上存在 QoR 问题,即存在此类任意严重警告有时可能导致不同运行的结果出现不一致。下列方法论严重警告应作为极其严重 (Super Critical) 警告来处理:
■ TIMING-6
■ TIMING-7
■ TIMING-8
■ TIMING-14
■ TIMING-35
无论任何设计都不应存在上述任一违例,用户应采取行动尽快解决这些违例,以免影响 QoR。
TIMING-6 和 TIMING-7 - 如何解决这些警告/严重警告:
解决办法取决于 2 个时钟域处于异步还是同步状态。
对于异步时钟,时序例外(例如,set_max_delay -datapath_only、set_clock_groups 或 set_false_path)应覆盖 2 个域之间的路径。
分析设计后,发现 set_false_path 是对应此 DRC 的正确约束。
要查找这些时钟之间的路径,请运行以下命令:
report_timing -from [get_clocks ] -to [get_clocks ]
请参阅 UG906以获取有关 TIMING-6、TIMING-7 以及来自 report_methodology 的所有其它严重警告的深层详细信息。
解决方案和结论:
当纠正 TIMING-6 和 TIMING-7 违例后,设计在 Windows 和 Linux 上生成了一致的结果。
虽然赛灵思不保证不同操作系统间的可重复性,但设计中存在上述任何极其严重警告都可能导致 QoR 欠佳。在这个案例中,由于存在这些违例,导致在某一操作系统内生成的结果较另一个操作系统内生成的结果更差。
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !