0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

全面解读时序路径分析提速

FPGA之家 来源:XILINX BenM. Fell 作者:XILINX BenM. Fell 2021-05-19 11:25 次阅读

FPGA 设计进程中,时序收敛无疑是一项艰巨的任务。低估这项任务的复杂性常常导致工作规划面临无休止的压力。赛灵思提供了诸多工具,用于帮助缩短时序收敛所需时间,从而加速产品上市。本篇博文描述了一种方法,能够有效减少时序路径问题分析所需工作量。

时序路径问题分析定义为通过调查一条或多条具有负裕量的时序路径来判断达成时序收敛的方法。当设计无法达成时序收敛时,作为分析步骤的第一步,不应对个别时序路径进行详细时序分析。应首先从系统角度来分析设计,以判定是否有任何因素会对设计中较大区域产生影响,而不只是判定有哪些因素会影响存在最严重违例的个别路径。

如需获取有关此过程的实用指南,请参阅《UltraFast 设计方法时序收敛快捷参考指南》(UG1292)。

本篇博文旨在描述此文档中所述的时序基线检查流程,尤其是当 WNS 《 0ns 或 WHS 《 -.5ns 时的布局后操作以及当 WNS 《 0ns 或 WHS 《 0ns 时的布线后操作(红圈部分)。

243dd990-b4c9-11eb-bf61-12bb97331649.png

为了解决这些时序收敛失败问题,用户可以采用时序路径分析方法来对布局步骤、phys_opt 步骤和布线实现步骤之后发生的时序收敛失败问题进行优先级排序。

第一步是使用下列命令生成一组报告。

在 Vivado 非工程模式下,可将这些命令添加到用于运行此流程的 Tcl 脚本中。在 Vivado 工程模式下,则可将这些命令添加到 Tcl 挂钩脚本中(请参阅 (UG894) 的 “定义 Tcl 挂钩脚本” 部分)。

report_design_analysis -timing -routes -logic_level_distribution -of_timing_paths [get_timing_paths -routable_nets -max_paths 10000 -slack_lesser_than 0] -file timing_vios.rpt

report_timing -of [get_timing_paths -routable_nets -max_paths 1000 -slack_lesser_than 0] -file timing_paths.rpt -rpx timing_paths.rpx

这些命令会生成文本报告 timing_vios.rpt 和 timing_paths.rpt,这些报告可通过任意文本编辑器来查看。这些命令还可生成交互报告 timing_paths.rpx,此报告可用于在 Vivado GUI 中进行交叉探测。这些报告可显示有关设计中时序收敛失败的主要路径的信息。通过将这些报告结合在一起,即可快速达成时序收敛。

timing_vios.rpt

此报告可显示时序收敛失败的主要路径的属性(根据 Tcl 参数设置,最多可报告 10,000 条路径)。报告底部显示的直方图可显示每个端点时钟对应的时序失败的路径数量,按逻辑级别分组。此直方图作为非常实用的高级视图,可帮助缩小造成最严重的时序收敛失败的时钟域的范围。

用户应首先从造成最严重违例的时钟域开始分析这些失败问题。在多 SLR 器件中,许多违例所含的逻辑级数为 0,这表示导致时序违例的根本原因可能是没有足够的流水打拍,或者 SLR 分区效果不良。

这些都只是时序失败的线索,而并非真正原因。重要的是首先缩小问题最严重的区域的范围,然后再寻找解决方案。了解最差负时序裕量时序违例的本质有助于用户确定应执行的补救步骤的优先顺序。以下显示了一个简单的直方图示例(仅有 1 个时钟存在时序收敛失败路径)。

2453944c-b4c9-11eb-bf61-12bb97331649.png

报告其余部分可通过文本编辑器来读取,但由于换行,可能导致难以阅读。更简单的数据分析方法是将其导入 Microsoft Excel。 以下过程用于将文本编辑器报告转换为逗号分隔式报告。

1. 创建 timing_vios.rpt 的副本,并将其重命名为 timing_vios.csv。

2. 使用文本编辑器,移除报告中的页眉、页眉分隔符行和页脚(如下红框所示):

3. 如果已将 -show_all 选项与 report_design_analysis Tcl 命令配合使用,请将文件中的逗号 (,) 替换为冒号 (:)。

4. 将所有管道字符 (|) 都替换为逗号 (,),然后保存此文件。

5. 关闭文件。

timing_vios.rpt 顶部

245d4118-b4c9-11eb-bf61-12bb97331649.png

timing_vios.rpt 底部

2472c98e-b4c9-11eb-bf61-12bb97331649.png

6. 在 Microsoft Excel 中打开此 csv 文件。

7. 移除 A 列,因为此列为空。

8. 在顶部插入空白行。

