掌握推断的结果 - 2023.2 简体中文

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

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

代码最终必须映射到器件中存在的资源上。请尽力理清所处理的关键架构中的关键算术、存储和逻辑元件。这样在对设计功能进行编码时,即可预测代码将映射到的硬件资源。理解此映射方式将便于您尽早洞悉所有潜在的问题。

以下示例演示了了解硬件资源和映射方式给某些设计决策所带来的帮助:

  • 对于超出 8 位的加法、减法和加减法,通常会使用进位链,并且每 2 位加法使用 1 个 LUT(即,8 位加 8 位的加法器使用 8 个 LUT 和关联的进位链)。对于三进制加法或者如果将任一加法器的结果与另一个值相加但中间不使用寄存器,那么,每 3 位加法使用 2 个 LUT(即,8 位加 8 位加 8 位的加法使用 16 个 LUT 和关联的进位链)。
  • 一般乘法针对的是 DSP 块。宽度不超过 27x24 的有符号位和宽度不超过 26x23 的无符号位将映射到单个 DSP 块。乘积更大的乘法可能会映射到多个 DSP 块。DSP 块内部具有流水打拍资源。

    针对推断到 DSP 块内的逻辑正确执行流水打拍操作可显著改善最大时钟频率并降低功耗。描述乘法时,围绕乘法进行三级流水打拍操作可生成最佳的建立时间、时钟输出 (clock-to-out) 和功耗特性。流水打拍操作层级过浅(一级或无)可能导致时序问题并导致这些块的功耗增加,而 DSP 内部的流水打拍寄存器却被闲置。

  • 深度不超过 16 位的 2 个 SRL 可映射到单个 LUT,而高达 32 位的单个 SRL 同样可映射到单个 LUT。
  • 对于可生成标准 MUX 组件的条件代码:
    • 4 选 1 MUX 可实现 1 个 LUT,从而生成 1 个逻辑层。
    • 8 选 1 MUX 可实现 3 个 LUT,从而生成 2 个逻辑 (LUT) 层。
    • 16 选 1 MUX 可实现 5 个 LUT,从而有效生成 2 个逻辑 (LUT) 层。

对于通用逻辑,请考虑给定寄存器的唯一输入的数量。根据此数量,可估算 LUT 数和逻辑级数。一般情况下,输入不超过 6 个时,始终生成 1 个逻辑层。理论上,2 个逻辑层可管理最多 36 个输入。但实际上,应假定 2 个逻辑层最多可管理约 20 个输入。总而言之,随着输入数量以及逻辑公式复杂性的提升,所需 LUT 和逻辑级数也会增加。

重要: 在设计周期中尽早检查硬件资源的可用性以及有效利用这些资源的方式即可简化修改工作。此方法较之设计周期后期时序收敛期间再行检查的效果更好。