仅对英特尔可见 — GUID: mtr1430269575098
Ixiasoft
2.4.2.1. 高速时钟域(High-Speed Clock Domains)
2.4.2.2. 重构环路(Restructuring Loops)
2.4.2.3. 控制信号反压(Control Signal Backpressure)
2.4.2.4. 使用FIFO状态信号的流程控制
2.4.2.5. 包含skid缓冲器的流程控制
2.4.2.6. Read-Modify-Write存储器
2.4.2.7. 计数器和累加器
2.4.2.8. 状态机
2.4.2.9. 储存器
2.4.2.10. DSP模块
2.4.2.11. 一般逻辑
2.4.2.12. 求模与除法
2.4.2.13. 复位
2.4.2.14. 硬件重用
2.4.2.15. 算法要求
2.4.2.16. FIFO
2.4.2.17. 三元加法器(Ternary Adders)
5.2.1. 不足的寄存器(insufficient Registers)
5.2.2. 短路径/长路径(short path/long path)
5.2.3. 快进限制(Fast Forward Limit)
5.2.4. 环路(loop)
5.2.5. 每个时钟域一个关键链
5.2.6. 相关时钟组中的关键链
5.2.7. 复杂的关键链
5.2.8. 延伸到可定位的节点
5.2.9. 域边界入口和域边界出口(Domain Boundary Entry and Domain Boundary Exit)
5.2.10. 包括双时钟存储器的关键链
5.2.11. 关键链比特和总线
5.2.12. 延迟线
仅对英特尔可见 — GUID: mtr1430269575098
Ixiasoft
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可以用本地逻辑重新清零。只有在您确定现有同步清零功能和大型扇出限制重定时后才应用此技术。此技术不难在后端使用,因为此技术不会改变设计功能。
- 针对不同时钟域和反相时钟重复同步清零。此方法能够克服一些由边界或多周期要求问题导致的重定时限制。