9. 添加以下等式,以在报告中生成未经筛选的裕量百分比。此百分比将有助于指导完成分析操作。此百分比值越大,则失败特征对时序的影响越大。

=SUBTOTAL(109,G:G)/SUM(G:G)*100

10. 高亮 excel 文档的第 2 行,该行应为各列的标题行,然后选择“数据 (Data) -》 筛选 (Filter)”。

247b906e-b4c9-11eb-bf61-12bb97331649.png

对此报告使用筛选,以查找对设计影响最大的失败类型。

此报告通常本身无法提供时序失败的准确原因,但可帮助指导用户发现需进一步调查的路径,并使用交互时序报告(timing_paths.rpx;稍后将提供此报告的实用技巧)进行调查。

通过筛选,用户即可看到具有相似属性(逻辑级数、起点管脚等)的相似失败路径(例如,同一条总线的路径)。用户可以使用未筛选的裕量百分比来指导他们。并且,用户还可通过筛选来使用发现的记录行(如下所示),并留意筛选后显示的行号(电子表格中行号越小,表示显示的时序收敛失败的路径越差)。

24f792f4-b4c9-11eb-bf61-12bb97331649.png

以下是一些有关筛选的实用技巧。

“文本筛选器 (Text Filters) -》 包含 (Contains)”对于筛选“起点管脚 (Start Point Pin)”、“终点管脚 (End Point Pin)”和“逻辑路径 (Logical Path)”很有用。在 timing_vios.csv 中包含以下列(定义源自 (UG835) v2020.1 第 1324-1325 页)。

2506b63a-b4c9-11eb-bf61-12bb97331649.png

251e372e-b4c9-11eb-bf61-12bb97331649.png

首次生成电子表格时,可根据以下入门指南来尝试执行下列检查。这些检查主要聚焦于讲解设计后的时序收敛失败原因和修复方法。设计师还可以选择更改硬件描述语言 (HDL) 以缩短路径长度或者降低时钟速率,以及运用下文未列出的其它修复方法:

1. 在时钟关系 (CLOCK RELATIONSHIP) 列中,是否所有时序收敛失败的路径都已安全完成时序约束?如果没有,那么时序约束对于其它路径是否合适?

2. 是否有任何时序收敛失败的路径的时钟偏差 》 .5ns?如果存在此类路径,请参阅 (UG1292) v2020.1 第 8 页,以获取相关偏差建议。

3. 对于 SSI 器件,跨 SLR 的路径的未筛选的裕量百分比为多少?如果此比值过高,请参阅(UG1292) v2020.1 第 7 页。

4. 有多少时序收敛失败的路径具有与之关联 Pblock?如果此比值较高,请参阅 (UG1292) v2020.1 第 7 页。

5. 是否有大量时序收敛失败的路径的扇出都偏高 (》=512)?在 (UG1292) v2020.1 第 6 页中,如果工具存在较大的信号线延迟,则建议对具有 512 个端点的高扇出信号线进行最优化。

6. 是否有任何时序收敛失败的路径具有 DONT_TOUCH 或 MARK_DEBUG?包含这些时序路径的逻辑是否属于非第三方逻辑或非赛灵思 IP?

这些属性会阻碍工具执行有助于改善时序的最优化操作。

7. 有多少比例的路径所含的起点管脚原语或端点管脚原语不属于寄存器类型(非 FDPE、FDCE、FDRE 或 FDSE)?是否存在类似的失败特征?

8. 对于布线后操作,包含非零保持时间绕行 (HOLD FIX DETOUR) 的时序路径所占比例为多少?

timing_paths.rpt

这是基于文本的时序分析报告,包含对应设计中的主要时序收敛失败路径(根据 Tcl 命令参数,最多可包含 1000 条路径)的时序分析。它可通过使用简单的 Linux grep 来帮助生成前 1000 条路径的失败源和目标列表。 例如,用户可以按如下方式来识别排名前 100 的时序起点和端点。

grep -m 10 “Source:” place_paths.rpt 》 top_100_startpoints.rpt

grep -m 10 “Destination:” place_paths.rpt 》 top_100_endpoints.rpt

timing_paths.rpx

这是 timing_paths.rpt 的交互式报告版本。最实用的 3 个窗口分别是“器件 (Device)”窗口、“层级 (Hierarchy)”窗口和“原理图 (schematic)”窗口。

一旦确定某个失败特征对于设计的时序影响较大,即可使用 timing_paths.rpx 报告来对其进行深入挖掘。用户通过在 Vivado 中使用 timing_paths.rpx 报告即可借助具有失败特征的主要失败路径来判定出现时序收敛失败特征的原因。

