目录
一、前言
如果要看时序路径分析中最详细的信息,那无疑是查看具体路径上的详细延时信息,也即在report timing summary中选中需要查看路径,双击或右键点击“View path report”,该界面主要由4部分组成,包括Summary,Source clock path,Data Path,Destination Clock Path,下面将对4部分内容进行全面的解释。
二、Path Report
2.1 Summary
Summary中为时序路径的总结信息,包含内容如下图
Name: 路径的名称,格式为"Path x",x为软件根据路径的slack值从小到大的顺序进行排序的序号
Slack:Slack值为正值说明在限定的时序约束下,路径满足时序要求,Slack值的计算公式为
最大延时分析(setup/recovery)=数据要求的到达时间-数据实际到达时间
最小延时分析(hold/removal)=数据实际到达时间-数据要求的到达时间
Source: 路径的起点,也是源时钟发送数据的位置,通常是时序单元的时钟引脚或者是输入端口。同时,在后面也显示了时序单元的有效触发边沿是上升沿还是下降沿,以及源时钟的周期与波形
Destination: 时序路径的终点或者是捕获数据的目的时钟,通常是时序单元的数据输入引脚或是输出端口,和Source类似,后面的信息也显示了时序单元的有效触发边沿以及捕获时钟的波形
Path Group: 路径终点所属的时序组,即捕获时钟组,但对于异步时序检查(recovery/removal)是默认属于async_default时序组,用于定义的组也可以出现,改分类主要是方便查看报告
Path Type: 路径类型,分为Max/Min+Slow/Fast的组合,Max表示用最大延时值计算数据路径延时,对应于setup/recovery分析;Min表示用最小延时值计算数据路径延时,对应于hold/removal分析。对于起点为复位端口的setup分析更多是fast corner,其他正常的起点通常是slow corner。
Requirement: 时序路径要求时间,当源时钟和目的时钟是同一个时钟时,通常对于setup/recovery,requirement的值时一个时钟周期,hold/removal分析该值是0ns。当源时钟和目的时钟不是同一个时钟时,requirement是两个时钟对应边沿的最小差值。同时,如果有其他时序例外约束,如multicycle path, max delay and min delay会影响该值的计算。
Data Path Delay: 逻辑单元上的延时,不考虑时钟延时
Logic Levels: 在逻辑路径上,除去起点和终点,中间连接的逻辑单元的级数
Clock Path Skew: 源时钟的启动边沿与目的时钟的捕获沿的延时差,如果存在时钟悲观校正,则要加上改该值
Clock Path Skew的计算公式如下图
Destination Clock Delay (DCD):目的时钟到路径终点的延时,如果是最大延时分析(setup/recovery),考虑的是最小的网线延时和单元逻辑延时;如果是最小延时分析(hold/removal),考虑的是最大的网线延时和单元逻辑延时。
Source Clock Delay (SCD):源时钟到达路径起点的延时,如果是最大延时分析(setup/recovery),考虑的是最小的网线延时和单元逻辑延时;如果是最小延时分析(hold/removal),考虑的是最大的网线延时和单元逻辑延时。
Clock Pessimism Removal (CPR):在源时钟和目的时钟存在共同的路径时,在共同路径上将不会存在时钟偏斜,但在Max/Min分析时将存在时钟偏斜值考虑进去了,导致结果更悲观了
Clock Uncertainty: 时钟边沿对上的所有可能导致时钟延时变化的总和,包括系统时钟抖动和离散抖动,以及用户使用set_clock_uncertainty约束的不确定值,计算公式如下
Total System Jitter:包括源时钟和目的时钟的系统抖动,为了修正系统抖动,可以使用set_system_jitter约束,另外,虚拟时钟是理想时钟,无系统抖动
Total Input Jitter: 包含了源时钟和目的时钟的输入抖动,使用set_input_jitter可以单独约束每个主时钟的输入抖动。对于生成时钟的输入抖动,是基于主时钟的抖动以及时钟资源穿过的单元。同样的,对于虚拟时钟也没有输入抖动。
Discrete Jitte:离散抖动是因为使用了硬件原语如MMCM和PLL将会带来离散抖动
Phase Error:在使用了硬件原语如MMCM和PLL时,也会带来两个时钟信号间的相位错误
User Uncertainty:使用set_clock_uncertainty约束的不确定度
以上是默认显示的,在设置了一些约束时会有一些其他内容
Input Delay:使用了set_input_delay约束输入端口时就会有该行,值为约束的值
Output Delay:使用了set_output_delay约束输入端口时就会有该行,值为约束的值
Inter-SLR Compensation:仅仅在7系列的SSI器件上,穿过SRL边界的路径为确保安全的分析需要另外的裕量。
Clock Domain Crossing: 除了被set_clock_groups和set_false_path约束的需不考虑外,其余跨时钟路径将会被分析
2.2 Source Clock Path
源时钟路径是源时钟从来源处到时序路径起点的路径
内容包含五列,Delay Type,Incr,Path,Location,Neetlist Resource(s)
Delay Type:延时类型,主要分为net和cell,net后面带有fo,表示网线的扇出大小。同时net可有3种状态:Unplaced表示net的driver和load还还未进行布局,Estimated表示net的driver和load已布局,但布线不是实际的布线,Routed表示net的driver和load已布局,并且已完成布线。
对于cell,后面有描述传输的单元,单击cell,选择“show description”可以查看详细信息,包含改cell的输入pin,以及输出pin以及时序类型
Incr(ns):显示的是各net,cell对应的传输时延值,单位为ns,对于input/output delay或uncertainty约束也会显示约束的值。同时前面会有r或f,分别表示上升riging和下降falling,用于表示该cell启动沿或捕获沿的默认sense
Path(ns):时序路径到达该位置累积的延时值,在任意一行,该值等于该行等于前面所有的值加起来
Location:对于cell布局的位置坐标
Netlist Resource(s):网表对象的名称,前面的符号向右表示输入,向左表示输出
2.3 Data Path
数据路径是数据从路径起点到路径终点的路径,相关内容和源时钟路径类似,该延时值的起点是以源时钟为基础,下图的1.834为源时钟延时1.737加上FDCE的内部延时0.097,可以看出是从一个FDCE的Q端口到另一个FDCE的D端口
2.4 Destination Clock Path
目的时钟路径是目的时钟从时钟来源处到时序路径终点的路径,总体内容和源时钟路径大体相同,但在最后面会多出两行clock pessimism,clock uncertainty,clock pessimism即为前面提到的CPR,uncertainty即为在summary中的clock uncertainty
三、参考资料
用户手册《ug906-vivado-design-analysis-en-us-2023.2.pdf》