转载自“
”公众号:在数字电路设计中,要求模块设计中保持寄存器输入输出,这样做有利于时序收敛。
UG949中给出了参考建议:层级边界输出加寄存器是为了将关键路径限定在单个模块或边界之内。也可以在层级边界考虑输入加寄存器。通常而言,分析并修复位于一个模块中的时序路径比跨多个模块的路径要容易得多。任何在层级边界上的路径为寄存器化,都应在重建层级或扁平化层级的条件下完成综合,以实现跨层级优化。在逻辑边界上寄存数据路径有助于在整个设计进程中保持(用于调试的)可跟踪性,因为这样可以尽量避免跨层级优化,逻辑也不必跨模块移动。这样才能使系统保持更好的时序。
关于Xilinx器件和Vivado适用的代码风格,《Vivado使用误区与进阶》有以下建议:
- 多使用Vivado自带的代码模板;
- 尽量避免使用异步复位;
- 在模块边界上使用寄存器而非组合逻辑;
- 使用流水结构来降低逻辑层数;
- 采用适当的RAM和DSP的实现方式(是否选用硬核);
- 在综合后或是逻辑优化(opt_design)后的时序报告上分析代码优化的方向。