Vivado时序分析方法——report_design_analysis(一)

report_design_analysis可以用来对时序问题的根本原因进行分析,进而寻找合适的时序优化方案,达到时序收敛的目的。

一、分析时序违例路径

Vivado工具会优先对最差的路径进行时序优化,最终并不一定成为critical path。因此分析时序违例路径时,并不仅仅关注critical 路径。以下tcl命令可以报告最差的50条setup timing path。

report_design_analysis -max_paths 50 -setup

时序报告如下图所示:

首先关注逻辑延时(Logic Delay)和线延时(Net Delay)根据逻辑延时和线延时的比例不同,路径分析方向也略有不同。

1、逻辑延时较长

a)逻辑级数过多(Logic Levels):一般可以修改代码,增加寄存降低逻辑级数

report_design_analysis -logic_level_distribution -logic_level_dist_paths 5000 -name design_analysis_prePlace
//分析设计中逻辑级数的分布

通过上述命令可以对设计中的逻辑级数分布进行分析,进而判断是否存在不满足时序要求的逻辑级数。报告如下所示,该设计最长逻辑延时为5,推荐最长逻辑级数根据时钟频率和器件不同而不同。

如果需要进一步确定逻辑级数最长的路径可以采用如下命令:

report_timing -name longPaths -of_objects [get_timing_paths -setup -to [get_clocks cpuClk_5] -max_paths 5000 

-filter {LOGIC_LEVELS>=16 && LOGIC_LEVELS<=20}]

//筛选cpuClk_5时钟域逻辑级数在[16,20]之间的路径 

b)存在DONT_TOUCH或者MARK_DEBUG等约束,阻碍工具进行逻辑优化

c)路径上存在逻辑延时较长的单元,比如DSP和BRAM等

2、线延时较长

a)扇出较大:加max_fanout选项或修改代码手动复制高扇出信号

 report_high_fanout_nets -fanout_greater_than 50 -max_nets 100

执行上述tcl命令可以报告扇出大于50的100条最长路径。

命令生成的报告如上,可以分析fanout和驱动类型,推荐最大fanout与器件和设计频率相关。

对于较大的fanout,最好改为寄存输出,如下所示的LUT输出是不推荐的。

b)物理位置较远(比如分属不同的pblock)

c)SSI器件是否存在跨die信号

d)拥塞引起走线不正常

一般可以通过device视图中观察,如果走线路径比较扭曲,明显不是最优路径,可以考虑是由于拥塞引起,需要进一步分析该区域的congestion程序

二、经验总结

1、时序分析应该贯穿整个综合实现流程,综合后就可以采用report_design_analysis命令对扇出、逻辑级数等进行分析,增加迭代速度;

2、优先采用default策略进行实现,可以避免工具过多的优化设计,更好地暴露时序问题的根本原因;

3、不同器件、不同设计频率下,推荐最大逻辑级数和扇出不同,例如ultrascale器件,设计频率大于400MHz时,最长逻辑级数尽量控制在3以下;

4、跨SLR信号建议源和目的模块各寄存一级

注:参考文档为《ug906-vivado-design-analysis》。

时间: 2024-11-06 12:15:19

Vivado时序分析方法——report_design_analysis(一)的相关文章

VIVADO时序分析练习

VIVADO时序分析练习 时序分析在FPGA设计中是分析工程很重要的手段,时序分析的原理和相关的公式小编在这里不再介绍,这篇文章是小编在练习VIVADO软件时序分析的笔记,小编这里使用的是18.1版本的VIVADO. 这次的练习选择的是ZYNQ的芯片,原本工程是工作在100MHz的时钟,但是作为练习,我们可以把时钟调到一个极限的程度来进行优化. 首先,打开一个工程,更改一下时钟频率,使得工程能够有一些时序问题,我们再通过时序分析的方法对它进行优化.我们这里把原本的100M时钟改成了200M时钟,

FPGA转

