Mailboxes是一种在进程之间交换消息的机制。数据可以通过一个进程发送到Mailboxes,然后由另一个进程获取。
数据可以是任何有效的systemVerilog数据类型,包括类class数据类型。
SystemVerilog提供以下使用邮箱的方法。
非参数化Mailboxes是无类型的,即单个Mailboxes可以发送和接收不同类型的数据。
new()
使用new()方法创建邮箱。
function new(int bound = 0);
new()函数返回Mailboxes句柄,如果无法创建Mailboxes,则返回null。
如果bound参数为0,则Mailboxes是无界的(默认值),put()操作永远不会阻塞。
num()
可以通过num()方法获取Mailboxes中的数据数。
put()
put()方法在Mailboxes中放置一条数据。数据可以是任何单个表达式,包括对象句柄。
put()方法以严格的FIFO规则在Mailboxes中存储数据。
try\_put()
try\_put()方法尝试将数据放入Mailboxes中。如果Mailboxes已满,则该方法返回0。
get()
get()方法从Mailboxes中获取数据。如果Mailboxes为空,则当前进程将阻塞,直到Mailboxes中放入数据。
try\_get()
try\_get()方法尝试从Mailboxes中获取数据而不会阻塞。如果Mailboxes为空,则该方法返回0。
peek()
peek()方法从Mailboxes复制数据而不从队列中删除数据。如果Mailboxes为空,则当前进程将阻塞,直到Mailboxes中放入数据。
try\_peek()
try\_peek()方法尝试从Mailboxes中复制数据而不会被阻塞。如果Mailboxes为空,则该方法返回0。
输出
本文转载自公众号:芯片数字实验室
原文链接:
https://mp.weixin.qq.com/s/V1IVl-k9WDtZeJwcKud31Q
未经作者同意,请勿转载!
推荐阅读
想了解更多内容,欢迎关注芯片数字实验室专栏