描述
设置默认选项,用于将运算符(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]
- 应用于
facc
、fmacc
和fmadd
运算符。指定给定运算符的精度。-
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