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. 延迟线
8.2.3. 解决短路径
彼此临近的重定时寄存器可能会在更高速度上触发保持违规。下图显示了一条短路径是如何限制重定时的。
图 145. 短路径限制重定时在此实例中,向前重定时推动一个寄存器到两条路径上,但一条路径有用于重定时的寄存器,而另一个路径没有。
在左侧电路中,如果寄存器#1将被向前重定时,那么上面路径有一个可用的slot。然而,下面路径不能接受重定时的寄存器。重定时的寄存器与一个正在使用中的相邻寄存器太近,从而导致保持时间违规。 Compiler检测到这些短路径,并将寄存器布线到更长的路径,如右侧电路所示。这种方法确保了有足够的slot用于重定时。
下面两个实例解决了短路径问题:
案例1: 一个设计在400 MHz上运行,Fast Forward compile报告建议添加一个流水线阶段以达到500 MHz,并添加第二个流水线阶段以实现600 MHz性能。
限制原因是短路径/长路径。添加Compiler建议的两阶段流水线(two-stage pipelining)来实现600 MHz的性能。如果限制原因还是短路径/长路径,那么这意味着Router已经达到尝试修复设计中的短路径的极限。此时您可能已经达到目标性能,或者这不再是关键路径。
案例2: 一个设计在400 MHz上运行,Fast Forward compile报告没有建议添加流水线阶段。
如果短路径/长路径是重定时的直接限制原因,那么这意味着Router已经达到尝试修复短路径的极限。将流水线阶段添加到报告的路径中是没有帮助的。您必须优化设计。
彼此临近的重定时寄存器可能会在更高速度上触发保持违规。Compiler在Path Info下的重定时报告中报告此情况。如果没有足够的Hyper-Registers,Compiler也会报告短路径。当节点包括短路径以及长路径时,将流水线寄存器添加到这两条路径将有助于时序。