hls::stream.capacity()
方法会返回无符号整数,用于定义串流可保存的元素的最大数量,或者串流的总深度。这样您即可在写入前检查通道内可用的空间量。
hls::stream<int> my_stream;
int var = 16;
if ((my_stream.capacity() - my_stream.size()) >= N) {
for (int=0; i<N;i++)
my_stream.write(...); // this will not block
}
提示: 在 C 语言仿真中,
hls::stream.capacity()
会返回 MAXINT 作为理论限值。在综合与 C/RTL 协同仿真中,它会返回计算所得的串流容量。仅当存在特定量的空间或数据可供传输事务使用时,hls::stream.capacity()
方法和
hls::stream.size()
方法才能启用高级流程控制用于读取或写入串流。例如,启动大小为 N 的读取突发前,您可检查输入串流中是否存在 N 个数据项可供突发正常完成操作而不会发生停滞。对于写入突发,您还可检查输出串流中是否存在足够空间可用于存储突发数据而不会发生停滞。