01signal.com

Quartus、时序收敛(timing closure): 获取简明的 multi-corner timing 路径报告

介绍

当 FPGA 设计未能达到其时序约束(timing constraints)时,自然要做的就是仔细查看关键路径(critical paths)。此检查是在时序报告(timing report)上进行的,它显示了由沿每条路径(path)的各种逻辑单元(logic elements)引起的时延(delays)。

如果您不是 Intel的 FPGAs的重度用户,那么弄清楚如何获得这份报告可能并不是那么简单。更糟糕的是,您可能会在不知不觉中查看错误的报告。

首先要理清的是 multi-corner 时序分析的概念。通常的做法是通过确保在四种情况下实现时序约束来验证 FPGA的时序(timing)的有效性: 最低和最高温度,结合“慢”和“快”的时序模型。因此,分析是针对四种组合进行的,或者如它们所指的,四种 corners。

因此,在检查关键路径时,务必同时查看所有四 corners 的时序报告。这个事实经常被忽视。例如,TimeQuest 通常只为单 corner生成时序报告。

所以这篇文章描述了如何获得有意义的报告。这些示例与 Quartus Prime 17.1 Lite有关。

我应该提到另外两个相关的帖子: 一篇文章探讨了输入 / output constraints (input / output constraints)和时序报告之间的关系,另一篇文章在 TimeQuest上对 Tcl 脚本进行了一些实验

重要提示:本页说明了如何获取时序报告以满足 setup 要求。但是,也有生成 hold、 recovery 、 removal的时序报告。这些也可以揭示实现时序约束的失败。

创建 multi-corner 报告: 快速,使用脚本(scripts)

首先,将以下 Tcl 脚本复制到一个文件中,例如 timing.tcl:

create_timing_netlist
read_sdc
update_timing_netlist

foreach_in_collection op [get_available_operating_conditions] {
  set_operating_conditions $op

  report_timing -setup -npaths 20 -detail full_path -multi_corner \
    -panel_name "Critical paths"
}

请注意,时序报告仅限于 setup。

不要让“multi_corner”标志迷惑你: 每次调用 report_timing 都会覆盖一 corner。目前尚不清楚该标志是否有任何作用。

这就是为什么脚本在所有四个选项上都有一 loop (带有 foreach_in_collection),并为每 corner生成一个单独的报告。

现在开始行动:

同一条目中还将有四个单独的报告,每 corner一个。在早期版本的 Quartus上,只会出现这些(即没有 Multi-Corner Summary)。

仅生成 HTML/文本报告

这些工具可以生成整洁的 HTML 报告,阅读起来比 TimeQuest自己的图形用户界面(GUI)舒适得多。但不幸的是,这些报告只涵盖了一 corner 。这个脚本(script)生成四个单独的 HTML 报告,每 corner 一个(它有很多文件, JQuery 脚本文件, CSS 等等。花里胡哨,但不是 multi-corner 报告)。

将以下脚本视为 timing-html.tcl:

#project_open myproj
create_timing_netlist
read_sdc
update_timing_netlist

foreach_in_collection op [get_available_operating_conditions] {
  set_operating_conditions $op

  report_timing -setup -npaths 20 -detail full_path -multi_corner \
    -file "timing_paths_$op.html" \
    -panel_name "Critical paths for $op"
}

对于纯文本报告,更改 -file 标志的参数,因此后缀是 .rpt 或 .txt 而不是 .html。

请注意在脚本顶部注释掉的“project_open”命令。如果未注释并且“myproj”被实际项目名称替换,则可以使用普通 shell command line 生成 HTML 报告,如下所示:

$ /path/to/quartus/bin/quartus_sta -t timing-html.tcl

然而,我还没有找到一种方法来生成这样的 multi-corner 报告。

为了在每个实现(implementation)中生成这些报告(推荐),在 QSF 文件中添加如下行:

set_global_assignment -name TIMEQUEST_REPORT_SCRIPT relative/path/to/timing-html.tcl

当 Tcl 脚本包含在这样的 QSF 文件中时,脚本不应使用 project_open。

仅使用图形用户界面

只需点击即可获得 multi-corner 报告:

此页面由英文自动翻译。 如果有不清楚的地方,请参考原始页面
Copyright © 2021-2024. All rights reserved. (b4b9813f)