描述
指定代码的某个协议区域,除非此代码另有明确指示,否则 Vitis HLS 在此区域中不会插入时钟操作。该工具不会在该区域内的运算之间插入任何时钟,包括读取或写入函数实参的时钟。已综合的 RTL 严格遵守读取和写入的顺序。
在 C/C++ 代码中可以通过使用“{ }”将区域括起或者对该区域进行命名来创建代码区域。以下示例定义了名为
io_section 的区域:io_section:{
...
lines of code
...
}
您可以使用 ap_wait() 语句来指定 C 语言代码中的时钟操作。您可以使用 wait() 语句来指定 C++ 代码中的时钟操作。
提示:
ap_wait 和 wait 语句对于设计的仿真没有影响。语法
syn.directive.protocol=[OPTIONS] <location>
<location> 用于指定您定义协议区域的具体位置(格式为 function[/label])。
选项
-
mode=[floating | fixed] -
-
floating:表示浮动模式,允许协议区域外的代码语句与最终 RTL 内协议区域中的语句重叠且并行执行。协议区域可保持时钟精确,但仍可同时发生外部运算。这是默认模式。 -
fixed:表示固定模式,fixed 模式可确保协议区域外部的语句不会与协议区域并行执行。
-
示例
此代码示例在函数
foo 内定义了协议区域 io_section。以下指令用于将该区域定义为固定模式协议区域:syn.directive.protocol=mode=fixed foo/io_section