config_op - 2021.2 Chinese

Vitis 高层次综合用户指南 (UG1399)

Document ID
UG1399
Release Date
2021-12-15
Version
2021.2 Chinese

描述

设置默认选项,用于将运算符(add、mul、sub...)的微架构绑定到 FPGA 实现资源,并指定其时延。

绑定是将运算符(如、加法、乘法和位移)映射到特定 RTL 实现的过程。例如,作为组合或流水打拍 RTL 乘法器来实现的 mult 运算。

此命令可多次使用以配置不同运算类型到不同实现资源的默认绑定,或者为该运算指定默认时延。可通过为特定设计元素指定 BIND_OP 编译指示或指令来覆盖 config_op 所定义的默认配置。

语法

config_op [OPTIONS] <op>
<op>
为指定的变量指定运算类型。支持值包括:
  • mul:整数乘法运算

  • add:整数加法运算

  • sub:整数减法运算

  • fadd:单精度浮点加法运算

  • fsub:单精度浮点减法运算

  • fdiv:单精度浮点除法运算

  • fexp:单精度浮点指数运算

  • flog:单精度浮点对数运算

  • fmul:单精度浮点乘法运算

  • frsqrt:单精度浮点平方根倒数运算

  • frecip:单精度浮点倒数运算

  • fsqrt:单精度浮点平方根运算

  • dadd:双精度浮点加法运算

  • dsub:双精度浮点减法运算

  • ddiv:双精度浮点除法运算

  • dexp:双精度浮点指数运算

  • dlog:双精度浮点对数运算

  • dmul:双精度浮点乘法运算

  • drsqrt:双精度浮点平方根倒数运算

  • drecip:双精度浮点倒数运算

  • dsqrt:双精度浮点平方根运算

  • hadd:半精度浮点加法运算

  • hsub:半精度浮点减法运算

  • hdiv:半精度浮点除法运算

  • hmul:半精度浮点乘法运算

  • hsqrt:半精度浮点平方根运算

  • facc:单精度浮点累加运算

  • fmacc:单精度浮点乘累加运算

  • fmadd:单精度浮点乘加运算

选项

-impl [dsp | fabric | meddsp | fulldsp | maxdsp | primitivedsp | auto | none | all]
定义指定运算的默认实现风格。默认为允许工具选择要使用的实现。选项包括:
  • all:所有实现。这是默认设置。

  • dsp:使用 DSP 资源

  • fabric:使用非 DSP 资源

  • meddsp:浮点 IP 中度使用 DSP 资源

  • fulldsp:浮点 IP 完全使用 DSP 资源

  • maxdsp:浮点 IP 最大程度使用 DSP 资源

  • primitivedsp:浮点 IP 原语使用 DSP 资源

  • auto:启用组合 facc | fmacc | fmadd 运算符的推断

  • none:禁用组合 facc | fmacc | fmadd 运算符的推断

-latency <value>
定义默认时延,用于将类型绑定到实现资源。有效值范围因运算的每个实现而异 (-impl)。默认值为 -1,即为实现资源应用标准时延。
提示: 无需指定实现详细信息,即可为特定运算指定此时延。这将交由 Vitis HLS 在管理时延的同时选择实现。
-precision [low | high | standard]
应用于 faccfmaccfmadd 运算符。指定给定运算符的精度。
  • low:使用低精度(60 位和 100 位整数)累加实现(如果可用)。该选项仅在某些非 Versal 器件上可用,由于 C++ 仿真相关精度不足,因此它可能导致 RTL/协同仿真发生不匹配。它始终采用流水打拍,且 II=1,无源代码更改,但所使用的资源量约为 standard 精度浮点累加所用资源量的 3 倍。
  • high:使用高精度(1 个额外的位)融合乘加实现(如果可用)。该选项可用于高精度应用,在 Versal 器件上非常高效,但由于 C++ 仿真相关的额外精度,因此它可能导致 RTL/协同仿真发生不匹配。它使用的资源比 standard 精度浮点累加更多。
  • standard:标准精度浮点累加和乘加适合大部分浮点用例,它是默认设置。它始终使用真正的浮点累加器,可在 Versal 器件上采用 II=1 来进行流水打拍,在非 Versal 器件上,II 通常介于 3 到 5 之间(取决于时钟频率和目标器件)。

示例 1

以下示例用于将加法运算绑定到互连结构,并具有指定的时延:

config_op add -impl fabric -latency 2

示例 2

以下示例启用低精度的浮点累加器,在非 Versal 器件上实现 II=1:

config_op facc -impl auto -precision low