Vivado使用进阶:读懂用好TimingReport

FPGA技术江湖 2023-05-04 08:13
关注我们
更多精彩等你发现!


本篇是《Vivado使用误区与进阶》系列的最后一章,关于FPGA的时序分析。

XDC 约束技巧》系列中讨论了XDC 约束的设置方法、约束思路和一些容易混淆的地方。我们提到过约束是为了设计服务,写入 Vivado®  XDC 实际上就是用户设定的目标,Vivado FPGA 设计的实现过程必须以满足 XDC 中的约束为目标进行。那我们如何验证实现后的设计有没有满足时序要求?又如何在开始布局布线前判断某些约束有没有成功设置?或是验证约束的优先级?这些都要用到 Vivado 中的静态时序分析工具。

静态时序分析

静态时序分析(Static Timing Analysis)简称 STA,采用穷尽的分析 方法来提取出整个电路存在的所有时序路径,计算信号在这些路径上的传播延时,检查信号的建立和保持时间是否满足时序要求,通过对最大路径延时和最小路径延时的分析,找出违背时序约束的错误并报告。 STA 不需要输入向量就能穷尽所有的路径,且运行速度很快、占用内存较少、覆盖率极高,不仅可以对芯片设计进行全面的时序功能检查,而且还可以利用时序分析的结果来优化设计。所以 STA 不仅是数字集成电路设计 Timing Sign-off 的必备手段,也越来越多地被用到设计的验证调试工 作中。 STA  FPGA 设计中也一样重要,但不同于一般数字集成电路的设计,FPGA 设计中的静态时序分析工具一般都整合在芯片厂商提供的实现工具中。在 Vivado 中甚至没有一个独立的界面,而是通过几个特定的时序 报告命令来实现。

OCVPVT

即便是同一种FF,在同一个芯片上不同操作条件下的延时都不尽相同,我们称这种现象为OCVon-chip variation)。OCV 表示的是芯片内部的时序偏差,虽然很细小,但是也必须严格考虑到时序分析中去。

产生OCV 的原因主要有PVTProcess / Voltage / Temperature)三个方面,而STA 要做的就是针对不同工艺角(Process Corner)下特定的时序模型来分析时序路径,从而保证设计在任何条件下都能满足时序要求,可以正常工作。

通常PVT 对芯片性能的影响如下图所示,

不同的PVT 条件组成了不同的corner,另外在数字电路设计中还要考虑RC corner 的影响,排列组合后就可能有超过十种的corner 要分析。但是在FPGA 设计中的静态时序分析一般仅考虑Best Case WorstCase,也称作Fast Process Corner Slow Process Corner,分别对应极端的PVT 条件。

Multi-Corner

Vivado 中的 STA 支持多角时序分析(Multi-Corner Timing Analysis),会对以上两种corner 下的时序同时进行分析,然后报告最差的情况。因为每个 corner 下的延时也会有一定的变化范围,所以时序分析还会考虑每  corner 下的最大延时和最小延时。

如果一个设计在 Best Case  Worst Case 下都能满足时序要求,则可以推算这个设计在其允许的任何操作条件下都能保持正常工作。

这里要提醒大家,不要被 corner 的名字误导,实际上,同样一条路径可能在 Slow Corner 中满足时序却在 Fast Corner 中有时序违例。但是你在 Vivado 中看到的时序报告只会显示其对两种 corner 并行分析后选出的 最差情况。

有特殊需要的情况下,可以在 Vivado 中通过 config_timing_corners -corner-delay_type来选择将某种 corner 应用于 setup / hold 的分析。在 Report Timing Summary  Report Timing 的图形化界面也可以通过 Timer Setting  corner 做调整,具体界面详见稍后描述。

这样最大化考虑 OCV 的时序分析方法在处理同一条路径的共同时钟路径时也会应用不同的延时数据,从而会得出更为悲观的数据。为了真实反映路径延时情况,这部分延时必须被纠正,这就是 CRPRClock Reconvergence Pessimism Removal)。

