如何阅览vivado工程的时序分析报告——建立时间

1. 前言

在上篇文章里《时序分析基本概念(一)——建立时间》,我们向大家介绍了建立时间的基本概念和计算方法。本篇文章我们将通过vivado工程实例来向大家介绍如何读懂时序分析报告。

2. vivado工程介绍

vivado工程实例很简单,工程的电路原理框图如下图所示:
在这里插入图片描述

电路功能为:在rx_data_valid信号拉高的情况下,对输入的数据总线rx_data_bus数据做了两次加法,最后通过tx_data_bus管脚输出。大家可以自行下载vivado工程,具体下载方法见文章末尾。
我们对该工程进行管脚约束和时钟约束,如下图所示:
在这里插入图片描述

图中时钟约束的含义是告诉vivado工具,rx_clk时钟的时钟频率为100MHz。vivado软件只有在知道工作时钟频率后,才能正确的布局布线以满足该电路工作的时序要求。

3. 工程编译并打开时序报告

vivado工程编译好后,打开时序分析报告。
在这里插入图片描述

时序报告打开方法:
-> 先选择“Open Implemented Design”,打开布局布线后的工程;
在这里插入图片描述

-> 选择“Timing”选项卡,并展开“Intra-Clock Paths”;
在这里插入图片描述

由于我们的工程只有rx_clk时钟域,因此我们只用展开“rx_clk”时序报告,查看“Setup”报告(建立时间报告)。
在这里插入图片描述

如果工程复杂,路径过多,该窗口默认显示的路径并不全,如果没有找到我们想查看的路径,我们可以选择菜单上的“Reports -> Timing -> Report Timing Summary”
在这里插入图片描述

修改Maximum number of paths per clock or path_group至100(根据自己需要),点击“OK”按钮。
在这里插入图片描述

4. 分析时序报告

比如图中的路径“Path7”,第一列的“Slack”指的是建立时间的松紧程度。该值为正值代表该路径的布线满足时序要求。“Levels”为1,代表数据路径上的组合逻辑为1级,“High Fanout”代表该路径的扇出为4。
在这里插入图片描述

双击路径“Path7”可以打开更详尽的时序报告,如下图所示。
在这里插入图片描述

① Source Clock Path
我们先来查看源时钟路径,图中用各个颜色表示了每行延时的具体含义。
在这里插入图片描述

根据上篇文章的学习可知,以上的延时总和为源时钟的路径延时,对应建立时间计算公式的Tclk1,即Tclk1 = 1.868ns。
我们也可以通过综合出来的电路图来更直观的查看这些路径延时的由来,打开“SYNTHESIS -> Open Synthesized Design -> Schematic”。
在这里插入图片描述

图中用对应每行时序报告注释的颜色标出了对应延时路径的具体位置。

② Data Path
我们再来看数据路径时间。数据路径时间相对简单,主要由寄存器“buf_data_reg[0]”的内部延时Tco、走线的路径延时以及组合逻辑引入的延时组成。图中用不同颜色的注释已经标注出来。
在这里插入图片描述

走线的路径延时 + 组合逻辑引入的延时即为数据延时Tdata。同样的,我们通过在综合出来的电路图上,用每行时序报告注释的颜色标出了对应延时路径的具体位置。
在这里插入图片描述

图中buf_data_reg[0]的Q端口输出分别连至4个绿色框标出的器件,因此该路径的扇出为4。由于该数据路径上,从第一个寄存器到达第二个寄存器之间只经过了1个LUT器件,因此路径上的组合逻辑为1级。

③ Destination Clock Path
最后我们来看目的时钟路径。图中用各个颜色表示了每行延时的具体含义。
在这里插入图片描述

表中除掉蓝色的标注,其它所有颜色标注的延时总和为Tclk2。
表中还有“clock pessimism”时钟悲观值和“clock uncertainty”时钟抖动值,这些值的具体由来不在本文中做详述。
表中最后一项FDCE(Setup_CFF_SLICEM_C_D)为寄存器“tx_data_bus_reg”寄存器需要的建立时间值(Tsu)。
同样的,我们通过在综合出来的电路图上,用每行时序报告注释的颜色标出了对应延时路径的具体位置。
在这里插入图片描述

