set_directive_protocol - 2021.2 Chinese

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

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

描述

此命令用于指定代码区域(协议区域),除非代码中明确指定,否则 Vitis HLS 不会在其中插入时钟操作。Vitis HLS 将不会在该区域内的运算之间插入任何时钟,包括读取或写入函数实参的运算。因此,读取和写入顺序严格遵循已综合的 RTL 中的顺序。

在 C/C++ 代码中可以通过使用“{ }”将区域括起或者对该区域进行命名来创建代码区域。以下示例定义了名为 io_section 的区域:
io_section:{
...
lines of code
...
}

在 C 语言代码中,可使用 ap_wait() 语句来显式指定时钟运算,在 C++ 代码中则可使用 wait() 语句来指定该运算。ap_waitwait 语句对于设计的仿真没有影响。

语法

set_directive_protocol [OPTIONS] <location>

<location> 用于指定定义协议区域的位置(格式为 function[/label])。

选项

-mode [floating | fixed]
  • floating:表示浮动模式,允许协议区域外的代码语句与最终 RTL 内协议区域中的语句重叠且并行执行。协议区域可保持时钟精确,但仍可同时发生外部运算。这是默认模式。
  • fixed:表示固定模式,fixed 模式可确保协议区域外部的语句不会与协议区域并行执行。

示例

此代码示例在函数 foo 内定义了协议区域 io_section。以下指令用于将该区域定义为固定模式协议区域:
set_directive_protocol -mode fixed foo/io_section

另请参阅