非阻塞 API - 2022.1 Chinese

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

Document ID
UG1399
Release Date
2022-06-07
Version
2022.1 简体中文
重要: 仅在使用 ap_fifo 协议的接口上支持非阻塞 API。更确切地说,AXI-Stream (axis) 协议不支持非阻塞访问。

非阻塞一词表示串流上缺少数据(或者数据过多)不会阻塞函数运算或循环迭代。非阻塞方法会返回布尔值以表示读取或写入的状态:true 表示成功,false 表示失败。但使用非阻塞 API 可能导致不确定行为,在 C 语言仿真或 RTL/协同仿真期间无法充分确认此类行为,需要通过 RTL 测试激励文件来对其进行详尽测试。从空 FIFO 读取或者写入已满的 FIFO 时,可能发生不确定行为。

在 C 语言仿真期间,串流大小无限。因此,无法通过 C 语言仿真确认串流是否已满。只能在 RTL 仿真期间已定义 FIFO 大小(默认大小 1,或者通过 STREAM 指令定义的任意大小)的情况下验证这些方法。

重要: 如果设计指定为使用块级 I/O 协议 ap_ctrl_none 且设计包含采用非阻塞行为的任意 hls::stream 变量,则无法保证能否完成 C/RTL 协同仿真。