要查看 timing_path.rpt 中包含的每条路径的信息,请在 Vivado 交互式报告中双击相应的时序路径。这样即可显示路径报告汇总信息窗口,其中包含时钟和数据路径等路径信息。查看原理图中的路径是很有用的。通过使用原理图,即可查看有哪些时钟被用作为数据路径中的时序元件的时钟源。在原理图中还能同时展开此时序收敛失败路径的前后级路径,这些信息有助于更准确了解数据路径。

此外,还可查看原理图中的单元属性、信号线属性和管脚属性,因为原理图可显示时序收敛失败的路径附近的固定布局单元(例如,收发器)或受限布局单元(例如,块存储器)。

用户还可高亮时序报告中的路径,这样即可在“Hierarchy”窗口中高亮相应的模块。如果用户选择前 10、100 或 1000 条路径,则可查看收敛失败的时序路径是否集中于层级内某一部分。已知路径在层级中所在位置有助于将时序收敛工作重心集中于明确设计的某一区域内包含较多违例的原因。

最后,用户可以在时序报告中将路径高亮,这些路径也会显示在“Device”窗口中,以显示物理器件中逻辑的布局位置(如下所示)。

2528ccd4-b4c9-11eb-bf61-12bb97331649.png

通过使用“Schematic”窗口,即可在时序路径内标记单元以帮助用户在“Schematic”窗口、“Hierarchy” 窗口和 “Device”窗口之间进行浏览(如下所示)。

25600b86-b4c9-11eb-bf61-12bb97331649.png

将构建模块放置在一起

本篇博文提供了一种时序路径分析优先排序方法,此方法可在 (UG1292) 的时序基线检查流程中使用。

本篇博文中涵盖了下列话题

1. 如何为此时序分析生成重要报告(timing_vios.rpt 和 timing_paths.rpx)。

2. timing_vios.rpt 的分析过程包括将其转换为便于分析的 Excel 格式 (timing_vios.csv)。

3. 使用timing_paths.rpx 来帮助确定时序收敛失败的原因。

在发生时序收敛失败的大型设计中,用户将在 2 份报告之间进行迭代(timing_vios.csv 和 timing_paths.rpx)。timing_vios.csv 报告提供了失败的高级别视图(例如,森林级视图)。timing_paths.rpx 报告包含 “Schematic” 窗口、“Device” 窗口和路径报告,可提供各条路径的具体信息(例如,单独的树视图)。

您可反复切换回 timing_vios.csv 以查看共有的失败特征。即使大侦探面对千头万绪也可能一筹莫展,负裕量最高的路径也可能无法轻易解释其时序收敛失败原因。如果发生这种情况,那么应分析负裕量仅次于它的另一组时序路径,查看其失败原因。

这样做的目的是通过明确最常见的时序收敛失败的原因来尽可能快速使工作取得进展。希望能够藉此加快达成时序收敛,少受殚精竭虑之苦。

祝狩猎愉快!

文中提到的 User Guide 可复制如下网址进行查阅:

UG894: https://china.xilinx.com/support/documentation/sw_manuals/xilinx2020_1/ug894-vivado-tcl-scripting.pdf

UG835: https://china.xilinx.com/support/documentation/sw_manuals/xilinx2020_1/ug835-vivado-tcl-commands.pdf

UG1292: https://china.xilinx.com/support/documentation/sw_manuals/xilinx2020_1/c_ug1292-ultrafast-timing-closure-quick-reference.pdf

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1592

    文章

    21207

    浏览量

    592173
  • TCL
    TCL
    +关注

    关注

    10

    文章

    1654

    浏览量

    87892
  • 编辑器
    +关注

    关注

    1

    文章

    785

    浏览量

    30042
  • SSI
    SSI
    +关注

    关注

    0

    文章

    37

    浏览量

    19091

