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》。

 

posted @ 2016-08-14 12:11  trista_jz  阅读(15669)  评论(2编辑  收藏  举报