如何学习FPGA verilog 学Quartus II+Verilog三步走checklist2009-04-17 13:37//**************************************************************** // 入门篇: (秋干勿燥,冬去春来) //**************************************************************** 01. 建立项目 02. Verilog a). nand/no

Vivado将模块封装为IP的方法(网表文件)【转】

. https://blog.csdn.net/u011435907/article/details/78233375 在给别人用自己的工程时可以封装IP,Vivado用封装IP的工具,可以得到像xilinx的ip一样的可以配置参数的IP核,但是用其他工程调用后发现还是能看到源文件,如何将工程源文件加密,暂时没有找到方法,如果知道还请赐教.而直接用.edif网表文件作为ip的方法如下: 1.建立工程设置顶层模块 将需要封装的模块设置为顶层模块.(shift_bus模块) 2.综合待封装模块 vi

hello world之vivado程序解决方法

体验米尔zynq系列Z-turn Board单板时,我开始用vivado.在安装vivad工程中出了一些问题,经过不懈的重新安装,终于成功了. 下面分享我用vivado设计hello world程序:开始试用的2015.1版本,频频出错.关于hello world程序在2015.1的问题已经解决,方法是:1.使用14安装,不要安装15版本,2.重新修改函数,把错误的print改成printf,把platform里的cleanplatfrom删去,把table.s里面自动生成检测到的错误删去3.此

Vivado Launching SDK &quot;Importing Hardware Specification&quot; error的解决方法

解决方法是通过参考http://forum.digilentinc.com/topic/611-vivado-launching-sdk-importing-hardware-specification-error/解决的. 这个问题的出现是由于工程路径中有空格出现导致的. 例如D:\work sapce\是错误的因为包含了一个空格,应去掉空格符,如D:\worksapce\

Vivado Zynq 学习

目标 --------------------------------------------------- 视图菜单 (Vivado SDK) 文件目录 文件格式 流程:工程 -> 非工程 -> 脚本 Create Hardware Design Create Hardware IP Use    Hardware IP:  ARM AXI USB DMA RAM CLK RST Create Software Design 方法 ------------------------------

Vivado增量式编译

Vivado 中的增量设计会重新利用已有的布局布线数据来缩短运行时间,并生成可预测的结果.当设计有 95% 以上的相似度时,增量布局布线的运行时间会比一般布局布线平均缩短2倍.若相似度低于80%,则使用增量布局布线只有很小的优势或者基本没有优势. 当设计进行到后期,每次运行改动很小,在开始后端实现前读入的设计网表具有较高相似度的情况下,推荐使用 Vivado 的增量布局布线功能.运行增量流程的前提是有一个已经完成布局布线的参考设计检查点(Design Checkpoint, DCP)文件,并以此

Timequest Timing Analyzer进行时序分析(二)

四.用TimeQuest对DAC7512控制器进行时序分析 在对某个对象下时序约束的时候,首先要能正确识别它,TimeQuest会对设计中各组成部分根据属性进行归类,我们在下时序约束的时候,可以通过命令查找对应类别的某个对象. TimeQuest对设计中各组成部分的归类主要有cells,pins,nets和ports几种.寄存器,门电路等为cells:设计的输入输出端口为ports:寄存器,门电路等的输入输出引脚为pins:ports和pins之间的连线为nets.具体可以参照下图(此图出自Al

Timequest Timing Analyzer进行时序分析(三)

上面已经把DAC7512控制器中所有的时钟都创建好了.下面我们再额外讨论一下关于时钟属性方面的一些问题和在做时序分析时的处理方法.对于具有单一时钟的系统,设计和时序分析都相对简单.但是现在很多设计都有多个甚至几十个时钟乃至更多的时钟.比如说DAC7512控制器,在设计中用到的时钟实际上是有3个,CLK25M,CLK50M和DA_SCLK.在对多时钟设计进行时序分析的时候,我们首先要搞清楚各时钟之间的关系. 当设计中有多个时钟时,时钟之间可能存在三种关系,分别是同步,异步和互斥.如果两个或者多个时