PL 内核时钟设置 - 2022.1 简体中文

Versal ACAP AI 引擎编程环境 用户指南 (UG1076)

Document ID
UG1076
Release Date
2022-05-25
Version
2022.1 简体中文

PLIO 表示对接 PL 的 ADF graph 接口。此 PL 可以是 PL 内核、表示信号源或宿端的平台 IP,或者也可以是用于将 ADF graph 对接到存储器的数据移动器。您应为这些接口提供时钟频率值,以确保仿真结果与在硬件中运行设计的结果相匹配。此外,将 ADF graph 链接到平台时,在 Vitis 连接器 (v++ -link) 步骤中,根据平台支持的特定时钟频率值,您可提供更准确的时钟值。要在 graph 中设置 PLIO 接口的精确频率以及对应 PL 内核的时钟频率,您必须在三处位置指定时钟频率:

  • ADF graph(可选)
  • Vitis 编译 PL 内核 (v++ -c) 时
  • Vitis 链接 (v++ -l) 时

您必须根据内核所在位置指定时钟设置。下表描述了基于内核位置的默认时钟。

表 1. 默认内核时钟
内核位置 描述
AI 引擎内核 AI 引擎时钟频率进行时钟设置。所有核都按相同时钟频率来运行。
PL 内核连接到 AI 引擎 graph HLS:所有 HLS 内核的默认频率为 150 MHz

RTL:频率设置为编译 XO 文件时的频率。

AI 引擎:在 AI 引擎 graph 的 PLIO 构造函数内设置。此处设置频率为可选操作。如需了解更多信息,请参阅 自适应数据流 graph 规范引用 1

使用 Vitis 连接器添加到平台的 PL 内核 平台具有默认时钟。如果在命令行或配置文件中未设置任何时钟选项,则使用默认时钟。根据设计和所需时钟值,可覆盖此默认设置,如下表所示。
  1. 如果在 PLIO 构造函数中未提供 PLIO 频率,那么 AI 引擎编译器默认会将频率设为 AI 引擎时钟频率的四分之一。当您确定目标平台后,赛灵思建议您显式设置 PLIO 时钟频率,使 AI 引擎仿真对于您的应用而言更具有代表性。
注释: 根据器件速度等级,受支持的最大 PLIO 接口时钟频率是 AI 引擎时钟频率的一半。如果您指定更高的频率,Vitis 连接器将把频率限制为受支持的最大频率,并且将在连接器阶段发出严重警告。

Vitis 连接器步骤中设置时钟支持您基于平台选择频率。下表描述了链接步骤期间的 Vitis 编译器时钟设置选项。

表 2. Vitis 链接时钟选项
[clock] 选项 描述
--clock.defaultFreqHz arg 指定要使用的默认时钟频率 (Hz)。
--clock.defaultId arg 指定要使用的默认时钟参考 ID。
--clock.defaultTolerance arg 指定要使用的默认时钟容限。
--clock.freqHz arg <frequency_in_Hz>:<cu_0>[.<clk_pin_0>][,<cu_n>[.<clk_pin_n>]]

指定时钟频率(以 Hz 为单位)、关联计算单元名称列表及其时钟管脚(可选)。

--clock.id arg <reference_ID>:<cu_0>[.<clk_pin_0>][,<cu_n>[.<clk_pin_n>]]

指定时钟参考 ID、关联计算单元名称列表及其时钟管脚(可选)。

--clock.tolerance arg <tolerance>:<cu_0>[.<clk_pin_0>][,<cu_n>[.<clk_pin_n>]]

指定时钟容限、关联计算单元名称列表及其时钟管脚(可选)。

下表描述了为对接平台的 PLIO 设置时钟频率的步骤,包括与 ADF graph 范围外指定的 PL 内核对接的 PLIO。

表 3. 使用非默认时钟设置编译 PL 内核
PL 内核位置 时钟规格
ADF graph 中指定的 PLIO 接口 按 graph 中的 PLIO 接口指定时钟频率。

对于 PLIO 接口,您可指定 FreqMHz(可选)。

adf::input_plio <interface_name> = adf::input_plio::create(<logical_name>, <plio_width>, <file>, <FreqMHz>);
HLS 内核 使用 Vitis 编译器编译 HLS 代码。
v++ -c -k kernelName kernel.cpp --hls.clock freqHz:kernelName

要更改已编译的 HLS 内核的频率,请使用 --hls.clock arg:kernelName

arg 必须以 Hz 为单位(例如,250000000Hz 表示 250 MHz)。

按内核,在 Vitis 连接器中指定时钟。
v++ -l ... --clock.freqHz <freqHz>:kernelName.ap_clk
RTL 内核 按内核,在 Vitis 连接器中指定时钟。
v++ -l ... --clock.freqHz <freqHz>:kernelName.ap_clk
注释: Vitis 连接器阶段的 PL 内核的时钟频率优先于 Vitis 编译时时钟频率值。但 Vitis 连接器阶段所指定的时钟频率值不应明显超过 Vitis 编译器时钟频率过多,因为 Vitis 编译器会基于指定的目标频率来生成 RTL。

如需了解有关如何为特定平台时钟编译内核的更多详细信息以及相关时钟设置信息,请参阅 Vitis 统一软件平台文档:应用加速开发(UG1393)