仔细观察时序报告便可以发现在报告路径的 Slack 之前有一行显示 clock pessimism 已经被考虑在内,在进行 Setup Check 时会加上一定的 clock pessimism,而 Hold Check 时则会减去一定的 clock pessimism

下图显示了 CRPR 的来源以及在 Vivado 时序报告中的具体体现。

时序命令与报告

Vivado 中用于时序分析的命令主要有以下两条,且都有对应的图形化设置界面。

  • report_timing_summary 主要用于实现后的 timing sigh-off

  • report_timing 主要用于交互式的约束验证以及更细致具体的时序报告与分析

report_timing_summary

我们先看看 report_timing_summary,实际上,不仅在布局布线后,在综合后甚至是更具体的实现过程中 的每一小步之后都可以运行,从而得到一个全局的时序报告。

 Vivado IDE 中点击 Report Timing Summary 后可以改变报告的内容,例如每个时钟域报告的路径条数,是否 setup  hold 全都报告等等。每改变一个选项都可以看到窗口下方的 Command 一栏显示出对应的 Tcl 命令。修改完设置后可以直接按 OK 键确认执行,也可以拷贝 Command 栏显示的命令到 Tcl 脚本中稍后执行。

这里有个小窍门,通过-name 指定一个名字,就可以在 Vivado IDE 中新开一个窗口显示这条命令的执行 结果,这个窗口还可以用来跟其他诸如 Device View 或是 Schematic View 等窗口之间 cross probing。这一点也同样适用于包括 report_timing 在内的绝大部分 Vivado 中的 report 命令。

在设置窗口中还有 Timer Settings 一栏(report_timing 中也有),可以用来改变报告时采用的具体 corner、速度等级以及计算布线延时的方式。很多时候我们可以借助 Timer 的设置来快速验证和调试设计需求。

举例来说,在实现后的报告中显示时序违例比较严重,我们可以直接在 Timer 设置中改变速度等级后重新 报告时序,来验证把当前这个已经布局布线完毕的设计切换到更快一档的芯片中是否可以满足时序要求。

另外,在布局布线后的设计上报告时序,往往不能更直观地发现那些扇出较大或是逻辑级数较高的路径。此时我们可以修改连线模型为 estimated,报告出布局后布线前的时序而无需另外打开对应阶段的 DCP 并重 新运行时序报告命令来操作,这么做节约时间的同时,也更容易找到那些高扇出路径以及由于布局不佳而导致的时序违例。我们也可以修改连线模型为 none,这样可以快速报告出那些逻辑延时较大以及逻辑级数较高的路径。以上这些改变 Timer 设置的方法可以帮助我们快速定位设计中可能存在的问题和缺陷。

report_timing_summary 实际上隐含了 report_timingreport_clocks check_timing 以及部分的 report_clock_interaction 命令,所以我们最终看到的报告中也包含了这几部分的内容。另外自 2014.3 版起,打开实现后的结果时会直接打开一个预先产生好的报告。

Timing Summary 报告把路径按照时钟域分类,每个组别下缺省会报告 SetupHold 以及 Pulse Width  查最差的各 10 条路径,还可以看到每条路径的具体延时报告,并支持与 Device ViewSchematic View 等窗 口之间的交互。

每条路径具体的报告会分为 SummarySource Clock PathData Path  Destination Clock Path 几部分,详细报告每部分的逻辑延时与连线延时。用户首先要关注的就是 Summary 中的几部分内容,发现问题后 再根据具体情况来检查详细的延时数据。其中,Slack 显示路径是否有时序违例,Source  Destination 显示 源驱动时钟和目的驱动时钟及其时钟频率, Requirement 显示这条路径的时序要求是多少,Data Path 显示数据路径上的延时,Logic Level 显示这条路径的逻辑级数,而 Clock Path Skew  Clock Uncertainty 则显示时钟路径上的不确定性。

以上图这条路径来举例,通过 Summary 我们可以得到这样的信息:这是一条 clk 时钟域内的路径,时钟周期为 3.125ns,这条路径有 0.268ns 的时序违例。违例的主要原因是逻辑级数较高导致的数据链路延时较大,但连线延时的比例也较高,所以可以仔细看看这条路径的数据路径上有没有可能改进布局、降低扇出或者是减少逻辑级数的优化方向。

