使用邮箱 - 2023.2 简体中文

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

Document ID
UG1399
Release Date
2023-12-18
Version
2023.2 简体中文

自动重启 HLS 设计的主要优势在于可以像数据驱动的设计一样半自动运行,而无需与软件应用频繁交互,也无需软件控制。但是,自动重启内核还通过称为邮箱的功能来提供半同步,邮箱能够以异步、非阻塞的安全方式与软件应用交换数据。

HLS 设计经由软件应用启动后,会自动重启直至被显式停止为止。软件应用也可以查询设计的状态,以确定在得到执行指示后实际完成执行的时间。应用和自动重启设计都使用以下通信协议:

  • 为了将实参值从软件应用传递到设计,邮箱会实现一组双重缓冲的 s_axilite 映射寄存器,以确保软件应用的输入与设计输出之间能够以非阻塞方式进行通信,并且能够以一致方式来传递软件应用的输入和设计输出。
  • 每当软件应用写入输入实参时,都会更改软件侧副本。硬件中运行的 HLS 设计看不到此更改。软件应用请求邮箱写入后,下次自动重启设计时,将以最新输入来更新设计所看到的寄存器副本。因此,软件应用可按任意顺序写入任意数量的实参,在软件应用请求邮箱写入后,HLS 设计才会看到这些更新,并且设计会重新启动。
    提示: 如果某些实参是映射到 s_axilite 寄存器文件的阵列,则必须在连续邮箱写入之间写入整个阵列,因为它是作为乒乓缓冲器来实现的。
  • 当 HLS 设计写入到设计侧的寄存器内并请求邮箱读取时,在输出侧会发生相同的过程。下次执行设计时,将更新 s_axilite 映射输出实参的值,并且软件应用可按需读取这些值。

因此,软件应用具有以下条件:

  • 不负责在每次执行 HLS 设计时提供输入数据且不负责在完成时收集输出数据,就像控制驱动的设计一样。
  • 不定时参与设置和更新某些设计输入参数(例如,布线表等)并检查设计执行的状态。通常在软件应用与 HLS 设计之间无固定通信速率的情况下完成此半同步操作。
  • 当软件应用要将一组新参数发送到 HLS 设计时,它会忽略设计的执行状态。当软件应用需要检查 HLS 设计的状态时,它会忽略设计的执行状态。它只要求为硬件持续执行参数更新和状态检查即可。