检查推断的逻辑 - 2023.2 简体中文

Versal 自适应 SoC 硬件、IP 和平台开发方法指南 (UG1387)

Document ID
UG1387
Release Date
2023-11-15
Version
2023.2 简体中文

对设计进行编码时,请注意正在推断的逻辑。请注意如下条件,以了解其他流水线设置注意事项:

  • 带有大扇入的逻辑椎

    例如,需要大量总线或多个组合信号来计算输出的代码。

  • 布局受限、时钟输出缓慢或者具有较高的建立时间要求的块

    例如,块 RAM 内不含输出寄存器或者未适当流水打拍的算术代码。

  • 导致布线过长的强制布局

    例如,如果管脚分配强制跨芯片布线,则可能需要流水打拍才能执行高速操作。

  • 包含大量 XOR 函数的逻辑

    大量 XOR 函数通常导致转换率高,由此造成大量动态功耗损耗。对这些函数进行流水打拍可降低转换率,从而对所述电路的功耗产生积极影响。

在下图中,时钟速度受下列因素限制:

  • 源触发器的时钟输出时间
  • 贯穿四个逻辑层次的逻辑延迟
  • 四个函数发生器的相关布线
  • 目标寄存器的建立时间
图 1. 流水打拍前

使用下列任一方法确保设计正确使用流水线寄存器:

  • 在 RTL 代码中,在要重定时的逻辑之前或之后(最好在层级内)添加寄存器。
  • 使用 Vivado 综合全局重定时或 BLOCK_SYNTH.RETIMING 选项,分析路径时序并移动寄存器以改善时序(如可能)。
  • 或者为了进一步控制,可使用 retiming_forwardretiming_backward 综合属性。您可在特定寄存器上添加这些属性,强制工具穿过组合逻辑进行定时,忽略逻辑的时序得分。如需了解有关这些属性的更多信息,请参阅 Vivado Design Suite 用户指南:综合(UG901)

下图显示了添加额外寄存器之后的流水打拍。

图 2. 添加额外寄存器后的流水打拍

下图是“流水打拍前的图示”中所示的数据路径示例。由于触发器与函数发生器包含在相同 slice 内,时钟速度受到下列要素的限制:源触发器的时钟输出时间、贯穿 1 个逻辑层次的逻辑延迟、布线延迟,以及目标寄存器的建立时间。在此示例中,完成流水打拍和重定时之后,系统时钟运行速度比原始设计中更快。

图 3. 重定时后流水打拍

以下代码示例演示了如何使用重定时属性来强制执行“重定时后流水打拍”图例中所示的特定重定时。

(* retiming_backward = 3 *) reg reg1;
(* retiming_backward = 2 *) reg reg2;
(* retiming_backward = 1 *) reg reg3;