流水线考虑因素
另一种提升性能的方法是对拥有多个逻辑级数的长数据路径进行重新组织,并将其分配在多个时钟周期上。这种方法
以时延和流水线开销逻辑管理为代价,来达到加快时钟周期和提高数据吞吐量的目的。
由于
FPGA
器件带有大量的寄存器,额外的寄存器和开销逻辑通常不是问题。但是,数据路径跨多个周期,您必须对
设计的其余部分进行特殊注意,以考虑所添加的路径时延。
考虑
SSI
器件的流水线
在对需要
SLR
边界交汇的高性能寄存器间连接进行设计时,必须在
HDL
代码中描述正确的流水线,同时在综合中加以
控制。这样可以确保移位寄存器
LUT (SRL)
推断和其它优化工作不会发生在必须跨
SLR
边界的逻辑路径上。以这种方式
修改代码加上适当使用
Pblock
可以设定
SLR
边界交汇发生的位置。
预先考虑流水线
预先而不是滞后考虑流水线可以降低时序收敛的难度。在较晚阶段对特定路径添加流水线常常会跨越电路传输时延差
异。这样一个看似微小的修改可能需要对部分代码进行大规模的重新设计。
在设计中尽早发现需要使用流水线的地方往往可以大幅度提升时序收敛、实现运行时间 (因时序问题更容易解决)和
器件功耗 (因逻辑转换数量下降)。
检查推断的逻辑
在对您的设计进行编码时,应注意正在推断的逻辑。在想要添加流水线时,应注意下列条件:
•
带有大扇入的逻辑椎
例如,需要大量总线或多个组合信号来计算输出的代码
•
具有布局限制、输出相对于时钟时延
(clock-to-out)
更短或大量建立要求的块
例如,没有输出寄存器的块