DSP

关系UltraFAST设计方法的研究和整理

2019-07-13 20:43发布

1.   UrtraFAST设计指南

1.1  合适的代码风格

(1)多使用Vivado自带的代码模板;(2)尽量避免使用异步复位;(3)在模块边界上使用寄存器而非组合逻辑;(4)使用流水结构来降低逻辑层数;(5)采用适当的RAM和DSP的实现方式(是否使用硬核)(6)在逻辑综合或是逻辑优化(opt_design)后的时序报告上分析代码优化的方向。

1.2精准的时序约束

Vivado时序驱动的天性决定了其在设计实现的每一步都是以开始时读到的设计输入和约束为依据,尽量将最好的资源用在最差费路径上,从而尽最大可能完成时序收敛。这便是Baseline理论的基础,除了按顺序设置精准的时序约束,在设计实现的每一步,都要关注时序报告,并以其为依据来调整设计源代码或是应用其他必要的约束和选项来优化设计,保证每一阶段之后的时序报告都满足约束或是仅余300ps以内的时序违例,再进入下一阶段的设计实现过程。

1.3管理高善出网络

Vivado中,除了关注时序报告,尤其是布局后布线前的报告来定位关键路径上影响时序的高善出网络外,还有一个专门的命令report_high_fanout_nets,在给其加上-timing的选项后,可以在报告高扇出路径的同时报告出这条路径的 Slack,帮助用户直观了解当前路径的时序裕量。此外,这个命令在报告中还会指出高扇出网络的驱动类型,是 FF 或是 LUT 等。找到目标后,可以使用max_fanout来限定其善出值,让工具在实现过程中复制驱动端寄存器来优化,如果高善出网络并不是由同步逻辑来驱动,则可能够需要修改代码。工具层面上的降善出方法:更强更有针对性的策略,或是允许多次物理优化phys_opt_design,“钩子”脚本等方式来进行局部降善出的物理优化等等。注意:Vivado综合选项中的全局善出要谨慎使用,不能将其设置的锅底以免综合出的网表过于庞大,带来资源上的浪费,并导致局部资源拥塞。

1.4层次化设计结构

Vivado中的IP设计是原生的自底向上流程,用户可以将IP生产独立的DCP再加到设计中去,也可以将某些相对固定或独立的模块综合成DCP后加入顶层设计,这么做除了加快设计迭代外,也更利于设计开始阶段的调试和问题的定位。

1.5 处理跨时钟域设计

详情见UG949,report_cdc和DRC报告中的methodology_checks来检测设计中的CDC结构问题,并作出具体的设计调整或是补全CDC约束。

1.6少而精的物理约束

    这里的物理约束更多强调的是除了I/O引脚位置这些必要项之外的约束,例如RAMB和DSP48的位置约束,还有局部的floorplan计划。(Vivado在布局上比上一代ISE更好,没有物理约束(除了IO引脚位置约束)的设计反而更好地满足时序要求)。最好只在少量关键的设计区域进行floorplan,切记过度约束,不要创建资源利用率过高的pblocks,同时避免重叠的pblocks区域。

1.7选择实现策略

    策略(Strategy)是一组工具选型和各个阶段指示(Directive)的组合,Vivado IDE中设置了几十种可供用户直接选用,但如果穷尽各种组合,整个太复杂,策略是一种可预计可重现的实现方法。可以选择几种有侧重点的策略后挑选出效果最好的那个。

1.8共享控制信号

在Xilinx芯片上,时钟置位/复位和时钟使能等信号统称为Control Set,进入同一个SLICE的Control Set必须统一,不同Control Set控制下的FFS不能被Vivado放进同一个SLICE。为了提升SLICE的利用率,获得更高效的布局方案,提升时序性能,必须控制一个设计中Control set的总数,尽量共享控制信号,具体做法为:1.     尽量整合频率相同的时钟和时钟使能信号;2.     在生成IP时选择“共享逻辑功能”,可以在不同IP间尽可能的共享时钟资源;3.     遵循Xilinx建议的复位准则:(1)尽量少使用复位(2)必须复位时采用同步复位(3)确保使用高电平有效复位(4)避免异步复位(RAM和DSP48)模块中不支持异步复位。

1.9读懂日志和报告

    Vivado的报告功能很强大,小到检查设计中的特定时序元件和链路,大到各种预置和自定的DRC检查,保证了设计的可靠性。具体report命令和功能可以在UG835中查询。

1.10发挥Tcl作用

    用户甚至可以直接把包含有循环等功能的高级约束以 Tcl 的形式读入Vivado 中用来指引整个实现流程。《Vivado 使用误区与进阶》系列中有三篇关于 Tcl 在 Vivado 中的应用文章,详细描述了如何使用 Tcl 创建和应用约束,查找目标和定位问题;如何用 Tcl 来定制 Vivado 的设计实现流程,为图形化界面提供更多扩展支持;以及如何用 Tcl 实现 ECO 流程。 Tcl 所带来的强大的可扩展性决定了其在版本控制、设计自动化流程等方面具有图形化界面不能比拟的优势。