上期内容:(a-b)^2如何高效实现?
在Vivado FlowNavigator中有一个Elaborated Design,如下图所示,属于RTL Analysis这一步对应的设计。可能很多工程师都没有使用到,而实际上对于代码优化,它是很有帮助的。
通常情况下,我们总是习惯了打开综合后的设计,执行诸如
- report_timing
- report_timing_summary
- report_design_analysis
等命令分析时序,却忽视了RTL代码层面的优化。通过这些命令找到关键路径之后,一个重要的步骤是检查这些路径上的逻辑单元是否很好地映射到FPGA器件中。如果没有,就要尝试通过修改RTL代码、使用综合属性(Synthesis Attribute)、设置综合选项、使用BlockLevel综合技术或者使用不同的综合策略优化RTL代码,使得在综合之后时序能够达到一个较好的结果。这对于逻辑级数较高的路径尤为重要。因为高逻辑级数的路径会对后期布局布线带来很大的压力,同时成为设计整体性能提升的瓶颈,更明显的是改善高逻辑级数路径的常用且有效的方法是插入流水寄存器以降低逻辑级数,这一工作在设计初期完成最为快捷,越是在设计后期越难以做这一工作。
在Vivado Project模式下,同时打开Synthesized Design和ElaboratedDesign。在Synthesized Design下对设计进行分析,找到设计的关键路径,生成相应的时序报告,如下图所示。选中图中的时序路径,按下F4,会生成该路径对应的Schematic视图,同时还可以看到路径上的逻辑单元(cell)和单元之间的连线(net)都已被选中。此时切换到Elaborated Design,按下F4,可看到这条路径在Elaborated Design下的Schematic视图。这时候就可以检查这条路径的RTL逻辑单元,尤其是注意执行了哪些操作、数据位宽是否合理。
文 | Lauren 图 | Lauren
Copyright @ Lauren的FPGA
转载事宜请私信 | 获得授权后方可转载