System verilog 使用邮箱的FIFO建模

System verilog 使用邮箱的FIFO建模,system-verilog,System Verilog,我试图理解以下使用邮箱的FIFO代码。我可以理解其中的大部分内容,但是void'(FIFO.tryput(write_data));//非阻塞写入和void'(FIFO.tryget(读取数据));//非阻塞读取 -“无效”的目的是什么?我知道什么是void,但是void和void'在程序中是相同的吗 interface fifo_channel_1 #(parameter FifoSize = 8, PtrSize = 4, parameter type DataType = uniType)

我试图理解以下使用邮箱的FIFO代码。我可以理解其中的大部分内容,但是
void'(FIFO.tryput(write_data));//非阻塞写入
void'(FIFO.tryget(读取数据));//非阻塞读取
-“无效”的目的是什么?我知道什么是void,但是
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
接口fifo_通道_1#(参数FifoSize=8,PtrSize=4,
参数类型数据类型=单位类型);
数据类型写入_数据;//来自发送模块的数据包
数据类型读取数据;//发送到接收模块的数据包
位fifo_为空,fifo_为满;//先进先出状态标志
邮箱#(数据类型)FIFO=新建(FifoSize);//先进先出是有界的
功能自动作废写入(输入数据类型写入数据);
void'(FIFO.tryput(写入数据));//非阻塞写入
fifo_full=~(fifo.num
使用
void'
而不是
void
将避免产生警告的模拟器发出警告;否则,2的行为将相同。 根据第13.4.1节“返回值和无效函数”:

返回值的函数可用于赋值或 表情。调用非OID函数,就好像它没有返回值一样 应是合法的,但应发出警告。该函数可以用作 语句和返回值在没有警告的情况下被丢弃 将函数调用强制转换为void类型

void'(some_function())

try\u put
是一种邮箱方法,它是一个非类函数,返回类型为
int
的值