Vivado工具是一个集成开发环境,包括综合和实现环境。我们可以根据工具给出的参数,来对我们的代码进行优化。
一、 综合后我们一般可以通过查看综合下面的这三个选项对时序进行分析:
(1)Report Timing Summary
在Unconstrained Path选项下面会给出未约束的时钟,可以在界面中直接对这些时钟进行约束。
一般会在Inter-Clock Paths选项下面查看时序不满足条件的时钟,在代码中分析后进行下一步的约束。
(2)Report Clock Network
(3)Report Clock Interaction
该图中出现时序不安全的时钟网络要进行处理。
综合后处理完时序问题之后,在实现阶段一般不会有问题,保险起见,实现完成后再确认一下上面三个选项中的内容。
二、实现
实现后我们在观察一下时序问题,如果没有问题,则可以使用tcl语句,查看一下扇出情况。
report_high_fanout_nets
对扇出比较大的信号,一般需要进行优化。
- 对于复位信号的高扇出情况,建议添加bufg走时钟网络,在Vivado Tools—>Language Templates中可查找对应器件的例化方式。
- 若高扇出信号为LUT,则建议修改为寄存器。
- 对于高扇出寄存器,建议在代码变量声明处添加(*MAX_FANOUT=Value*)综合约束,也可在综合选项中指定fanout_limit(参见文章《乱花渐欲迷人眼—Vivado之Synthesis》)