我正在尝试了解使用邮箱的FIFO的以下代码。我可以理解其中的大部分内容,但void'(FIFO.tryput(write_data)); // nonblocking write
和void'(FIFO.tryget(read_data) ); // nonblocking read
- 无效的目的是什么?我知道什么是空白,但程序中的void
和void'
是一样的吗?
interface fifo_channel_1 #(parameter FifoSize = 8, PtrSize = 4,
parameter type DataType = uniType);
DataType write_data; // packet coming from sending module
DataType read_data; // packet going to receiving module
bit fifo_empty, fifo_full; // FIFO status flags
mailbox #(DataType) FIFO = new(FifoSize); // FIFO is bounded mailbox
function automatic void Write (input DataType write_data);
void'(FIFO.tryput(write_data)); // nonblocking write
fifo_full = ~(FIFO.num < FifoSize);
endfunction
function automatic void Read (output DataType read_data);
fifo_empty = (FIFO.num == 0);
void'(FIFO.tryget(read_data) ); // nonblocking read
endfunction
modport sender (input write_data, // sending module's connections
output fifo_full,
import Write);
modport reader (output read_data, // reading module's connections
output fifo_empty,
import Read);
endinterface: fifo_channel_1
答案 0 :(得分:2)
使用void'
代替void
将避免产生它们的模拟器发出警告;否则,2将表现相同。
根据{{3}},第13.4.1节,“返回值和无效函数”:
返回值的函数可用于赋值或 表达。调用非空函数,就好像它没有返回值一样 是合法的,但应发出警告。该功能可以用作 一个语句和返回值在没有警告的情况下被丢弃 将函数调用转换为void类型。
空隙'(some_function());
try_put
是一个邮箱方法,它是一个非空函数,返回类型为int
的值。