这样我们通过公式最终可计算出建立时间的slack值:
slack = Tcycle + Tclk2 + Tsu - (Tclk1 + Tco + Tdata)
= 10 + 1.806 + 0.025 – (1.868 + 0.078 + 0.332) = 9.553ns
和时序报告计算出来的值吻合。

5. 后续

后面我们还会继续介绍其它时序相关的知识,感兴趣的伙伴请关注我们公众号 “FpgaHome” 吧。
本文使用的工程可以通过在公众号输入 SET_TIME_ANALYSIS 来获取工程下载链接,工程使用的vivado版本为2021.1。

### Vivado时序分析报告的生成与解读 Vivado作为Xilinx FPGA设计的主要工具,提供了强大的静态时序分析功能,能够帮助设计人员验证设计是否符合时序要求。通过生成时序分析报告,用户可以深入了解设计的时序性能并进行优化。 #### 一、Vivado时序分析报告的生成 在Vivado中生成时序分析报告通常需要完成以下操作: 1. **实现设计**:确保工程已经完成综合和实现阶段。点击`Run Implementation`后,等待实现过程完成。 2. **打开实现结果**:实现完成后,在左侧导航栏选择`IMPLEMENTATION`,然后点击`Open Implementation`[^2]。 3. **生成时序摘要报告**:在弹出的界面中,点击`Report Timing Summary`按钮以生成时序摘要报告。该报告包含关键时序信息,如时钟频率、最差路径延迟等。 4. **详细时序路径分析**:如果需要更详细的时序路径信息,可以在命令栏中点击`Timing`选项卡,并进一步选择具体的时序路径进行分析[^4]。 #### 二、Vivado时序分析报告的解读 Vivado时序分析报告主要包含以下几个部分: 1. **时钟摘要(Clock Summary)** 报告中的`Clock Summary`部分列出了设计中所有定义的时钟及其特性,例如周期、偏移量等。例如,通过命令`create_clock -period 8.000 -name eth_rxc -waveform {0.000 4.000} -add [get_ports eth_rxc]`定义的时钟`eth_rxc`会在该部分显示其周期为8ns[^2]。 2. **时序路径分析** - **源时钟路径(Source Clock Path)**:描述从时钟源到触发器输入端的延迟。 - **数据路径(Data Path)**:描述数据从一个寄存器输出到另一个寄存器输入的延迟。 - **目的时钟路径(Destination Clock Path)**:描述从时钟源到目的寄存器输入端的延迟[^4]。 3. **建立时间和保持时间分析** - **建立时间余量(Setup Slack)**:表示数据路径延迟是否满足建立时间要求。正值表示满足,负值表示不满足。 - **保持时间余量(Hold Slack)**:表示数据路径延迟是否满足保持时间要求。同样,正值表示满足,负值表示不满足[^5]。 4. **时序违规路径** 如果存在时序违规路径,Vivado会在报告中明确指出哪些路径未能满足时序要求,并提供具体的原因和数值。这些信息对于优化设计至关重要。 #### 三、代码示例:创建时钟约束 以下是一个简单的Tcl脚本示例,用于在Vivado中定义时钟约束: ```tcl # 创建一个名为sys_clk的时钟,周期为10ns create_clock -period 10.000 -name sys_clk -waveform {0.000 5.000} [get_ports sys_clk] # 设置输入引脚的延迟约束 set_input_delay -clock sys_clk 2.0 [get_ports input_data] ``` #### 四、时序报告的高级功能 除了基本的时序路径分析外,Vivado还提供了针对IO端口的时序报告分析功能。通过`Report -> Timing -> Report Datasheet`,用户可以获得关于设计中所有IO端口的详细时序信息,这对于确保外部接口的时序正确性尤为重要[^3]。 --- ###
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值