hls::stream.read_nb()
方法会尝试从串流中读取值,成功则返回 true
。否则返回 false
,队列不受影响。
// Usage of bool read_nb(const T & wdata)
hls::stream<int> my_stream;
int dst_var;
if (my_stream.read_nb(dst_var)) {
// Perform standard operations
...
} else {
// Read did not occur
return;
}
非阻塞行为也可以使用含空串流检查的阻塞读取操作来进行建模,如 hls::stream.empty() 方法 中所述。这可能导致不确定行为,应在含复杂测试激励文件的 RTL 仿真中进行验证。
READ_ONLY_LOOP:
while (check != 0) {
if ( !addr_strm.empty() )
{
addr_strm.read_nb(addr_for_HBM);
hbm[addr_for_HBM] = some_data;
check[0] = 1;
...
}
...
...
check = (check << 1);
}