report_timing

report_timing 是更具体的时序报告命令,经常用来报告某一条或是某些共享特定节点的路径。用户可以在设计的任何阶段使用 report_timing,甚至是一边设置 XDC,一边用其来验证约束的可行性与优先级。在 Vivado IDE 中可以由 Tools > Timing > Report Timing 调出其图形化设置窗口。

 report_timing_summary 类似,调整选项后对应的Tcl 命令也会在 Command 栏生成,在 Targets 一栏 还可以设置需要报告路径的起始点/途经点/结束点,可以三个都设置或是仅设置其中任何一项,每一项都支持通配符匹配甚至是正则表达式查找。report_timing 报告出的路径延时与 report_timing_summary 中具体到每根 路径上的报告一致,可以以此为依据帮助我们定位时序失败的原因。

 report_timing 来报告时序其实还有一些更常见的应用场景,用来帮助我们设置和验证约束,尤其是那些时 序例外约束。

举例来说,在设计过程中我们约束了一条或数条多周期约束,不同于 UCF 必须读入约束后重跑设计,我们可以直接在 Tcl Console 中输入这条 XDC,无需重跑设计,直接用 report_timing 来验证。在随之显示的时序报告 Summary 部分可以看到 Timing Exception 后列出这条路径被设置了怎样的时序例外约束(注意,不加额外 option 时,以下两条命令都仅针对 setup check 

单纯的一条多周期约束没有什么特别,但是如果使用了通配符后的时序例外有重叠的情况下,Vivado 会根据 优先级来决定对某条路径应用怎样的约束。当设计较大,XDC 较多时,一边设置 XDC 一边用 report_timing 来验 证就变得尤其重要。

另外,仅仅输入 report_timing 而不加任何 optionVivado 便会报告出时序违例最严重的那条路径,方便我们快速了解当前设计的 WNS,找到最差的那条路径。在验证 I/O 约束时也常常用到 report_timing,只要指定-from 某个输入或是-to 某个输出便可以快速验证当前设计在接口上的时序。

get_timing_paths

除了上述两个大家比较熟悉的时序报告命令,Vivado 中还提供一个 get_timing_paths 的命令,可以根据指定 的条件找到一些特定的路径。我们可以利用其返回值中的一些属性来快速定位设计中的问题。

例如逻辑级数这个影响 FPGA 性能的一大因素,因为经常隐藏在时序报告后很难被发现。在 Vivado 中,除了借助综合后的报告来找到那些可能因为逻辑级数较高而导致的时序难满足的路径外,还有一个更直接的办法,可以一次性报告出设计中那些高逻辑级数的路径,方便我们有针对性的深入分析和优化。

下图这个例子报告了时序最差的 10 条路径的逻辑级数。需要注意的是,在综合后和在布局布线后用一样的脚本报告出的结果会稍有不同,对逻辑级数较为关注的情况,还是建议以综合后的结果为主要依据。

小结

本文可以视为对《XDC 约束技巧》系列文章的补充,希望可以帮助大家了解 FPGA 设计中的时序分析方法,学会使用 Vivado 中的静态时序分析工具来验证时序,定位问题,快速找到问题和解决方案。

—— Ally Zhou 2015-3-30  Xilinx 上海 Office

《Vivado使用误区与进阶》系列,到此篇便结束了,更多关于Vivado设计集成环境的应用,可参考Xilinx官网的UG和在工程开发中体会。

本文来源:FPGA算法工程师


END


往期精选 

 
 

【免费】FPGA工程师招聘平台

今日说“法”:FPGA芯片如何选型?

SANXIN-B01开发板verilog教程V3电子版

学员笔记连载 | FPGA Zynq 千兆以太网回环

就业班学员学习笔记分享:FPGA之HDMI、以太网篇

求职面试 | FPGA或IC面试题最新汇总篇

FPGA项目开发:204B实战应用-LMK04821代码详解(二)

项目合作 | 承接FPGA项目公告

资料汇总|FPGA软件安装包、书籍、源码、技术文档…(2023.01.02更新)

FPGA就业班,2023.04.15开班,系统性学习FPGA,高薪就业,线上线下同步!


FPGA技术江湖广发江湖帖

无广告纯净模式,给技术交流一片净土,从初学小白到行业精英业界大佬等,从军工领域到民用企业等,从通信、图像处理到人工智能等各个方向应有尽有,QQ微信双选,FPGA技术江湖打造最纯净最专业的技术交流学习平台。


FPGA技术江湖微信交流群

加群主微信,备注姓名+公司/学校+岗位/专业进群


FPGA技术江湖QQ交流群

备注姓名+公司/学校+岗位/专业进群


FPGA技术江湖 任何技术的学习就好比一个江湖,对于每一位侠客都需要不断的历练,从初入江湖的小白到归隐山林的隐世高人,需要不断的自我感悟自己修炼,让我们一起仗剑闯FPGA乃至更大的江湖。
评论
  • 根据Global Info Research项目团队最新调研,预计2030年全球封闭式电机产值达到1425百万美元,2024-2030年期间年复合增长率CAGR为3.4%。 封闭式电机是一种电动机,其外壳设计为密闭结构,通常用于要求较高的防护等级的应用场合。封闭式电机可以有效防止外部灰尘、水分和其他污染物进入内部,从而保护电机的内部组件,延长其使用寿命。 环洋市场咨询机构出版的调研分析报告【全球封闭式电机行业总体规模、主要厂商及IPO上市调研报告,2025-2031】研究全球封闭式电机总体规
    GIRtina 2025-01-06 11:10 104浏览
  • 根据环洋市场咨询(Global Info Research)项目团队最新调研,预计2030年全球无人机锂电池产值达到2457百万美元,2024-2030年期间年复合增长率CAGR为9.6%。 无人机锂电池是无人机动力系统中存储并释放能量的部分。无人机使用的动力电池,大多数是锂聚合物电池,相较其他电池,锂聚合物电池具有较高的能量密度,较长寿命,同时也具有良好的放电特性和安全性。 全球无人机锂电池核心厂商有宁德新能源科技、欣旺达、鹏辉能源、深圳格瑞普和EaglePicher等,前五大厂商占有全球
    GIRtina 2025-01-07 11:02 68浏览
  • 本文介绍Linux系统更换开机logo方法教程,通用RK3566、RK3568、RK3588、RK3576等开发板,触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。制作图片开机logo图片制作注意事项(1)图片必须为bmp格式;(2)图片大小不能大于4MB;(3)BMP位深最大是32,建议设置为8;(4)图片名称为logo.bmp和logo_kernel.bmp;开机
    Industio_触觉智能 2025-01-06 10:43 87浏览
  • 这篇内容主要讨论三个基本问题,硅电容是什么,为什么要使用硅电容,如何正确使用硅电容?1.  硅电容是什么首先我们需要了解电容是什么?物理学上电容的概念指的是给定电位差下自由电荷的储藏量,记为C,单位是F,指的是容纳电荷的能力,C=εS/d=ε0εrS/4πkd(真空)=Q/U。百度百科上电容器的概念指的是两个相互靠近的导体,中间夹一层不导电的绝缘介质。通过观察电容本身的定义公式中可以看到,在各个变量中比较能够改变的就是εr,S和d,也就是介质的介电常数,金属板有效相对面积以及距离。当前
    知白 2025-01-06 12:04 173浏览
  • 村田是目前全球量产硅电容的领先企业,其在2016年收购了法国IPDiA头部硅电容器公司,并于2023年6月宣布投资约100亿日元将硅电容产能提升两倍。以下内容主要来自村田官网信息整理,村田高密度硅电容器采用半导体MOS工艺开发,并使用3D结构来大幅增加电极表面,因此在给定的占位面积内增加了静电容量。村田的硅技术以嵌入非结晶基板的单片结构为基础(单层MIM和多层MIM—MIM是指金属 / 绝缘体/ 金属) 村田硅电容采用先进3D拓扑结构在100um内,使开发的有效静电容量面积相当于80个
    知白 2025-01-07 15:02 75浏览
  • 彼得·德鲁克被誉为“现代管理学之父”,他的管理思想影响了无数企业和管理者。然而,关于他的书籍分类,一种流行的说法令人感到困惑:德鲁克一生写了39本书,其中15本是关于管理的,而其中“专门写工商企业或为企业管理者写的”只有两本——《为成果而管理》和《创新与企业家精神》。这样的表述广为流传,但深入探讨后却发现并不完全准确。让我们一起重新审视这一说法,解析其中的矛盾与根源,进而重新认识德鲁克的管理思想及其著作的真正价值。从《创新与企业家精神》看德鲁克的视角《创新与企业家精神》通常被认为是一本专为企业管
    优思学院 2025-01-06 12:03 119浏览
  • 大模型的赋能是指利用大型机器学习模型(如深度学习模型)来增强或改进各种应用和服务。这种技术在许多领域都显示出了巨大的潜力,包括但不限于以下几个方面: 1. 企业服务:大模型可以用于构建智能客服系统、知识库问答系统等,提升企业的服务质量和运营效率。 2. 教育服务:在教育领域,大模型被应用于个性化学习、智能辅导、作业批改等,帮助教师减轻工作负担,提高教学质量。 3. 工业智能化:大模型有助于解决工业领域的复杂性和不确定性问题,尽管在认知能力方面尚未完全具备专家级的复杂决策能力。 4. 消费
    丙丁先生 2025-01-07 09:25 80浏览
  • 每日可见的315MHz和433MHz遥控模块,你能分清楚吗?众所周知,一套遥控设备主要由发射部分和接收部分组成,发射器可以将控制者的控制按键经过编码,调制到射频信号上面,然后经天线发射出无线信号。而接收器是将天线接收到的无线信号进行解码,从而得到与控制按键相对应的信号,然后再去控制相应的设备工作。当前,常见的遥控设备主要分为红外遥控与无线电遥控两大类,其主要区别为所采用的载波频率及其应用场景不一致。红外遥控设备所采用的射频信号频率一般为38kHz,通常应用在电视、投影仪等设备中;而无线电遥控设备
    华普微HOPERF 2025-01-06 15:29 127浏览
  • 在智能家居领域中,Wi-Fi、蓝牙、Zigbee、Thread与Z-Wave等无线通信协议是构建短距物联局域网的关键手段,它们常在实际应用中交叉运用,以满足智能家居生态系统多样化的功能需求。然而,这些协议之间并未遵循统一的互通标准,缺乏直接的互操作性,在进行组网时需要引入额外的网关作为“翻译桥梁”,极大地增加了系统的复杂性。 同时,Apple HomeKit、SamSung SmartThings、Amazon Alexa、Google Home等主流智能家居平台为了提升市占率与消费者
    华普微HOPERF 2025-01-06 17:23 145浏览
  • PLC组态方式主要有三种,每种都有其独特的特点和适用场景。下面来简单说说: 1. 硬件组态   定义:硬件组态指的是选择适合的PLC型号、I/O模块、通信模块等硬件组件,并按照实际需求进行连接和配置。    灵活性:这种方式允许用户根据项目需求自由搭配硬件组件,具有较高的灵活性。    成本:可能需要额外的硬件购买成本,适用于对系统性能和扩展性有较高要求的场合。 2. 软件组态   定义:软件组态主要是通过PLC
    丙丁先生 2025-01-06 09:23 85浏览
  • By Toradex 秦海1). 简介嵌入式平台设备基于Yocto Linux 在开发后期量产前期,为了安全以及提高启动速度等考虑,希望将 ARM 处理器平台的 Debug Console 输出关闭,本文就基于 NXP i.MX8MP ARM 处理器平台来演示相关流程。 本文所示例的平台来自于 Toradex Verdin i.MX8MP 嵌入式平台。  2. 准备a). Verdin i.MX8MP ARM核心版配合Dahlia载板并
    hai.qin_651820742 2025-01-07 14:52 45浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