Intel® Hyperflex™ 体系结构高性能设计手册

ID 683353
日期 10/04/2021
Public
文档目录

8.2.1.1. 同步复位汇总

同步清零能够限制重定时的数量。同步清零存在两个问题,它们可以导致重定时出错:

  • 一条短路径,通常直接从源寄存器到目的寄存器,中间没有任何逻辑。短路径通常不是一个问题,因为Compiler将正裕量(positive slack)重定时到更长的路径。该retiming提升了性能。但是,短路径通常连接到需要重定时的长数据路径。通过将很多寄存器重定时,寄存器被推下或拉上至这个短路径。在正常逻辑中这不是一个大问题,但由于同步清零通常具有较大的扇出,因此此问题会更加显著。
  • 同步清零有很大的扇出。当主动重定时(aggressive retiming)将寄存器向上或向下推入同步清除路径时,路径会混乱,直到它们不能接受更多寄存器。这种情况会导致路径长度不平衡,并且Compiler不再从同步清零路径中拉更多寄存器。

当Compiler通过ALM寄存器对第二个寄存器进行重定时时会出现主动重定时(aggressive retiming)。

图 138. 主动重定时(Aggressive Retiming)

Intel® Hyperflex™ 体系结构FPGA在SCLR路径上有一个专用的Hyper-Register,能够将ALM寄存器置于旁路模式。此功能使您能够推拉此寄存器。如果向前推动寄存器,则必须从SCLR路径拉下一个寄存器,然后将两个寄存器合并。如果向后推寄存器,则必须上推一个复制寄存器到沿SCLR路径上。您可以同时使用这两个选项。但是,当多个寄存器上下推拉寄存器到同步清零布线上时,会造成瓶颈。

请实际方式使用复位。控制逻辑主要需要同步复位。不需要同步复位的逻辑有助于时序。关于同步复位,请参考以下指南:

  • 避免在必须高速运行的新代码中进行同步复位。此限制通常适用于系统处于复位状态时刷新的数据路径逻辑,或者具有系统在退出复位时忽略的值的逻辑。
  • 控制逻辑通常需要一个同步复位,因此在此情况下没有避免此复位。
  • 对于高速运行的现有逻辑,尽可能移除复位。如果您不了解复位时的逻辑行为,那么要保持同步复位。只有出现时序问题时才移除同步清零。
  • 流水线化同步清零。此方法在寄存器必须被拉回时是不起作用的,但在寄存器必须拉进到数据通路中时是有帮助的。
  • 针对不同的层次结构重复同步清零逻辑。这种技术限制了同步清零的扇出,以便Compiler可以用本地逻辑重新清零。只有在您确定现有同步清零功能和大型扇出限制重定时后才应用此技术。此技术不难在后端使用,因为此技术不会改变设计功能。
  • 针对不同时钟域和反相时钟重复同步清零。此方法能够克服一些由边界或多周期要求问题导致的重定时限制。