原文标题:开发者分享 | 时序路径分析提速

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    FPGA设计的常用基本时序路径分析

    该条路径包括了触发器内部clock-to-Q的延迟,触发器之间的由组合逻辑造成的路径延迟以及目标触发器的建立时间,其延时是数据从源触发器开始,在下一个时钟沿来到之前通过组合逻辑和布线的最大时间
    的头像 发表于 01-18 16:31 204次阅读
    FPGA设计的常用基本<b class='flag-5'>时序</b><b class='flag-5'>路径分析</b>

    驱动器共模电流路径与数学模型分析

    工程上常用关键路径分析法进行EMC问题的分析与排查手段,简单高效,适合大部分场景,但缺乏细致的过程路径分析,许多文献也是从仿真和基本路径的关键点进行。
    发表于 09-08 14:54 326次阅读
    驱动器共模电流<b class='flag-5'>路径</b>与数学模型<b class='flag-5'>分析</b>

    FPGA时序约束之时序路径时序模型

    时序路径作为时序约束和时序分析的物理连接关系,可分为片间路径和片内
    发表于 08-14 17:50 471次阅读
    FPGA<b class='flag-5'>时序</b>约束之<b class='flag-5'>时序</b><b class='flag-5'>路径</b>和<b class='flag-5'>时序</b>模型

    时序分析基本概念解析

    正如“聚合”的意思(字典)“两个或多个事物聚集在一起的发生”。所以我们可以假设它也与 2 个时钟路径聚集在一起有关。 (了解时钟路径请参考另一篇博客-静态时序分析基础:第1部分“
    的头像 发表于 08-08 10:31 535次阅读
    <b class='flag-5'>时序</b><b class='flag-5'>分析</b>基本概念解析

    时序分析基本概念介绍&lt;Critical Path&gt;

    今天我们要介绍的时序分析概念是Critical Path。全称是关键路径
    的头像 发表于 07-07 11:27 676次阅读
    <b class='flag-5'>时序</b><b class='flag-5'>分析</b>基本概念介绍&lt;Critical Path&gt;

    什么是时序路径timing path呢?

    今天我们要介绍的时序分析概念是 **时序路径** (Timing Path)。STA软件是基于timing path来分析timing的。
    的头像 发表于 07-05 14:54 1002次阅读
    什么是<b class='flag-5'>时序</b><b class='flag-5'>路径</b>timing path呢?

    静态时序分析的基本概念和方法

    引言 在同步电路设计中,时序是一个非常重要的因素,它决定了电路能否以预期的时钟速率运行。为了验证电路的时序性能,我们需要进行 静态时序分析 ,即 在最坏情况下检查所有可能的
    的头像 发表于 06-28 09:38 727次阅读
    静态<b class='flag-5'>时序</b><b class='flag-5'>分析</b>的基本概念和方法

    同步电路设计中静态时序分析时序约束和时序路径

    同步电路设计中,时序是一个主要的考虑因素,它影响了电路的性能和功能。为了验证电路是否能在最坏情况下满足时序要求,我们需要进行静态时序分析,即不依赖于测试向量和动态仿真,而只根据每个逻辑
    发表于 06-28 09:35 497次阅读
    同步电路设计中静态<b class='flag-5'>时序</b><b class='flag-5'>分析</b>的<b class='flag-5'>时序</b>约束和<b class='flag-5'>时序</b><b class='flag-5'>路径</b>

    详解时序路径的相关概念

    reg2reg路径约束的对象是源寄存器(时序路径的起点)和目的寄存器(时序路径的终点)都在FPGA内部的
    的头像 发表于 06-26 14:28 610次阅读
    详解<b class='flag-5'>时序</b><b class='flag-5'>路径</b>的相关概念

    FPGA时序约束理论篇之时序路径时序模型

    典型的时序路径有4类,如下图所示,这4类路径可分为片间路径(标记①和标记③)和片内路径(标记②和标记④)。
    发表于 06-26 10:30 250次阅读
    FPGA<b class='flag-5'>时序</b>约束理论篇之<b class='flag-5'>时序</b><b class='flag-5'>路径</b>与<b class='flag-5'>时序</b>模型

    FPGA时序分析之关键路径

    关键路径通常是指同步逻辑电路中,组合逻辑时延最大的路径(这里我认为还需要加上布线的延迟),也就是说关键路径是对设计性能起决定性影响的时序路径
    发表于 06-21 14:14 1239次阅读
    FPGA<b class='flag-5'>时序</b><b class='flag-5'>分析</b>之关键<b class='flag-5'>路径</b>

    FPGA时序约束之伪路径和多周期路径

    前面几篇FPGA时序约束进阶篇,介绍了常用主时钟约束、衍生时钟约束、时钟分组约束的设置,接下来介绍一下常用的另外两个时序约束语法“伪路径”和“多周期路径”。
    发表于 06-12 17:33 887次阅读

    FPGA静态时序分析简单解读

    任何学FPGA的人都跑不掉的一个问题就是进行静态时序分析。静态时序分析的公式,老实说很晦涩,而且总能看到不同的版本,内容又不那么一致,为了彻底解决这个问题,我研究了一天,终于找到了一种
    的头像 发表于 05-29 10:24 353次阅读
    FPGA静态<b class='flag-5'>时序</b><b class='flag-5'>分析</b>简单<b class='flag-5'>解读</b>

    静态时序分析

    PathsSTA无法检查不受约束的路径上的任何时序,因此需要约束所有路径以进行时序分析。实际情况中,设计人员可能并不在乎一些输入控制信号的
    发表于 04-20 16:17

    何谓回流路径?PCB设计回流路径分析

    当 RPQF 值越趋近于 1,则表示信号布线与与回流路径是越贴近的,越高则代表回流路径越曲折绕越远的路径
    发表于 04-17 10:28 2403次阅读