多重访问指针和 RTL 仿真 - 2023.2 简体中文

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

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

当多次访问接口上的指针以进行读写时,Vitis HLS 无法从函数接口判定执行的读写次数。函数接口中的实参也无法告知 Vitis HLS 读写的值的数量。

void pointer_stream_good (volatile dout_t *d_o, volatile din_t *d_i) 

除非代码告知 Vitis HLS 所需的值的数量(例如,阵列的最大大小),否则该工具假定仅含单个值,并仅为单一输入和单一输出进行 C/RTL 协同仿真建模。如果 RTL 端口实际读写多个值,那么 RTL 协同仿真将中止运行。RTL 协同仿真会对通过端口接口连接到 RTL 设计的外部生产者和使用者块进行建模。如果需要多个值,RTL 设计会在尝试读写多个值时停滞,原因是当前没有要读取的值,或者没有可供写入的空间。

在接口上使用多重访问指针时,必须将接口上必需的读写次数告知 Vitis HLS。手动为指针接口指定 INTERFACE 编译指示或指令,并将 depth 选项设置为所需的深度。

例如,以上代码样本中的实参 d_i 要求 FIFO 深度为 4。这样可确保 RTL 协同仿真提供足够的值以正确验证 RTL。